Name: series-workflowcnwgh Phase: Succeeded StartedAt: 2026-06-30 22:38:36 +0000 UTC FinishedAt: 2026-07-01 02:48:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[0] Phase: Succeeded StartedAt: 2026-06-30 22:38:36 +0000 UTC FinishedAt: 2026-06-30 22:46:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 22:38:36 +0000 UTC FinishedAt: 2026-06-30 22:46:46 +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": "15654b0268cd65b4e673510c0377774e61b86397", "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": "15654b0268cd65b4e673510c0377774e61b86397", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_VADDR", "DAMON_PADDR" ], "series_id": "6d6f91f3-6e3f-4d31-8a8b-8690616dcb37" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_commit_target_regions", "damon_sysfs_set_filters", "damon_sysfs_set_probe", "damon_sysfs_set_probes", "damon_sysfs_probe_add_dirs", "damon_sysfs_probe_rm_dirs" ], "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+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3NldF9maWx0ZXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3NldF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcHJvYmVzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gbG9naWMgZm9yIGNvbW1pdHRpbmcgdGFyZ2V0IHJlZ2lvbnMgKG1lcmdpbmcgY29udGlndW91cyByZWdpb25zKSBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZSBmb3Igc2V0dGluZyB1cCBEQU1PTiBwcm9iZXMgYW5kIGZpbHRlcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgc3lzZnMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzkzOGQ4MGE2YmY0MmU4MDYyNjFlZTA2NjNlODFmNDZlZjMyNWVmOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDIyOjQ0OjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cbmluZGV4IDRmZGVjNjNhNDdkNGFhLi5kZDZiNWJkNzZlMTE5NiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vblxuQEAgLTE1Nyw2ICYjNDM7MTU3LDQ2IEBAIERlc2NyaXB0aW9uOlx0V3JpdGluZyBhIHZhbHVlIHRvIHRoaXMgZmlsZSBzZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZlxuIFx0XHRtb25pdG9yaW5nIHJlZ2lvbnMgb2YgdGhlIERBTU9OIGNvbnRleHQgYXMgdGhlIHZhbHVlLiAgUmVhZGluZ1xuIFx0XHR0aGlzIGZpbGUgcmV0dXJucyB0aGUgdmFsdWUuXG4gXG4mIzQzO1doYXQ6XHRcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1x1MDAzY0tcdTAwM2UvY29udGV4dHMvXHUwMDNjQ1x1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9ucl9wcm9iZXNcbiYjNDM7RGF0ZTpcdFx0TWF5IDIwMjZcbiYjNDM7Q29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuJiM0MztEZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSBudW1iZXIgJiMzOTtOJiMzOTsgdG8gdGhpcyBmaWxlIGNyZWF0ZXMgdGhlIG51bWJlciBvZlxuJiM0MztcdFx0ZGlyZWN0b3JpZXMgZm9yIGVhY2ggREFNT04gcHJvYmUgbmFtZWQgJiMzOTswJiMzOTsgdG8gJiMzOTtOLTEmIzM5OyB1bmRlciB0aGVcbiYjNDM7XHRcdHByb2Jlcy8gZGlyZWN0b3J5LlxuJiM0MztcbiYjNDM7V2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1x1MDAzY1BcdTAwM2UvZmlsdGVycy9ucl9maWx0ZXJzXG4mIzQzO0RhdGU6XHRcdE1heSAyMDI2XG4mIzQzO0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbiYjNDM7RGVzY3JpcHRpb246XHRXcml0aW5nIGEgbnVtYmVyICYjMzk7TiYjMzk7IHRvIHRoaXMgZmlsZSBjcmVhdGVzIHRoZSBudW1iZXIgb2ZcbiYjNDM7XHRcdGRpcmVjdG9yaWVzIGZvciBlYWNoIERBTU9OIHByb2JlIGZpbHRlciBuYW1lZCAmIzM5OzAmIzM5OyB0byAmIzM5O04tMSYjMzk7XG4mIzQzO1x0XHR1bmRlciB0aGUgZmlsdGVycy8gZGlyZWN0b3J5LlxuJiM0MztcbiYjNDM7V2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1x1MDAzY1BcdTAwM2UvZmlsdGVycy9cdTAwM2NGXHUwMDNlL3R5cGVcbiYjNDM7RGF0ZTpcdFx0TWF5IDIwMjZcbiYjNDM7Q29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuJiM0MztEZXNjcmlwdGlvbjpcdFdyaXRpbmcgdG8gYW5kIHJlYWRpbmcgZnJvbSB0aGlzIGZpbGUgc2V0cyBhbmQgZ2V0cyB0aGUgdHlwZSBvZlxuJiM0MztcdFx0dGhlIG1lbW9yeSBvZiB0aGUgaW50ZXJlc3QuXG4mIzQzO1xuJiM0MztXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2UvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvXHUwMDNjUFx1MDAzZS9maWx0ZXJzL1x1MDAzY0ZcdTAwM2UvcGF0aFxuJiM0MztEYXRlOlx0XHRNYXkgMjAyNlxuJiM0MztDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG4mIzQzO0Rlc2NyaXB0aW9uOlx0SWYgJiMzOTttZW1jZyYjMzk7IGlzIHdyaXR0ZW4gdG8gdGhlICYjMzk7dHlwZSYjMzk7IGZpbGUsIHdyaXRpbmcgdG8gYW5kXG4mIzQzO1x0XHRyZWFkaW5nIGZyb20gdGhpcyBmaWxlIHNldHMgYW5kIGdldHMgdGhlIHBhdGggdG8gdGhlIG1lbW9yeVxuJiM0MztcdFx0Y2dyb3VwIG9mIHRoZSBpbnRlcmVzdC5cbiYjNDM7XG4mIzQzO1doYXQ6XHRcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1x1MDAzY0tcdTAwM2UvY29udGV4dHMvXHUwMDNjQ1x1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9cdTAwM2NQXHUwMDNlL2ZpbHRlcnMvXHUwMDNjRlx1MDAzZS9tYXRjaGluZ1xuJiM0MztEYXRlOlx0XHRNYXkgMjAyNlxuJiM0MztDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG4mIzQzO0Rlc2NyaXB0aW9uOlx0V3JpdGluZyAmIzM5O1kmIzM5OyBvciAmIzM5O04mIzM5OyB0byB0aGlzIGZpbGUgc2V0cyB3aGV0aGVyIHRoZSBmaWx0ZXIgaXMgZm9yXG4mIzQzO1x0XHR0aGUgbWVtb3J5IG9mIHRoZSAmIzM5O3R5cGUmIzM5Oywgb3IgYWxsIGV4Y2VwdCB0aGUgJiMzOTt0eXBlJiMzOTsuXG4mIzQzO1xuJiM0MztXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2UvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvXHUwMDNjUFx1MDAzZS9maWx0ZXJzL1x1MDAzY0ZcdTAwM2UvYWxsb3dcbiYjNDM7RGF0ZTpcdFx0TWF5IDIwMjZcbiYjNDM7Q29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuJiM0MztEZXNjcmlwdGlvbjpcdFdyaXRpbmcgJiMzOTtZJiMzOTsgb3IgJiMzOTtOJiMzOTsgdG8gdGhpcyBmaWxlIHNldHMgd2hldGhlciB0byBhbGxvdyBvciByZWplY3RcbiYjNDM7XHRcdGhpdHRpbmcgdGhlIHByb2JlIGZvciB0aGUgbWVtb3J5IHRoYXQgc2F0aXNmaWVzIHRoZSAmIzM5O3R5cGUmIzM5OyBhbmRcbiYjNDM7XHRcdHRoZSAmIzM5O21hdGNoaW5nJiMzOTsgb2YgdGhlIGRpcmVjdG9yeS5cbiYjNDM7XG4gV2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL3RhcmdldHMvbnJfdGFyZ2V0c1xuIERhdGU6XHRcdE1hciAyMDIyXG4gQ29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdCBiL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdFxuaW5kZXggYzE2YTNiYjI4OGQwNzkuLjQ1N2Q2ZThiYzc4Nzg1IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcbkBAIC02ODYsOSAmIzQzOzY4NiwxMSBAQCBtZWNoYW5pc20gdHJpZXMgdG8gbWFrZSBgYGN1cnJlbnRfdmFsdWVgYCBvZiBgYHRhcmdldF9tZXRyaWNgYCBiZSBzYW1lIHRvXG4gICAoMS8xMCwwMDApLlxuIC0gYGBpbmFjdGl2ZV9tZW1fYnBgYDogSW5hY3RpdmUgdG8gYWN0aXZlICYjNDM7IGluYWN0aXZlIChMUlUpIG1lbW9yeSBzaXplIHJhdGlvIGluXG4gICBicCAoMS8xMCwwMDApLlxuJiM0MzstIGBgbm9kZV9lbGlnaWJsZV9tZW1fYnBgYDogU2NoZW1lIHRhcmdldCBhY2Nlc3MgcGF0dGVybi1lbGlnaWJsZSBtZW1vcnkgcmF0aW9cbiYjNDM7ICBvZiBhIG5vZGUgaW4gYnAgKDEvMTAsMDAwKS5cbiBcbi1gYG5pZGBgIGlzIG9wdGlvbmFsbHkgcmVxdWlyZWQgZm9yIG9ubHkgYGBub2RlX21lbV91c2VkX2JwYGAsXG4tYGBub2RlX21lbV9mcmVlX2JwYGAsIGBgbm9kZV9tZW1jZ191c2VkX2JwYGAgYW5kIGBgbm9kZV9tZW1jZ19mcmVlX2JwYGAgdG9cbiYjNDM7YGBuaWRgYCBpcyBvcHRpb25hbGx5IHJlcXVpcmVkIGZvciBgYG5vZGVfbWVtX3VzZWRfYnBgYCwgYGBub2RlX21lbV9mcmVlX2JwYGAsXG4mIzQzO2Bgbm9kZV9tZW1jZ191c2VkX2JwYGAsIGBgbm9kZV9tZW1jZ19mcmVlX2JwYGAgYW5kIGBgbm9kZV9lbGlnaWJsZV9tZW1fYnBgYCB0b1xuIHBvaW50IHRoZSBzcGVjaWZpYyBOVU1BIG5vZGUuXG4gXG4gYGBwYXRoYGAgaXMgb3B0aW9uYWxseSByZXF1aXJlZCBmb3Igb25seSBgYG5vZGVfbWVtY2dfdXNlZF9icGBgIGFuZFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggOWEwMzEyMzI2OWMyOGUuLjVmZWJlNThhMDcwMjg5IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xMzQ3LDIxICYjNDM7MTM0NywzMyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCxcbiBcdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxuIHtcbi1cdHN0cnVjdCBkYW1vbl9yZWdpb24gKnNyY19yZWdpb247XG4mIzQzO1x0c3RydWN0IGRhbW9uX3JlZ2lvbiAqc3JjX3JlZ2lvbiwgKnByZXYgPSBOVUxMO1xuIFx0c3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcztcbiBcdGludCBpID0gMCwgZXJyO1xuIFxuLVx0ZGFtb25fZm9yX2VhY2hfcmVnaW9uKHNyY19yZWdpb24sIHNyYylcbi1cdFx0aSYjNDM7JiM0Mzs7XG4mIzQzO1x0ZGFtb25fZm9yX2VhY2hfcmVnaW9uKHNyY19yZWdpb24sIHNyYykge1xuJiM0MztcdFx0aWYgKCFwcmV2IHx8IHByZXYtXHUwMDNlYXIuZW5kICE9IHNyY19yZWdpb24tXHUwMDNlYXIuc3RhcnQpXG4mIzQzO1x0XHRcdGkmIzQzOyYjNDM7O1xuJiM0MztcdFx0cHJldiA9IHNyY19yZWdpb247XG4mIzQzO1x0fVxuIFx0aWYgKCFpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdHJhbmdlcyA9IGt2bWFsbG9jX29ianMoKnJhbmdlcywgaSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX05PV0FSTik7XG4gXHRpZiAoIXJhbmdlcylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0cHJldiA9IE5VTEw7XG4gXHRpID0gMDtcbi1cdGRhbW9uX2Zvcl9lYWNoX3JlZ2lvbihzcmNfcmVnaW9uLCBzcmMpXG4tXHRcdHJhbmdlc1tpJiM0MzsmIzQzO10gPSBzcmNfcmVnaW9uLVx1MDAzZWFyO1xuJiM0MztcdGRhbW9uX2Zvcl9lYWNoX3JlZ2lvbihzcmNfcmVnaW9uLCBzcmMpIHtcbiYjNDM7XHRcdGlmICghcHJldikge1xuJiM0MztcdFx0XHRyYW5nZXNbaV0uc3RhcnQgPSBzcmNfcmVnaW9uLVx1MDAzZWFyLnN0YXJ0O1xuJiM0MztcdFx0fSBlbHNlIGlmIChwcmV2LVx1MDAzZWFyLmVuZCAhPSBzcmNfcmVnaW9uLVx1MDAzZWFyLnN0YXJ0KSB7XG4mIzQzO1x0XHRcdHJhbmdlc1tpJiM0MzsmIzQzO10uZW5kID0gcHJldi1cdTAwM2Vhci5lbmQ7XG4mIzQzO1x0XHRcdHJhbmdlc1tpXS5zdGFydCA9IHNyY19yZWdpb24tXHUwMDNlYXIuc3RhcnQ7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRwcmV2ID0gc3JjX3JlZ2lvbjtcbiYjNDM7XHR9XG4mIzQzO1x0cmFuZ2VzW2kmIzQzOyYjNDM7XS5lbmQgPSBkYW1vbl9sYXN0X3JlZ2lvbihzcmMpLVx1MDAzZWFyLmVuZDtcbiBcdGVyciA9IGRhbW9uX3NldF9yZWdpb25zKGRzdCwgcmFuZ2VzLCBpLCBzcmNfbWluX3JlZ2lvbl9zeik7XG4gXHRrdmZyZWUocmFuZ2VzKTtcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmNcbmluZGV4IGUzNTI2YTI2M2UyMDVmLi42NzEwYjZkMDE5YmY1MyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3N5c2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3N5c2ZzLmNcbkBAIC0xMDczLDcgJiM0MzsxMDczLDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqZGFtb25fc3lzZnNfcHJvYmVfYWxsb2Modm9pZClcbiBcdHJldHVybiBremFsbG9jX29iaihzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cilcbiYjNDM7c3RhdGljIGludCBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKnByb2JlKVxuIHtcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpmaWx0ZXJzO1xuIFx0aW50IGVycjtcbkBAIC0xMDgxLDIyICYjNDM7MTA4MSwyMiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cilcbiBcdGZpbHRlcnMgPSBkYW1vbl9zeXNmc19maWx0ZXJzX2FsbG9jKCk7XG4gXHRpZiAoIWZpbHRlcnMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuLVx0YXR0ci1cdTAwM2VmaWx0ZXJzID0gZmlsdGVycztcbiYjNDM7XHRwcm9iZS1cdTAwM2VmaWx0ZXJzID0gZmlsdGVycztcbiBcbiBcdGVyciA9IGtvYmplY3RfaW5pdF9hbmRfYWRkKFx1MDAyNmZpbHRlcnMtXHUwMDNla29iaiwgXHUwMDI2ZGFtb25fc3lzZnNfZmlsdGVyc19rdHlwZSxcbi1cdFx0XHRcdTAwMjZhdHRyLVx1MDAzZWtvYmosIFwmIzM0O2ZpbHRlcnNcJiMzNDspO1xuJiM0MztcdFx0XHRcdTAwMjZwcm9iZS1cdTAwM2Vrb2JqLCBcJiMzNDtmaWx0ZXJzXCYjMzQ7KTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0a29iamVjdF9wdXQoXHUwMDI2ZmlsdGVycy1cdTAwM2Vrb2JqKTtcbi1cdFx0YXR0ci1cdTAwM2VmaWx0ZXJzID0gTlVMTDtcbiYjNDM7XHRcdHByb2JlLVx1MDAzZWZpbHRlcnMgPSBOVUxMO1xuIFx0fVxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZGFtb25fc3lzZnNfcHJvYmVfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKmF0dHIpXG4mIzQzO3N0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSlcbiB7XG4tXHRpZiAoYXR0ci1cdTAwM2VmaWx0ZXJzKSB7XG4tXHRcdGRhbW9uX3N5c2ZzX2ZpbHRlcnNfcm1fZGlycyhhdHRyLVx1MDAzZWZpbHRlcnMpO1xuLVx0XHRrb2JqZWN0X3B1dChcdTAwMjZhdHRyLVx1MDAzZWZpbHRlcnMtXHUwMDNla29iaik7XG4mIzQzO1x0aWYgKHByb2JlLVx1MDAzZWZpbHRlcnMpIHtcbiYjNDM7XHRcdGRhbW9uX3N5c2ZzX2ZpbHRlcnNfcm1fZGlycyhwcm9iZS1cdTAwM2VmaWx0ZXJzKTtcbiYjNDM7XHRcdGtvYmplY3RfcHV0KFx1MDAyNnByb2JlLVx1MDAzZWZpbHRlcnMtXHUwMDNla29iaik7XG4gXHR9XG4gfVxuIFxuQEAgLTE5MDksNDcgJiM0MzsxOTA5LDY1IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbiBcdHJldHVybiBkYW1vbl9zZXRfYXR0cnMoY3R4LCBcdTAwMjZhdHRycyk7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4tXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMgKnN5c19wcm9iZXMpXG4mIzQzO3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnMoc3RydWN0IGRhbW9uX3Byb2JlICpwcm9iZSxcbiYjNDM7XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycylcbiB7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHN5c19wcm9iZXMtXHUwMDNlbnI7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycyA9XG4tXHRcdFx0c3lzX3Byb2Jlcy1cdTAwM2Vwcm9iZXNfYXJyW2ldLVx1MDAzZWZpbHRlcnM7XG4tXHRcdHN0cnVjdCBkYW1vbl9wcm9iZSAqYztcbi1cdFx0aW50IGo7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc3lzX2ZpbHRlcnMtXHUwMDNlbnI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyICpzeXNfZmlsdGVyID1cbiYjNDM7XHRcdFx0c3lzX2ZpbHRlcnMtXHUwMDNlZmlsdGVyc19hcnJbaV07XG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb25fZmlsdGVyICpmaWx0ZXI7XG4gXG4tXHRcdGlmICghc3lzX2ZpbHRlcnMpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdGMgPSBkYW1vbl9uZXdfcHJvYmUoKTtcbi1cdFx0aWYgKCFjKVxuJiM0MztcdFx0ZmlsdGVyID0gZGFtb25fbmV3X2ZpbHRlcihzeXNfZmlsdGVyLVx1MDAzZXR5cGUsXG4mIzQzO1x0XHRcdFx0c3lzX2ZpbHRlci1cdTAwM2VtYXRjaGluZyxcbiYjNDM7XHRcdFx0XHRzeXNfZmlsdGVyLVx1MDAzZWFsbG93KTtcbiYjNDM7XHRcdGlmICghZmlsdGVyKVxuIFx0XHRcdHJldHVybiAtRU5PTUVNO1xuLVx0XHRkYW1vbl9hZGRfcHJvYmUoY3R4LCBjKTtcbi1cbi1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2Mgc3lzX2ZpbHRlcnMtXHUwMDNlbnI7IGomIzQzOyYjNDM7KSB7XG4tXHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqc3lzX2ZpbHRlciA9XG4tXHRcdFx0XHRzeXNfZmlsdGVycy1cdTAwM2VmaWx0ZXJzX2FycltqXTtcbi1cdFx0XHRzdHJ1Y3QgZGFtb25fZmlsdGVyICpmaWx0ZXI7XG4tXG4tXHRcdFx0ZmlsdGVyID0gZGFtb25fbmV3X2ZpbHRlcihzeXNfZmlsdGVyLVx1MDAzZXR5cGUsXG4tXHRcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlbWF0Y2hpbmcsXG4tXHRcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlYWxsb3cpO1xuLVx0XHRcdGlmICghZmlsdGVyKVxuLVx0XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tXHRcdFx0aWYgKGZpbHRlci1cdTAwM2V0eXBlID09IERBTU9OX0ZJTFRFUl9UWVBFX01FTUNHKSB7XG4tXHRcdFx0XHRpbnQgZXJyO1xuLVxuLVx0XHRcdFx0ZXJyID0gZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChcbi1cdFx0XHRcdFx0XHRzeXNfZmlsdGVyLVx1MDAzZXBhdGgsXG4tXHRcdFx0XHRcdFx0XHUwMDI2ZmlsdGVyLVx1MDAzZW1lbWNnX2lkKTtcbi1cdFx0XHRcdGlmIChlcnIpIHtcbi1cdFx0XHRcdFx0ZGFtb25fZGVzdHJveV9maWx0ZXIoZmlsdGVyKTtcbi1cdFx0XHRcdFx0cmV0dXJuIGVycjtcbi1cdFx0XHRcdH1cbiYjNDM7XHRcdGlmIChmaWx0ZXItXHUwMDNldHlwZSA9PSBEQU1PTl9GSUxURVJfVFlQRV9NRU1DRykge1xuJiM0MztcdFx0XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRcdFx0ZXJyID0gZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChcbiYjNDM7XHRcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlcGF0aCxcbiYjNDM7XHRcdFx0XHRcdFx1MDAyNmZpbHRlci1cdTAwM2VtZW1jZ19pZCk7XG4mIzQzO1x0XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0XHRkYW1vbl9kZXN0cm95X2ZpbHRlcihmaWx0ZXIpO1xuJiM0MztcdFx0XHRcdHJldHVybiBlcnI7XG4gXHRcdFx0fVxuLVx0XHRcdGRhbW9uX2FkZF9maWx0ZXIoYywgZmlsdGVyKTtcbiBcdFx0fVxuJiM0MztcdFx0ZGFtb25fYWRkX2ZpbHRlcihwcm9iZSwgZmlsdGVyKTtcbiYjNDM7XHR9XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsXG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKnN5c19wcm9iZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycztcbiYjNDM7XG4mIzQzO1x0c3lzX2ZpbHRlcnMgPSBzeXNfcHJvYmUtXHUwMDNlZmlsdGVycztcbiYjNDM7XHRpZiAoIXN5c19maWx0ZXJzKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHByb2JlLCBzeXNfZmlsdGVycyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmVzICpzeXNfcHJvYmVzKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGksIGVycjtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc3lzX3Byb2Jlcy1cdTAwM2VucjsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqc3lzX3Byb2JlO1xuJiM0MztcdFx0c3RydWN0IGRhbW9uX3Byb2JlICpwO1xuJiM0MztcbiYjNDM7XHRcdHAgPSBkYW1vbl9uZXdfcHJvYmUoKTtcbiYjNDM7XHRcdGlmICghcClcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0XHRkYW1vbl9hZGRfcHJvYmUoY3R4LCBwKTtcbiYjNDM7XHRcdHN5c19wcm9iZSA9IHN5c19wcm9iZXMtXHUwMDNlcHJvYmVzX2FycltpXTtcbiYjNDM7XHRcdGVyciA9IGRhbW9uX3N5c2ZzX3NldF9wcm9iZShwLCBzeXNfcHJvYmUpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmggYi9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcbmluZGV4IGEwMDE2ODczMDQ0NWQyLi4wZWM3ZDE0ZDM1NGU3NyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXG5AQCAtMTU0Niw2ICYjNDM7MTU0NiwyMCBAQCBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3dhbGtfY29udHJvbF9vYnNvbGV0ZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZGFtb25fdGVzdF9yYW5kKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9jdHggY3R4O1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2Y3R4LnJuZF9zdGF0ZSwgZ2V0X3JhbmRvbV91NjQoKSk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTAwMDA7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1bnNpZ25lZCBsb25nIHJuZCA9IGRhbW9uX3JhbmQoXHUwMDI2Y3R4LCAwLCAxMCk7XG4mIzQzO1xuJiM0MztcdFx0S1VOSVRfRVhQRUNUX0dFKHRlc3QsIHJuZCwgMCk7XG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfTEUodGVzdCwgcm5kLCA5KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGRhbW9uX3Rlc3RfY2FzZXNbXSA9IHtcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF90YXJnZXQpLFxuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3JlZ2lvbnMpLFxuQEAgLTE1NzcsNiAmIzQzOzE1OTEsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X2FwcGx5X21pbl9ucl9yZWdpb25zKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9pc19sYXN0X3JlZ2lvbiksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfd2Fsa19jb250cm9sX29ic29sZXRlKSxcbiYjNDM7XHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfcmFuZCksXG4gXHR7fSxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2hcbmluZGV4IDJlYWFhNWFlM2M1ZWQ3Li5iNDNkZWVlNjBmZTk1MyAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaFxuQEAgLTk5LDE0ICYjNDM7OTksNTUgQEAgdGVzdF9zdGF0cygpXG4gXHRkb25lXG4gfVxuIFxuJiM0Mzt0ZXN0X2Rlc3QoKVxuJiM0Mzt7XG4mIzQzO1x0ZGVzdF9kaXI9JDFcbiYjNDM7XHRlbnN1cmVfZmlsZSBcJiMzNDskZGVzdF9kaXIvaWRcJiMzNDsgXCYjMzQ7ZXhpc3RcJiMzNDsgXCYjMzQ7NjAwXCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX2ZpbGUgXCYjMzQ7JGRlc3RfZGlyL3dlaWdodFwmIzM0OyBcJiMzNDtleGlzdFwmIzM0OyBcJiMzNDs2MDBcJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dGVzdF9kZXN0cygpXG4mIzQzO3tcbiYjNDM7XHRkZXN0c19kaXI9JDFcbiYjNDM7XHRlbnN1cmVfZmlsZSBcJiMzNDskZGVzdHNfZGlyL25yX2Rlc3RzXCYjMzQ7IFwmIzM0O2V4aXN0XCYjMzQ7IFwmIzM0OzYwMFwmIzM0O1xuJiM0MztcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRkZXN0c19kaXIvbnJfZGVzdHNcJiMzNDsgXCYjMzQ7MVwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdHRlc3RfZGVzdCBcJiMzNDskZGVzdHNfZGlyLzBcJiMzNDtcbiYjNDM7XG4mIzQzO1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCYjMzQ7JGRlc3RzX2Rpci9ucl9kZXN0c1wmIzM0OyBcJiMzNDsyXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4mIzQzO1x0dGVzdF9kZXN0IFwmIzM0OyRkZXN0c19kaXIvMFwmIzM0O1xuJiM0MztcdHRlc3RfZGVzdCBcJiMzNDskZGVzdHNfZGlyLzFcJiMzNDtcbiYjNDM7XG4mIzQzO1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCYjMzQ7JGRlc3RzX2Rpci9ucl9kZXN0c1wmIzM0OyBcJiMzNDswXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX2RpciBcJiMzNDskZGVzdHNfZGlyLzBcJiMzNDsgXCYjMzQ7bm90X2V4aXN0XCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX2RpciBcJiMzNDskZGVzdHNfZGlyLzFcJiMzNDsgXCYjMzQ7bm90X2V4aXN0XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4gdGVzdF9maWx0ZXIoKVxuIHtcbiBcdGZpbHRlcl9kaXI9JDFcbiBcdGVuc3VyZV9maWxlIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7ZXhpc3RcJiMzNDsgXCYjMzQ7NjAwXCYjMzQ7XG4tXHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZmlsdGVyX2Rpci90eXBlXCYjMzQ7IFwmIzM0O2Fub25cJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbi1cdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7bWVtY2dcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbi1cdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7YWRkclwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuLVx0ZW5zdXJlX3dyaXRlX3N1Y2MgXCYjMzQ7JGZpbHRlcl9kaXIvdHlwZVwmIzM0OyBcJiMzNDt0YXJnZXRcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XG4mIzQzO1x0bG9jYWwgZGlyX25hbWU9JChiYXNlbmFtZSBcJiMzNDskKGRpcm5hbWUgXCYjMzQ7JGZpbHRlcl9kaXJcJiMzNDspXCYjMzQ7KVxuJiM0MztcdGlmICBbIFwmIzM0OyRkaXJfbmFtZVwmIzM0OyA9IFwmIzM0O2ZpbHRlcnNcJiMzNDsgXSB8fCBbIFwmIzM0OyRkaXJfbmFtZVwmIzM0OyA9IFwmIzM0O29wc19maWx0ZXJzXCYjMzQ7IF1cbiYjNDM7XHR0aGVuXG4mIzQzO1x0XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZmlsdGVyX2Rpci90eXBlXCYjMzQ7IFwmIzM0O2Fub25cJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7bWVtY2dcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRmaVxuJiM0MztcdGlmICBbIFwmIzM0OyRkaXJfbmFtZVwmIzM0OyA9IFwmIzM0O2ZpbHRlcnNcJiMzNDsgXSB8fCBbIFwmIzM0OyRkaXJfbmFtZVwmIzM0OyA9IFwmIzM0O2NvcmVfZmlsdGVyc1wmIzM0OyBdXG4mIzQzO1x0dGhlblxuJiM0MztcdFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXCYjMzQ7JGZpbHRlcl9kaXIvdHlwZVwmIzM0OyBcJiMzNDthZGRyXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4mIzQzO1x0XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZmlsdGVyX2Rpci90eXBlXCYjMzQ7IFwmIzM0O3RhcmdldFwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdGZpXG4mIzQzO1x0aWYgWyBcJiMzNDskZGlyX25hbWVcJiMzNDsgPSBcJiMzNDtjb3JlX2ZpbHRlcnNcJiMzNDsgXVxuJiM0MztcdHRoZW5cbiYjNDM7XHRcdGVuc3VyZV93cml0ZV9mYWlsIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7YW5vblwmIzM0OyBcJiMzNDtvcHMgdHlwZVwmIzM0O1xuJiM0MztcdFx0ZW5zdXJlX3dyaXRlX2ZhaWwgXCYjMzQ7JGZpbHRlcl9kaXIvdHlwZVwmIzM0OyBcJiMzNDttZW1jZ1wmIzM0OyBcJiMzNDtvcHMgdHlwZVwmIzM0O1xuJiM0MztcdGZpXG4mIzQzO1x0aWYgWyBcJiMzNDskZGlyX25hbWVcJiMzNDsgID0gXCYjMzQ7b3BzX2ZpbHRlcnNcJiMzNDsgXVxuJiM0MztcdHRoZW5cbiYjNDM7XHRcdGVuc3VyZV93cml0ZV9mYWlsIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7YWRkclwmIzM0OyBcJiMzNDtjb3JlIHR5cGVcJiMzNDtcbiYjNDM7XHRcdGVuc3VyZV93cml0ZV9mYWlsIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7dGFyZ2V0XCYjMzQ7IFwmIzM0O2NvcmUgdHlwZVwmIzM0O1xuJiM0MztcdGZpXG4gXHRlbnN1cmVfd3JpdGVfZmFpbCBcJiMzNDskZmlsdGVyX2Rpci90eXBlXCYjMzQ7IFwmIzM0O2Zvb1wmIzM0OyBcJiMzNDtpbnZhbGlkIGlucHV0XCYjMzQ7XG4gXHRlbnN1cmVfZmlsZSBcJiMzNDskZmlsdGVyX2Rpci9tYXRjaGluZ1wmIzM0OyBcJiMzNDtleGlzdFwmIzM0OyBcJiMzNDs2MDBcJiMzNDtcbiBcdGVuc3VyZV9maWxlIFwmIzM0OyRmaWx0ZXJfZGlyL21lbWNnX3BhdGhcJiMzNDsgXCYjMzQ7ZXhpc3RcJiMzNDsgXCYjMzQ7NjAwXCYjMzQ7XG5AQCAtMTU4LDYgJiM0MzsxOTksMjAgQEAgdGVzdF9nb2FsKClcbiBcdGVuc3VyZV9kaXIgXCYjMzQ7JGdvYWxfZGlyXCYjMzQ7IFwmIzM0O2V4aXN0XCYjMzQ7XG4gXHRlbnN1cmVfZmlsZSBcJiMzNDskZ29hbF9kaXIvdGFyZ2V0X3ZhbHVlXCYjMzQ7IFwmIzM0O2V4aXN0XCYjMzQ7IFwmIzM0OzYwMFwmIzM0O1xuIFx0ZW5zdXJlX2ZpbGUgXCYjMzQ7JGdvYWxfZGlyL2N1cnJlbnRfdmFsdWVcJiMzNDsgXCYjMzQ7ZXhpc3RcJiMzNDsgXCYjMzQ7NjAwXCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX2ZpbGUgXCYjMzQ7JGdvYWxfZGlyL3RhcmdldF9tZXRyaWNcJiMzNDsgXCYjMzQ7ZXhpc3RcJiMzNDsgXCYjMzQ7NjAwXCYjMzQ7XG4mIzQzO1x0bG9jYWwgZnBhdGg9XCYjMzQ7JGdvYWxfZGlyL3RhcmdldF9tZXRyaWNcJiMzNDtcbiYjNDM7XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7dXNlcl9pbnB1dFwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDtzb21lX21lbV9wc2lfdXNcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7bm9kZV9tZW1fdXNlZF9icFwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDtub2RlX21lbV9mcmVlX2JwXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCYjMzQ7JGZwYXRoXCYjMzQ7IFwmIzM0O25vZGVfbWVtY2dfdXNlZF9icFwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDtub2RlX21lbWNnX2ZyZWVfYnBcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7YWN0aXZlX21lbV9icFwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDtpbmFjdGl2ZV9tZW1fYnBcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7bm9kZV9lbGlnaWJsZV9tZW1fYnBcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRlbnN1cmVfd3JpdGVfZmFpbCBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7Zm9vXCYjMzQ7IFwmIzM0O2ludmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRlbnN1cmVfZmlsZSBcJiMzNDskZ29hbF9kaXIvbmlkXCYjMzQ7IFwmIzM0O2V4aXN0XCYjMzQ7IFwmIzM0OzYwMFwmIzM0O1xuJiM0MztcdGVuc3VyZV9maWxlIFwmIzM0OyRnb2FsX2Rpci9wYXRoXCYjMzQ7IFwmIzM0O2V4aXN0XCYjMzQ7IFwmIzM0OzYwMFwmIzM0O1xuIH1cbiBcbiB0ZXN0X2dvYWxzKClcbkBAIC0yMDcsNyAmIzQzOzI2MiwxMCBAQCB0ZXN0X3NjaGVtZSgpXG4gXHRlbnN1cmVfZmlsZSBcJiMzNDskc2NoZW1lX2Rpci9hcHBseV9pbnRlcnZhbF91c1wmIzM0OyBcJiMzNDtleGlzdFwmIzM0OyBcJiMzNDs2MDBcJiMzNDtcbiBcdHRlc3RfcXVvdGFzIFwmIzM0OyRzY2hlbWVfZGlyL3F1b3Rhc1wmIzM0O1xuIFx0dGVzdF93YXRlcm1hcmtzIFwmIzM0OyRzY2hlbWVfZGlyL3dhdGVybWFya3NcJiMzNDtcbiYjNDM7XHR0ZXN0X2Rlc3RzIFwmIzM0OyRzY2hlbWVfZGlyL2Rlc3RzXCYjMzQ7XG4gXHR0ZXN0X2ZpbHRlcnMgXCYjMzQ7JHNjaGVtZV9kaXIvZmlsdGVyc1wmIzM0O1xuJiM0MztcdHRlc3RfZmlsdGVycyBcJiMzNDskc2NoZW1lX2Rpci9jb3JlX2ZpbHRlcnNcJiMzNDtcbiYjNDM7XHR0ZXN0X2ZpbHRlcnMgXCYjMzQ7JHNjaGVtZV9kaXIvb3BzX2ZpbHRlcnNcJiMzNDtcbiBcdHRlc3Rfc3RhdHMgXCYjMzQ7JHNjaGVtZV9kaXIvc3RhdHNcJiMzNDtcbiBcdHRlc3RfdHJpZWRfcmVnaW9ucyBcJiMzNDskc2NoZW1lX2Rpci90cmllZF9yZWdpb25zXCYjMzQ7XG4gfVxuQEAgLTM0Niw4ICYjNDM7NDA0LDEzIEBAIHRlc3RfcHJvYmVzKClcbiBcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRwcm9iZXNfZGlyL25yX3Byb2Jlc1wmIzM0OyBcJiMzNDsxXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4gXHR0ZXN0X3Byb2JlIFwmIzM0OyRwcm9iZXNfZGlyLzBcJiMzNDtcbiBcbiYjNDM7XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskcHJvYmVzX2Rpci9ucl9wcm9iZXNcJiMzNDsgXCYjMzQ7MlwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdHRlc3RfcHJvYmUgXCYjMzQ7JHByb2Jlc19kaXIvMFwmIzM0O1xuJiM0MztcdHRlc3RfcHJvYmUgXCYjMzQ7JHByb2Jlc19kaXIvMVwmIzM0O1xuJiM0MztcbiBcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRwcm9iZXNfZGlyL25yX3Byb2Jlc1wmIzM0OyBcJiMzNDswXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4gXHRlbnN1cmVfZGlyIFwmIzM0OyRwcm9iZXNfZGlyLzBcJiMzNDsgXCYjMzQ7bm90X2V4aXN0XCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX2RpciBcJiMzNDskcHJvYmVzX2Rpci8xXCYjMzQ7IFwmIzM0O25vdF9leGlzdFwmIzM0O1xuIH1cbiBcbiB0ZXN0X21vbml0b3JpbmdfYXR0cnMoKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3NldF9maWx0ZXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3NldF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcHJvYmVzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gbG9naWMgZm9yIGNvbW1pdHRpbmcgdGFyZ2V0IHJlZ2lvbnMgKG1lcmdpbmcgY29udGlndW91cyByZWdpb25zKSBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZSBmb3Igc2V0dGluZyB1cCBEQU1PTiBwcm9iZXMgYW5kIGZpbHRlcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgc3lzZnMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3OTM4ZDgwYTZiZjQyZTgwNjI2MWVlMDY2M2U4MWY0NmVmMzI1ZWY5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMjI6NDQ6MTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vbiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uCmluZGV4IDRmZGVjNjNhNDdkNGFhLi5kZDZiNWJkNzZlMTE5NiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb24KJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb24KQEAgLTE1Nyw2ICYjNDM7MTU3LDQ2IEBAIERlc2NyaXB0aW9uOglXcml0aW5nIGEgdmFsdWUgdG8gdGhpcyBmaWxlIHNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mCiAJCW1vbml0b3JpbmcgcmVnaW9ucyBvZiB0aGUgREFNT04gY29udGV4dCBhcyB0aGUgdmFsdWUuICBSZWFkaW5nCiAJCXRoaXMgZmlsZSByZXR1cm5zIHRoZSB2YWx1ZS4KIAomIzQzO1doYXQ6CQkvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy8mbHQ7SyZndDsvY29udGV4dHMvJmx0O0MmZ3Q7L21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL25yX3Byb2JlcwomIzQzO0RhdGU6CQlNYXkgMjAyNgomIzQzO0NvbnRhY3Q6CVNKIFBhcmsgJmx0O3NqQGtlcm5lbC5vcmcmZ3Q7CiYjNDM7RGVzY3JpcHRpb246CVdyaXRpbmcgYSBudW1iZXIgJiMzOTtOJiMzOTsgdG8gdGhpcyBmaWxlIGNyZWF0ZXMgdGhlIG51bWJlciBvZgomIzQzOwkJZGlyZWN0b3JpZXMgZm9yIGVhY2ggREFNT04gcHJvYmUgbmFtZWQgJiMzOTswJiMzOTsgdG8gJiMzOTtOLTEmIzM5OyB1bmRlciB0aGUKJiM0MzsJCXByb2Jlcy8gZGlyZWN0b3J5LgomIzQzOwomIzQzO1doYXQ6CQkvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy8mbHQ7SyZndDsvY29udGV4dHMvJmx0O0MmZ3Q7L21vbml0b3JpbmdfYXR0cnMvcHJvYmVzLyZsdDtQJmd0Oy9maWx0ZXJzL25yX2ZpbHRlcnMKJiM0MztEYXRlOgkJTWF5IDIwMjYKJiM0MztDb250YWN0OglTSiBQYXJrICZsdDtzakBrZXJuZWwub3JnJmd0OwomIzQzO0Rlc2NyaXB0aW9uOglXcml0aW5nIGEgbnVtYmVyICYjMzk7TiYjMzk7IHRvIHRoaXMgZmlsZSBjcmVhdGVzIHRoZSBudW1iZXIgb2YKJiM0MzsJCWRpcmVjdG9yaWVzIGZvciBlYWNoIERBTU9OIHByb2JlIGZpbHRlciBuYW1lZCAmIzM5OzAmIzM5OyB0byAmIzM5O04tMSYjMzk7CiYjNDM7CQl1bmRlciB0aGUgZmlsdGVycy8gZGlyZWN0b3J5LgomIzQzOwomIzQzO1doYXQ6CQkvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy8mbHQ7SyZndDsvY29udGV4dHMvJmx0O0MmZ3Q7L21vbml0b3JpbmdfYXR0cnMvcHJvYmVzLyZsdDtQJmd0Oy9maWx0ZXJzLyZsdDtGJmd0Oy90eXBlCiYjNDM7RGF0ZToJCU1heSAyMDI2CiYjNDM7Q29udGFjdDoJU0ogUGFyayAmbHQ7c2pAa2VybmVsLm9yZyZndDsKJiM0MztEZXNjcmlwdGlvbjoJV3JpdGluZyB0byBhbmQgcmVhZGluZyBmcm9tIHRoaXMgZmlsZSBzZXRzIGFuZCBnZXRzIHRoZSB0eXBlIG9mCiYjNDM7CQl0aGUgbWVtb3J5IG9mIHRoZSBpbnRlcmVzdC4KJiM0MzsKJiM0MztXaGF0OgkJL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvJmx0O0smZ3Q7L2NvbnRleHRzLyZsdDtDJmd0Oy9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy8mbHQ7UCZndDsvZmlsdGVycy8mbHQ7RiZndDsvcGF0aAomIzQzO0RhdGU6CQlNYXkgMjAyNgomIzQzO0NvbnRhY3Q6CVNKIFBhcmsgJmx0O3NqQGtlcm5lbC5vcmcmZ3Q7CiYjNDM7RGVzY3JpcHRpb246CUlmICYjMzk7bWVtY2cmIzM5OyBpcyB3cml0dGVuIHRvIHRoZSAmIzM5O3R5cGUmIzM5OyBmaWxlLCB3cml0aW5nIHRvIGFuZAomIzQzOwkJcmVhZGluZyBmcm9tIHRoaXMgZmlsZSBzZXRzIGFuZCBnZXRzIHRoZSBwYXRoIHRvIHRoZSBtZW1vcnkKJiM0MzsJCWNncm91cCBvZiB0aGUgaW50ZXJlc3QuCiYjNDM7CiYjNDM7V2hhdDoJCS9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzLyZsdDtLJmd0Oy9jb250ZXh0cy8mbHQ7QyZndDsvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvJmx0O1AmZ3Q7L2ZpbHRlcnMvJmx0O0YmZ3Q7L21hdGNoaW5nCiYjNDM7RGF0ZToJCU1heSAyMDI2CiYjNDM7Q29udGFjdDoJU0ogUGFyayAmbHQ7c2pAa2VybmVsLm9yZyZndDsKJiM0MztEZXNjcmlwdGlvbjoJV3JpdGluZyAmIzM5O1kmIzM5OyBvciAmIzM5O04mIzM5OyB0byB0aGlzIGZpbGUgc2V0cyB3aGV0aGVyIHRoZSBmaWx0ZXIgaXMgZm9yCiYjNDM7CQl0aGUgbWVtb3J5IG9mIHRoZSAmIzM5O3R5cGUmIzM5Oywgb3IgYWxsIGV4Y2VwdCB0aGUgJiMzOTt0eXBlJiMzOTsuCiYjNDM7CiYjNDM7V2hhdDoJCS9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzLyZsdDtLJmd0Oy9jb250ZXh0cy8mbHQ7QyZndDsvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvJmx0O1AmZ3Q7L2ZpbHRlcnMvJmx0O0YmZ3Q7L2FsbG93CiYjNDM7RGF0ZToJCU1heSAyMDI2CiYjNDM7Q29udGFjdDoJU0ogUGFyayAmbHQ7c2pAa2VybmVsLm9yZyZndDsKJiM0MztEZXNjcmlwdGlvbjoJV3JpdGluZyAmIzM5O1kmIzM5OyBvciAmIzM5O04mIzM5OyB0byB0aGlzIGZpbGUgc2V0cyB3aGV0aGVyIHRvIGFsbG93IG9yIHJlamVjdAomIzQzOwkJaGl0dGluZyB0aGUgcHJvYmUgZm9yIHRoZSBtZW1vcnkgdGhhdCBzYXRpc2ZpZXMgdGhlICYjMzk7dHlwZSYjMzk7IGFuZAomIzQzOwkJdGhlICYjMzk7bWF0Y2hpbmcmIzM5OyBvZiB0aGUgZGlyZWN0b3J5LgomIzQzOwogV2hhdDoJCS9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzLyZsdDtLJmd0Oy9jb250ZXh0cy8mbHQ7QyZndDsvdGFyZ2V0cy9ucl90YXJnZXRzCiBEYXRlOgkJTWFyIDIwMjIKIENvbnRhY3Q6CVNKIFBhcmsgJmx0O3NqQGtlcm5lbC5vcmcmZ3Q7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QKaW5kZXggYzE2YTNiYjI4OGQwNzkuLjQ1N2Q2ZThiYzc4Nzg1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0CkBAIC02ODYsOSAmIzQzOzY4NiwxMSBAQCBtZWNoYW5pc20gdHJpZXMgdG8gbWFrZSBgYGN1cnJlbnRfdmFsdWVgYCBvZiBgYHRhcmdldF9tZXRyaWNgYCBiZSBzYW1lIHRvCiAgICgxLzEwLDAwMCkuCiAtIGBgaW5hY3RpdmVfbWVtX2JwYGA6IEluYWN0aXZlIHRvIGFjdGl2ZSAmIzQzOyBpbmFjdGl2ZSAoTFJVKSBtZW1vcnkgc2l6ZSByYXRpbyBpbgogICBicCAoMS8xMCwwMDApLgomIzQzOy0gYGBub2RlX2VsaWdpYmxlX21lbV9icGBgOiBTY2hlbWUgdGFyZ2V0IGFjY2VzcyBwYXR0ZXJuLWVsaWdpYmxlIG1lbW9yeSByYXRpbwomIzQzOyAgb2YgYSBub2RlIGluIGJwICgxLzEwLDAwMCkuCiAKLWBgbmlkYGAgaXMgb3B0aW9uYWxseSByZXF1aXJlZCBmb3Igb25seSBgYG5vZGVfbWVtX3VzZWRfYnBgYCwKLWBgbm9kZV9tZW1fZnJlZV9icGBgLCBgYG5vZGVfbWVtY2dfdXNlZF9icGBgIGFuZCBgYG5vZGVfbWVtY2dfZnJlZV9icGBgIHRvCiYjNDM7YGBuaWRgYCBpcyBvcHRpb25hbGx5IHJlcXVpcmVkIGZvciBgYG5vZGVfbWVtX3VzZWRfYnBgYCwgYGBub2RlX21lbV9mcmVlX2JwYGAsCiYjNDM7YGBub2RlX21lbWNnX3VzZWRfYnBgYCwgYGBub2RlX21lbWNnX2ZyZWVfYnBgYCBhbmQgYGBub2RlX2VsaWdpYmxlX21lbV9icGBgIHRvCiBwb2ludCB0aGUgc3BlY2lmaWMgTlVNQSBub2RlLgogCiBgYHBhdGhgYCBpcyBvcHRpb25hbGx5IHJlcXVpcmVkIGZvciBvbmx5IGBgbm9kZV9tZW1jZ191c2VkX2JwYGAgYW5kCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmMKaW5kZXggOWEwMzEyMzI2OWMyOGUuLjVmZWJlNThhMDcwMjg5IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jCkBAIC0xMzQ3LDIxICYjNDM7MTM0NywzMyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogc3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LAogCQlzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpzcmMsIHVuc2lnbmVkIGxvbmcgc3JjX21pbl9yZWdpb25fc3opCiB7Ci0Jc3RydWN0IGRhbW9uX3JlZ2lvbiAqc3JjX3JlZ2lvbjsKJiM0MzsJc3RydWN0IGRhbW9uX3JlZ2lvbiAqc3JjX3JlZ2lvbiwgKnByZXYgPSBOVUxMOwogCXN0cnVjdCBkYW1vbl9hZGRyX3JhbmdlICpyYW5nZXM7CiAJaW50IGkgPSAwLCBlcnI7CiAKLQlkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKQotCQlpJiM0MzsmIzQzOzsKJiM0MzsJZGFtb25fZm9yX2VhY2hfcmVnaW9uKHNyY19yZWdpb24sIHNyYykgewomIzQzOwkJaWYgKCFwcmV2IHx8IHByZXYtJmd0O2FyLmVuZCAhPSBzcmNfcmVnaW9uLSZndDthci5zdGFydCkKJiM0MzsJCQlpJiM0MzsmIzQzOzsKJiM0MzsJCXByZXYgPSBzcmNfcmVnaW9uOwomIzQzOwl9CiAJaWYgKCFpKQogCQlyZXR1cm4gMDsKIAogCXJhbmdlcyA9IGt2bWFsbG9jX29ianMoKnJhbmdlcywgaSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX05PV0FSTik7CiAJaWYgKCFyYW5nZXMpCiAJCXJldHVybiAtRU5PTUVNOwomIzQzOwlwcmV2ID0gTlVMTDsKIAlpID0gMDsKLQlkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKQotCQlyYW5nZXNbaSYjNDM7JiM0MztdID0gc3JjX3JlZ2lvbi0mZ3Q7YXI7CiYjNDM7CWRhbW9uX2Zvcl9lYWNoX3JlZ2lvbihzcmNfcmVnaW9uLCBzcmMpIHsKJiM0MzsJCWlmICghcHJldikgewomIzQzOwkJCXJhbmdlc1tpXS5zdGFydCA9IHNyY19yZWdpb24tJmd0O2FyLnN0YXJ0OwomIzQzOwkJfSBlbHNlIGlmIChwcmV2LSZndDthci5lbmQgIT0gc3JjX3JlZ2lvbi0mZ3Q7YXIuc3RhcnQpIHsKJiM0MzsJCQlyYW5nZXNbaSYjNDM7JiM0MztdLmVuZCA9IHByZXYtJmd0O2FyLmVuZDsKJiM0MzsJCQlyYW5nZXNbaV0uc3RhcnQgPSBzcmNfcmVnaW9uLSZndDthci5zdGFydDsKJiM0MzsJCX0KJiM0MzsJCXByZXYgPSBzcmNfcmVnaW9uOwomIzQzOwl9CiYjNDM7CXJhbmdlc1tpJiM0MzsmIzQzO10uZW5kID0gZGFtb25fbGFzdF9yZWdpb24oc3JjKS0mZ3Q7YXIuZW5kOwogCWVyciA9IGRhbW9uX3NldF9yZWdpb25zKGRzdCwgcmFuZ2VzLCBpLCBzcmNfbWluX3JlZ2lvbl9zeik7CiAJa3ZmcmVlKHJhbmdlcyk7CiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jCmluZGV4IGUzNTI2YTI2M2UyMDVmLi42NzEwYjZkMDE5YmY1MyAxMDA2NDQKLS0tIGEvbW0vZGFtb24vc3lzZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jCkBAIC0xMDczLDcgJiM0MzsxMDczLDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqZGFtb25fc3lzZnNfcHJvYmVfYWxsb2Modm9pZCkKIAlyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlKTsKIH0KIAotc3RhdGljIGludCBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKmF0dHIpCiYjNDM7c3RhdGljIGludCBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKnByb2JlKQogewogCXN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpmaWx0ZXJzOwogCWludCBlcnI7CkBAIC0xMDgxLDIyICYjNDM7MTA4MSwyMiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cikKIAlmaWx0ZXJzID0gZGFtb25fc3lzZnNfZmlsdGVyc19hbGxvYygpOwogCWlmICghZmlsdGVycykKIAkJcmV0dXJuIC1FTk9NRU07Ci0JYXR0ci0mZ3Q7ZmlsdGVycyA9IGZpbHRlcnM7CiYjNDM7CXByb2JlLSZndDtmaWx0ZXJzID0gZmlsdGVyczsKIAogCWVyciA9IGtvYmplY3RfaW5pdF9hbmRfYWRkKCZhbXA7ZmlsdGVycy0mZ3Q7a29iaiwgJmFtcDtkYW1vbl9zeXNmc19maWx0ZXJzX2t0eXBlLAotCQkJJmFtcDthdHRyLSZndDtrb2JqLCAmIzM0O2ZpbHRlcnMmIzM0Oyk7CiYjNDM7CQkJJmFtcDtwcm9iZS0mZ3Q7a29iaiwgJiMzNDtmaWx0ZXJzJiMzNDspOwogCWlmIChlcnIpIHsKIAkJa29iamVjdF9wdXQoJmFtcDtmaWx0ZXJzLSZndDtrb2JqKTsKLQkJYXR0ci0mZ3Q7ZmlsdGVycyA9IE5VTEw7CiYjNDM7CQlwcm9iZS0mZ3Q7ZmlsdGVycyA9IE5VTEw7CiAJfQogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICphdHRyKQomIzQzO3N0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSkKIHsKLQlpZiAoYXR0ci0mZ3Q7ZmlsdGVycykgewotCQlkYW1vbl9zeXNmc19maWx0ZXJzX3JtX2RpcnMoYXR0ci0mZ3Q7ZmlsdGVycyk7Ci0JCWtvYmplY3RfcHV0KCZhbXA7YXR0ci0mZ3Q7ZmlsdGVycy0mZ3Q7a29iaik7CiYjNDM7CWlmIChwcm9iZS0mZ3Q7ZmlsdGVycykgewomIzQzOwkJZGFtb25fc3lzZnNfZmlsdGVyc19ybV9kaXJzKHByb2JlLSZndDtmaWx0ZXJzKTsKJiM0MzsJCWtvYmplY3RfcHV0KCZhbXA7cHJvYmUtJmd0O2ZpbHRlcnMtJmd0O2tvYmopOwogCX0KIH0KIApAQCAtMTkwOSw0NyAmIzQzOzE5MDksNjUgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LAogCXJldHVybiBkYW1vbl9zZXRfYXR0cnMoY3R4LCAmYW1wO2F0dHJzKTsKIH0KIAotc3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwKLQkJc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlcyAqc3lzX3Byb2JlcykKJiM0MztzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsCiYjNDM7CQlzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqc3lzX2ZpbHRlcnMpCiB7CiAJaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgc3lzX3Byb2Jlcy0mZ3Q7bnI7IGkmIzQzOyYjNDM7KSB7Ci0JCXN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycyA9Ci0JCQlzeXNfcHJvYmVzLSZndDtwcm9iZXNfYXJyW2ldLSZndDtmaWx0ZXJzOwotCQlzdHJ1Y3QgZGFtb25fcHJvYmUgKmM7Ci0JCWludCBqOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgc3lzX2ZpbHRlcnMtJmd0O25yOyBpJiM0MzsmIzQzOykgewomIzQzOwkJc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqc3lzX2ZpbHRlciA9CiYjNDM7CQkJc3lzX2ZpbHRlcnMtJmd0O2ZpbHRlcnNfYXJyW2ldOwomIzQzOwkJc3RydWN0IGRhbW9uX2ZpbHRlciAqZmlsdGVyOwogCi0JCWlmICghc3lzX2ZpbHRlcnMpCi0JCQljb250aW51ZTsKLQkJYyA9IGRhbW9uX25ld19wcm9iZSgpOwotCQlpZiAoIWMpCiYjNDM7CQlmaWx0ZXIgPSBkYW1vbl9uZXdfZmlsdGVyKHN5c19maWx0ZXItJmd0O3R5cGUsCiYjNDM7CQkJCXN5c19maWx0ZXItJmd0O21hdGNoaW5nLAomIzQzOwkJCQlzeXNfZmlsdGVyLSZndDthbGxvdyk7CiYjNDM7CQlpZiAoIWZpbHRlcikKIAkJCXJldHVybiAtRU5PTUVNOwotCQlkYW1vbl9hZGRfcHJvYmUoY3R4LCBjKTsKLQotCQlmb3IgKGogPSAwOyBqICZsdDsgc3lzX2ZpbHRlcnMtJmd0O25yOyBqJiM0MzsmIzQzOykgewotCQkJc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqc3lzX2ZpbHRlciA9Ci0JCQkJc3lzX2ZpbHRlcnMtJmd0O2ZpbHRlcnNfYXJyW2pdOwotCQkJc3RydWN0IGRhbW9uX2ZpbHRlciAqZmlsdGVyOwotCi0JCQlmaWx0ZXIgPSBkYW1vbl9uZXdfZmlsdGVyKHN5c19maWx0ZXItJmd0O3R5cGUsCi0JCQkJCXN5c19maWx0ZXItJmd0O21hdGNoaW5nLAotCQkJCQlzeXNfZmlsdGVyLSZndDthbGxvdyk7Ci0JCQlpZiAoIWZpbHRlcikKLQkJCQlyZXR1cm4gLUVOT01FTTsKLQkJCWlmIChmaWx0ZXItJmd0O3R5cGUgPT0gREFNT05fRklMVEVSX1RZUEVfTUVNQ0cpIHsKLQkJCQlpbnQgZXJyOwotCi0JCQkJZXJyID0gZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZCgKLQkJCQkJCXN5c19maWx0ZXItJmd0O3BhdGgsCi0JCQkJCQkmYW1wO2ZpbHRlci0mZ3Q7bWVtY2dfaWQpOwotCQkJCWlmIChlcnIpIHsKLQkJCQkJZGFtb25fZGVzdHJveV9maWx0ZXIoZmlsdGVyKTsKLQkJCQkJcmV0dXJuIGVycjsKLQkJCQl9CiYjNDM7CQlpZiAoZmlsdGVyLSZndDt0eXBlID09IERBTU9OX0ZJTFRFUl9UWVBFX01FTUNHKSB7CiYjNDM7CQkJaW50IGVycjsKJiM0MzsKJiM0MzsJCQllcnIgPSBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKAomIzQzOwkJCQkJc3lzX2ZpbHRlci0mZ3Q7cGF0aCwKJiM0MzsJCQkJCSZhbXA7ZmlsdGVyLSZndDttZW1jZ19pZCk7CiYjNDM7CQkJaWYgKGVycikgewomIzQzOwkJCQlkYW1vbl9kZXN0cm95X2ZpbHRlcihmaWx0ZXIpOwomIzQzOwkJCQlyZXR1cm4gZXJyOwogCQkJfQotCQkJZGFtb25fYWRkX2ZpbHRlcihjLCBmaWx0ZXIpOwogCQl9CiYjNDM7CQlkYW1vbl9hZGRfZmlsdGVyKHByb2JlLCBmaWx0ZXIpOwomIzQzOwl9CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9wcm9iZShzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlLAomIzQzOwkJc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpzeXNfcHJvYmUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqc3lzX2ZpbHRlcnM7CiYjNDM7CiYjNDM7CXN5c19maWx0ZXJzID0gc3lzX3Byb2JlLSZndDtmaWx0ZXJzOwomIzQzOwlpZiAoIXN5c19maWx0ZXJzKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CXJldHVybiBkYW1vbl9zeXNmc19zZXRfZmlsdGVycyhwcm9iZSwgc3lzX2ZpbHRlcnMpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9wcm9iZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LAomIzQzOwkJc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlcyAqc3lzX3Byb2JlcykKJiM0Mzt7CiYjNDM7CWludCBpLCBlcnI7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBzeXNfcHJvYmVzLSZndDtucjsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqc3lzX3Byb2JlOwomIzQzOwkJc3RydWN0IGRhbW9uX3Byb2JlICpwOwomIzQzOwomIzQzOwkJcCA9IGRhbW9uX25ld19wcm9iZSgpOwomIzQzOwkJaWYgKCFwKQomIzQzOwkJCXJldHVybiAtRU5PTUVNOwomIzQzOwkJZGFtb25fYWRkX3Byb2JlKGN0eCwgcCk7CiYjNDM7CQlzeXNfcHJvYmUgPSBzeXNfcHJvYmVzLSZndDtwcm9iZXNfYXJyW2ldOwomIzQzOwkJZXJyID0gZGFtb25fc3lzZnNfc2V0X3Byb2JlKHAsIHN5c19wcm9iZSk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiAJfQogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oIGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oCmluZGV4IGEwMDE2ODczMDQ0NWQyLi4wZWM3ZDE0ZDM1NGU3NyAxMDA2NDQKLS0tIGEvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaApAQCAtMTU0Niw2ICYjNDM7MTU0NiwyMCBAQCBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3dhbGtfY29udHJvbF9vYnNvbGV0ZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJZGFtb25fZGVzdHJveV9jdHgoY3R4KTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfcmFuZChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGFtb25fY3R4IGN0eDsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CXByYW5kb21fc2VlZF9zdGF0ZSgmYW1wO2N0eC5ybmRfc3RhdGUsIGdldF9yYW5kb21fdTY0KCkpOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgMTAwMDA7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQl1bnNpZ25lZCBsb25nIHJuZCA9IGRhbW9uX3JhbmQoJmFtcDtjdHgsIDAsIDEwKTsKJiM0MzsKJiM0MzsJCUtVTklUX0VYUEVDVF9HRSh0ZXN0LCBybmQsIDApOwomIzQzOwkJS1VOSVRfRVhQRUNUX0xFKHRlc3QsIHJuZCwgOSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0UoZGFtb25fdGVzdF90YXJnZXQpLAogCUtVTklUX0NBU0UoZGFtb25fdGVzdF9yZWdpb25zKSwKQEAgLTE1NzcsNiAmIzQzOzE1OTEsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0UoZGFtb25fdGVzdF9hcHBseV9taW5fbnJfcmVnaW9ucyksCiAJS1VOSVRfQ0FTRShkYW1vbl90ZXN0X2lzX2xhc3RfcmVnaW9uKSwKIAlLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfd2Fsa19jb250cm9sX29ic29sZXRlKSwKJiM0MzsJS1VOSVRfQ0FTRShkYW1vbl90ZXN0X3JhbmQpLAogCXt9LAogfTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaAppbmRleCAyZWFhYTVhZTNjNWVkNy4uYjQzZGVlZTYwZmU5NTMgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoCkBAIC05OSwxNCAmIzQzOzk5LDU1IEBAIHRlc3Rfc3RhdHMoKQogCWRvbmUKIH0KIAomIzQzO3Rlc3RfZGVzdCgpCiYjNDM7ewomIzQzOwlkZXN0X2Rpcj0kMQomIzQzOwllbnN1cmVfZmlsZSAmIzM0OyRkZXN0X2Rpci9pZCYjMzQ7ICYjMzQ7ZXhpc3QmIzM0OyAmIzM0OzYwMCYjMzQ7CiYjNDM7CWVuc3VyZV9maWxlICYjMzQ7JGRlc3RfZGlyL3dlaWdodCYjMzQ7ICYjMzQ7ZXhpc3QmIzM0OyAmIzM0OzYwMCYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO3Rlc3RfZGVzdHMoKQomIzQzO3sKJiM0MzsJZGVzdHNfZGlyPSQxCiYjNDM7CWVuc3VyZV9maWxlICYjMzQ7JGRlc3RzX2Rpci9ucl9kZXN0cyYjMzQ7ICYjMzQ7ZXhpc3QmIzM0OyAmIzM0OzYwMCYjMzQ7CiYjNDM7CWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGRlc3RzX2Rpci9ucl9kZXN0cyYjMzQ7ICYjMzQ7MSYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwl0ZXN0X2Rlc3QgJiMzNDskZGVzdHNfZGlyLzAmIzM0OwomIzQzOwomIzQzOwllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRkZXN0c19kaXIvbnJfZGVzdHMmIzM0OyAmIzM0OzImIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKJiM0MzsJdGVzdF9kZXN0ICYjMzQ7JGRlc3RzX2Rpci8wJiMzNDsKJiM0MzsJdGVzdF9kZXN0ICYjMzQ7JGRlc3RzX2Rpci8xJiMzNDsKJiM0MzsKJiM0MzsJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskZGVzdHNfZGlyL25yX2Rlc3RzJiMzNDsgJiMzNDswJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWVuc3VyZV9kaXIgJiMzNDskZGVzdHNfZGlyLzAmIzM0OyAmIzM0O25vdF9leGlzdCYjMzQ7CiYjNDM7CWVuc3VyZV9kaXIgJiMzNDskZGVzdHNfZGlyLzEmIzM0OyAmIzM0O25vdF9leGlzdCYjMzQ7CiYjNDM7fQomIzQzOwogdGVzdF9maWx0ZXIoKQogewogCWZpbHRlcl9kaXI9JDEKIAllbnN1cmVfZmlsZSAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O2V4aXN0JiMzNDsgJiMzNDs2MDAmIzM0OwotCWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7YW5vbiYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwotCWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7bWVtY2cmIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKLQllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O2FkZHImIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKLQllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O3RhcmdldCYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwomIzQzOwlsb2NhbCBkaXJfbmFtZT0kKGJhc2VuYW1lICYjMzQ7JChkaXJuYW1lICYjMzQ7JGZpbHRlcl9kaXImIzM0OykmIzM0OykKJiM0MzsJaWYgIFsgJiMzNDskZGlyX25hbWUmIzM0OyA9ICYjMzQ7ZmlsdGVycyYjMzQ7IF0gfHwgWyAmIzM0OyRkaXJfbmFtZSYjMzQ7ID0gJiMzNDtvcHNfZmlsdGVycyYjMzQ7IF0KJiM0MzsJdGhlbgomIzQzOwkJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskZmlsdGVyX2Rpci90eXBlJiMzNDsgJiMzNDthbm9uJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CQllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O21lbWNnJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWZpCiYjNDM7CWlmICBbICYjMzQ7JGRpcl9uYW1lJiMzNDsgPSAmIzM0O2ZpbHRlcnMmIzM0OyBdIHx8IFsgJiMzNDskZGlyX25hbWUmIzM0OyA9ICYjMzQ7Y29yZV9maWx0ZXJzJiMzNDsgXQomIzQzOwl0aGVuCiYjNDM7CQllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O2FkZHImIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKJiM0MzsJCWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7dGFyZ2V0JiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWZpCiYjNDM7CWlmIFsgJiMzNDskZGlyX25hbWUmIzM0OyA9ICYjMzQ7Y29yZV9maWx0ZXJzJiMzNDsgXQomIzQzOwl0aGVuCiYjNDM7CQllbnN1cmVfd3JpdGVfZmFpbCAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O2Fub24mIzM0OyAmIzM0O29wcyB0eXBlJiMzNDsKJiM0MzsJCWVuc3VyZV93cml0ZV9mYWlsICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7bWVtY2cmIzM0OyAmIzM0O29wcyB0eXBlJiMzNDsKJiM0MzsJZmkKJiM0MzsJaWYgWyAmIzM0OyRkaXJfbmFtZSYjMzQ7ICA9ICYjMzQ7b3BzX2ZpbHRlcnMmIzM0OyBdCiYjNDM7CXRoZW4KJiM0MzsJCWVuc3VyZV93cml0ZV9mYWlsICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7YWRkciYjMzQ7ICYjMzQ7Y29yZSB0eXBlJiMzNDsKJiM0MzsJCWVuc3VyZV93cml0ZV9mYWlsICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7dGFyZ2V0JiMzNDsgJiMzNDtjb3JlIHR5cGUmIzM0OwomIzQzOwlmaQogCWVuc3VyZV93cml0ZV9mYWlsICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7Zm9vJiMzNDsgJiMzNDtpbnZhbGlkIGlucHV0JiMzNDsKIAllbnN1cmVfZmlsZSAmIzM0OyRmaWx0ZXJfZGlyL21hdGNoaW5nJiMzNDsgJiMzNDtleGlzdCYjMzQ7ICYjMzQ7NjAwJiMzNDsKIAllbnN1cmVfZmlsZSAmIzM0OyRmaWx0ZXJfZGlyL21lbWNnX3BhdGgmIzM0OyAmIzM0O2V4aXN0JiMzNDsgJiMzNDs2MDAmIzM0OwpAQCAtMTU4LDYgJiM0MzsxOTksMjAgQEAgdGVzdF9nb2FsKCkKIAllbnN1cmVfZGlyICYjMzQ7JGdvYWxfZGlyJiMzNDsgJiMzNDtleGlzdCYjMzQ7CiAJZW5zdXJlX2ZpbGUgJiMzNDskZ29hbF9kaXIvdGFyZ2V0X3ZhbHVlJiMzNDsgJiMzNDtleGlzdCYjMzQ7ICYjMzQ7NjAwJiMzNDsKIAllbnN1cmVfZmlsZSAmIzM0OyRnb2FsX2Rpci9jdXJyZW50X3ZhbHVlJiMzNDsgJiMzNDtleGlzdCYjMzQ7ICYjMzQ7NjAwJiMzNDsKJiM0MzsJZW5zdXJlX2ZpbGUgJiMzNDskZ29hbF9kaXIvdGFyZ2V0X21ldHJpYyYjMzQ7ICYjMzQ7ZXhpc3QmIzM0OyAmIzM0OzYwMCYjMzQ7CiYjNDM7CWxvY2FsIGZwYXRoPSYjMzQ7JGdvYWxfZGlyL3RhcmdldF9tZXRyaWMmIzM0OwomIzQzOwllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmcGF0aCYjMzQ7ICYjMzQ7dXNlcl9pbnB1dCYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmcGF0aCYjMzQ7ICYjMzQ7c29tZV9tZW1fcHNpX3VzJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZwYXRoJiMzNDsgJiMzNDtub2RlX21lbV91c2VkX2JwJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZwYXRoJiMzNDsgJiMzNDtub2RlX21lbV9mcmVlX2JwJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZwYXRoJiMzNDsgJiMzNDtub2RlX21lbWNnX3VzZWRfYnAmIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKJiM0MzsJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskZnBhdGgmIzM0OyAmIzM0O25vZGVfbWVtY2dfZnJlZV9icCYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmcGF0aCYjMzQ7ICYjMzQ7YWN0aXZlX21lbV9icCYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmcGF0aCYjMzQ7ICYjMzQ7aW5hY3RpdmVfbWVtX2JwJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZwYXRoJiMzNDsgJiMzNDtub2RlX2VsaWdpYmxlX21lbV9icCYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwllbnN1cmVfd3JpdGVfZmFpbCAmIzM0OyRmcGF0aCYjMzQ7ICYjMzQ7Zm9vJiMzNDsgJiMzNDtpbnZhbGlkIGlucHV0JiMzNDsKJiM0MzsJZW5zdXJlX2ZpbGUgJiMzNDskZ29hbF9kaXIvbmlkJiMzNDsgJiMzNDtleGlzdCYjMzQ7ICYjMzQ7NjAwJiMzNDsKJiM0MzsJZW5zdXJlX2ZpbGUgJiMzNDskZ29hbF9kaXIvcGF0aCYjMzQ7ICYjMzQ7ZXhpc3QmIzM0OyAmIzM0OzYwMCYjMzQ7CiB9CiAKIHRlc3RfZ29hbHMoKQpAQCAtMjA3LDcgJiM0MzsyNjIsMTAgQEAgdGVzdF9zY2hlbWUoKQogCWVuc3VyZV9maWxlICYjMzQ7JHNjaGVtZV9kaXIvYXBwbHlfaW50ZXJ2YWxfdXMmIzM0OyAmIzM0O2V4aXN0JiMzNDsgJiMzNDs2MDAmIzM0OwogCXRlc3RfcXVvdGFzICYjMzQ7JHNjaGVtZV9kaXIvcXVvdGFzJiMzNDsKIAl0ZXN0X3dhdGVybWFya3MgJiMzNDskc2NoZW1lX2Rpci93YXRlcm1hcmtzJiMzNDsKJiM0MzsJdGVzdF9kZXN0cyAmIzM0OyRzY2hlbWVfZGlyL2Rlc3RzJiMzNDsKIAl0ZXN0X2ZpbHRlcnMgJiMzNDskc2NoZW1lX2Rpci9maWx0ZXJzJiMzNDsKJiM0MzsJdGVzdF9maWx0ZXJzICYjMzQ7JHNjaGVtZV9kaXIvY29yZV9maWx0ZXJzJiMzNDsKJiM0MzsJdGVzdF9maWx0ZXJzICYjMzQ7JHNjaGVtZV9kaXIvb3BzX2ZpbHRlcnMmIzM0OwogCXRlc3Rfc3RhdHMgJiMzNDskc2NoZW1lX2Rpci9zdGF0cyYjMzQ7CiAJdGVzdF90cmllZF9yZWdpb25zICYjMzQ7JHNjaGVtZV9kaXIvdHJpZWRfcmVnaW9ucyYjMzQ7CiB9CkBAIC0zNDYsOCAmIzQzOzQwNCwxMyBAQCB0ZXN0X3Byb2JlcygpCiAJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskcHJvYmVzX2Rpci9ucl9wcm9iZXMmIzM0OyAmIzM0OzEmIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKIAl0ZXN0X3Byb2JlICYjMzQ7JHByb2Jlc19kaXIvMCYjMzQ7CiAKJiM0MzsJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskcHJvYmVzX2Rpci9ucl9wcm9iZXMmIzM0OyAmIzM0OzImIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKJiM0MzsJdGVzdF9wcm9iZSAmIzM0OyRwcm9iZXNfZGlyLzAmIzM0OwomIzQzOwl0ZXN0X3Byb2JlICYjMzQ7JHByb2Jlc19kaXIvMSYjMzQ7CiYjNDM7CiAJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskcHJvYmVzX2Rpci9ucl9wcm9iZXMmIzM0OyAmIzM0OzAmIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKIAllbnN1cmVfZGlyICYjMzQ7JHByb2Jlc19kaXIvMCYjMzQ7ICYjMzQ7bm90X2V4aXN0JiMzNDsKJiM0MzsJZW5zdXJlX2RpciAmIzM0OyRwcm9iZXNfZGlyLzEmIzM0OyAmIzM0O25vdF9leGlzdCYjMzQ7CiB9CiAKIHRlc3RfbW9uaXRvcmluZ19hdHRycygpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNjEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3ODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaDogQSBGb2N1c2VkIFJldmlldyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIHRoZSBEQU1PTiBzdWJzeXN0ZW0gaW4gdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBkYXRhIGFjY2VzcyBtb25pdG9yaW5nLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhlIGNoYW5nZXMgc3BhbiBxdWl0ZSBhIGZldyBmaWxlczogdGhlIGRvY3VtZW50YXRpb24gKEFCSSBhbmQgZGVzaWduIGRvY3MpLCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiAoYGNvcmUuY2AsIGBzeXNmcy5jYCksIGEgS1VuaXQgdGVzdCBoZWFkZXIsIGFuZCBhIHNlbGYtdGVzdCBzY3JpcHQgKGBzeXNmcy5zaGApLiBUaGlzIHNpZ25hbHMgYSBwb3RlbnRpYWxseSBzdWJzdGFudGlhbCBtb2RpZmljYXRpb24sIHdhcnJhbnRpbmcgYSBjbG9zZSBsb29rLgoKRmlyc3QgdXAsIGBtbS9kYW1vbi9jb3JlLmNgLiBUaGUgY29yZSBsb2dpYyBvZiBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYCBoYXMgYmVlbiBtb2RpZmllZC4gUmVhZGluZyB0aGUgY29kZSwgSSBzZWUgdGhpcyBpcyBhYm91dCBtZXJnaW5nIGNvbnRpZ3VvdXMgcmVnaW9ucy4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgYW4gb3B0aW1pemF0aW9uIHRoYXQgc2hvdWxkIGltcHJvdmUgZWZmaWNpZW5jeS4gVGhlIG9yaWdpbmFsIGNvZGUgaXRlcmF0ZWQgdGhyb3VnaCBlYWNoIHNvdXJjZSByZWdpb24sIGJ1dCB0aGUgbmV3IHZlcnNpb24gZXhwbGljaXRseSBjaGVja3MgZm9yIGNvbnRpZ3VvdXMgcmVnaW9ucyBhbmQgbWVyZ2VzIHRoZW0gaW50byBhIHNtYWxsZXIgc2V0IGJlZm9yZSBzZXR0aW5nIHRoZW0gb24gdGhlIGRlc3RpbmF0aW9uLiBHb29kIHByYWN0aWNlLgoKTmV4dCwgSSYjMzk7bGwgdHVybiBteSBhdHRlbnRpb24gdG8gYG1tL2RhbW9uL3N5c2ZzLmNgLiBJdCBsb29rcyBsaWtlIHRoZSB3YXkgZmlsdGVycyBhcmUgc2V0IGZvciBwcm9iZXMgaGFzIGJlZW4gYWx0ZXJlZC4gU3BlY2lmaWNhbGx5LCBgZGFtb25fc3lzZnNfc2V0X3Byb2Jlc2AgaGFzIGJlZW4gcmVuYW1lZCB0byBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgIGFuZCB0aGUgZnVuY3Rpb24gdGFrZXMgZGlmZmVyZW50IGFyZ3VtZW50cy4KCk5vdywgSSYjMzk7bSBjdXJpb3VzIHdoYXQgY29uZmlncyBhcmUgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgdGhpcyBwYXRjaCwgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgY2hhbmdlcyB0byB0aGVzZSBjb3JlIGZ1bmN0aW9ucy4gSSB0aGluayBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgSSYjMzk7dmUgZXhhbWluZWQgdG8gY2hlY2sgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIHRoaXMgcGF0Y2ggdG8gZnVuY3Rpb24gY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9MTMyOD1zdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzQ2LSAqL1xubW0vZGFtb24vY29yZS5jOjEzNDc6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LFxubW0vZGFtb24vY29yZS5jLTEzNDgtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnNyYywgdW5zaWduZWQgbG9uZyBzcmNfbWluX3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTM4Mj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXQoXG4tLVxubW0vZGFtb24vY29yZS5jLTEzODgtXG5tbS9kYW1vbi9jb3JlLmM6MTM4OTpcdGVyciA9IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3QsIHNyYywgc3JjX21pbl9yZWdpb25fc3opO1xubW0vZGFtb24vY29yZS5jLTEzOTAtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMjAwPXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X3RhcmdldF9yZWdpb25zX2ZvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyMTYtXHR9XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTIxNzpcdGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3RfdGFyZ2V0LCBzcmNfdGFyZ2V0LCAxKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMjE4LVx0aSA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc4NQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgbXkgdGhvdWdodCBwcm9jZXNzIHJlZ2FyZGluZyBLY29uZmlnIGFuZCBEQU1PTiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIEtjb25maWcgZm9yIERBTU9OKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIEtjb25maWcgYXNwZWN0cyBvZiBEQU1PTi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1lbnRhbGx5IHBhcnNlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O20gaW1tZWRpYXRlbHkgaW50ZXJlc3RlZCBpbiB0aGUgbGV2ZWwgb2YgZ3JhbnVsYXJpdHkgYXZhaWxhYmxlLiBBcmUgdGhlcmUgZmluZS1ncmFpbmVkIGNvbnRyb2xzIGZvciBlbmFibGluZy9kaXNhYmxpbmcgc3BlY2lmaWMgREFNT04gZmVhdHVyZXMsIG9yIGlzIGl0IG1vcmUgb2YgYSAmIzM0O3dob2xlIGhvZyYjMzQ7IGFwcHJvYWNoPyBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGF2YWlsYWJsZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgdmFyaW91cyBvcHRpb25zLiBLbm93aW5nIHRoZSBidWlsZCBtYXRyaXggaGVyZSBpcyBrZXkg4oCTIHdoYXQga2VybmVsIGNvbmZpZ3VyYXRpb25zICpyZXF1aXJlKiBEQU1PTiwgd2hpY2ggKmVuYWJsZSogc3BlY2lmaWMgZnVuY3Rpb25hbGl0aWVzLCBhbmQgd2hhdCBjb25mbGljdHMgZXhpc3Q/IEkmIzM5O20gYW50aWNpcGF0aW5nIHBvdGVudGlhbCBjcm9zcy1hcmNoaXRlY3R1cmUgdmFyaWF0aW9uczsgS2NvbmZpZyBjYW4gZ2V0IHF1aXRlIGRpdmVyZ2VudCBhY3Jvc3MgcGxhdGZvcm1zLCBzbyBJIG5lZWQgdG8gbWVudGFsbHkgcHJlcGFyZSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYXJjaC1zcGVjaWZpYyBzZXR0aW5ncyBpZiB0aGVyZSBhcmUgYW55LiBJJiMzOTtsbCBhbHNvIGJlIGxvb2tpbmcgZm9yIGFueSBpbmRpY2F0aW9ucyBvZiBleHBlcmltZW50YWwgb3IgJiMzNDtzdGFnaW5nJiMzNDsgc3RhdHVzIOKAkyBhcmUgd2UgZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IHVuc3RhYmxlIGZlYXR1cmVzLCBvciB0aGluZ3MgcmVhZHkgZm9yIHdpZGVyIGRlcGxveW1lbnQ/IE15IGdvYWwgaXMgdG8gZ3Jhc3AgdGhlIGNvbmZpZ3VyYWJpbGl0eSBvZiBEQU1PTiBhbmQgYW50aWNpcGF0ZSBjb21tb24gc3VwcG9ydCBhbmQgZGVidWdnaW5nIHF1ZXJpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB3ZSBjYW4gZmluZS10dW5lIERBTU9OIGJlaGF2aW9yIGJhc2VkIG9uIG91ciBzcGVjaWZpYyB3b3JrbG9hZCBuZWVkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREFNT04mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXCYjMzQ7RGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1wmIzM0O1xubW0vZGFtb24vS2NvbmZpZy00LVxubW0vZGFtb24vS2NvbmZpZzo1OmNvbmZpZyBEQU1PTlxubW0vZGFtb24vS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTE0LVxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMjUtXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTI3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy0zNy1cbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXG5tbS9kYW1vbi9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTQ2LVxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcbm1tL2RhbW9uL0tjb25maWctNDgtXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy02Ny1cbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy03Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxubW0vZGFtb24vS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTA3LVxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcbm1tL2RhbW9uL0tjb25maWctMTA5LVx0Ym9vbCBcJiMzNDtCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMTUtXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcbm1tL2RhbW9uL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgxNgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGRpZ2dpbmcgaW50byB0aGUgbWVtb3J5IGFjY2VzcyBtb25pdG9yaW5nIChEQU1PTikgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdGhlIGNvcmUgbG9naWMgYW5kIHN5c2ZzIGludGVyZmFjZS4gSSBzZWUgdGhlIGNoYW5nZXMgYXJlIGNlbnRlcmVkIGFyb3VuZCBgbW0vZGFtb24vY29yZS5jYCBhbmQgYG1tL2RhbW9uL3N5c2ZzLmNgLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGBEQU1PTmAgYW5kIGBEQU1PTl9TWVNGU2AgY29uZmlnIG9wdGlvbnMg4oCTIHRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgdG8gcGF5IGF0dGVudGlvbiB0byBoZXJlLiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBkZWVwZXIgbG9vayBhdCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIHdpdGhpbiBgbW0vZGFtb24vc3lzZnMuY2AgdG8gc2VlIGV4YWN0bHkgd2hhdCYjMzk7cyBjaGFuZ2VkIGluIHRoYXQgaW50ZXJmYWNlLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYz0xODg5PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE5MTEtXG5tbS9kYW1vbi9zeXNmcy5jOjE5MTI6c3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfZmlsdGVycyhzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlLFxubW0vZGFtb24vc3lzZnMuYy0xOTEzLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqc3lzX2ZpbHRlcnMpXG4tLVxubW0vZGFtb24vc3lzZnMuYz0xOTQzPXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsXG4tLVxubW0vZGFtb24vc3lzZnMuYy0xOTUwLVx0XHRyZXR1cm4gMDtcbm1tL2RhbW9uL3N5c2ZzLmM6MTk1MTpcdHJldHVybiBkYW1vbl9zeXNmc19zZXRfZmlsdGVycyhwcm9iZSwgc3lzX2ZpbHRlcnMpO1xubW0vZGFtb24vc3lzZnMuYy0xOTUyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI4OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoOiBBIEZvY3VzZWQgUmV2aWV3KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIHRoZSBEQU1PTiAoRHluYW1pYyBBZGRyZXNzYWJsZSBNZW1vcnkgT04tbGluZSkgY29kZSwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBhIGZldyBrZXkgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIGl0JiMzOTtzIHRvdWNoaW5nIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgLCBhbmQgSSBrbm93IHRoYXQgb25lOyBpdCYjMzk7cyBjZW50cmFsIHRvIGhvdyBEQU1PTiBoYW5kbGVzIGl0cyB0YXJnZXQgbWVtb3J5IHJlZ2lvbnMuIFRoZSBvdGhlciBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgYXJlIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYCwgd2hpY2ggbG9va3MgbGlrZSBpdCYjMzk7cyBiZWVuIHJlZmFjdG9yZWQgaW50byBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYW5kIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYC4gT2theSwgdGhhdCYjMzk7cyBhIG1vcmUgZ3JhbnVsYXIgYXBwcm9hY2gsIHdoaWNoIHVzdWFsbHkgbWVhbnMgbW9yZSBjb250cm9sIG9yIGZsZXhpYmlsaXR5LiBJJiMzOTtsbCBuZWVkIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBzcGxpdC4gQWRkaXRpb25hbGx5LCBpdCYjMzk7cyBwbGF5aW5nIHdpdGggdGhlIHN5c2ZzIGludGVyZmFjZXM6IGBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlyc2AgYW5kIGBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzYCBhcmUgYWxzbyBpbiB0aGUgY3Jvc3NoYWlycy4gVGhlc2UgaGFuZGxlIHRoZSBkaXJlY3RvcnkgY3JlYXRpb24gYW5kIHJlbW92YWwgZm9yIHByb2JlcywgcmlnaHQ/IFRoaXMgc3VnZ2VzdHMgYSBjaGFuZ2UgaW4gaG93IERBTU9OIHN0cnVjdHVyZXMgaXRzIHN5c2ZzIGhpZXJhcmNoeS4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2AuIFdoZXJlIGlzIGl0IGNhbGxlZD8gQWgsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBkYW1vbl9jb21taXRfdGFyZ2V0YC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIGBkYW1vbl9jb21taXRfdGFyZ2V0YCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBzbyBhbnkgY2hhbmdlIGluIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgIGhhcyB0aGUgcG90ZW50aWFsIHRvIHJpcHBsZSB0aHJvdWdob3V0IHRoZSBEQU1PTiBzeXN0ZW0uIFRoaXMgY29ubmVjdGlvbiBpcyBrZXkgYW5kIHJlcXVpcmVzIGNhcmVmdWwgc2NydXRpbnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbW9kaWZpY2F0aW9uIHRvIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgIHdpbGwgaW1wYWN0IHRoaXMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2NvbW1pdF90YXJnZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9kYW1vbi5oPTc0PXN0cnVjdCBkYW1vbl9yZWdpb24ge1xuLS1cbmluY2x1ZGUvbGludXgvZGFtb24uaC05OS0gKlxuaW5jbHVkZS9saW51eC9kYW1vbi5oOjEwMDogKiBAb2Jzb2xldGUgaXMgdXNlZCBvbmx5IGZvciBkYW1vbl9jb21taXRfdGFyZ2V0cygpIHNvdXJjZSB0YXJnZXRzLCB0byBzcGVjaWZ5XG5pbmNsdWRlL2xpbnV4L2RhbW9uLmg6MTAxOiAqIHRoZSBtYXRjaGluZyBkZXN0aW5hdGlvbiB0YXJnZXRzIGFyZSBvYnNvbGV0ZS4gIFJlYWQgZGFtb25fY29tbWl0X3RhcmdldHMoKVxuaW5jbHVkZS9saW51eC9kYW1vbi5oLTEwMi0gKiB0byBzZWUgaG93IGl0IGlzIGhhbmRsZWQuXG4tLVxubW0vZGFtb24vY29yZS5jPTEzMjg9c3RhdGljIHN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX250aF90YXJnZXQoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTM0Ni0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMzQ3OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xMzQ4LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpzcmMsIHVuc2lnbmVkIGxvbmcgc3JjX21pbl9yZWdpb25fc3opXG4tLVxubW0vZGFtb24vY29yZS5jLTEzODEtXG5tbS9kYW1vbi9jb3JlLmM6MTM4MjpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXQoXG5tbS9kYW1vbi9jb3JlLmMtMTM4My1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LCBib29sIGRzdF9oYXNfcGlkLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzg4LVxubW0vZGFtb24vY29yZS5jOjEzODk6XHRlcnIgPSBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoZHN0LCBzcmMsIHNyY19taW5fcmVnaW9uX3N6KTtcbm1tL2RhbW9uL2NvcmUuYy0xMzkwLVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQwNS0gKlxubW0vZGFtb24vY29yZS5jOjE0MDY6ICogUmV2ZXJ0IHRhcmdldCBzdGF0ZXMgdGhhdCBjaGFuZ2VkIGJ5IGRhbW9uX2NvbW1pdF90YXJnZXQoKSwgYW5kIGNhbm5vdCBiZVxubW0vZGFtb24vY29yZS5jLTE0MDctICogY2xlYW5lZCB1cCBieSB0aGUgZGVzdGluYXRpb24gY29udGV4dCYjMzk7cyBvcHMuY2xlYW51cF90YXJnZXQoKS5cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTQwOT1zdGF0aWMgdm9pZCBkYW1vbl9yZXZlcnRfdGFyZ2V0X2NvbW1pdHMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDI0LVxubW0vZGFtb24vY29yZS5jOjE0MjU6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0cyhcbm1tL2RhbW9uL2NvcmUuYy0xNDI2LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQzOC1cdFx0aWYgKHNyY190YXJnZXQgXHUwMDI2XHUwMDI2ICFzcmNfdGFyZ2V0LVx1MDAzZW9ic29sZXRlKSB7XG5tbS9kYW1vbi9jb3JlLmM6MTQzOTpcdFx0XHRlcnIgPSBkYW1vbl9jb21taXRfdGFyZ2V0KFxubW0vZGFtb24vY29yZS5jLTE0NDAtXHRcdFx0XHRcdGRzdF90YXJnZXQsIGRhbW9uX3RhcmdldF9oYXNfcGlkKGRzdCksXG4tLVxubW0vZGFtb24vY29yZS5jLTE0NzMtXHRcdH1cbm1tL2RhbW9uL2NvcmUuYzoxNDc0Olx0XHRlcnIgPSBkYW1vbl9jb21taXRfdGFyZ2V0KG5ld190YXJnZXQsIGZhbHNlLFxubW0vZGFtb24vY29yZS5jLTE0NzUtXHRcdFx0XHRzcmNfdGFyZ2V0LCBkYW1vbl90YXJnZXRfaGFzX3BpZChzcmMpLFxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNTgzPWludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNjA4LVx0XHRyZXR1cm4gZXJyO1xubW0vZGFtb24vY29yZS5jOjE2MDk6XHRlcnIgPSBkYW1vbl9jb21taXRfdGFyZ2V0cyhkc3QsIHNyYyk7XG5tbS9kYW1vbi9jb3JlLmMtMTYxMC1cdGlmIChlcnIpXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oPTEyMDA9c3RhdGljIHZvaWQgZGFtb25fdGVzdF9jb21taXRfdGFyZ2V0X3JlZ2lvbnNfZm9yKHN0cnVjdCBrdW5pdCAqdGVzdCxcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTIxNi1cdH1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMjE3Olx0ZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKGRzdF90YXJnZXQsIHNyY190YXJnZXQsIDEpO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyMTgtXHRpID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4MTEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBxdWVzdGlvbjoKCioqRGVlcCBEaXZlIGludG8gYGRhbW9uX2NvbW1pdF9jdHhgKioKCk9rYXksIHNvIEkgc2VlIHRoZSBxdWVzdGlvbjogJiMzNDt3aGVyZSBpcyBgZGFtb25fY29tbWl0X2N0eGAgY2FsbGVkIGZyb20/JiMzNDsgVGhhdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZGVidWdnaW5nIHF1ZXN0aW9uLCBhbmQgSSYjMzk7ZCBhcHByb2FjaCBpdCB3aXRoIGEgZmV3IGFzc3VtcHRpb25zIGFuZCBhIHNwZWNpZmljIG1ldGhvZCBpbiBtaW5kLgoKRmlyc3QsIEkgYXNzdW1lIHRoaXMgaXMgYWJvdXQgYSBmdW5jdGlvbiBvciBhIG1ldGhvZCB3aXRoaW4gYSBjb2RlIGJhc2UsIHByZXN1bWFibHkgcmVsYXRlZCB0byBkYXRhIGFjY2VzcywgbWVtb3J5IG1hbmFnZW1lbnQsIG9yIG1heWJlIGV2ZW4gYSBkYXRhYmFzZSBjb250ZXh0LiBUaGUgbmFtZSBgZGFtb25fY29tbWl0X2N0eGAgaGludHMgYXQgc29tZSBraW5kIG9mIGNvbW1pdCBvcGVyYXRpb24sIHBvc3NpYmx5IHdpdGhpbiBhIGNvbnRleHQuIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIGNhdGFsb2dpbmcgcG9zc2libGUgYXJlYXMgaXQgKmNvdWxkKiBiZTogYSB0cmFuc2FjdGlvbiBtYW5hZ2VtZW50IGxpYnJhcnksIGEgY2FjaGluZyBsYXllciwgb3IgZXZlbiBzb21ldGhpbmcgaW50ZXJuYWwgdG8gYSBrZXJuZWwgZHJpdmVyLCBkZXBlbmRpbmcgb24gdGhlIGxhcmdlciBjb250ZXh0IG9mIHRoZSBwcm9qZWN0LgoKTm93LCBteSB0eXBpY2FsIGFwcHJvYWNoIHdvdWxkIGJlIHRvIHVzZSB0b29saW5nLiBJJiMzOTtkIHJlYWNoIGZvciBhIGNvZGUgc2VhcmNoIHV0aWxpdHnigJRgZ3JlcGAsIGBhY2tgLCBgcmlwZ3JlcGAsIG9yIGlmIEkmIzM5O20gdXNpbmcgYSBtb2Rlcm4gSURFLCBJJiMzOTtkIHVzZSBpdHMgYnVpbHQtaW4gc2VhcmNoIHdpdGggY3Jvc3MtcmVmZXJlbmNlIGNhcGFiaWxpdGllcy4gSSYjMzk7bSBsb29raW5nIGZvciB3aGVyZSB0aGlzIGV4YWN0IHN0cmluZyBgZGFtb25fY29tbWl0X2N0eGAgaXMgdXNlZCwgaWRlYWxseSBsb29raW5nIGZvciBmdW5jdGlvbiBjYWxscyBhbmQgcG90ZW50aWFsbHkgYXNzaWdubWVudHMuIEkgd291bGQgc3RhcnQgd2l0aCBhbiBleGFjdCBtYXRjaCBzZWFyY2ggdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLCBidXQgSSBtaWdodCB3aWRlbiB0aGUgc2VhcmNoIHBhcmFtZXRlcnMgdG8gYWNjb3VudCBmb3IgdmFyaWF0aW9ucyBpbiBuYW1pbmcgY29udmVudGlvbnMsIGxpa2UgcHJlZml4aW5nIHdpdGggYSBuYW1lc3BhY2Ugb3IgbW9kaWZ5aW5nIGNhc2luZy4KCklmIEkmIzM5O20gd29ya2luZyB3aXRoIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBsaWtlIEdpdCwgSSYjMzk7ZCBhbHNvIHN0YXJ0IHRvIHRoaW5rIGFib3V0IGBnaXQgYmxhbWVgIG9yIHRoZSByZXBvc2l0b3J5IGhpc3RvcnkuIElmIEkga25vdyB0aGUgY29kZSBiYXNlIHdlbGwsIEkgbWF5IHJlbWVtYmVyIGEgY2xhc3Mgb3IgZmlsZSB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGNhbGwgdGhlIGZ1bmN0aW9uLCBhbmQgSSBjb3VsZCBzZWFyY2ggb25seSB3aXRoaW4gdGhhdCBmaWxlLiAKClRoZSBnb2FsIGhlcmUgaXMgcHJlY2lzZSBpZGVudGlmaWNhdGlvbiBvZiB0aGUgY2FsbCBzaXRlcy4gT25jZSBJIGhhdmUgdGhlIGNhbGwgc2l0ZXMsIEkgY2FuIHN0YXJ0IHRvIHJlYXNvbiBhYm91dCB0aGUgY2FsbCBzdGFjaywgdGhlIGlucHV0IGFyZ3VtZW50cywgYW5kIHVsdGltYXRlbHkgdGhlIG92ZXJhbGwgZnVuY3Rpb24gYW5kIHdoYXQgaXQmIzM5O3Mgc3VwcG9zZWQgdG8gZG8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2NvbW1pdF9jdHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9kYW1vbi5oPTg1Mj1zdHJ1Y3QgZGFtb25fY3R4IHtcbi0tXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmgtODg4LVx0ICogaW5kaWNhdGUgaWYgdGhpcyBtYXkgYmUgY29ycnVwdGVkLiAgQ3VycmVudG9ubHkgdGhpcyBpcyBzZXQgb25seSBmb3JcbmluY2x1ZGUvbGludXgvZGFtb24uaDo4ODk6XHQgKiBkYW1vbl9jb21taXRfY3R4KCkgZmFpbHVyZS5cbmluY2x1ZGUvbGludXgvZGFtb24uaC04OTAtXHQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmg9MTA1Mj12b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbmluY2x1ZGUvbGludXgvZGFtb24uaC0xMDUzLVx0XHRcdHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsIHNzaXplX3QgbnJfc2NoZW1lcyk7XG5pbmNsdWRlL2xpbnV4L2RhbW9uLmg6MTA1NDppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpvbGRfY3R4LCBzdHJ1Y3QgZGFtb25fY3R4ICpuZXdfY3R4KTtcbmluY2x1ZGUvbGludXgvZGFtb24uaC0xMDU1LWludCBkYW1vbl9ucl9ydW5uaW5nX2N0eHModm9pZCk7XG4tLVxubW0vZGFtb24vY29yZS5jPTE1Mzk9c3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNTcwLS8qKlxubW0vZGFtb24vY29yZS5jOjE1NzE6ICogZGFtb25fY29tbWl0X2N0eCgpIC0gQ29tbWl0IHBhcmFtZXRlcnMgb2YgYSBEQU1PTiBjb250ZXh0IHRvIGFub3RoZXIuXG5tbS9kYW1vbi9jb3JlLmMtMTU3Mi0gKiBAZHN0Olx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PTiBjb250ZXh0LlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNTgyLSAqL1xubW0vZGFtb24vY29yZS5jOjE1ODM6aW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTU4NC17XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0yNzE9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNDAtXHRcdGdvdG8gb3V0O1xubW0vZGFtb24vbHJ1X3NvcnQuYzozNDE6XHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGN0eCwgcGFyYW1fY3R4KTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzQyLW91dDpcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmM9MTk0PXN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vcmVjbGFpbS5jLTI2Ny1cdFx0Z290byBvdXQ7XG5tbS9kYW1vbi9yZWNsYWltLmM6MjY4Olx0ZXJyID0gZGFtb25fY29tbWl0X2N0eChjdHgsIHBhcmFtX2N0eCk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMjY5LW91dDpcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIxMDQ9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIxMTItXHRcdHJldHVybiBOVUxMO1xubW0vZGFtb24vc3lzZnMuYzoyMTEzOlx0ZXJyID0gZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgcnVubmluZ19jdHgpO1xubW0vZGFtb24vc3lzZnMuYy0yMTE0LVx0aWYgKGVycikge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjEyNz1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjE0Ni1cdH1cbm1tL2RhbW9uL3N5c2ZzLmM6MjE0NzpcdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHBhcmFtX2N0eCk7XG5tbS9kYW1vbi9zeXNmcy5jLTIxNDgtXHRpZiAoZXJyKVxubW0vZGFtb24vc3lzZnMuYy0yMTQ5LVx0XHRnb3RvIG91dDtcbm1tL2RhbW9uL3N5c2ZzLmM6MjE1MDpcdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgoa2RhbW9uZC1cdTAwM2VkYW1vbl9jdHgsIHBhcmFtX2N0eCk7XG5tbS9kYW1vbi9zeXNmcy5jLTIxNTEtb3V0OlxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMjQyPXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X2N0eChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyNTUtXHRzcmMtXHUwMDNlbWluX3JlZ2lvbl9zeiA9IDQwOTY7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTI1NjpcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKSwgMCk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTI1Ny1cdHNyYy1cdTAwM2VtaW5fcmVnaW9uX3N6ID0gNDA5NTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMjU4Olx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpLCAtRUlOVkFMKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMjU5LVx0c3JjLVx1MDAzZW1pbl9yZWdpb25fc3ogPSA0MDk2O1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyNjAtXHRzcmMtXHUwMDNlcGF1c2UgPSB0cnVlO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjEyNjE6XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyksIDApO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyNjItXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBkc3QtXHUwMDNlcGF1c2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU0MgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgYGRhbW9uX2NvbW1pdF9jdHhgKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2tpbmcgaG93IGBkYW1vbl9jb21taXRfY3R4YCBpcyB1dGlsaXplZCB3aXRoaW4gdGhpcyBEQU1PTiBzdWJzeXN0ZW0uIFRoZSBjb2RlIHNob3dzIGl0IGFwcGVhcmluZyBpbiBhIGZldyBrZXkgcGxhY2VzOiBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCwgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AsIGFuZCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBkaXJlY3RseSBsaW5rcyBgZGFtb25fY29tbWl0X2N0eGAgdG8gdGhlIHN5c3RlbSBmaWxlIHN5c3RlbSwgb3Igc3lzZnMsIGFzIGEgcG90ZW50aWFsIGFjY2VzcyBwb2ludC4gVGhpcyBpbXBsaWVzIGEgbWV0aG9kIG9mIGV4dGVybmFsIGNvbnRyb2wgb3IgaW5wdXQgYmFzZWQgb24gdGhlc2UgdXNlcy4gCgpTaW5jZSBJIGFtIGNvbnNpZGVyaW5nIHRoZSBmbG93IGhlcmUsIEkgc2hvdWxkIHNlZSBob3cgZWxzZSB0aGlzIHJlYWNoZXMgdGhlIHN5c2ZzLiBMZXQgbWUgbm93IGNoZWNrIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYCwgYXMgaXQgaXMgY2FsbGVkIGJ5IGBkYW1vbl9zeXNmc19zZXRfYXR0cnNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9zeXNmc19zZXRfYXR0cnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYz0xODY3PXN0YXRpYyBzc2l6ZV90IHN0YXRlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE4ODgtXG5tbS9kYW1vbi9zeXNmcy5jOjE4ODk6c3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxubW0vZGFtb24vc3lzZnMuYy0xODkwLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfYXR0cnMgKnN5c19hdHRycylcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIwNzI9c3RhdGljIGludCBkYW1vbl9zeXNmc19hcHBseV9pbnB1dHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjA4NS1cdGN0eC1cdTAwM2VwYXVzZSA9IHN5c19jdHgtXHUwMDNlcGF1c2U7XG5tbS9kYW1vbi9zeXNmcy5jOjIwODY6XHRlcnIgPSBkYW1vbl9zeXNmc19zZXRfYXR0cnMoY3R4LCBzeXNfY3R4LVx1MDAzZWF0dHJzKTtcbm1tL2RhbW9uL3N5c2ZzLmMtMjA4Ny1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDk5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgREFNT04mIzM5O3MgU3lzZnMgSW50ZXJmYWNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSB3b3Jrcy4gSXQgc2VlbXMgYGRhbW9uX3N5c2ZzX2FwcGx5X2lucHV0c2AgaXMgdGhlIGtleSBmdW5jdGlvbiwgYmVpbmcgY2FsbGVkIGZyb20gYm90aCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBhbmQgYGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb25gLiBUaGlzIHRlbGxzIG1lIHRoYXQgYGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIHN5c2ZzLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLgoKTm93LCBmcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgSSYjMzk7bGwgbmVlZCBgREFNT05gIGFuZCBgREFNT05fU1lTRlNgIGVuYWJsZWQsIG9idmlvdXNseS4gQnV0IHRvIGZ1bGx5IGV4cGxvcmUgdGhlIGNhcGFiaWxpdGllcywgSSBzaG91bGQgY29uc2lkZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzdXBwb3J0aW5nIGNvbmZpZ3MgdGhhdCBtaWdodCBiZSB1c2VmdWwuIEkmIzM5O20gdGhpbmtpbmcgdGhpbmdzIGxpa2UgYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX1JFQ0xBSU1gLCBhbmQgYERBTU9OX0xSVV9TT1JUYCBjb3VsZCBiZSBiZW5lZmljaWFsIGZvciBjb21wcmVoZW5zaXZlIHRlc3Rpbmcgb2YgdGhlIHdob2xlIHRoaW5nLgoKVGhlIGNvcmUgaW1wbGVtZW50YXRpb24gbG9va3MgdG8gYmUgaW4gYG1tL2RhbW9uL2NvcmUuY2AgYW5kIHRoZSBzeXNmcyBwYXJ0IGlzIG9idmlvdXNseSBpbiBgbW0vZGFtb24vc3lzZnMuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19EQU1PTmAgaXMgZW5hYmxlZCwgYW5kIHRoZSBzeXNmcyBiaXRzIGFyZSBjb21waWxlZCB3aGVuIGBDT05GSUdfREFNT05fU1lTRlNgIGlzIGVuYWJsZWQuIFRpbWUgdG8gdGFrZSBhIHBlZWsgYXQgYG1tL2RhbW9uL01ha2VmaWxlYCB0byBjb25maXJtIGFsbCB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIHNldCB1cCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29iai0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZS0yLVxubW0vZGFtb24vTWFrZWZpbGU6MzpvYmoteVx0XHRcdFx0Oj0gY29yZS5vXG5tbS9kYW1vbi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19EQU1PTl9WQUREUilcdCYjNDM7PSBvcHMtY29tbW9uLm8gdmFkZHIub1xubW0vZGFtb24vTWFrZWZpbGU6NTpvYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbm1tL2RhbW9uL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0RBTU9OX1NZU0ZTKVx0JiM0Mzs9IHN5c2ZzLWNvbW1vbi5vIHN5c2ZzLXNjaGVtZXMubyBzeXNmcy5vXG5tbS9kYW1vbi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXG5tbS9kYW1vbi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19EQU1PTl9MUlVfU09SVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIGxydV9zb3J0Lm9cbm1tL2RhbW9uL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0RBTU9OX1NUQVQpXHQmIzQzOz0gbW9kdWxlcy1jb21tb24ubyBzdGF0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4OTcKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA0NDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERBTU9OIFBhdGNoIEZvY3VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBvZiBjb3Vyc2UsIGBDT05GSUdfREFNT05gIGFuZCBgQ09ORklHX0RBTU9OX1NZU0ZTYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuCgpOb3csIGxldCYjMzk7cyBnZXQgZG93biB0byB0aGUgc3BlY2lmaWNzOiBXaGF0IGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdGhpcyBwYXRjaCBpcyB0b3VjaGluZz8gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtb2RpZmllZCBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYCwgYGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZWAsIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYCwgYGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzYCwgYW5kIGBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzYC4gVGhvc2UgYXJlIHRoZSBmb2N1cyBzeW1ib2xzLCByaWdodD8gSSYjMzk7bGwgbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRob3NlIHNpeCBmdW5jdGlvbnMuCgpXYWl0IGEgc2Vjb25k4oCmIEkgbmVlZCB0byBjaGVjayB0aG9zZSBmdW5jdGlvbiBkZWZpbml0aW9ucyB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIGNvbnRleHQgcmlnaHQuIE9rYXksIGxldCBtZSBjb25maXJtLiAqQ2hlY2tzIHRoZSBkZWZpbml0aW9ucyouIFJpZ2h0LCBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYCBpcyBzdGF0aWMgaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHdoaWxlIHRoZSByZXN0LCBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgLCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgLCBhbmQgYGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNgLCBhcmUgc3RhdGljIGluIGBtbS9kYW1vbi9zeXNmcy5jYC4gU28gdGhleSBhcmUgYWxsIHN0YXRpYyB3aXRoaW4gdGhlaXIgcmVzcGVjdGl2ZSBzb3VyY2UgZmlsZXMuCgpUaGUgbmV4dCBjcml0aWNhbCBxdWVzdGlvbjogSG93IGFyZSB0aGVzZSBmdW5jdGlvbnMgcmVhY2hlZD8gQWgsIHRoZXkmIzM5O3JlIGFjY2Vzc2VkIHZpYSBzeXNmcyB3cml0ZXMsIGFyZW4mIzM5O3QgdGhleT8gSWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZXJlIGFyZSBwcm9iYWJseSBzeXNjYWxscyB0aGF0IHVsdGltYXRlbHkgdHJpZ2dlciB0aGVzZS4gRm9yIGluc3RhbmNlLCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBpcyBjYWxsZWQgd2hlbiB3cml0aW5nIHRvIHRoZSBgc3RhdGVgIGZpbGUgaW4gc3lzZnMsIGFuZCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgIGlzIGNhbGxlZCB3aGVuIHdyaXRpbmcgdG8gdGhlIGBucl9wcm9iZXNgIGZpbGUuIE9rYXksIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBleGFjdCBzeXNmcyBpbnRlcmZhY2UgbmFtZXMgdG8gYmUgc3VyZSwgYnV0IHRoYXQmIzM5O3MgdGhlIGdlbmVyYWwgcm91dGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL3N5c2ZzLmM9MTA3MT1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpkYW1vbl9zeXNmc19wcm9iZV9hbGxvYyh2b2lkKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTA3NS1cbm1tL2RhbW9uL3N5c2ZzLmM6MTA3NjpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqcHJvYmUpXG5tbS9kYW1vbi9zeXNmcy5jLTEwNzcte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTE1MD1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2Jlc19hZGRfZGlycyhcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTExODEtXG5tbS9kYW1vbi9zeXNmcy5jOjExODI6XHRcdGVyciA9IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHByb2JlKTtcbm1tL2RhbW9uL3N5c2ZzLmMtMTE4My1cdFx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA1NAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogQ29uZmlybWF0aW9uICZhbXA7IEZvY3VzKioKClJpZ2h0LCB0aGUgZGF0YSBpcyBkZWZpbml0ZWx5IHRoZXJlLiBXZSYjMzk7cmUgc2VlaW5nICpzb21ldGhpbmcqLCBhdCBsZWFzdC4gVGhlIG5leHQgY3J1Y2lhbCBzdGVwIGlzIHBpbnBvaW50aW5nIHRoZSBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY3JpdGljYWwgaW5mb3JtYXRpb24gbGl2ZXMuIFdlIG5lZWQgdG8gYW5hbHl6ZSB0aG9zZSBzcGVjaWZpYyByZWdpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGNvbW1pdCB0YXJnZXRzLCBhbmQgZnJvbSB0aGVyZSwgd2UgY2FuIGFzY2VydGFpbiB3aHkgdGhlIHRhcmdldHMgYXJlIHByZXNlbnQuIFdlIGFyZSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgIHNvIHRoYXQgdGhlIG92ZXJhbGwgZGF0YSBzdHJ1Y3R1cmUgY2FuIGJlIHVuZGVyc3Rvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9MTMyOD1zdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzQ2LSAqL1xubW0vZGFtb24vY29yZS5jOjEzNDc6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LFxubW0vZGFtb24vY29yZS5jLTEzNDgtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnNyYywgdW5zaWduZWQgbG9uZyBzcmNfbWluX3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTM4Mj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXQoXG4tLVxubW0vZGFtb24vY29yZS5jLTEzODgtXG5tbS9kYW1vbi9jb3JlLmM6MTM4OTpcdGVyciA9IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3QsIHNyYywgc3JjX21pbl9yZWdpb25fc3opO1xubW0vZGFtb24vY29yZS5jLTEzOTAtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMjAwPXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X3RhcmdldF9yZWdpb25zX2ZvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyMTYtXHR9XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTIxNzpcdGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3RfdGFyZ2V0LCBzcmNfdGFyZ2V0LCAxKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMjE4LVx0aSA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NjAyCgkJCQkJCQlvdXRwdXQ6IDE4OQoJCQkJCQkJdGhvdWdodHM6IDI3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBEQU1PTiBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHNvbWUga2V5IGFyZWFzIG9mIERBTU9OIOKAkyB0aGUgdGFyZ2V0IHJlZ2lvbiBjb21taXR0aW5nIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgbG9naWMgZm9yIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgLCBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgLCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgLCBhbmQgYGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNgLiBUaGVzZSBhcmUgYWxsIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdXNlci1zcGFjZSBpbnRlcmFjdGlvbiB2aWEgc3lzZnMsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIHRoZW0gYXMgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZy4gV2UgaGF2ZSB0aGUgY29uZmlncyBgREFNT05gIGFuZCBgREFNT05fU1lTRlNgIGFzIHJlbGV2YW50LgoKVGhlIGNvcmUgb2YgbXkgcmVhc29uaW5nIGlzIHRoYXQgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyByZWFjaGFibGUgdGhyb3VnaCBzeXNmcyBoYXZlIGEgc3Ryb25nIHBvdGVudGlhbCBmb3IgZmluZGluZyB2dWxuZXJhYmlsaXRpZXMuIFRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBjb2RlIHBhdGhzIG9yIGFsdGVyIGV4aXN0aW5nIG9uZXMgdGhhdCBhIGZ1enplciBjYW4gZWFzaWx5IGhpdC4gVGhlIGFiaWxpdHkgdG8gbWFuaXB1bGF0ZSBEQU1PTiBwcm9iZXMgYW5kIGZpbHRlcnMgdGhyb3VnaCBzeXNmcyBwcm92aWRlcyBhIGRpcmVjdCB2ZWN0b3IuCgpJJiMzOTttIHRoaW5raW5nLCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlncy4gQWgsIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgYXJlIGluIHRoZSBtaXggYXMgdGhleSBvcGVyYXRlIG9uIHRoZSBhY3R1YWwgdmFsdWVzLCBhbmQgYWx0aG91Z2ggYERBTU9OX1NZU0ZTYCBpcyBzdWZmaWNpZW50IHRvIHRyaWdnZXIgdGhlIHBhcnNpbmcsIGl0JiMzOTtzIHNhZmVyIHRvIGluY2x1ZGUgdGhvc2UgYXMgdGhlIGZlYXR1cmVzIG9mIERBTU9OIG9mdGVuIGdvIGhhbmQgaW4gaGFuZC4gQmVzdCB0byBoYXZlIGFsbCB0aGUgcGllY2VzIGluIHBsYWNlIGZvciBhIHJvYnVzdCBmdXp6aW5nIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfZmlsdGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcHJvYmUmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfc2V0X3Byb2JlcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIERBTU9OIGxvZ2ljIGZvciBjb21taXR0aW5nIHRhcmdldCByZWdpb25zIChtZXJnaW5nIGNvbnRpZ3VvdXMgcmVnaW9ucykgYW5kIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIHNldHRpbmcgdXAgREFNT04gcHJvYmVzIGFuZCBmaWx0ZXJzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIHN5c2ZzLCBtYWtpbmcgdGhlbSBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfc2V0X3Byb2JlJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3NldF9wcm9iZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfcHJvYmVfcm1fZGlycyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiBsb2dpYyBmb3IgY29tbWl0dGluZyB0YXJnZXQgcmVnaW9ucyAobWVyZ2luZyBjb250aWd1b3VzIHJlZ2lvbnMpIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBzZXR0aW5nIHVwIERBTU9OIHByb2JlcyBhbmQgZmlsdGVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBzeXNmcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDoxNi4yNDU1NTA2OTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzM1NjAxMjM5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9wcm9iZVwiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X3Byb2Jlc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiBsb2dpYyBmb3IgY29tbWl0dGluZyB0YXJnZXQgcmVnaW9ucyAobWVyZ2luZyBjb250aWd1b3VzIHJlZ2lvbnMpIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBzZXR0aW5nIHVwIERBTU9OIHByb2JlcyBhbmQgZmlsdGVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBzeXNmcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjQ0OjE2LjI0NTU1NTQ1OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4NDU4Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzkzOGQ4MGE2YmY0MmU4MDYyNjFlZTA2NjNlODFmNDZlZjMyNWVmOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAyMjo0NDoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vbiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXFxuaW5kZXggNGZkZWM2M2E0N2Q0YWEuLmRkNmI1YmQ3NmUxMTk2IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cXG5AQCAtMTU3LDYgKzE1Nyw0NiBAQCBEZXNjcmlwdGlvbjpcXHRXcml0aW5nIGEgdmFsdWUgdG8gdGhpcyBmaWxlIHNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mXFxuIFxcdFxcdG1vbml0b3JpbmcgcmVnaW9ucyBvZiB0aGUgREFNT04gY29udGV4dCBhcyB0aGUgdmFsdWUuICBSZWFkaW5nXFxuIFxcdFxcdHRoaXMgZmlsZSByZXR1cm5zIHRoZSB2YWx1ZS5cXG4gXFxuK1doYXQ6XFx0XFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXFx1MDAzY0tcXHUwMDNlL2NvbnRleHRzL1xcdTAwM2NDXFx1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9ucl9wcm9iZXNcXG4rRGF0ZTpcXHRcXHRNYXkgMjAyNlxcbitDb250YWN0OlxcdFNKIFBhcmsgXFx1MDAzY3NqQGtlcm5lbC5vcmdcXHUwMDNlXFxuK0Rlc2NyaXB0aW9uOlxcdFdyaXRpbmcgYSBudW1iZXIgJ04nIHRvIHRoaXMgZmlsZSBjcmVhdGVzIHRoZSBudW1iZXIgb2ZcXG4rXFx0XFx0ZGlyZWN0b3JpZXMgZm9yIGVhY2ggREFNT04gcHJvYmUgbmFtZWQgJzAnIHRvICdOLTEnIHVuZGVyIHRoZVxcbitcXHRcXHRwcm9iZXMvIGRpcmVjdG9yeS5cXG4rXFxuK1doYXQ6XFx0XFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXFx1MDAzY0tcXHUwMDNlL2NvbnRleHRzL1xcdTAwM2NDXFx1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9cXHUwMDNjUFxcdTAwM2UvZmlsdGVycy9ucl9maWx0ZXJzXFxuK0RhdGU6XFx0XFx0TWF5IDIwMjZcXG4rQ29udGFjdDpcXHRTSiBQYXJrIFxcdTAwM2NzakBrZXJuZWwub3JnXFx1MDAzZVxcbitEZXNjcmlwdGlvbjpcXHRXcml0aW5nIGEgbnVtYmVyICdOJyB0byB0aGlzIGZpbGUgY3JlYXRlcyB0aGUgbnVtYmVyIG9mXFxuK1xcdFxcdGRpcmVjdG9yaWVzIGZvciBlYWNoIERBTU9OIHByb2JlIGZpbHRlciBuYW1lZCAnMCcgdG8gJ04tMSdcXG4rXFx0XFx0dW5kZXIgdGhlIGZpbHRlcnMvIGRpcmVjdG9yeS5cXG4rXFxuK1doYXQ6XFx0XFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXFx1MDAzY0tcXHUwMDNlL2NvbnRleHRzL1xcdTAwM2NDXFx1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9cXHUwMDNjUFxcdTAwM2UvZmlsdGVycy9cXHUwMDNjRlxcdTAwM2UvdHlwZVxcbitEYXRlOlxcdFxcdE1heSAyMDI2XFxuK0NvbnRhY3Q6XFx0U0ogUGFyayBcXHUwMDNjc2pAa2VybmVsLm9yZ1xcdTAwM2VcXG4rRGVzY3JpcHRpb246XFx0V3JpdGluZyB0byBhbmQgcmVhZGluZyBmcm9tIHRoaXMgZmlsZSBzZXRzIGFuZCBnZXRzIHRoZSB0eXBlIG9mXFxuK1xcdFxcdHRoZSBtZW1vcnkgb2YgdGhlIGludGVyZXN0LlxcbitcXG4rV2hhdDpcXHRcXHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cXHUwMDNjS1xcdTAwM2UvY29udGV4dHMvXFx1MDAzY0NcXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1xcdTAwM2NQXFx1MDAzZS9maWx0ZXJzL1xcdTAwM2NGXFx1MDAzZS9wYXRoXFxuK0RhdGU6XFx0XFx0TWF5IDIwMjZcXG4rQ29udGFjdDpcXHRTSiBQYXJrIFxcdTAwM2NzakBrZXJuZWwub3JnXFx1MDAzZVxcbitEZXNjcmlwdGlvbjpcXHRJZiAnbWVtY2cnIGlzIHdyaXR0ZW4gdG8gdGhlICd0eXBlJyBmaWxlLCB3cml0aW5nIHRvIGFuZFxcbitcXHRcXHRyZWFkaW5nIGZyb20gdGhpcyBmaWxlIHNldHMgYW5kIGdldHMgdGhlIHBhdGggdG8gdGhlIG1lbW9yeVxcbitcXHRcXHRjZ3JvdXAgb2YgdGhlIGludGVyZXN0LlxcbitcXG4rV2hhdDpcXHRcXHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cXHUwMDNjS1xcdTAwM2UvY29udGV4dHMvXFx1MDAzY0NcXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1xcdTAwM2NQXFx1MDAzZS9maWx0ZXJzL1xcdTAwM2NGXFx1MDAzZS9tYXRjaGluZ1xcbitEYXRlOlxcdFxcdE1heSAyMDI2XFxuK0NvbnRhY3Q6XFx0U0ogUGFyayBcXHUwMDNjc2pAa2VybmVsLm9yZ1xcdTAwM2VcXG4rRGVzY3JpcHRpb246XFx0V3JpdGluZyAnWScgb3IgJ04nIHRvIHRoaXMgZmlsZSBzZXRzIHdoZXRoZXIgdGhlIGZpbHRlciBpcyBmb3JcXG4rXFx0XFx0dGhlIG1lbW9yeSBvZiB0aGUgJ3R5cGUnLCBvciBhbGwgZXhjZXB0IHRoZSAndHlwZScuXFxuK1xcbitXaGF0OlxcdFxcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1xcdTAwM2NLXFx1MDAzZS9jb250ZXh0cy9cXHUwMDNjQ1xcdTAwM2UvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvXFx1MDAzY1BcXHUwMDNlL2ZpbHRlcnMvXFx1MDAzY0ZcXHUwMDNlL2FsbG93XFxuK0RhdGU6XFx0XFx0TWF5IDIwMjZcXG4rQ29udGFjdDpcXHRTSiBQYXJrIFxcdTAwM2NzakBrZXJuZWwub3JnXFx1MDAzZVxcbitEZXNjcmlwdGlvbjpcXHRXcml0aW5nICdZJyBvciAnTicgdG8gdGhpcyBmaWxlIHNldHMgd2hldGhlciB0byBhbGxvdyBvciByZWplY3RcXG4rXFx0XFx0aGl0dGluZyB0aGUgcHJvYmUgZm9yIHRoZSBtZW1vcnkgdGhhdCBzYXRpc2ZpZXMgdGhlICd0eXBlJyBhbmRcXG4rXFx0XFx0dGhlICdtYXRjaGluZycgb2YgdGhlIGRpcmVjdG9yeS5cXG4rXFxuIFdoYXQ6XFx0XFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXFx1MDAzY0tcXHUwMDNlL2NvbnRleHRzL1xcdTAwM2NDXFx1MDAzZS90YXJnZXRzL25yX3RhcmdldHNcXG4gRGF0ZTpcXHRcXHRNYXIgMjAyMlxcbiBDb250YWN0OlxcdFNKIFBhcmsgXFx1MDAzY3NqQGtlcm5lbC5vcmdcXHUwMDNlXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdCBiL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdFxcbmluZGV4IGMxNmEzYmIyODhkMDc5Li40NTdkNmU4YmM3ODc4NSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcXG5AQCAtNjg2LDkgKzY4NiwxMSBAQCBtZWNoYW5pc20gdHJpZXMgdG8gbWFrZSBgYGN1cnJlbnRfdmFsdWVgYCBvZiBgYHRhcmdldF9tZXRyaWNgYCBiZSBzYW1lIHRvXFxuICAgKDEvMTAsMDAwKS5cXG4gLSBgYGluYWN0aXZlX21lbV9icGBgOiBJbmFjdGl2ZSB0byBhY3RpdmUgKyBpbmFjdGl2ZSAoTFJVKSBtZW1vcnkgc2l6ZSByYXRpbyBpblxcbiAgIGJwICgxLzEwLDAwMCkuXFxuKy0gYGBub2RlX2VsaWdpYmxlX21lbV9icGBgOiBTY2hlbWUgdGFyZ2V0IGFjY2VzcyBwYXR0ZXJuLWVsaWdpYmxlIG1lbW9yeSByYXRpb1xcbisgIG9mIGEgbm9kZSBpbiBicCAoMS8xMCwwMDApLlxcbiBcXG4tYGBuaWRgYCBpcyBvcHRpb25hbGx5IHJlcXVpcmVkIGZvciBvbmx5IGBgbm9kZV9tZW1fdXNlZF9icGBgLFxcbi1gYG5vZGVfbWVtX2ZyZWVfYnBgYCwgYGBub2RlX21lbWNnX3VzZWRfYnBgYCBhbmQgYGBub2RlX21lbWNnX2ZyZWVfYnBgYCB0b1xcbitgYG5pZGBgIGlzIG9wdGlvbmFsbHkgcmVxdWlyZWQgZm9yIGBgbm9kZV9tZW1fdXNlZF9icGBgLCBgYG5vZGVfbWVtX2ZyZWVfYnBgYCxcXG4rYGBub2RlX21lbWNnX3VzZWRfYnBgYCwgYGBub2RlX21lbWNnX2ZyZWVfYnBgYCBhbmQgYGBub2RlX2VsaWdpYmxlX21lbV9icGBgIHRvXFxuIHBvaW50IHRoZSBzcGVjaWZpYyBOVU1BIG5vZGUuXFxuIFxcbiBgYHBhdGhgYCBpcyBvcHRpb25hbGx5IHJlcXVpcmVkIGZvciBvbmx5IGBgbm9kZV9tZW1jZ191c2VkX2JwYGAgYW5kXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xcbmluZGV4IDlhMDMxMjMyNjljMjhlLi41ZmViZTU4YTA3MDI4OSAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcXG5AQCAtMTM0NywyMSArMTM0NywzMyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiBzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsXFxuIFxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnNyYywgdW5zaWduZWQgbG9uZyBzcmNfbWluX3JlZ2lvbl9zeilcXG4ge1xcbi1cXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpzcmNfcmVnaW9uO1xcbitcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpzcmNfcmVnaW9uLCAqcHJldiA9IE5VTEw7XFxuIFxcdHN0cnVjdCBkYW1vbl9hZGRyX3JhbmdlICpyYW5nZXM7XFxuIFxcdGludCBpID0gMCwgZXJyO1xcbiBcXG4tXFx0ZGFtb25fZm9yX2VhY2hfcmVnaW9uKHNyY19yZWdpb24sIHNyYylcXG4tXFx0XFx0aSsrO1xcbitcXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKSB7XFxuK1xcdFxcdGlmICghcHJldiB8fCBwcmV2LVxcdTAwM2Vhci5lbmQgIT0gc3JjX3JlZ2lvbi1cXHUwMDNlYXIuc3RhcnQpXFxuK1xcdFxcdFxcdGkrKztcXG4rXFx0XFx0cHJldiA9IHNyY19yZWdpb247XFxuK1xcdH1cXG4gXFx0aWYgKCFpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdHJhbmdlcyA9IGt2bWFsbG9jX29ianMoKnJhbmdlcywgaSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX05PV0FSTik7XFxuIFxcdGlmICghcmFuZ2VzKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0cHJldiA9IE5VTEw7XFxuIFxcdGkgPSAwO1xcbi1cXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKVxcbi1cXHRcXHRyYW5nZXNbaSsrXSA9IHNyY19yZWdpb24tXFx1MDAzZWFyO1xcbitcXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKSB7XFxuK1xcdFxcdGlmICghcHJldikge1xcbitcXHRcXHRcXHRyYW5nZXNbaV0uc3RhcnQgPSBzcmNfcmVnaW9uLVxcdTAwM2Vhci5zdGFydDtcXG4rXFx0XFx0fSBlbHNlIGlmIChwcmV2LVxcdTAwM2Vhci5lbmQgIT0gc3JjX3JlZ2lvbi1cXHUwMDNlYXIuc3RhcnQpIHtcXG4rXFx0XFx0XFx0cmFuZ2VzW2krK10uZW5kID0gcHJldi1cXHUwMDNlYXIuZW5kO1xcbitcXHRcXHRcXHRyYW5nZXNbaV0uc3RhcnQgPSBzcmNfcmVnaW9uLVxcdTAwM2Vhci5zdGFydDtcXG4rXFx0XFx0fVxcbitcXHRcXHRwcmV2ID0gc3JjX3JlZ2lvbjtcXG4rXFx0fVxcbitcXHRyYW5nZXNbaSsrXS5lbmQgPSBkYW1vbl9sYXN0X3JlZ2lvbihzcmMpLVxcdTAwM2Vhci5lbmQ7XFxuIFxcdGVyciA9IGRhbW9uX3NldF9yZWdpb25zKGRzdCwgcmFuZ2VzLCBpLCBzcmNfbWluX3JlZ2lvbl9zeik7XFxuIFxcdGt2ZnJlZShyYW5nZXMpO1xcbiBcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xcbmluZGV4IGUzNTI2YTI2M2UyMDVmLi42NzEwYjZkMDE5YmY1MyAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9zeXNmcy5jXFxuKysrIGIvbW0vZGFtb24vc3lzZnMuY1xcbkBAIC0xMDczLDcgKzEwNzMsNyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpkYW1vbl9zeXNmc19wcm9iZV9hbGxvYyh2b2lkKVxcbiBcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlKTtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKmF0dHIpXFxuK3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqZmlsdGVycztcXG4gXFx0aW50IGVycjtcXG5AQCAtMTA4MSwyMiArMTA4MSwyMiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cilcXG4gXFx0ZmlsdGVycyA9IGRhbW9uX3N5c2ZzX2ZpbHRlcnNfYWxsb2MoKTtcXG4gXFx0aWYgKCFmaWx0ZXJzKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tXFx0YXR0ci1cXHUwMDNlZmlsdGVycyA9IGZpbHRlcnM7XFxuK1xcdHByb2JlLVxcdTAwM2VmaWx0ZXJzID0gZmlsdGVycztcXG4gXFxuIFxcdGVyciA9IGtvYmplY3RfaW5pdF9hbmRfYWRkKFxcdTAwMjZmaWx0ZXJzLVxcdTAwM2Vrb2JqLCBcXHUwMDI2ZGFtb25fc3lzZnNfZmlsdGVyc19rdHlwZSxcXG4tXFx0XFx0XFx0XFx1MDAyNmF0dHItXFx1MDAzZWtvYmosIFxcXCJmaWx0ZXJzXFxcIik7XFxuK1xcdFxcdFxcdFxcdTAwMjZwcm9iZS1cXHUwMDNla29iaiwgXFxcImZpbHRlcnNcXFwiKTtcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRrb2JqZWN0X3B1dChcXHUwMDI2ZmlsdGVycy1cXHUwMDNla29iaik7XFxuLVxcdFxcdGF0dHItXFx1MDAzZWZpbHRlcnMgPSBOVUxMO1xcbitcXHRcXHRwcm9iZS1cXHUwMDNlZmlsdGVycyA9IE5VTEw7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZGFtb25fc3lzZnNfcHJvYmVfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKmF0dHIpXFxuK3N0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSlcXG4ge1xcbi1cXHRpZiAoYXR0ci1cXHUwMDNlZmlsdGVycykge1xcbi1cXHRcXHRkYW1vbl9zeXNmc19maWx0ZXJzX3JtX2RpcnMoYXR0ci1cXHUwMDNlZmlsdGVycyk7XFxuLVxcdFxcdGtvYmplY3RfcHV0KFxcdTAwMjZhdHRyLVxcdTAwM2VmaWx0ZXJzLVxcdTAwM2Vrb2JqKTtcXG4rXFx0aWYgKHByb2JlLVxcdTAwM2VmaWx0ZXJzKSB7XFxuK1xcdFxcdGRhbW9uX3N5c2ZzX2ZpbHRlcnNfcm1fZGlycyhwcm9iZS1cXHUwMDNlZmlsdGVycyk7XFxuK1xcdFxcdGtvYmplY3RfcHV0KFxcdTAwMjZwcm9iZS1cXHUwMDNlZmlsdGVycy1cXHUwMDNla29iaik7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMTkwOSw0NyArMTkwOSw2NSBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxuIFxcdHJldHVybiBkYW1vbl9zZXRfYXR0cnMoY3R4LCBcXHUwMDI2YXR0cnMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9wcm9iZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmVzICpzeXNfcHJvYmVzKVxcbitzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsXFxuK1xcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycylcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzeXNfcHJvYmVzLVxcdTAwM2VucjsgaSsrKSB7XFxuLVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycyA9XFxuLVxcdFxcdFxcdHN5c19wcm9iZXMtXFx1MDAzZXByb2Jlc19hcnJbaV0tXFx1MDAzZWZpbHRlcnM7XFxuLVxcdFxcdHN0cnVjdCBkYW1vbl9wcm9iZSAqYztcXG4tXFx0XFx0aW50IGo7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzeXNfZmlsdGVycy1cXHUwMDNlbnI7IGkrKykge1xcbitcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyICpzeXNfZmlsdGVyID1cXG4rXFx0XFx0XFx0c3lzX2ZpbHRlcnMtXFx1MDAzZWZpbHRlcnNfYXJyW2ldO1xcbitcXHRcXHRzdHJ1Y3QgZGFtb25fZmlsdGVyICpmaWx0ZXI7XFxuIFxcbi1cXHRcXHRpZiAoIXN5c19maWx0ZXJzKVxcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0YyA9IGRhbW9uX25ld19wcm9iZSgpO1xcbi1cXHRcXHRpZiAoIWMpXFxuK1xcdFxcdGZpbHRlciA9IGRhbW9uX25ld19maWx0ZXIoc3lzX2ZpbHRlci1cXHUwMDNldHlwZSxcXG4rXFx0XFx0XFx0XFx0c3lzX2ZpbHRlci1cXHUwMDNlbWF0Y2hpbmcsXFxuK1xcdFxcdFxcdFxcdHN5c19maWx0ZXItXFx1MDAzZWFsbG93KTtcXG4rXFx0XFx0aWYgKCFmaWx0ZXIpXFxuIFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi1cXHRcXHRkYW1vbl9hZGRfcHJvYmUoY3R4LCBjKTtcXG4tXFxuLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBzeXNfZmlsdGVycy1cXHUwMDNlbnI7IGorKykge1xcbi1cXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyICpzeXNfZmlsdGVyID1cXG4tXFx0XFx0XFx0XFx0c3lzX2ZpbHRlcnMtXFx1MDAzZWZpbHRlcnNfYXJyW2pdO1xcbi1cXHRcXHRcXHRzdHJ1Y3QgZGFtb25fZmlsdGVyICpmaWx0ZXI7XFxuLVxcbi1cXHRcXHRcXHRmaWx0ZXIgPSBkYW1vbl9uZXdfZmlsdGVyKHN5c19maWx0ZXItXFx1MDAzZXR5cGUsXFxuLVxcdFxcdFxcdFxcdFxcdHN5c19maWx0ZXItXFx1MDAzZW1hdGNoaW5nLFxcbi1cXHRcXHRcXHRcXHRcXHRzeXNfZmlsdGVyLVxcdTAwM2VhbGxvdyk7XFxuLVxcdFxcdFxcdGlmICghZmlsdGVyKVxcbi1cXHRcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tXFx0XFx0XFx0aWYgKGZpbHRlci1cXHUwMDNldHlwZSA9PSBEQU1PTl9GSUxURVJfVFlQRV9NRU1DRykge1xcbi1cXHRcXHRcXHRcXHRpbnQgZXJyO1xcbi1cXG4tXFx0XFx0XFx0XFx0ZXJyID0gZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChcXG4tXFx0XFx0XFx0XFx0XFx0XFx0c3lzX2ZpbHRlci1cXHUwMDNlcGF0aCxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmZpbHRlci1cXHUwMDNlbWVtY2dfaWQpO1xcbi1cXHRcXHRcXHRcXHRpZiAoZXJyKSB7XFxuLVxcdFxcdFxcdFxcdFxcdGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKGZpbHRlcik7XFxuLVxcdFxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuLVxcdFxcdFxcdFxcdH1cXG4rXFx0XFx0aWYgKGZpbHRlci1cXHUwMDNldHlwZSA9PSBEQU1PTl9GSUxURVJfVFlQRV9NRU1DRykge1xcbitcXHRcXHRcXHRpbnQgZXJyO1xcbitcXG4rXFx0XFx0XFx0ZXJyID0gZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChcXG4rXFx0XFx0XFx0XFx0XFx0c3lzX2ZpbHRlci1cXHUwMDNlcGF0aCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx1MDAyNmZpbHRlci1cXHUwMDNlbWVtY2dfaWQpO1xcbitcXHRcXHRcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdFxcdFxcdGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKGZpbHRlcik7XFxuK1xcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0ZGFtb25fYWRkX2ZpbHRlcihjLCBmaWx0ZXIpO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGRhbW9uX2FkZF9maWx0ZXIocHJvYmUsIGZpbHRlcik7XFxuK1xcdH1cXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsXFxuK1xcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqc3lzX3Byb2JlKVxcbit7XFxuK1xcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycztcXG4rXFxuK1xcdHN5c19maWx0ZXJzID0gc3lzX3Byb2JlLVxcdTAwM2VmaWx0ZXJzO1xcbitcXHRpZiAoIXN5c19maWx0ZXJzKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHByb2JlLCBzeXNfZmlsdGVycyk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxuK1xcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMgKnN5c19wcm9iZXMpXFxuK3tcXG4rXFx0aW50IGksIGVycjtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzeXNfcHJvYmVzLVxcdTAwM2VucjsgaSsrKSB7XFxuK1xcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqc3lzX3Byb2JlO1xcbitcXHRcXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnA7XFxuK1xcbitcXHRcXHRwID0gZGFtb25fbmV3X3Byb2JlKCk7XFxuK1xcdFxcdGlmICghcClcXG4rXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdFxcdGRhbW9uX2FkZF9wcm9iZShjdHgsIHApO1xcbitcXHRcXHRzeXNfcHJvYmUgPSBzeXNfcHJvYmVzLVxcdTAwM2Vwcm9iZXNfYXJyW2ldO1xcbitcXHRcXHRlcnIgPSBkYW1vbl9zeXNmc19zZXRfcHJvYmUocCwgc3lzX3Byb2JlKTtcXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmggYi9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcXG5pbmRleCBhMDAxNjg3MzA0NDVkMi4uMGVjN2QxNGQzNTRlNzcgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXFxuKysrIGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXFxuQEAgLTE1NDYsNiArMTU0NiwyMCBAQCBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3dhbGtfY29udHJvbF9vYnNvbGV0ZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuIFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfcmFuZChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0c3RydWN0IGRhbW9uX2N0eCBjdHg7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0cHJhbmRvbV9zZWVkX3N0YXRlKFxcdTAwMjZjdHgucm5kX3N0YXRlLCBnZXRfcmFuZG9tX3U2NCgpKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDEwMDAwOyBpKyspIHtcXG4rXFx0XFx0dW5zaWduZWQgbG9uZyBybmQgPSBkYW1vbl9yYW5kKFxcdTAwMjZjdHgsIDAsIDEwKTtcXG4rXFxuK1xcdFxcdEtVTklUX0VYUEVDVF9HRSh0ZXN0LCBybmQsIDApO1xcbitcXHRcXHRLVU5JVF9FWFBFQ1RfTEUodGVzdCwgcm5kLCA5KTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfdGFyZ2V0KSxcXG4gXFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3JlZ2lvbnMpLFxcbkBAIC0xNTc3LDYgKzE1OTEsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfYXBwbHlfbWluX25yX3JlZ2lvbnMpLFxcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfaXNfbGFzdF9yZWdpb24pLFxcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfd2Fsa19jb250cm9sX29ic29sZXRlKSxcXG4rXFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3JhbmQpLFxcbiBcXHR7fSxcXG4gfTtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2hcXG5pbmRleCAyZWFhYTVhZTNjNWVkNy4uYjQzZGVlZTYwZmU5NTMgMTAwNzU1XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2hcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaFxcbkBAIC05OSwxNCArOTksNTUgQEAgdGVzdF9zdGF0cygpXFxuIFxcdGRvbmVcXG4gfVxcbiBcXG4rdGVzdF9kZXN0KClcXG4re1xcbitcXHRkZXN0X2Rpcj0kMVxcbitcXHRlbnN1cmVfZmlsZSBcXFwiJGRlc3RfZGlyL2lkXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuK1xcdGVuc3VyZV9maWxlIFxcXCIkZGVzdF9kaXIvd2VpZ2h0XFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuK31cXG4rXFxuK3Rlc3RfZGVzdHMoKVxcbit7XFxuK1xcdGRlc3RzX2Rpcj0kMVxcbitcXHRlbnN1cmVfZmlsZSBcXFwiJGRlc3RzX2Rpci9ucl9kZXN0c1xcXCIgXFxcImV4aXN0XFxcIiBcXFwiNjAwXFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGRlc3RzX2Rpci9ucl9kZXN0c1xcXCIgXFxcIjFcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFx0dGVzdF9kZXN0IFxcXCIkZGVzdHNfZGlyLzBcXFwiXFxuK1xcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGRlc3RzX2Rpci9ucl9kZXN0c1xcXCIgXFxcIjJcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFx0dGVzdF9kZXN0IFxcXCIkZGVzdHNfZGlyLzBcXFwiXFxuK1xcdHRlc3RfZGVzdCBcXFwiJGRlc3RzX2Rpci8xXFxcIlxcbitcXG4rXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRkZXN0c19kaXIvbnJfZGVzdHNcXFwiIFxcXCIwXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGVuc3VyZV9kaXIgXFxcIiRkZXN0c19kaXIvMFxcXCIgXFxcIm5vdF9leGlzdFxcXCJcXG4rXFx0ZW5zdXJlX2RpciBcXFwiJGRlc3RzX2Rpci8xXFxcIiBcXFwibm90X2V4aXN0XFxcIlxcbit9XFxuK1xcbiB0ZXN0X2ZpbHRlcigpXFxuIHtcXG4gXFx0ZmlsdGVyX2Rpcj0kMVxcbiBcXHRlbnN1cmVfZmlsZSBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcImV4aXN0XFxcIiBcXFwiNjAwXFxcIlxcbi1cXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcImFub25cXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4tXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRmaWx0ZXJfZGlyL3R5cGVcXFwiIFxcXCJtZW1jZ1xcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbi1cXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcImFkZHJcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4tXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRmaWx0ZXJfZGlyL3R5cGVcXFwiIFxcXCJ0YXJnZXRcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFxuK1xcdGxvY2FsIGRpcl9uYW1lPSQoYmFzZW5hbWUgXFxcIiQoZGlybmFtZSBcXFwiJGZpbHRlcl9kaXJcXFwiKVxcXCIpXFxuK1xcdGlmICBbIFxcXCIkZGlyX25hbWVcXFwiID0gXFxcImZpbHRlcnNcXFwiIF0gfHwgWyBcXFwiJGRpcl9uYW1lXFxcIiA9IFxcXCJvcHNfZmlsdGVyc1xcXCIgXVxcbitcXHR0aGVuXFxuK1xcdFxcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZmlsdGVyX2Rpci90eXBlXFxcIiBcXFwiYW5vblxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHRcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcIm1lbWNnXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGZpXFxuK1xcdGlmICBbIFxcXCIkZGlyX25hbWVcXFwiID0gXFxcImZpbHRlcnNcXFwiIF0gfHwgWyBcXFwiJGRpcl9uYW1lXFxcIiA9IFxcXCJjb3JlX2ZpbHRlcnNcXFwiIF1cXG4rXFx0dGhlblxcbitcXHRcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcImFkZHJcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFx0XFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRmaWx0ZXJfZGlyL3R5cGVcXFwiIFxcXCJ0YXJnZXRcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFx0ZmlcXG4rXFx0aWYgWyBcXFwiJGRpcl9uYW1lXFxcIiA9IFxcXCJjb3JlX2ZpbHRlcnNcXFwiIF1cXG4rXFx0dGhlblxcbitcXHRcXHRlbnN1cmVfd3JpdGVfZmFpbCBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcImFub25cXFwiIFxcXCJvcHMgdHlwZVxcXCJcXG4rXFx0XFx0ZW5zdXJlX3dyaXRlX2ZhaWwgXFxcIiRmaWx0ZXJfZGlyL3R5cGVcXFwiIFxcXCJtZW1jZ1xcXCIgXFxcIm9wcyB0eXBlXFxcIlxcbitcXHRmaVxcbitcXHRpZiBbIFxcXCIkZGlyX25hbWVcXFwiICA9IFxcXCJvcHNfZmlsdGVyc1xcXCIgXVxcbitcXHR0aGVuXFxuK1xcdFxcdGVuc3VyZV93cml0ZV9mYWlsIFxcXCIkZmlsdGVyX2Rpci90eXBlXFxcIiBcXFwiYWRkclxcXCIgXFxcImNvcmUgdHlwZVxcXCJcXG4rXFx0XFx0ZW5zdXJlX3dyaXRlX2ZhaWwgXFxcIiRmaWx0ZXJfZGlyL3R5cGVcXFwiIFxcXCJ0YXJnZXRcXFwiIFxcXCJjb3JlIHR5cGVcXFwiXFxuK1xcdGZpXFxuIFxcdGVuc3VyZV93cml0ZV9mYWlsIFxcXCIkZmlsdGVyX2Rpci90eXBlXFxcIiBcXFwiZm9vXFxcIiBcXFwiaW52YWxpZCBpbnB1dFxcXCJcXG4gXFx0ZW5zdXJlX2ZpbGUgXFxcIiRmaWx0ZXJfZGlyL21hdGNoaW5nXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuIFxcdGVuc3VyZV9maWxlIFxcXCIkZmlsdGVyX2Rpci9tZW1jZ19wYXRoXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuQEAgLTE1OCw2ICsxOTksMjAgQEAgdGVzdF9nb2FsKClcXG4gXFx0ZW5zdXJlX2RpciBcXFwiJGdvYWxfZGlyXFxcIiBcXFwiZXhpc3RcXFwiXFxuIFxcdGVuc3VyZV9maWxlIFxcXCIkZ29hbF9kaXIvdGFyZ2V0X3ZhbHVlXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuIFxcdGVuc3VyZV9maWxlIFxcXCIkZ29hbF9kaXIvY3VycmVudF92YWx1ZVxcXCIgXFxcImV4aXN0XFxcIiBcXFwiNjAwXFxcIlxcbitcXHRlbnN1cmVfZmlsZSBcXFwiJGdvYWxfZGlyL3RhcmdldF9tZXRyaWNcXFwiIFxcXCJleGlzdFxcXCIgXFxcIjYwMFxcXCJcXG4rXFx0bG9jYWwgZnBhdGg9XFxcIiRnb2FsX2Rpci90YXJnZXRfbWV0cmljXFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwidXNlcl9pbnB1dFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwic29tZV9tZW1fcHNpX3VzXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZnBhdGhcXFwiIFxcXCJub2RlX21lbV91c2VkX2JwXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZnBhdGhcXFwiIFxcXCJub2RlX21lbV9mcmVlX2JwXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZnBhdGhcXFwiIFxcXCJub2RlX21lbWNnX3VzZWRfYnBcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRmcGF0aFxcXCIgXFxcIm5vZGVfbWVtY2dfZnJlZV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwiYWN0aXZlX21lbV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwiaW5hY3RpdmVfbWVtX2JwXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZnBhdGhcXFwiIFxcXCJub2RlX2VsaWdpYmxlX21lbV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfZmFpbCBcXFwiJGZwYXRoXFxcIiBcXFwiZm9vXFxcIiBcXFwiaW52YWxpZCBpbnB1dFxcXCJcXG4rXFx0ZW5zdXJlX2ZpbGUgXFxcIiRnb2FsX2Rpci9uaWRcXFwiIFxcXCJleGlzdFxcXCIgXFxcIjYwMFxcXCJcXG4rXFx0ZW5zdXJlX2ZpbGUgXFxcIiRnb2FsX2Rpci9wYXRoXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuIH1cXG4gXFxuIHRlc3RfZ29hbHMoKVxcbkBAIC0yMDcsNyArMjYyLDEwIEBAIHRlc3Rfc2NoZW1lKClcXG4gXFx0ZW5zdXJlX2ZpbGUgXFxcIiRzY2hlbWVfZGlyL2FwcGx5X2ludGVydmFsX3VzXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuIFxcdHRlc3RfcXVvdGFzIFxcXCIkc2NoZW1lX2Rpci9xdW90YXNcXFwiXFxuIFxcdHRlc3Rfd2F0ZXJtYXJrcyBcXFwiJHNjaGVtZV9kaXIvd2F0ZXJtYXJrc1xcXCJcXG4rXFx0dGVzdF9kZXN0cyBcXFwiJHNjaGVtZV9kaXIvZGVzdHNcXFwiXFxuIFxcdHRlc3RfZmlsdGVycyBcXFwiJHNjaGVtZV9kaXIvZmlsdGVyc1xcXCJcXG4rXFx0dGVzdF9maWx0ZXJzIFxcXCIkc2NoZW1lX2Rpci9jb3JlX2ZpbHRlcnNcXFwiXFxuK1xcdHRlc3RfZmlsdGVycyBcXFwiJHNjaGVtZV9kaXIvb3BzX2ZpbHRlcnNcXFwiXFxuIFxcdHRlc3Rfc3RhdHMgXFxcIiRzY2hlbWVfZGlyL3N0YXRzXFxcIlxcbiBcXHR0ZXN0X3RyaWVkX3JlZ2lvbnMgXFxcIiRzY2hlbWVfZGlyL3RyaWVkX3JlZ2lvbnNcXFwiXFxuIH1cXG5AQCAtMzQ2LDggKzQwNCwxMyBAQCB0ZXN0X3Byb2JlcygpXFxuIFxcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkcHJvYmVzX2Rpci9ucl9wcm9iZXNcXFwiIFxcXCIxXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuIFxcdHRlc3RfcHJvYmUgXFxcIiRwcm9iZXNfZGlyLzBcXFwiXFxuIFxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJHByb2Jlc19kaXIvbnJfcHJvYmVzXFxcIiBcXFwiMlxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHR0ZXN0X3Byb2JlIFxcXCIkcHJvYmVzX2Rpci8wXFxcIlxcbitcXHR0ZXN0X3Byb2JlIFxcXCIkcHJvYmVzX2Rpci8xXFxcIlxcbitcXG4gXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRwcm9iZXNfZGlyL25yX3Byb2Jlc1xcXCIgXFxcIjBcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4gXFx0ZW5zdXJlX2RpciBcXFwiJHByb2Jlc19kaXIvMFxcXCIgXFxcIm5vdF9leGlzdFxcXCJcXG4rXFx0ZW5zdXJlX2RpciBcXFwiJHByb2Jlc19kaXIvMVxcXCIgXFxcIm5vdF9leGlzdFxcXCJcXG4gfVxcbiBcXG4gdGVzdF9tb25pdG9yaW5nX2F0dHJzKClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6MTYuNjY1ODEwMDU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjkzNTc0NDMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9wcm9iZVwiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X3Byb2Jlc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiBsb2dpYyBmb3IgY29tbWl0dGluZyB0YXJnZXQgcmVnaW9ucyAobWVyZ2luZyBjb250aWd1b3VzIHJlZ2lvbnMpIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBzZXR0aW5nIHVwIERBTU9OIHByb2JlcyBhbmQgZmlsdGVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBzeXNmcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzkzOGQ4MGE2YmY0MmU4MDYyNjFlZTA2NjNlODFmNDZlZjMyNWVmOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDIyOjQ0OjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb24gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vblxuaW5kZXggNGZkZWM2M2E0N2Q0YWEuLmRkNmI1YmQ3NmUxMTk2IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cbisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXG5AQCAtMTU3LDYgKzE1Nyw0NiBAQCBEZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSB2YWx1ZSB0byB0aGlzIGZpbGUgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiBcdFx0bW9uaXRvcmluZyByZWdpb25zIG9mIHRoZSBEQU1PTiBjb250ZXh0IGFzIHRoZSB2YWx1ZS4gIFJlYWRpbmdcbiBcdFx0dGhpcyBmaWxlIHJldHVybnMgdGhlIHZhbHVlLlxuIFxuK1doYXQ6XHRcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1x1MDAzY0tcdTAwM2UvY29udGV4dHMvXHUwMDNjQ1x1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9ucl9wcm9iZXNcbitEYXRlOlx0XHRNYXkgMjAyNlxuK0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbitEZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSBudW1iZXIgJ04nIHRvIHRoaXMgZmlsZSBjcmVhdGVzIHRoZSBudW1iZXIgb2ZcbitcdFx0ZGlyZWN0b3JpZXMgZm9yIGVhY2ggREFNT04gcHJvYmUgbmFtZWQgJzAnIHRvICdOLTEnIHVuZGVyIHRoZVxuK1x0XHRwcm9iZXMvIGRpcmVjdG9yeS5cbitcbitXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2UvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvXHUwMDNjUFx1MDAzZS9maWx0ZXJzL25yX2ZpbHRlcnNcbitEYXRlOlx0XHRNYXkgMjAyNlxuK0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbitEZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSBudW1iZXIgJ04nIHRvIHRoaXMgZmlsZSBjcmVhdGVzIHRoZSBudW1iZXIgb2ZcbitcdFx0ZGlyZWN0b3JpZXMgZm9yIGVhY2ggREFNT04gcHJvYmUgZmlsdGVyIG5hbWVkICcwJyB0byAnTi0xJ1xuK1x0XHR1bmRlciB0aGUgZmlsdGVycy8gZGlyZWN0b3J5LlxuK1xuK1doYXQ6XHRcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1x1MDAzY0tcdTAwM2UvY29udGV4dHMvXHUwMDNjQ1x1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9cdTAwM2NQXHUwMDNlL2ZpbHRlcnMvXHUwMDNjRlx1MDAzZS90eXBlXG4rRGF0ZTpcdFx0TWF5IDIwMjZcbitDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG4rRGVzY3JpcHRpb246XHRXcml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gdGhpcyBmaWxlIHNldHMgYW5kIGdldHMgdGhlIHR5cGUgb2ZcbitcdFx0dGhlIG1lbW9yeSBvZiB0aGUgaW50ZXJlc3QuXG4rXG4rV2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1x1MDAzY1BcdTAwM2UvZmlsdGVycy9cdTAwM2NGXHUwMDNlL3BhdGhcbitEYXRlOlx0XHRNYXkgMjAyNlxuK0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbitEZXNjcmlwdGlvbjpcdElmICdtZW1jZycgaXMgd3JpdHRlbiB0byB0aGUgJ3R5cGUnIGZpbGUsIHdyaXRpbmcgdG8gYW5kXG4rXHRcdHJlYWRpbmcgZnJvbSB0aGlzIGZpbGUgc2V0cyBhbmQgZ2V0cyB0aGUgcGF0aCB0byB0aGUgbWVtb3J5XG4rXHRcdGNncm91cCBvZiB0aGUgaW50ZXJlc3QuXG4rXG4rV2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1x1MDAzY1BcdTAwM2UvZmlsdGVycy9cdTAwM2NGXHUwMDNlL21hdGNoaW5nXG4rRGF0ZTpcdFx0TWF5IDIwMjZcbitDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG4rRGVzY3JpcHRpb246XHRXcml0aW5nICdZJyBvciAnTicgdG8gdGhpcyBmaWxlIHNldHMgd2hldGhlciB0aGUgZmlsdGVyIGlzIGZvclxuK1x0XHR0aGUgbWVtb3J5IG9mIHRoZSAndHlwZScsIG9yIGFsbCBleGNlcHQgdGhlICd0eXBlJy5cbitcbitXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2UvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvXHUwMDNjUFx1MDAzZS9maWx0ZXJzL1x1MDAzY0ZcdTAwM2UvYWxsb3dcbitEYXRlOlx0XHRNYXkgMjAyNlxuK0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbitEZXNjcmlwdGlvbjpcdFdyaXRpbmcgJ1knIG9yICdOJyB0byB0aGlzIGZpbGUgc2V0cyB3aGV0aGVyIHRvIGFsbG93IG9yIHJlamVjdFxuK1x0XHRoaXR0aW5nIHRoZSBwcm9iZSBmb3IgdGhlIG1lbW9yeSB0aGF0IHNhdGlzZmllcyB0aGUgJ3R5cGUnIGFuZFxuK1x0XHR0aGUgJ21hdGNoaW5nJyBvZiB0aGUgZGlyZWN0b3J5LlxuK1xuIFdoYXQ6XHRcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1x1MDAzY0tcdTAwM2UvY29udGV4dHMvXHUwMDNjQ1x1MDAzZS90YXJnZXRzL25yX3RhcmdldHNcbiBEYXRlOlx0XHRNYXIgMjAyMlxuIENvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcbmluZGV4IGMxNmEzYmIyODhkMDc5Li40NTdkNmU4YmM3ODc4NSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XG5AQCAtNjg2LDkgKzY4NiwxMSBAQCBtZWNoYW5pc20gdHJpZXMgdG8gbWFrZSBgYGN1cnJlbnRfdmFsdWVgYCBvZiBgYHRhcmdldF9tZXRyaWNgYCBiZSBzYW1lIHRvXG4gICAoMS8xMCwwMDApLlxuIC0gYGBpbmFjdGl2ZV9tZW1fYnBgYDogSW5hY3RpdmUgdG8gYWN0aXZlICsgaW5hY3RpdmUgKExSVSkgbWVtb3J5IHNpemUgcmF0aW8gaW5cbiAgIGJwICgxLzEwLDAwMCkuXG4rLSBgYG5vZGVfZWxpZ2libGVfbWVtX2JwYGA6IFNjaGVtZSB0YXJnZXQgYWNjZXNzIHBhdHRlcm4tZWxpZ2libGUgbWVtb3J5IHJhdGlvXG4rICBvZiBhIG5vZGUgaW4gYnAgKDEvMTAsMDAwKS5cbiBcbi1gYG5pZGBgIGlzIG9wdGlvbmFsbHkgcmVxdWlyZWQgZm9yIG9ubHkgYGBub2RlX21lbV91c2VkX2JwYGAsXG4tYGBub2RlX21lbV9mcmVlX2JwYGAsIGBgbm9kZV9tZW1jZ191c2VkX2JwYGAgYW5kIGBgbm9kZV9tZW1jZ19mcmVlX2JwYGAgdG9cbitgYG5pZGBgIGlzIG9wdGlvbmFsbHkgcmVxdWlyZWQgZm9yIGBgbm9kZV9tZW1fdXNlZF9icGBgLCBgYG5vZGVfbWVtX2ZyZWVfYnBgYCxcbitgYG5vZGVfbWVtY2dfdXNlZF9icGBgLCBgYG5vZGVfbWVtY2dfZnJlZV9icGBgIGFuZCBgYG5vZGVfZWxpZ2libGVfbWVtX2JwYGAgdG9cbiBwb2ludCB0aGUgc3BlY2lmaWMgTlVNQSBub2RlLlxuIFxuIGBgcGF0aGBgIGlzIG9wdGlvbmFsbHkgcmVxdWlyZWQgZm9yIG9ubHkgYGBub2RlX21lbWNnX3VzZWRfYnBgYCBhbmRcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDlhMDMxMjMyNjljMjhlLi41ZmViZTU4YTA3MDI4OSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuKysrIGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTM0NywyMSArMTM0NywzMyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCxcbiBcdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxuIHtcbi1cdHN0cnVjdCBkYW1vbl9yZWdpb24gKnNyY19yZWdpb247XG4rXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpzcmNfcmVnaW9uLCAqcHJldiA9IE5VTEw7XG4gXHRzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSAqcmFuZ2VzO1xuIFx0aW50IGkgPSAwLCBlcnI7XG4gXG4tXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKVxuLVx0XHRpKys7XG4rXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKSB7XG4rXHRcdGlmICghcHJldiB8fCBwcmV2LVx1MDAzZWFyLmVuZCAhPSBzcmNfcmVnaW9uLVx1MDAzZWFyLnN0YXJ0KVxuK1x0XHRcdGkrKztcbitcdFx0cHJldiA9IHNyY19yZWdpb247XG4rXHR9XG4gXHRpZiAoIWkpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0cmFuZ2VzID0ga3ZtYWxsb2Nfb2JqcygqcmFuZ2VzLCBpLCBHRlBfS0VSTkVMIHwgX19HRlBfTk9XQVJOKTtcbiBcdGlmICghcmFuZ2VzKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbitcdHByZXYgPSBOVUxMO1xuIFx0aSA9IDA7XG4tXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKVxuLVx0XHRyYW5nZXNbaSsrXSA9IHNyY19yZWdpb24tXHUwMDNlYXI7XG4rXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKSB7XG4rXHRcdGlmICghcHJldikge1xuK1x0XHRcdHJhbmdlc1tpXS5zdGFydCA9IHNyY19yZWdpb24tXHUwMDNlYXIuc3RhcnQ7XG4rXHRcdH0gZWxzZSBpZiAocHJldi1cdTAwM2Vhci5lbmQgIT0gc3JjX3JlZ2lvbi1cdTAwM2Vhci5zdGFydCkge1xuK1x0XHRcdHJhbmdlc1tpKytdLmVuZCA9IHByZXYtXHUwMDNlYXIuZW5kO1xuK1x0XHRcdHJhbmdlc1tpXS5zdGFydCA9IHNyY19yZWdpb24tXHUwMDNlYXIuc3RhcnQ7XG4rXHRcdH1cbitcdFx0cHJldiA9IHNyY19yZWdpb247XG4rXHR9XG4rXHRyYW5nZXNbaSsrXS5lbmQgPSBkYW1vbl9sYXN0X3JlZ2lvbihzcmMpLVx1MDAzZWFyLmVuZDtcbiBcdGVyciA9IGRhbW9uX3NldF9yZWdpb25zKGRzdCwgcmFuZ2VzLCBpLCBzcmNfbWluX3JlZ2lvbl9zeik7XG4gXHRrdmZyZWUocmFuZ2VzKTtcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmNcbmluZGV4IGUzNTI2YTI2M2UyMDVmLi42NzEwYjZkMDE5YmY1MyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3N5c2ZzLmNcbisrKyBiL21tL2RhbW9uL3N5c2ZzLmNcbkBAIC0xMDczLDcgKzEwNzMsNyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpkYW1vbl9zeXNmc19wcm9iZV9hbGxvYyh2b2lkKVxuIFx0cmV0dXJuIGt6YWxsb2Nfb2JqKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSk7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICphdHRyKVxuK3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSlcbiB7XG4gXHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqZmlsdGVycztcbiBcdGludCBlcnI7XG5AQCAtMTA4MSwyMiArMTA4MSwyMiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cilcbiBcdGZpbHRlcnMgPSBkYW1vbl9zeXNmc19maWx0ZXJzX2FsbG9jKCk7XG4gXHRpZiAoIWZpbHRlcnMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuLVx0YXR0ci1cdTAwM2VmaWx0ZXJzID0gZmlsdGVycztcbitcdHByb2JlLVx1MDAzZWZpbHRlcnMgPSBmaWx0ZXJzO1xuIFxuIFx0ZXJyID0ga29iamVjdF9pbml0X2FuZF9hZGQoXHUwMDI2ZmlsdGVycy1cdTAwM2Vrb2JqLCBcdTAwMjZkYW1vbl9zeXNmc19maWx0ZXJzX2t0eXBlLFxuLVx0XHRcdFx1MDAyNmF0dHItXHUwMDNla29iaiwgXCJmaWx0ZXJzXCIpO1xuK1x0XHRcdFx1MDAyNnByb2JlLVx1MDAzZWtvYmosIFwiZmlsdGVyc1wiKTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0a29iamVjdF9wdXQoXHUwMDI2ZmlsdGVycy1cdTAwM2Vrb2JqKTtcbi1cdFx0YXR0ci1cdTAwM2VmaWx0ZXJzID0gTlVMTDtcbitcdFx0cHJvYmUtXHUwMDNlZmlsdGVycyA9IE5VTEw7XG4gXHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cilcbitzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqcHJvYmUpXG4ge1xuLVx0aWYgKGF0dHItXHUwMDNlZmlsdGVycykge1xuLVx0XHRkYW1vbl9zeXNmc19maWx0ZXJzX3JtX2RpcnMoYXR0ci1cdTAwM2VmaWx0ZXJzKTtcbi1cdFx0a29iamVjdF9wdXQoXHUwMDI2YXR0ci1cdTAwM2VmaWx0ZXJzLVx1MDAzZWtvYmopO1xuK1x0aWYgKHByb2JlLVx1MDAzZWZpbHRlcnMpIHtcbitcdFx0ZGFtb25fc3lzZnNfZmlsdGVyc19ybV9kaXJzKHByb2JlLVx1MDAzZWZpbHRlcnMpO1xuK1x0XHRrb2JqZWN0X3B1dChcdTAwMjZwcm9iZS1cdTAwM2VmaWx0ZXJzLVx1MDAzZWtvYmopO1xuIFx0fVxuIH1cbiBcbkBAIC0xOTA5LDQ3ICsxOTA5LDY1IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbiBcdHJldHVybiBkYW1vbl9zZXRfYXR0cnMoY3R4LCBcdTAwMjZhdHRycyk7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4tXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMgKnN5c19wcm9iZXMpXG4rc3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfZmlsdGVycyhzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlLFxuK1x0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqc3lzX2ZpbHRlcnMpXG4ge1xuIFx0aW50IGk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzeXNfcHJvYmVzLVx1MDAzZW5yOyBpKyspIHtcbi1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMgKnN5c19maWx0ZXJzID1cbi1cdFx0XHRzeXNfcHJvYmVzLVx1MDAzZXByb2Jlc19hcnJbaV0tXHUwMDNlZmlsdGVycztcbi1cdFx0c3RydWN0IGRhbW9uX3Byb2JlICpjO1xuLVx0XHRpbnQgajtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHN5c19maWx0ZXJzLVx1MDAzZW5yOyBpKyspIHtcbitcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqc3lzX2ZpbHRlciA9XG4rXHRcdFx0c3lzX2ZpbHRlcnMtXHUwMDNlZmlsdGVyc19hcnJbaV07XG4rXHRcdHN0cnVjdCBkYW1vbl9maWx0ZXIgKmZpbHRlcjtcbiBcbi1cdFx0aWYgKCFzeXNfZmlsdGVycylcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0YyA9IGRhbW9uX25ld19wcm9iZSgpO1xuLVx0XHRpZiAoIWMpXG4rXHRcdGZpbHRlciA9IGRhbW9uX25ld19maWx0ZXIoc3lzX2ZpbHRlci1cdTAwM2V0eXBlLFxuK1x0XHRcdFx0c3lzX2ZpbHRlci1cdTAwM2VtYXRjaGluZyxcbitcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlYWxsb3cpO1xuK1x0XHRpZiAoIWZpbHRlcilcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbi1cdFx0ZGFtb25fYWRkX3Byb2JlKGN0eCwgYyk7XG4tXG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIHN5c19maWx0ZXJzLVx1MDAzZW5yOyBqKyspIHtcbi1cdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyICpzeXNfZmlsdGVyID1cbi1cdFx0XHRcdHN5c19maWx0ZXJzLVx1MDAzZWZpbHRlcnNfYXJyW2pdO1xuLVx0XHRcdHN0cnVjdCBkYW1vbl9maWx0ZXIgKmZpbHRlcjtcbi1cbi1cdFx0XHRmaWx0ZXIgPSBkYW1vbl9uZXdfZmlsdGVyKHN5c19maWx0ZXItXHUwMDNldHlwZSxcbi1cdFx0XHRcdFx0c3lzX2ZpbHRlci1cdTAwM2VtYXRjaGluZyxcbi1cdFx0XHRcdFx0c3lzX2ZpbHRlci1cdTAwM2VhbGxvdyk7XG4tXHRcdFx0aWYgKCFmaWx0ZXIpXG4tXHRcdFx0XHRyZXR1cm4gLUVOT01FTTtcbi1cdFx0XHRpZiAoZmlsdGVyLVx1MDAzZXR5cGUgPT0gREFNT05fRklMVEVSX1RZUEVfTUVNQ0cpIHtcbi1cdFx0XHRcdGludCBlcnI7XG4tXG4tXHRcdFx0XHRlcnIgPSBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKFxuLVx0XHRcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlcGF0aCxcbi1cdFx0XHRcdFx0XHRcdTAwMjZmaWx0ZXItXHUwMDNlbWVtY2dfaWQpO1xuLVx0XHRcdFx0aWYgKGVycikge1xuLVx0XHRcdFx0XHRkYW1vbl9kZXN0cm95X2ZpbHRlcihmaWx0ZXIpO1xuLVx0XHRcdFx0XHRyZXR1cm4gZXJyO1xuLVx0XHRcdFx0fVxuK1x0XHRpZiAoZmlsdGVyLVx1MDAzZXR5cGUgPT0gREFNT05fRklMVEVSX1RZUEVfTUVNQ0cpIHtcbitcdFx0XHRpbnQgZXJyO1xuK1xuK1x0XHRcdGVyciA9IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoXG4rXHRcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlcGF0aCxcbitcdFx0XHRcdFx0XHUwMDI2ZmlsdGVyLVx1MDAzZW1lbWNnX2lkKTtcbitcdFx0XHRpZiAoZXJyKSB7XG4rXHRcdFx0XHRkYW1vbl9kZXN0cm95X2ZpbHRlcihmaWx0ZXIpO1xuK1x0XHRcdFx0cmV0dXJuIGVycjtcbiBcdFx0XHR9XG4tXHRcdFx0ZGFtb25fYWRkX2ZpbHRlcihjLCBmaWx0ZXIpO1xuIFx0XHR9XG4rXHRcdGRhbW9uX2FkZF9maWx0ZXIocHJvYmUsIGZpbHRlcik7XG4rXHR9XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwcm9iZSxcbitcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpzeXNfcHJvYmUpXG4re1xuK1x0c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMgKnN5c19maWx0ZXJzO1xuK1xuK1x0c3lzX2ZpbHRlcnMgPSBzeXNfcHJvYmUtXHUwMDNlZmlsdGVycztcbitcdGlmICghc3lzX2ZpbHRlcnMpXG4rXHRcdHJldHVybiAwO1xuK1x0cmV0dXJuIGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHByb2JlLCBzeXNfZmlsdGVycyk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4rXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMgKnN5c19wcm9iZXMpXG4re1xuK1x0aW50IGksIGVycjtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHN5c19wcm9iZXMtXHUwMDNlbnI7IGkrKykge1xuK1x0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKnN5c19wcm9iZTtcbitcdFx0c3RydWN0IGRhbW9uX3Byb2JlICpwO1xuK1xuK1x0XHRwID0gZGFtb25fbmV3X3Byb2JlKCk7XG4rXHRcdGlmICghcClcbitcdFx0XHRyZXR1cm4gLUVOT01FTTtcbitcdFx0ZGFtb25fYWRkX3Byb2JlKGN0eCwgcCk7XG4rXHRcdHN5c19wcm9iZSA9IHN5c19wcm9iZXMtXHUwMDNlcHJvYmVzX2FycltpXTtcbitcdFx0ZXJyID0gZGFtb25fc3lzZnNfc2V0X3Byb2JlKHAsIHN5c19wcm9iZSk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmggYi9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcbmluZGV4IGEwMDE2ODczMDQ0NWQyLi4wZWM3ZDE0ZDM1NGU3NyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaFxuKysrIGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXG5AQCAtMTU0Niw2ICsxNTQ2LDIwIEBAIHN0YXRpYyB2b2lkIGRhbW9uX3Rlc3Rfd2Fsa19jb250cm9sX29ic29sZXRlKHN0cnVjdCBrdW5pdCAqdGVzdClcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfcmFuZChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0c3RydWN0IGRhbW9uX2N0eCBjdHg7XG4rXHRpbnQgaTtcbitcbitcdHByYW5kb21fc2VlZF9zdGF0ZShcdTAwMjZjdHgucm5kX3N0YXRlLCBnZXRfcmFuZG9tX3U2NCgpKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwMDAwOyBpKyspIHtcbitcdFx0dW5zaWduZWQgbG9uZyBybmQgPSBkYW1vbl9yYW5kKFx1MDAyNmN0eCwgMCwgMTApO1xuK1xuK1x0XHRLVU5JVF9FWFBFQ1RfR0UodGVzdCwgcm5kLCAwKTtcbitcdFx0S1VOSVRfRVhQRUNUX0xFKHRlc3QsIHJuZCwgOSk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBkYW1vbl90ZXN0X2Nhc2VzW10gPSB7XG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfdGFyZ2V0KSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9yZWdpb25zKSxcbkBAIC0xNTc3LDYgKzE1OTEsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X2FwcGx5X21pbl9ucl9yZWdpb25zKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9pc19sYXN0X3JlZ2lvbiksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfd2Fsa19jb250cm9sX29ic29sZXRlKSxcbitcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9yYW5kKSxcbiBcdHt9LFxuIH07XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaFxuaW5kZXggMmVhYWE1YWUzYzVlZDcuLmI0M2RlZWU2MGZlOTUzIDEwMDc1NVxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2hcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoXG5AQCAtOTksMTQgKzk5LDU1IEBAIHRlc3Rfc3RhdHMoKVxuIFx0ZG9uZVxuIH1cbiBcbit0ZXN0X2Rlc3QoKVxuK3tcbitcdGRlc3RfZGlyPSQxXG4rXHRlbnN1cmVfZmlsZSBcIiRkZXN0X2Rpci9pZFwiIFwiZXhpc3RcIiBcIjYwMFwiXG4rXHRlbnN1cmVfZmlsZSBcIiRkZXN0X2Rpci93ZWlnaHRcIiBcImV4aXN0XCIgXCI2MDBcIlxuK31cbitcbit0ZXN0X2Rlc3RzKClcbit7XG4rXHRkZXN0c19kaXI9JDFcbitcdGVuc3VyZV9maWxlIFwiJGRlc3RzX2Rpci9ucl9kZXN0c1wiIFwiZXhpc3RcIiBcIjYwMFwiXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRkZXN0c19kaXIvbnJfZGVzdHNcIiBcIjFcIiBcInZhbGlkIGlucHV0XCJcbitcdHRlc3RfZGVzdCBcIiRkZXN0c19kaXIvMFwiXG4rXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRkZXN0c19kaXIvbnJfZGVzdHNcIiBcIjJcIiBcInZhbGlkIGlucHV0XCJcbitcdHRlc3RfZGVzdCBcIiRkZXN0c19kaXIvMFwiXG4rXHR0ZXN0X2Rlc3QgXCIkZGVzdHNfZGlyLzFcIlxuK1xuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZGVzdHNfZGlyL25yX2Rlc3RzXCIgXCIwXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRlbnN1cmVfZGlyIFwiJGRlc3RzX2Rpci8wXCIgXCJub3RfZXhpc3RcIlxuK1x0ZW5zdXJlX2RpciBcIiRkZXN0c19kaXIvMVwiIFwibm90X2V4aXN0XCJcbit9XG4rXG4gdGVzdF9maWx0ZXIoKVxuIHtcbiBcdGZpbHRlcl9kaXI9JDFcbiBcdGVuc3VyZV9maWxlIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwiZXhpc3RcIiBcIjYwMFwiXG4tXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRmaWx0ZXJfZGlyL3R5cGVcIiBcImFub25cIiBcInZhbGlkIGlucHV0XCJcbi1cdGVuc3VyZV93cml0ZV9zdWNjIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwibWVtY2dcIiBcInZhbGlkIGlucHV0XCJcbi1cdGVuc3VyZV93cml0ZV9zdWNjIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwiYWRkclwiIFwidmFsaWQgaW5wdXRcIlxuLVx0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZmlsdGVyX2Rpci90eXBlXCIgXCJ0YXJnZXRcIiBcInZhbGlkIGlucHV0XCJcbitcbitcdGxvY2FsIGRpcl9uYW1lPSQoYmFzZW5hbWUgXCIkKGRpcm5hbWUgXCIkZmlsdGVyX2RpclwiKVwiKVxuK1x0aWYgIFsgXCIkZGlyX25hbWVcIiA9IFwiZmlsdGVyc1wiIF0gfHwgWyBcIiRkaXJfbmFtZVwiID0gXCJvcHNfZmlsdGVyc1wiIF1cbitcdHRoZW5cbitcdFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZmlsdGVyX2Rpci90eXBlXCIgXCJhbm9uXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRcdGVuc3VyZV93cml0ZV9zdWNjIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwibWVtY2dcIiBcInZhbGlkIGlucHV0XCJcbitcdGZpXG4rXHRpZiAgWyBcIiRkaXJfbmFtZVwiID0gXCJmaWx0ZXJzXCIgXSB8fCBbIFwiJGRpcl9uYW1lXCIgPSBcImNvcmVfZmlsdGVyc1wiIF1cbitcdHRoZW5cbitcdFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZmlsdGVyX2Rpci90eXBlXCIgXCJhZGRyXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRcdGVuc3VyZV93cml0ZV9zdWNjIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwidGFyZ2V0XCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRmaVxuK1x0aWYgWyBcIiRkaXJfbmFtZVwiID0gXCJjb3JlX2ZpbHRlcnNcIiBdXG4rXHR0aGVuXG4rXHRcdGVuc3VyZV93cml0ZV9mYWlsIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwiYW5vblwiIFwib3BzIHR5cGVcIlxuK1x0XHRlbnN1cmVfd3JpdGVfZmFpbCBcIiRmaWx0ZXJfZGlyL3R5cGVcIiBcIm1lbWNnXCIgXCJvcHMgdHlwZVwiXG4rXHRmaVxuK1x0aWYgWyBcIiRkaXJfbmFtZVwiICA9IFwib3BzX2ZpbHRlcnNcIiBdXG4rXHR0aGVuXG4rXHRcdGVuc3VyZV93cml0ZV9mYWlsIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwiYWRkclwiIFwiY29yZSB0eXBlXCJcbitcdFx0ZW5zdXJlX3dyaXRlX2ZhaWwgXCIkZmlsdGVyX2Rpci90eXBlXCIgXCJ0YXJnZXRcIiBcImNvcmUgdHlwZVwiXG4rXHRmaVxuIFx0ZW5zdXJlX3dyaXRlX2ZhaWwgXCIkZmlsdGVyX2Rpci90eXBlXCIgXCJmb29cIiBcImludmFsaWQgaW5wdXRcIlxuIFx0ZW5zdXJlX2ZpbGUgXCIkZmlsdGVyX2Rpci9tYXRjaGluZ1wiIFwiZXhpc3RcIiBcIjYwMFwiXG4gXHRlbnN1cmVfZmlsZSBcIiRmaWx0ZXJfZGlyL21lbWNnX3BhdGhcIiBcImV4aXN0XCIgXCI2MDBcIlxuQEAgLTE1OCw2ICsxOTksMjAgQEAgdGVzdF9nb2FsKClcbiBcdGVuc3VyZV9kaXIgXCIkZ29hbF9kaXJcIiBcImV4aXN0XCJcbiBcdGVuc3VyZV9maWxlIFwiJGdvYWxfZGlyL3RhcmdldF92YWx1ZVwiIFwiZXhpc3RcIiBcIjYwMFwiXG4gXHRlbnN1cmVfZmlsZSBcIiRnb2FsX2Rpci9jdXJyZW50X3ZhbHVlXCIgXCJleGlzdFwiIFwiNjAwXCJcbitcdGVuc3VyZV9maWxlIFwiJGdvYWxfZGlyL3RhcmdldF9tZXRyaWNcIiBcImV4aXN0XCIgXCI2MDBcIlxuK1x0bG9jYWwgZnBhdGg9XCIkZ29hbF9kaXIvdGFyZ2V0X21ldHJpY1wiXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRmcGF0aFwiIFwidXNlcl9pbnB1dFwiIFwidmFsaWQgaW5wdXRcIlxuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZnBhdGhcIiBcInNvbWVfbWVtX3BzaV91c1wiIFwidmFsaWQgaW5wdXRcIlxuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZnBhdGhcIiBcIm5vZGVfbWVtX3VzZWRfYnBcIiBcInZhbGlkIGlucHV0XCJcbitcdGVuc3VyZV93cml0ZV9zdWNjIFwiJGZwYXRoXCIgXCJub2RlX21lbV9mcmVlX2JwXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRmcGF0aFwiIFwibm9kZV9tZW1jZ191c2VkX2JwXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRmcGF0aFwiIFwibm9kZV9tZW1jZ19mcmVlX2JwXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRmcGF0aFwiIFwiYWN0aXZlX21lbV9icFwiIFwidmFsaWQgaW5wdXRcIlxuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZnBhdGhcIiBcImluYWN0aXZlX21lbV9icFwiIFwidmFsaWQgaW5wdXRcIlxuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZnBhdGhcIiBcIm5vZGVfZWxpZ2libGVfbWVtX2JwXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRlbnN1cmVfd3JpdGVfZmFpbCBcIiRmcGF0aFwiIFwiZm9vXCIgXCJpbnZhbGlkIGlucHV0XCJcbitcdGVuc3VyZV9maWxlIFwiJGdvYWxfZGlyL25pZFwiIFwiZXhpc3RcIiBcIjYwMFwiXG4rXHRlbnN1cmVfZmlsZSBcIiRnb2FsX2Rpci9wYXRoXCIgXCJleGlzdFwiIFwiNjAwXCJcbiB9XG4gXG4gdGVzdF9nb2FscygpXG5AQCAtMjA3LDcgKzI2MiwxMCBAQCB0ZXN0X3NjaGVtZSgpXG4gXHRlbnN1cmVfZmlsZSBcIiRzY2hlbWVfZGlyL2FwcGx5X2ludGVydmFsX3VzXCIgXCJleGlzdFwiIFwiNjAwXCJcbiBcdHRlc3RfcXVvdGFzIFwiJHNjaGVtZV9kaXIvcXVvdGFzXCJcbiBcdHRlc3Rfd2F0ZXJtYXJrcyBcIiRzY2hlbWVfZGlyL3dhdGVybWFya3NcIlxuK1x0dGVzdF9kZXN0cyBcIiRzY2hlbWVfZGlyL2Rlc3RzXCJcbiBcdHRlc3RfZmlsdGVycyBcIiRzY2hlbWVfZGlyL2ZpbHRlcnNcIlxuK1x0dGVzdF9maWx0ZXJzIFwiJHNjaGVtZV9kaXIvY29yZV9maWx0ZXJzXCJcbitcdHRlc3RfZmlsdGVycyBcIiRzY2hlbWVfZGlyL29wc19maWx0ZXJzXCJcbiBcdHRlc3Rfc3RhdHMgXCIkc2NoZW1lX2Rpci9zdGF0c1wiXG4gXHR0ZXN0X3RyaWVkX3JlZ2lvbnMgXCIkc2NoZW1lX2Rpci90cmllZF9yZWdpb25zXCJcbiB9XG5AQCAtMzQ2LDggKzQwNCwxMyBAQCB0ZXN0X3Byb2JlcygpXG4gXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRwcm9iZXNfZGlyL25yX3Byb2Jlc1wiIFwiMVwiIFwidmFsaWQgaW5wdXRcIlxuIFx0dGVzdF9wcm9iZSBcIiRwcm9iZXNfZGlyLzBcIlxuIFxuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkcHJvYmVzX2Rpci9ucl9wcm9iZXNcIiBcIjJcIiBcInZhbGlkIGlucHV0XCJcbitcdHRlc3RfcHJvYmUgXCIkcHJvYmVzX2Rpci8wXCJcbitcdHRlc3RfcHJvYmUgXCIkcHJvYmVzX2Rpci8xXCJcbitcbiBcdGVuc3VyZV93cml0ZV9zdWNjIFwiJHByb2Jlc19kaXIvbnJfcHJvYmVzXCIgXCIwXCIgXCJ2YWxpZCBpbnB1dFwiXG4gXHRlbnN1cmVfZGlyIFwiJHByb2Jlc19kaXIvMFwiIFwibm90X2V4aXN0XCJcbitcdGVuc3VyZV9kaXIgXCIkcHJvYmVzX2Rpci8xXCIgXCJub3RfZXhpc3RcIlxuIH1cbiBcbiB0ZXN0X21vbml0b3JpbmdfYXR0cnMoKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6MTYuNjY1ODEyMDc4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODEyNDA3MjIzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoOiBBIEZvY3VzZWQgUmV2aWV3KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgdGhlIERBTU9OIHN1YnN5c3RlbSBpbiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgY2hhbmdlcyBzcGFuIHF1aXRlIGEgZmV3IGZpbGVzOiB0aGUgZG9jdW1lbnRhdGlvbiAoQUJJIGFuZCBkZXNpZ24gZG9jcyksIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIChgY29yZS5jYCwgYHN5c2ZzLmNgKSwgYSBLVW5pdCB0ZXN0IGhlYWRlciwgYW5kIGEgc2VsZi10ZXN0IHNjcmlwdCAoYHN5c2ZzLnNoYCkuIFRoaXMgc2lnbmFscyBhIHBvdGVudGlhbGx5IHN1YnN0YW50aWFsIG1vZGlmaWNhdGlvbiwgd2FycmFudGluZyBhIGNsb3NlIGxvb2suXG5cbkZpcnN0IHVwLCBgbW0vZGFtb24vY29yZS5jYC4gVGhlIGNvcmUgbG9naWMgb2YgYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2AgaGFzIGJlZW4gbW9kaWZpZWQuIFJlYWRpbmcgdGhlIGNvZGUsIEkgc2VlIHRoaXMgaXMgYWJvdXQgbWVyZ2luZyBjb250aWd1b3VzIHJlZ2lvbnMuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgYW4gb3B0aW1pemF0aW9uIHRoYXQgc2hvdWxkIGltcHJvdmUgZWZmaWNpZW5jeS4gVGhlIG9yaWdpbmFsIGNvZGUgaXRlcmF0ZWQgdGhyb3VnaCBlYWNoIHNvdXJjZSByZWdpb24sIGJ1dCB0aGUgbmV3IHZlcnNpb24gZXhwbGljaXRseSBjaGVja3MgZm9yIGNvbnRpZ3VvdXMgcmVnaW9ucyBhbmQgbWVyZ2VzIHRoZW0gaW50byBhIHNtYWxsZXIgc2V0IGJlZm9yZSBzZXR0aW5nIHRoZW0gb24gdGhlIGRlc3RpbmF0aW9uLiBHb29kIHByYWN0aWNlLlxuXG5OZXh0LCBJJ2xsIHR1cm4gbXkgYXR0ZW50aW9uIHRvIGBtbS9kYW1vbi9zeXNmcy5jYC4gSXQgbG9va3MgbGlrZSB0aGUgd2F5IGZpbHRlcnMgYXJlIHNldCBmb3IgcHJvYmVzIGhhcyBiZWVuIGFsdGVyZWQuIFNwZWNpZmljYWxseSwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzYCBhbmQgdGhlIGZ1bmN0aW9uIHRha2VzIGRpZmZlcmVudCBhcmd1bWVudHMuXG5cbk5vdywgSSdtIGN1cmlvdXMgd2hhdCBjb25maWdzIGFyZSBuZWNlc3NhcnkgdG8gc3VwcG9ydCB0aGlzIHBhdGNoLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBjaGFuZ2VzIHRvIHRoZXNlIGNvcmUgZnVuY3Rpb25zLiBJIHRoaW5rIEknbGwgdXNlIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIEkndmUgZXhhbWluZWQgdG8gY2hlY2sgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIHRoaXMgcGF0Y2ggdG8gZnVuY3Rpb24gY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjYxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzg1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6MjQuNzg5ODg2ODI2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTgxMzI5MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz0xMzI4PXN0YXRpYyBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9udGhfdGFyZ2V0KGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTM0Ni0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTM0NzpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTEzNDgtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTEzODI9c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0KFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzODgtXFxubW0vZGFtb24vY29yZS5jOjEzODk6XFx0ZXJyID0gZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKGRzdCwgc3JjLCBzcmNfbWluX3JlZ2lvbl9zeik7XFxubW0vZGFtb24vY29yZS5jLTEzOTAtXFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMjAwPXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X3RhcmdldF9yZWdpb25zX2ZvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTIxNi1cXHR9XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjEyMTc6XFx0ZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKGRzdF90YXJnZXQsIHNyY190YXJnZXQsIDEpO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMjE4LVxcdGkgPSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDoyNy41ODgwMjQ4NDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA3OTY5NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyBteSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIEtjb25maWcgYW5kIERBTU9OLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBLY29uZmlnIGZvciBEQU1PTioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBhc3BlY3RzIG9mIERBTU9OLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWVudGFsbHkgcGFyc2UgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdtIGltbWVkaWF0ZWx5IGludGVyZXN0ZWQgaW4gdGhlIGxldmVsIG9mIGdyYW51bGFyaXR5IGF2YWlsYWJsZS4gQXJlIHRoZXJlIGZpbmUtZ3JhaW5lZCBjb250cm9scyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHNwZWNpZmljIERBTU9OIGZlYXR1cmVzLCBvciBpcyBpdCBtb3JlIG9mIGEgXCJ3aG9sZSBob2dcIiBhcHByb2FjaD8gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBhdmFpbGFibGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIHZhcmlvdXMgb3B0aW9ucy4gS25vd2luZyB0aGUgYnVpbGQgbWF0cml4IGhlcmUgaXMga2V5IOKAkyB3aGF0IGtlcm5lbCBjb25maWd1cmF0aW9ucyAqcmVxdWlyZSogREFNT04sIHdoaWNoICplbmFibGUqIHNwZWNpZmljIGZ1bmN0aW9uYWxpdGllcywgYW5kIHdoYXQgY29uZmxpY3RzIGV4aXN0PyBJJ20gYW50aWNpcGF0aW5nIHBvdGVudGlhbCBjcm9zcy1hcmNoaXRlY3R1cmUgdmFyaWF0aW9uczsgS2NvbmZpZyBjYW4gZ2V0IHF1aXRlIGRpdmVyZ2VudCBhY3Jvc3MgcGxhdGZvcm1zLCBzbyBJIG5lZWQgdG8gbWVudGFsbHkgcHJlcGFyZSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYXJjaC1zcGVjaWZpYyBzZXR0aW5ncyBpZiB0aGVyZSBhcmUgYW55LiBJJ2xsIGFsc28gYmUgbG9va2luZyBmb3IgYW55IGluZGljYXRpb25zIG9mIGV4cGVyaW1lbnRhbCBvciBcInN0YWdpbmdcIiBzdGF0dXMg4oCTIGFyZSB3ZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgdW5zdGFibGUgZmVhdHVyZXMsIG9yIHRoaW5ncyByZWFkeSBmb3Igd2lkZXIgZGVwbG95bWVudD8gTXkgZ29hbCBpcyB0byBncmFzcCB0aGUgY29uZmlndXJhYmlsaXR5IG9mIERBTU9OIGFuZCBhbnRpY2lwYXRlIGNvbW1vbiBzdXBwb3J0IGFuZCBkZWJ1Z2dpbmcgcXVlcmllcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdlIGNhbiBmaW5lLXR1bmUgREFNT04gYmVoYXZpb3IgYmFzZWQgb24gb3VyIHNwZWNpZmljIHdvcmtsb2FkIG5lZWRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Nzg1LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6MzEuMDk1OTk2NzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAzNDU4Nzc5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDozMy4xMzA1ODk4ODJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODU1NTQyMTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgZGlnZ2luZyBpbnRvIHRoZSBtZW1vcnkgYWNjZXNzIG1vbml0b3JpbmcgKERBTU9OKSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgY29yZSBsb2dpYyBhbmQgc3lzZnMgaW50ZXJmYWNlLiBJIHNlZSB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIGBtbS9kYW1vbi9jb3JlLmNgIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgYERBTU9OYCBhbmQgYERBTU9OX1NZU0ZTYCBjb25maWcgb3B0aW9ucyDigJMgdGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cyB0byBwYXkgYXR0ZW50aW9uIHRvIGhlcmUuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIGRlZXBlciBsb29rIGF0IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgd2l0aGluIGBtbS9kYW1vbi9zeXNmcy5jYCB0byBzZWUgZXhhY3RseSB3aGF0J3MgY2hhbmdlZCBpbiB0aGF0IGludGVyZmFjZS4gTGV0J3Mgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MTYsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDozNS45ODYxMzU0MzNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwMTE3MzI2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9zeXNmc19zZXRfZmlsdGVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9zeXNmcy5jPTE4ODk9c3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xOTExLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTkxMjpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsXFxubW0vZGFtb24vc3lzZnMuYy0xOTEzLVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycylcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTk0Mz1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9wcm9iZShzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlLFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xOTUwLVxcdFxcdHJldHVybiAwO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTk1MTpcXHRyZXR1cm4gZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnMocHJvYmUsIHN5c19maWx0ZXJzKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTE5NTItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDozOC4wODczMzEzMzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTIxMjc1Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2g6IEEgRm9jdXNlZCBSZXZpZXcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byB0aGUgREFNT04gKER5bmFtaWMgQWRkcmVzc2FibGUgTWVtb3J5IE9OLWxpbmUpIGNvZGUsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYSBmZXcga2V5IGZ1bmN0aW9ucy4gTGV0J3Mgc2VlLi4uIGl0J3MgdG91Y2hpbmcgYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2AsIGFuZCBJIGtub3cgdGhhdCBvbmU7IGl0J3MgY2VudHJhbCB0byBob3cgREFNT04gaGFuZGxlcyBpdHMgdGFyZ2V0IG1lbW9yeSByZWdpb25zLiBUaGUgb3RoZXIgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIGFyZSBgZGFtb25fc3lzZnNfc2V0X3Byb2Jlc2AsIHdoaWNoIGxvb2tzIGxpa2UgaXQncyBiZWVuIHJlZmFjdG9yZWQgaW50byBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYW5kIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYC4gT2theSwgdGhhdCdzIGEgbW9yZSBncmFudWxhciBhcHByb2FjaCwgd2hpY2ggdXN1YWxseSBtZWFucyBtb3JlIGNvbnRyb2wgb3IgZmxleGliaWxpdHkuIEknbGwgbmVlZCB0byBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgc3BsaXQuIEFkZGl0aW9uYWxseSwgaXQncyBwbGF5aW5nIHdpdGggdGhlIHN5c2ZzIGludGVyZmFjZXM6IGBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlyc2AgYW5kIGBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzYCBhcmUgYWxzbyBpbiB0aGUgY3Jvc3NoYWlycy4gVGhlc2UgaGFuZGxlIHRoZSBkaXJlY3RvcnkgY3JlYXRpb24gYW5kIHJlbW92YWwgZm9yIHByb2JlcywgcmlnaHQ/IFRoaXMgc3VnZ2VzdHMgYSBjaGFuZ2UgaW4gaG93IERBTU9OIHN0cnVjdHVyZXMgaXRzIHN5c2ZzIGhpZXJhcmNoeS5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgLiBXaGVyZSBpcyBpdCBjYWxsZWQ/IEFoLCBpdCdzIGNhbGxlZCBmcm9tIGBkYW1vbl9jb21taXRfdGFyZ2V0YC4gVGhhdCdzIGltcG9ydGFudC4gYGRhbW9uX2NvbW1pdF90YXJnZXRgIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24sIHNvIGFueSBjaGFuZ2UgaW4gYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2AgaGFzIHRoZSBwb3RlbnRpYWwgdG8gcmlwcGxlIHRocm91Z2hvdXQgdGhlIERBTU9OIHN5c3RlbS4gVGhpcyBjb25uZWN0aW9uIGlzIGtleSBhbmQgcmVxdWlyZXMgY2FyZWZ1bCBzY3J1dGlueS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBtb2RpZmljYXRpb24gdG8gYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2Agd2lsbCBpbXBhY3QgdGhpcyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyODksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6NDIuMjA4NjA5MTA2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc5MzM3NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2NvbW1pdF90YXJnZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9kYW1vbi5oPTc0PXN0cnVjdCBkYW1vbl9yZWdpb24ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9kYW1vbi5oLTk5LSAqXFxuaW5jbHVkZS9saW51eC9kYW1vbi5oOjEwMDogKiBAb2Jzb2xldGUgaXMgdXNlZCBvbmx5IGZvciBkYW1vbl9jb21taXRfdGFyZ2V0cygpIHNvdXJjZSB0YXJnZXRzLCB0byBzcGVjaWZ5XFxuaW5jbHVkZS9saW51eC9kYW1vbi5oOjEwMTogKiB0aGUgbWF0Y2hpbmcgZGVzdGluYXRpb24gdGFyZ2V0cyBhcmUgb2Jzb2xldGUuICBSZWFkIGRhbW9uX2NvbW1pdF90YXJnZXRzKClcXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmgtMTAyLSAqIHRvIHNlZSBob3cgaXQgaXMgaGFuZGxlZC5cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMzI4PXN0YXRpYyBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9udGhfdGFyZ2V0KGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTM0Ni0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTM0NzpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTEzNDgtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzODEtXFxubW0vZGFtb24vY29yZS5jOjEzODI6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0KFxcbm1tL2RhbW9uL2NvcmUuYy0xMzgzLVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCwgYm9vbCBkc3RfaGFzX3BpZCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzg4LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzg5OlxcdGVyciA9IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3QsIHNyYywgc3JjX21pbl9yZWdpb25fc3opO1xcbm1tL2RhbW9uL2NvcmUuYy0xMzkwLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQwNS0gKlxcbm1tL2RhbW9uL2NvcmUuYzoxNDA2OiAqIFJldmVydCB0YXJnZXQgc3RhdGVzIHRoYXQgY2hhbmdlZCBieSBkYW1vbl9jb21taXRfdGFyZ2V0KCksIGFuZCBjYW5ub3QgYmVcXG5tbS9kYW1vbi9jb3JlLmMtMTQwNy0gKiBjbGVhbmVkIHVwIGJ5IHRoZSBkZXN0aW5hdGlvbiBjb250ZXh0J3Mgb3BzLmNsZWFudXBfdGFyZ2V0KCkuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTQwOT1zdGF0aWMgdm9pZCBkYW1vbl9yZXZlcnRfdGFyZ2V0X2NvbW1pdHMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0MjQtXFxubW0vZGFtb24vY29yZS5jOjE0MjU6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0cyhcXG5tbS9kYW1vbi9jb3JlLmMtMTQyNi1cXHRcXHRzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDM4LVxcdFxcdGlmIChzcmNfdGFyZ2V0IFxcdTAwMjZcXHUwMDI2ICFzcmNfdGFyZ2V0LVxcdTAwM2VvYnNvbGV0ZSkge1xcbm1tL2RhbW9uL2NvcmUuYzoxNDM5OlxcdFxcdFxcdGVyciA9IGRhbW9uX2NvbW1pdF90YXJnZXQoXFxubW0vZGFtb24vY29yZS5jLTE0NDAtXFx0XFx0XFx0XFx0XFx0ZHN0X3RhcmdldCwgZGFtb25fdGFyZ2V0X2hhc19waWQoZHN0KSxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDczLVxcdFxcdH1cXG5tbS9kYW1vbi9jb3JlLmM6MTQ3NDpcXHRcXHRlcnIgPSBkYW1vbl9jb21taXRfdGFyZ2V0KG5ld190YXJnZXQsIGZhbHNlLFxcbm1tL2RhbW9uL2NvcmUuYy0xNDc1LVxcdFxcdFxcdFxcdHNyY190YXJnZXQsIGRhbW9uX3RhcmdldF9oYXNfcGlkKHNyYyksXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTU4Mz1pbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNjA4LVxcdFxcdHJldHVybiBlcnI7XFxubW0vZGFtb24vY29yZS5jOjE2MDk6XFx0ZXJyID0gZGFtb25fY29tbWl0X3RhcmdldHMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xNjEwLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9MTIwMD1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X2NvbW1pdF90YXJnZXRfcmVnaW9uc19mb3Ioc3RydWN0IGt1bml0ICp0ZXN0LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyMTYtXFx0fVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMjE3OlxcdGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3RfdGFyZ2V0LCBzcmNfdGFyZ2V0LCAxKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTIxOC1cXHRpID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6NDQuMDg3OTUyNDIzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDI4OTY0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBxdWVzdGlvbjpcblxuKipEZWVwIERpdmUgaW50byBgZGFtb25fY29tbWl0X2N0eGAqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGUgcXVlc3Rpb246IFwid2hlcmUgaXMgYGRhbW9uX2NvbW1pdF9jdHhgIGNhbGxlZCBmcm9tP1wiIFRoYXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZGVidWdnaW5nIHF1ZXN0aW9uLCBhbmQgSSdkIGFwcHJvYWNoIGl0IHdpdGggYSBmZXcgYXNzdW1wdGlvbnMgYW5kIGEgc3BlY2lmaWMgbWV0aG9kIGluIG1pbmQuXG5cbkZpcnN0LCBJIGFzc3VtZSB0aGlzIGlzIGFib3V0IGEgZnVuY3Rpb24gb3IgYSBtZXRob2Qgd2l0aGluIGEgY29kZSBiYXNlLCBwcmVzdW1hYmx5IHJlbGF0ZWQgdG8gZGF0YSBhY2Nlc3MsIG1lbW9yeSBtYW5hZ2VtZW50LCBvciBtYXliZSBldmVuIGEgZGF0YWJhc2UgY29udGV4dC4gVGhlIG5hbWUgYGRhbW9uX2NvbW1pdF9jdHhgIGhpbnRzIGF0IHNvbWUga2luZCBvZiBjb21taXQgb3BlcmF0aW9uLCBwb3NzaWJseSB3aXRoaW4gYSBjb250ZXh0LiBNeSBtaW5kIGltbWVkaWF0ZWx5IHN0YXJ0cyBjYXRhbG9naW5nIHBvc3NpYmxlIGFyZWFzIGl0ICpjb3VsZCogYmU6IGEgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCBsaWJyYXJ5LCBhIGNhY2hpbmcgbGF5ZXIsIG9yIGV2ZW4gc29tZXRoaW5nIGludGVybmFsIHRvIGEga2VybmVsIGRyaXZlciwgZGVwZW5kaW5nIG9uIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGUgcHJvamVjdC5cblxuTm93LCBteSB0eXBpY2FsIGFwcHJvYWNoIHdvdWxkIGJlIHRvIHVzZSB0b29saW5nLiBJJ2QgcmVhY2ggZm9yIGEgY29kZSBzZWFyY2ggdXRpbGl0eeKAlGBncmVwYCwgYGFja2AsIGByaXBncmVwYCwgb3IgaWYgSSdtIHVzaW5nIGEgbW9kZXJuIElERSwgSSdkIHVzZSBpdHMgYnVpbHQtaW4gc2VhcmNoIHdpdGggY3Jvc3MtcmVmZXJlbmNlIGNhcGFiaWxpdGllcy4gSSdtIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgZXhhY3Qgc3RyaW5nIGBkYW1vbl9jb21taXRfY3R4YCBpcyB1c2VkLCBpZGVhbGx5IGxvb2tpbmcgZm9yIGZ1bmN0aW9uIGNhbGxzIGFuZCBwb3RlbnRpYWxseSBhc3NpZ25tZW50cy4gSSB3b3VsZCBzdGFydCB3aXRoIGFuIGV4YWN0IG1hdGNoIHNlYXJjaCB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMsIGJ1dCBJIG1pZ2h0IHdpZGVuIHRoZSBzZWFyY2ggcGFyYW1ldGVycyB0byBhY2NvdW50IGZvciB2YXJpYXRpb25zIGluIG5hbWluZyBjb252ZW50aW9ucywgbGlrZSBwcmVmaXhpbmcgd2l0aCBhIG5hbWVzcGFjZSBvciBtb2RpZnlpbmcgY2FzaW5nLlxuXG5JZiBJJ20gd29ya2luZyB3aXRoIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBsaWtlIEdpdCwgSSdkIGFsc28gc3RhcnQgdG8gdGhpbmsgYWJvdXQgYGdpdCBibGFtZWAgb3IgdGhlIHJlcG9zaXRvcnkgaGlzdG9yeS4gSWYgSSBrbm93IHRoZSBjb2RlIGJhc2Ugd2VsbCwgSSBtYXkgcmVtZW1iZXIgYSBjbGFzcyBvciBmaWxlIHRoYXQgY291bGQgcG90ZW50aWFsbHkgY2FsbCB0aGUgZnVuY3Rpb24sIGFuZCBJIGNvdWxkIHNlYXJjaCBvbmx5IHdpdGhpbiB0aGF0IGZpbGUuIFxuXG5UaGUgZ29hbCBoZXJlIGlzIHByZWNpc2UgaWRlbnRpZmljYXRpb24gb2YgdGhlIGNhbGwgc2l0ZXMuIE9uY2UgSSBoYXZlIHRoZSBjYWxsIHNpdGVzLCBJIGNhbiBzdGFydCB0byByZWFzb24gYWJvdXQgdGhlIGNhbGwgc3RhY2ssIHRoZSBpbnB1dCBhcmd1bWVudHMsIGFuZCB1bHRpbWF0ZWx5IHRoZSBvdmVyYWxsIGZ1bmN0aW9uIGFuZCB3aGF0IGl0J3Mgc3VwcG9zZWQgdG8gZG8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODExLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6NDguMDMwODUyNjE4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU2ODQ1MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2NvbW1pdF9jdHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9kYW1vbi5oPTg1Mj1zdHJ1Y3QgZGFtb25fY3R4IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZGFtb24uaC04ODgtXFx0ICogaW5kaWNhdGUgaWYgdGhpcyBtYXkgYmUgY29ycnVwdGVkLiAgQ3VycmVudG9ubHkgdGhpcyBpcyBzZXQgb25seSBmb3JcXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmg6ODg5OlxcdCAqIGRhbW9uX2NvbW1pdF9jdHgoKSBmYWlsdXJlLlxcbmluY2x1ZGUvbGludXgvZGFtb24uaC04OTAtXFx0ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmg9MTA1Mj12b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmgtMTA1My1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKipzY2hlbWVzLCBzc2l6ZV90IG5yX3NjaGVtZXMpO1xcbmluY2x1ZGUvbGludXgvZGFtb24uaDoxMDU0OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKm9sZF9jdHgsIHN0cnVjdCBkYW1vbl9jdHggKm5ld19jdHgpO1xcbmluY2x1ZGUvbGludXgvZGFtb24uaC0xMDU1LWludCBkYW1vbl9ucl9ydW5uaW5nX2N0eHModm9pZCk7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTUzOT1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9wcm9iZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTU3MC0vKipcXG5tbS9kYW1vbi9jb3JlLmM6MTU3MTogKiBkYW1vbl9jb21taXRfY3R4KCkgLSBDb21taXQgcGFyYW1ldGVycyBvZiBhIERBTU9OIGNvbnRleHQgdG8gYW5vdGhlci5cXG5tbS9kYW1vbi9jb3JlLmMtMTU3Mi0gKiBAZHN0OlxcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT04gY29udGV4dC5cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNTgyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxNTgzOmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xNTg0LXtcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9MjcxPXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNDAtXFx0XFx0Z290byBvdXQ7XFxubW0vZGFtb24vbHJ1X3NvcnQuYzozNDE6XFx0ZXJyID0gZGFtb25fY29tbWl0X2N0eChjdHgsIHBhcmFtX2N0eCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNDItb3V0Olxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jPTE5ND1zdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTI2Ny1cXHRcXHRnb3RvIG91dDtcXG5tbS9kYW1vbi9yZWNsYWltLmM6MjY4OlxcdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgoY3R4LCBwYXJhbV9jdHgpO1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0yNjktb3V0Olxcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMTA0PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zeXNmc19uZXdfdGVzdF9jdHgoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIxMTItXFx0XFx0cmV0dXJuIE5VTEw7XFxubW0vZGFtb24vc3lzZnMuYzoyMTEzOlxcdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHJ1bm5pbmdfY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIxMTQtXFx0aWYgKGVycikge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMTI3PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIxNDYtXFx0fVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjE0NzpcXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBwYXJhbV9jdHgpO1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjE0OC1cXHRpZiAoZXJyKVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjE0OS1cXHRcXHRnb3RvIG91dDtcXG5tbS9kYW1vbi9zeXNmcy5jOjIxNTA6XFx0ZXJyID0gZGFtb25fY29tbWl0X2N0eChrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHgsIHBhcmFtX2N0eCk7XFxubW0vZGFtb24vc3lzZnMuYy0yMTUxLW91dDpcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMjQyPXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X2N0eChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTI1NS1cXHRzcmMtXFx1MDAzZW1pbl9yZWdpb25fc3ogPSA0MDk2O1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMjU2OlxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKSwgMCk7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyNTctXFx0c3JjLVxcdTAwM2VtaW5fcmVnaW9uX3N6ID0gNDA5NTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTI1ODpcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyksIC1FSU5WQUwpO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMjU5LVxcdHNyYy1cXHUwMDNlbWluX3JlZ2lvbl9zeiA9IDQwOTY7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyNjAtXFx0c3JjLVxcdTAwM2VwYXVzZSA9IHRydWU7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjEyNjE6XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpLCAwKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTI2Mi1cXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBkc3QtXFx1MDAzZXBhdXNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6NDkuODg3NzAzNTc3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDgzNjExNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBgZGFtb25fY29tbWl0X2N0eGAqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2tpbmcgaG93IGBkYW1vbl9jb21taXRfY3R4YCBpcyB1dGlsaXplZCB3aXRoaW4gdGhpcyBEQU1PTiBzdWJzeXN0ZW0uIFRoZSBjb2RlIHNob3dzIGl0IGFwcGVhcmluZyBpbiBhIGZldyBrZXkgcGxhY2VzOiBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCwgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AsIGFuZCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBkaXJlY3RseSBsaW5rcyBgZGFtb25fY29tbWl0X2N0eGAgdG8gdGhlIHN5c3RlbSBmaWxlIHN5c3RlbSwgb3Igc3lzZnMsIGFzIGEgcG90ZW50aWFsIGFjY2VzcyBwb2ludC4gVGhpcyBpbXBsaWVzIGEgbWV0aG9kIG9mIGV4dGVybmFsIGNvbnRyb2wgb3IgaW5wdXQgYmFzZWQgb24gdGhlc2UgdXNlcy4gXG5cblNpbmNlIEkgYW0gY29uc2lkZXJpbmcgdGhlIGZsb3cgaGVyZSwgSSBzaG91bGQgc2VlIGhvdyBlbHNlIHRoaXMgcmVhY2hlcyB0aGUgc3lzZnMuIExldCBtZSBub3cgY2hlY2sgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgLCBhcyBpdCBpcyBjYWxsZWQgYnkgYGRhbW9uX3N5c2ZzX3NldF9hdHRyc2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTQyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6NTMuMDM2MDY4NzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTM2MzIwODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fc3lzZnNfc2V0X2F0dHJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmM9MTg2Nz1zdGF0aWMgc3NpemVfdCBzdGF0ZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE4ODgtXFxubW0vZGFtb24vc3lzZnMuYzoxODg5OnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9zeXNmcy5jLTE4OTAtXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX2F0dHJzICpzeXNfYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTIwNzI9c3RhdGljIGludCBkYW1vbl9zeXNmc19hcHBseV9pbnB1dHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMDg1LVxcdGN0eC1cXHUwMDNlcGF1c2UgPSBzeXNfY3R4LVxcdTAwM2VwYXVzZTtcXG5tbS9kYW1vbi9zeXNmcy5jOjIwODY6XFx0ZXJyID0gZGFtb25fc3lzZnNfc2V0X2F0dHJzKGN0eCwgc3lzX2N0eC1cXHUwMDNlYXR0cnMpO1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjA4Ny1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDo1NC44Mjk3MDcxMjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5NzE3MDUyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIERBTU9OJ3MgU3lzZnMgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2Ugd29ya3MuIEl0IHNlZW1zIGBkYW1vbl9zeXNmc19hcHBseV9pbnB1dHNgIGlzIHRoZSBrZXkgZnVuY3Rpb24sIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAgYW5kIGBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29uYC4gVGhpcyB0ZWxscyBtZSB0aGF0IGBkYW1vbl9zeXNmc19zZXRfZmlsdGVyc2AgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgdGhyb3VnaCBzeXNmcywgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC5cblxuTm93LCBmcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgSSdsbCBuZWVkIGBEQU1PTmAgYW5kIGBEQU1PTl9TWVNGU2AgZW5hYmxlZCwgb2J2aW91c2x5LiBCdXQgdG8gZnVsbHkgZXhwbG9yZSB0aGUgY2FwYWJpbGl0aWVzLCBJIHNob3VsZCBjb25zaWRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHN1cHBvcnRpbmcgY29uZmlncyB0aGF0IG1pZ2h0IGJlIHVzZWZ1bC4gSSdtIHRoaW5raW5nIHRoaW5ncyBsaWtlIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAsIGBEQU1PTl9SRUNMQUlNYCwgYW5kIGBEQU1PTl9MUlVfU09SVGAgY291bGQgYmUgYmVuZWZpY2lhbCBmb3IgY29tcHJlaGVuc2l2ZSB0ZXN0aW5nIG9mIHRoZSB3aG9sZSB0aGluZy5cblxuVGhlIGNvcmUgaW1wbGVtZW50YXRpb24gbG9va3MgdG8gYmUgaW4gYG1tL2RhbW9uL2NvcmUuY2AgYW5kIHRoZSBzeXNmcyBwYXJ0IGlzIG9idmlvdXNseSBpbiBgbW0vZGFtb24vc3lzZnMuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19EQU1PTmAgaXMgZW5hYmxlZCwgYW5kIHRoZSBzeXNmcyBiaXRzIGFyZSBjb21waWxlZCB3aGVuIGBDT05GSUdfREFNT05fU1lTRlNgIGlzIGVuYWJsZWQuIFRpbWUgdG8gdGFrZSBhIHBlZWsgYXQgYG1tL2RhbW9uL01ha2VmaWxlYCB0byBjb25maXJtIGFsbCB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIHNldCB1cCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDk5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjQ0OjU5LjYyNjg4MTIyN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTkxNzcwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2JqLVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9NYWtlZmlsZS0yLVxcbm1tL2RhbW9uL01ha2VmaWxlOjM6b2JqLXlcXHRcXHRcXHRcXHQ6PSBjb3JlLm9cXG5tbS9kYW1vbi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19EQU1PTl9WQUREUilcXHQrPSBvcHMtY29tbW9uLm8gdmFkZHIub1xcbm1tL2RhbW9uL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0RBTU9OX1BBRERSKVxcdCs9IG9wcy1jb21tb24ubyBwYWRkci5vXFxubW0vZGFtb24vTWFrZWZpbGU6NjpvYmotJChDT05GSUdfREFNT05fU1lTRlMpXFx0Kz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cXG5tbS9kYW1vbi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXFxubW0vZGFtb24vTWFrZWZpbGU6ODpvYmotJChDT05GSUdfREFNT05fTFJVX1NPUlQpXFx0Kz0gbW9kdWxlcy1jb21tb24ubyBscnVfc29ydC5vXFxubW0vZGFtb24vTWFrZWZpbGU6OTpvYmotJChDT05GSUdfREFNT05fU1RBVClcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDo1OS43MjYwNjI1OTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIyMTU0MzQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgREFNT04gUGF0Y2ggRm9jdXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBvZiBjb3Vyc2UsIGBDT05GSUdfREFNT05gIGFuZCBgQ09ORklHX0RBTU9OX1NZU0ZTYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byB0aGUgc3BlY2lmaWNzOiBXaGF0IGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdGhpcyBwYXRjaCBpcyB0b3VjaGluZz8gSXQgbG9va3MgbGlrZSBpdCdzIG1vZGlmaWVkIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgLCBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgLCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgLCBhbmQgYGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNgLiBUaG9zZSBhcmUgdGhlIGZvY3VzIHN5bWJvbHMsIHJpZ2h0PyBJJ2xsIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aG9zZSBzaXggZnVuY3Rpb25zLlxuXG5XYWl0IGEgc2Vjb25k4oCmIEkgbmVlZCB0byBjaGVjayB0aG9zZSBmdW5jdGlvbiBkZWZpbml0aW9ucyB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIGNvbnRleHQgcmlnaHQuIE9rYXksIGxldCBtZSBjb25maXJtLiAqQ2hlY2tzIHRoZSBkZWZpbml0aW9ucyouIFJpZ2h0LCBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYCBpcyBzdGF0aWMgaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHdoaWxlIHRoZSByZXN0LCBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgLCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgLCBhbmQgYGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNgLCBhcmUgc3RhdGljIGluIGBtbS9kYW1vbi9zeXNmcy5jYC4gU28gdGhleSBhcmUgYWxsIHN0YXRpYyB3aXRoaW4gdGhlaXIgcmVzcGVjdGl2ZSBzb3VyY2UgZmlsZXMuXG5cblRoZSBuZXh0IGNyaXRpY2FsIHF1ZXN0aW9uOiBIb3cgYXJlIHRoZXNlIGZ1bmN0aW9ucyByZWFjaGVkPyBBaCwgdGhleSdyZSBhY2Nlc3NlZCB2aWEgc3lzZnMgd3JpdGVzLCBhcmVuJ3QgdGhleT8gSWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZXJlIGFyZSBwcm9iYWJseSBzeXNjYWxscyB0aGF0IHVsdGltYXRlbHkgdHJpZ2dlciB0aGVzZS4gRm9yIGluc3RhbmNlLCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBpcyBjYWxsZWQgd2hlbiB3cml0aW5nIHRvIHRoZSBgc3RhdGVgIGZpbGUgaW4gc3lzZnMsIGFuZCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgIGlzIGNhbGxlZCB3aGVuIHdyaXRpbmcgdG8gdGhlIGBucl9wcm9iZXNgIGZpbGUuIE9rYXksIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGV4YWN0IHN5c2ZzIGludGVyZmFjZSBuYW1lcyB0byBiZSBzdXJlLCBidXQgdGhhdCdzIHRoZSBnZW5lcmFsIHJvdXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg5NywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NTowNi45NDc2MDgyNjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDg0MjQ4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vc3lzZnMuYz0xMDcxPXN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKmRhbW9uX3N5c2ZzX3Byb2JlX2FsbG9jKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTEwNzUtXFxubW0vZGFtb24vc3lzZnMuYzoxMDc2OnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSlcXG5tbS9kYW1vbi9zeXNmcy5jLTEwNzcte1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMTUwPXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfcHJvYmVzX2FkZF9kaXJzKFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xMTgxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTE4MjpcXHRcXHRlcnIgPSBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyhwcm9iZSk7XFxubW0vZGFtb24vc3lzZnMuYy0xMTgzLVxcdFxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDU6MDguNjk2MDM5OTEyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1ODY5MTU1MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJ20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBDb25maXJtYXRpb24gXHUwMDI2IEZvY3VzKipcblxuUmlnaHQsIHRoZSBkYXRhIGlzIGRlZmluaXRlbHkgdGhlcmUuIFdlJ3JlIHNlZWluZyAqc29tZXRoaW5nKiwgYXQgbGVhc3QuIFRoZSBuZXh0IGNydWNpYWwgc3RlcCBpcyBwaW5wb2ludGluZyB0aGUgYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2AuIFRoYXQncyB3aGVyZSB0aGUgY3JpdGljYWwgaW5mb3JtYXRpb24gbGl2ZXMuIFdlIG5lZWQgdG8gYW5hbHl6ZSB0aG9zZSBzcGVjaWZpYyByZWdpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGNvbW1pdCB0YXJnZXRzLCBhbmQgZnJvbSB0aGVyZSwgd2UgY2FuIGFzY2VydGFpbiB3aHkgdGhlIHRhcmdldHMgYXJlIHByZXNlbnQuIFdlIGFyZSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgIHNvIHRoYXQgdGhlIG92ZXJhbGwgZGF0YSBzdHJ1Y3R1cmUgY2FuIGJlIHVuZGVyc3Rvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDU0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDU6MTEuMjgyOTU3Mzk5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTA1Mzk0MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MTMyOD1zdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzNDYtICovXFxubW0vZGFtb24vY29yZS5jOjEzNDc6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LFxcbm1tL2RhbW9uL2NvcmUuYy0xMzQ4LVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnNyYywgdW5zaWduZWQgbG9uZyBzcmNfbWluX3JlZ2lvbl9zeilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMzgyPXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldChcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzg4LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzg5OlxcdGVyciA9IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3QsIHNyYywgc3JjX21pbl9yZWdpb25fc3opO1xcbm1tL2RhbW9uL2NvcmUuYy0xMzkwLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9MTIwMD1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X2NvbW1pdF90YXJnZXRfcmVnaW9uc19mb3Ioc3RydWN0IGt1bml0ICp0ZXN0LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyMTYtXFx0fVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMjE3OlxcdGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3RfdGFyZ2V0LCBzcmNfdGFyZ2V0LCAxKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTIxOC1cXHRpID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDU6MTMuMTg4MzU4OTk0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMzU1MTkwMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgc29tZSBrZXkgYXJlYXMgb2YgREFNT04g4oCTIHRoZSB0YXJnZXQgcmVnaW9uIGNvbW1pdHRpbmcgYW5kIHRoZSBzeXNmcyBpbnRlcmZhY2UuIFNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgdGhlIGxvZ2ljIGZvciBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYCwgYGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZWAsIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYCwgYGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzYCwgYW5kIGBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzYC4gVGhlc2UgYXJlIGFsbCBkaXJlY3RseSByZWxhdGVkIHRvIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24gdmlhIHN5c2ZzLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGVtIGFzIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcuIFdlIGhhdmUgdGhlIGNvbmZpZ3MgYERBTU9OYCBhbmQgYERBTU9OX1NZU0ZTYCBhcyByZWxldmFudC5cblxuVGhlIGNvcmUgb2YgbXkgcmVhc29uaW5nIGlzIHRoYXQgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyByZWFjaGFibGUgdGhyb3VnaCBzeXNmcyBoYXZlIGEgc3Ryb25nIHBvdGVudGlhbCBmb3IgZmluZGluZyB2dWxuZXJhYmlsaXRpZXMuIFRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBjb2RlIHBhdGhzIG9yIGFsdGVyIGV4aXN0aW5nIG9uZXMgdGhhdCBhIGZ1enplciBjYW4gZWFzaWx5IGhpdC4gVGhlIGFiaWxpdHkgdG8gbWFuaXB1bGF0ZSBEQU1PTiBwcm9iZXMgYW5kIGZpbHRlcnMgdGhyb3VnaCBzeXNmcyBwcm92aWRlcyBhIGRpcmVjdCB2ZWN0b3IuXG5cbkknbSB0aGlua2luZywgbGV0J3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlncy4gQWgsIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgYXJlIGluIHRoZSBtaXggYXMgdGhleSBvcGVyYXRlIG9uIHRoZSBhY3R1YWwgdmFsdWVzLCBhbmQgYWx0aG91Z2ggYERBTU9OX1NZU0ZTYCBpcyBzdWZmaWNpZW50IHRvIHRyaWdnZXIgdGhlIHBhcnNpbmcsIGl0J3Mgc2FmZXIgdG8gaW5jbHVkZSB0aG9zZSBhcyB0aGUgZmVhdHVyZXMgb2YgREFNT04gb2Z0ZW4gZ28gaGFuZCBpbiBoYW5kLiBCZXN0IHRvIGhhdmUgYWxsIHRoZSBwaWVjZXMgaW4gcGxhY2UgZm9yIGEgcm9idXN0IGZ1enppbmcgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2MDIsIk91dHB1dFRva2VucyI6MTg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjQ1OjE5LjUyMzg3OTkzNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NjcwNDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9wcm9iZVwiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X3Byb2Jlc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiBsb2dpYyBmb3IgY29tbWl0dGluZyB0YXJnZXQgcmVnaW9ucyAobWVyZ2luZyBjb250aWd1b3VzIHJlZ2lvbnMpIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBzZXR0aW5nIHVwIERBTU9OIHByb2JlcyBhbmQgZmlsdGVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBzeXNmcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiLFxuICAgIFwiREFNT05fUEFERFJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzXCIsXG4gICAgXCJkYW1vbl9zeXNmc19zZXRfcHJvYmVcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9wcm9iZXNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzXCIsXG4gICAgXCJkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gbG9naWMgZm9yIGNvbW1pdHRpbmcgdGFyZ2V0IHJlZ2lvbnMgKG1lcmdpbmcgY29udGlndW91cyByZWdpb25zKSBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZSBmb3Igc2V0dGluZyB1cCBEQU1PTiBwcm9iZXMgYW5kIGZpbHRlcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgc3lzZnMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowcnwgh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 22:38:36 +0000 UTC FinishedAt: 2026-06-30 22:45:21 +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": "15654b0268cd65b4e673510c0377774e61b86397", "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": "15654b0268cd65b4e673510c0377774e61b86397", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_VADDR", "DAMON_PADDR" ], "series_id": "6d6f91f3-6e3f-4d31-8a8b-8690616dcb37" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_commit_target_regions", "damon_sysfs_set_filters", "damon_sysfs_set_probe", "damon_sysfs_set_probes", "damon_sysfs_probe_add_dirs", "damon_sysfs_probe_rm_dirs" ], "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+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3NldF9maWx0ZXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3NldF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcHJvYmVzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gbG9naWMgZm9yIGNvbW1pdHRpbmcgdGFyZ2V0IHJlZ2lvbnMgKG1lcmdpbmcgY29udGlndW91cyByZWdpb25zKSBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZSBmb3Igc2V0dGluZyB1cCBEQU1PTiBwcm9iZXMgYW5kIGZpbHRlcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgc3lzZnMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzkzOGQ4MGE2YmY0MmU4MDYyNjFlZTA2NjNlODFmNDZlZjMyNWVmOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDIyOjQ0OjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cbmluZGV4IDRmZGVjNjNhNDdkNGFhLi5kZDZiNWJkNzZlMTE5NiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vblxuQEAgLTE1Nyw2ICYjNDM7MTU3LDQ2IEBAIERlc2NyaXB0aW9uOlx0V3JpdGluZyBhIHZhbHVlIHRvIHRoaXMgZmlsZSBzZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZlxuIFx0XHRtb25pdG9yaW5nIHJlZ2lvbnMgb2YgdGhlIERBTU9OIGNvbnRleHQgYXMgdGhlIHZhbHVlLiAgUmVhZGluZ1xuIFx0XHR0aGlzIGZpbGUgcmV0dXJucyB0aGUgdmFsdWUuXG4gXG4mIzQzO1doYXQ6XHRcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1x1MDAzY0tcdTAwM2UvY29udGV4dHMvXHUwMDNjQ1x1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9ucl9wcm9iZXNcbiYjNDM7RGF0ZTpcdFx0TWF5IDIwMjZcbiYjNDM7Q29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuJiM0MztEZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSBudW1iZXIgJiMzOTtOJiMzOTsgdG8gdGhpcyBmaWxlIGNyZWF0ZXMgdGhlIG51bWJlciBvZlxuJiM0MztcdFx0ZGlyZWN0b3JpZXMgZm9yIGVhY2ggREFNT04gcHJvYmUgbmFtZWQgJiMzOTswJiMzOTsgdG8gJiMzOTtOLTEmIzM5OyB1bmRlciB0aGVcbiYjNDM7XHRcdHByb2Jlcy8gZGlyZWN0b3J5LlxuJiM0MztcbiYjNDM7V2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1x1MDAzY1BcdTAwM2UvZmlsdGVycy9ucl9maWx0ZXJzXG4mIzQzO0RhdGU6XHRcdE1heSAyMDI2XG4mIzQzO0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbiYjNDM7RGVzY3JpcHRpb246XHRXcml0aW5nIGEgbnVtYmVyICYjMzk7TiYjMzk7IHRvIHRoaXMgZmlsZSBjcmVhdGVzIHRoZSBudW1iZXIgb2ZcbiYjNDM7XHRcdGRpcmVjdG9yaWVzIGZvciBlYWNoIERBTU9OIHByb2JlIGZpbHRlciBuYW1lZCAmIzM5OzAmIzM5OyB0byAmIzM5O04tMSYjMzk7XG4mIzQzO1x0XHR1bmRlciB0aGUgZmlsdGVycy8gZGlyZWN0b3J5LlxuJiM0MztcbiYjNDM7V2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1x1MDAzY1BcdTAwM2UvZmlsdGVycy9cdTAwM2NGXHUwMDNlL3R5cGVcbiYjNDM7RGF0ZTpcdFx0TWF5IDIwMjZcbiYjNDM7Q29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuJiM0MztEZXNjcmlwdGlvbjpcdFdyaXRpbmcgdG8gYW5kIHJlYWRpbmcgZnJvbSB0aGlzIGZpbGUgc2V0cyBhbmQgZ2V0cyB0aGUgdHlwZSBvZlxuJiM0MztcdFx0dGhlIG1lbW9yeSBvZiB0aGUgaW50ZXJlc3QuXG4mIzQzO1xuJiM0MztXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2UvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvXHUwMDNjUFx1MDAzZS9maWx0ZXJzL1x1MDAzY0ZcdTAwM2UvcGF0aFxuJiM0MztEYXRlOlx0XHRNYXkgMjAyNlxuJiM0MztDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG4mIzQzO0Rlc2NyaXB0aW9uOlx0SWYgJiMzOTttZW1jZyYjMzk7IGlzIHdyaXR0ZW4gdG8gdGhlICYjMzk7dHlwZSYjMzk7IGZpbGUsIHdyaXRpbmcgdG8gYW5kXG4mIzQzO1x0XHRyZWFkaW5nIGZyb20gdGhpcyBmaWxlIHNldHMgYW5kIGdldHMgdGhlIHBhdGggdG8gdGhlIG1lbW9yeVxuJiM0MztcdFx0Y2dyb3VwIG9mIHRoZSBpbnRlcmVzdC5cbiYjNDM7XG4mIzQzO1doYXQ6XHRcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1x1MDAzY0tcdTAwM2UvY29udGV4dHMvXHUwMDNjQ1x1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9cdTAwM2NQXHUwMDNlL2ZpbHRlcnMvXHUwMDNjRlx1MDAzZS9tYXRjaGluZ1xuJiM0MztEYXRlOlx0XHRNYXkgMjAyNlxuJiM0MztDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG4mIzQzO0Rlc2NyaXB0aW9uOlx0V3JpdGluZyAmIzM5O1kmIzM5OyBvciAmIzM5O04mIzM5OyB0byB0aGlzIGZpbGUgc2V0cyB3aGV0aGVyIHRoZSBmaWx0ZXIgaXMgZm9yXG4mIzQzO1x0XHR0aGUgbWVtb3J5IG9mIHRoZSAmIzM5O3R5cGUmIzM5Oywgb3IgYWxsIGV4Y2VwdCB0aGUgJiMzOTt0eXBlJiMzOTsuXG4mIzQzO1xuJiM0MztXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2UvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvXHUwMDNjUFx1MDAzZS9maWx0ZXJzL1x1MDAzY0ZcdTAwM2UvYWxsb3dcbiYjNDM7RGF0ZTpcdFx0TWF5IDIwMjZcbiYjNDM7Q29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuJiM0MztEZXNjcmlwdGlvbjpcdFdyaXRpbmcgJiMzOTtZJiMzOTsgb3IgJiMzOTtOJiMzOTsgdG8gdGhpcyBmaWxlIHNldHMgd2hldGhlciB0byBhbGxvdyBvciByZWplY3RcbiYjNDM7XHRcdGhpdHRpbmcgdGhlIHByb2JlIGZvciB0aGUgbWVtb3J5IHRoYXQgc2F0aXNmaWVzIHRoZSAmIzM5O3R5cGUmIzM5OyBhbmRcbiYjNDM7XHRcdHRoZSAmIzM5O21hdGNoaW5nJiMzOTsgb2YgdGhlIGRpcmVjdG9yeS5cbiYjNDM7XG4gV2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL3RhcmdldHMvbnJfdGFyZ2V0c1xuIERhdGU6XHRcdE1hciAyMDIyXG4gQ29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdCBiL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdFxuaW5kZXggYzE2YTNiYjI4OGQwNzkuLjQ1N2Q2ZThiYzc4Nzg1IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcbkBAIC02ODYsOSAmIzQzOzY4NiwxMSBAQCBtZWNoYW5pc20gdHJpZXMgdG8gbWFrZSBgYGN1cnJlbnRfdmFsdWVgYCBvZiBgYHRhcmdldF9tZXRyaWNgYCBiZSBzYW1lIHRvXG4gICAoMS8xMCwwMDApLlxuIC0gYGBpbmFjdGl2ZV9tZW1fYnBgYDogSW5hY3RpdmUgdG8gYWN0aXZlICYjNDM7IGluYWN0aXZlIChMUlUpIG1lbW9yeSBzaXplIHJhdGlvIGluXG4gICBicCAoMS8xMCwwMDApLlxuJiM0MzstIGBgbm9kZV9lbGlnaWJsZV9tZW1fYnBgYDogU2NoZW1lIHRhcmdldCBhY2Nlc3MgcGF0dGVybi1lbGlnaWJsZSBtZW1vcnkgcmF0aW9cbiYjNDM7ICBvZiBhIG5vZGUgaW4gYnAgKDEvMTAsMDAwKS5cbiBcbi1gYG5pZGBgIGlzIG9wdGlvbmFsbHkgcmVxdWlyZWQgZm9yIG9ubHkgYGBub2RlX21lbV91c2VkX2JwYGAsXG4tYGBub2RlX21lbV9mcmVlX2JwYGAsIGBgbm9kZV9tZW1jZ191c2VkX2JwYGAgYW5kIGBgbm9kZV9tZW1jZ19mcmVlX2JwYGAgdG9cbiYjNDM7YGBuaWRgYCBpcyBvcHRpb25hbGx5IHJlcXVpcmVkIGZvciBgYG5vZGVfbWVtX3VzZWRfYnBgYCwgYGBub2RlX21lbV9mcmVlX2JwYGAsXG4mIzQzO2Bgbm9kZV9tZW1jZ191c2VkX2JwYGAsIGBgbm9kZV9tZW1jZ19mcmVlX2JwYGAgYW5kIGBgbm9kZV9lbGlnaWJsZV9tZW1fYnBgYCB0b1xuIHBvaW50IHRoZSBzcGVjaWZpYyBOVU1BIG5vZGUuXG4gXG4gYGBwYXRoYGAgaXMgb3B0aW9uYWxseSByZXF1aXJlZCBmb3Igb25seSBgYG5vZGVfbWVtY2dfdXNlZF9icGBgIGFuZFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggOWEwMzEyMzI2OWMyOGUuLjVmZWJlNThhMDcwMjg5IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xMzQ3LDIxICYjNDM7MTM0NywzMyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCxcbiBcdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxuIHtcbi1cdHN0cnVjdCBkYW1vbl9yZWdpb24gKnNyY19yZWdpb247XG4mIzQzO1x0c3RydWN0IGRhbW9uX3JlZ2lvbiAqc3JjX3JlZ2lvbiwgKnByZXYgPSBOVUxMO1xuIFx0c3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcztcbiBcdGludCBpID0gMCwgZXJyO1xuIFxuLVx0ZGFtb25fZm9yX2VhY2hfcmVnaW9uKHNyY19yZWdpb24sIHNyYylcbi1cdFx0aSYjNDM7JiM0Mzs7XG4mIzQzO1x0ZGFtb25fZm9yX2VhY2hfcmVnaW9uKHNyY19yZWdpb24sIHNyYykge1xuJiM0MztcdFx0aWYgKCFwcmV2IHx8IHByZXYtXHUwMDNlYXIuZW5kICE9IHNyY19yZWdpb24tXHUwMDNlYXIuc3RhcnQpXG4mIzQzO1x0XHRcdGkmIzQzOyYjNDM7O1xuJiM0MztcdFx0cHJldiA9IHNyY19yZWdpb247XG4mIzQzO1x0fVxuIFx0aWYgKCFpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdHJhbmdlcyA9IGt2bWFsbG9jX29ianMoKnJhbmdlcywgaSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX05PV0FSTik7XG4gXHRpZiAoIXJhbmdlcylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0cHJldiA9IE5VTEw7XG4gXHRpID0gMDtcbi1cdGRhbW9uX2Zvcl9lYWNoX3JlZ2lvbihzcmNfcmVnaW9uLCBzcmMpXG4tXHRcdHJhbmdlc1tpJiM0MzsmIzQzO10gPSBzcmNfcmVnaW9uLVx1MDAzZWFyO1xuJiM0MztcdGRhbW9uX2Zvcl9lYWNoX3JlZ2lvbihzcmNfcmVnaW9uLCBzcmMpIHtcbiYjNDM7XHRcdGlmICghcHJldikge1xuJiM0MztcdFx0XHRyYW5nZXNbaV0uc3RhcnQgPSBzcmNfcmVnaW9uLVx1MDAzZWFyLnN0YXJ0O1xuJiM0MztcdFx0fSBlbHNlIGlmIChwcmV2LVx1MDAzZWFyLmVuZCAhPSBzcmNfcmVnaW9uLVx1MDAzZWFyLnN0YXJ0KSB7XG4mIzQzO1x0XHRcdHJhbmdlc1tpJiM0MzsmIzQzO10uZW5kID0gcHJldi1cdTAwM2Vhci5lbmQ7XG4mIzQzO1x0XHRcdHJhbmdlc1tpXS5zdGFydCA9IHNyY19yZWdpb24tXHUwMDNlYXIuc3RhcnQ7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRwcmV2ID0gc3JjX3JlZ2lvbjtcbiYjNDM7XHR9XG4mIzQzO1x0cmFuZ2VzW2kmIzQzOyYjNDM7XS5lbmQgPSBkYW1vbl9sYXN0X3JlZ2lvbihzcmMpLVx1MDAzZWFyLmVuZDtcbiBcdGVyciA9IGRhbW9uX3NldF9yZWdpb25zKGRzdCwgcmFuZ2VzLCBpLCBzcmNfbWluX3JlZ2lvbl9zeik7XG4gXHRrdmZyZWUocmFuZ2VzKTtcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmNcbmluZGV4IGUzNTI2YTI2M2UyMDVmLi42NzEwYjZkMDE5YmY1MyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3N5c2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3N5c2ZzLmNcbkBAIC0xMDczLDcgJiM0MzsxMDczLDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqZGFtb25fc3lzZnNfcHJvYmVfYWxsb2Modm9pZClcbiBcdHJldHVybiBremFsbG9jX29iaihzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cilcbiYjNDM7c3RhdGljIGludCBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKnByb2JlKVxuIHtcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpmaWx0ZXJzO1xuIFx0aW50IGVycjtcbkBAIC0xMDgxLDIyICYjNDM7MTA4MSwyMiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cilcbiBcdGZpbHRlcnMgPSBkYW1vbl9zeXNmc19maWx0ZXJzX2FsbG9jKCk7XG4gXHRpZiAoIWZpbHRlcnMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuLVx0YXR0ci1cdTAwM2VmaWx0ZXJzID0gZmlsdGVycztcbiYjNDM7XHRwcm9iZS1cdTAwM2VmaWx0ZXJzID0gZmlsdGVycztcbiBcbiBcdGVyciA9IGtvYmplY3RfaW5pdF9hbmRfYWRkKFx1MDAyNmZpbHRlcnMtXHUwMDNla29iaiwgXHUwMDI2ZGFtb25fc3lzZnNfZmlsdGVyc19rdHlwZSxcbi1cdFx0XHRcdTAwMjZhdHRyLVx1MDAzZWtvYmosIFwmIzM0O2ZpbHRlcnNcJiMzNDspO1xuJiM0MztcdFx0XHRcdTAwMjZwcm9iZS1cdTAwM2Vrb2JqLCBcJiMzNDtmaWx0ZXJzXCYjMzQ7KTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0a29iamVjdF9wdXQoXHUwMDI2ZmlsdGVycy1cdTAwM2Vrb2JqKTtcbi1cdFx0YXR0ci1cdTAwM2VmaWx0ZXJzID0gTlVMTDtcbiYjNDM7XHRcdHByb2JlLVx1MDAzZWZpbHRlcnMgPSBOVUxMO1xuIFx0fVxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZGFtb25fc3lzZnNfcHJvYmVfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKmF0dHIpXG4mIzQzO3N0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSlcbiB7XG4tXHRpZiAoYXR0ci1cdTAwM2VmaWx0ZXJzKSB7XG4tXHRcdGRhbW9uX3N5c2ZzX2ZpbHRlcnNfcm1fZGlycyhhdHRyLVx1MDAzZWZpbHRlcnMpO1xuLVx0XHRrb2JqZWN0X3B1dChcdTAwMjZhdHRyLVx1MDAzZWZpbHRlcnMtXHUwMDNla29iaik7XG4mIzQzO1x0aWYgKHByb2JlLVx1MDAzZWZpbHRlcnMpIHtcbiYjNDM7XHRcdGRhbW9uX3N5c2ZzX2ZpbHRlcnNfcm1fZGlycyhwcm9iZS1cdTAwM2VmaWx0ZXJzKTtcbiYjNDM7XHRcdGtvYmplY3RfcHV0KFx1MDAyNnByb2JlLVx1MDAzZWZpbHRlcnMtXHUwMDNla29iaik7XG4gXHR9XG4gfVxuIFxuQEAgLTE5MDksNDcgJiM0MzsxOTA5LDY1IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbiBcdHJldHVybiBkYW1vbl9zZXRfYXR0cnMoY3R4LCBcdTAwMjZhdHRycyk7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4tXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMgKnN5c19wcm9iZXMpXG4mIzQzO3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnMoc3RydWN0IGRhbW9uX3Byb2JlICpwcm9iZSxcbiYjNDM7XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycylcbiB7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHN5c19wcm9iZXMtXHUwMDNlbnI7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycyA9XG4tXHRcdFx0c3lzX3Byb2Jlcy1cdTAwM2Vwcm9iZXNfYXJyW2ldLVx1MDAzZWZpbHRlcnM7XG4tXHRcdHN0cnVjdCBkYW1vbl9wcm9iZSAqYztcbi1cdFx0aW50IGo7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc3lzX2ZpbHRlcnMtXHUwMDNlbnI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyICpzeXNfZmlsdGVyID1cbiYjNDM7XHRcdFx0c3lzX2ZpbHRlcnMtXHUwMDNlZmlsdGVyc19hcnJbaV07XG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb25fZmlsdGVyICpmaWx0ZXI7XG4gXG4tXHRcdGlmICghc3lzX2ZpbHRlcnMpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdGMgPSBkYW1vbl9uZXdfcHJvYmUoKTtcbi1cdFx0aWYgKCFjKVxuJiM0MztcdFx0ZmlsdGVyID0gZGFtb25fbmV3X2ZpbHRlcihzeXNfZmlsdGVyLVx1MDAzZXR5cGUsXG4mIzQzO1x0XHRcdFx0c3lzX2ZpbHRlci1cdTAwM2VtYXRjaGluZyxcbiYjNDM7XHRcdFx0XHRzeXNfZmlsdGVyLVx1MDAzZWFsbG93KTtcbiYjNDM7XHRcdGlmICghZmlsdGVyKVxuIFx0XHRcdHJldHVybiAtRU5PTUVNO1xuLVx0XHRkYW1vbl9hZGRfcHJvYmUoY3R4LCBjKTtcbi1cbi1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2Mgc3lzX2ZpbHRlcnMtXHUwMDNlbnI7IGomIzQzOyYjNDM7KSB7XG4tXHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqc3lzX2ZpbHRlciA9XG4tXHRcdFx0XHRzeXNfZmlsdGVycy1cdTAwM2VmaWx0ZXJzX2FycltqXTtcbi1cdFx0XHRzdHJ1Y3QgZGFtb25fZmlsdGVyICpmaWx0ZXI7XG4tXG4tXHRcdFx0ZmlsdGVyID0gZGFtb25fbmV3X2ZpbHRlcihzeXNfZmlsdGVyLVx1MDAzZXR5cGUsXG4tXHRcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlbWF0Y2hpbmcsXG4tXHRcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlYWxsb3cpO1xuLVx0XHRcdGlmICghZmlsdGVyKVxuLVx0XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tXHRcdFx0aWYgKGZpbHRlci1cdTAwM2V0eXBlID09IERBTU9OX0ZJTFRFUl9UWVBFX01FTUNHKSB7XG4tXHRcdFx0XHRpbnQgZXJyO1xuLVxuLVx0XHRcdFx0ZXJyID0gZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChcbi1cdFx0XHRcdFx0XHRzeXNfZmlsdGVyLVx1MDAzZXBhdGgsXG4tXHRcdFx0XHRcdFx0XHUwMDI2ZmlsdGVyLVx1MDAzZW1lbWNnX2lkKTtcbi1cdFx0XHRcdGlmIChlcnIpIHtcbi1cdFx0XHRcdFx0ZGFtb25fZGVzdHJveV9maWx0ZXIoZmlsdGVyKTtcbi1cdFx0XHRcdFx0cmV0dXJuIGVycjtcbi1cdFx0XHRcdH1cbiYjNDM7XHRcdGlmIChmaWx0ZXItXHUwMDNldHlwZSA9PSBEQU1PTl9GSUxURVJfVFlQRV9NRU1DRykge1xuJiM0MztcdFx0XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRcdFx0ZXJyID0gZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChcbiYjNDM7XHRcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlcGF0aCxcbiYjNDM7XHRcdFx0XHRcdFx1MDAyNmZpbHRlci1cdTAwM2VtZW1jZ19pZCk7XG4mIzQzO1x0XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0XHRkYW1vbl9kZXN0cm95X2ZpbHRlcihmaWx0ZXIpO1xuJiM0MztcdFx0XHRcdHJldHVybiBlcnI7XG4gXHRcdFx0fVxuLVx0XHRcdGRhbW9uX2FkZF9maWx0ZXIoYywgZmlsdGVyKTtcbiBcdFx0fVxuJiM0MztcdFx0ZGFtb25fYWRkX2ZpbHRlcihwcm9iZSwgZmlsdGVyKTtcbiYjNDM7XHR9XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsXG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKnN5c19wcm9iZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycztcbiYjNDM7XG4mIzQzO1x0c3lzX2ZpbHRlcnMgPSBzeXNfcHJvYmUtXHUwMDNlZmlsdGVycztcbiYjNDM7XHRpZiAoIXN5c19maWx0ZXJzKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHByb2JlLCBzeXNfZmlsdGVycyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmVzICpzeXNfcHJvYmVzKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGksIGVycjtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc3lzX3Byb2Jlcy1cdTAwM2VucjsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqc3lzX3Byb2JlO1xuJiM0MztcdFx0c3RydWN0IGRhbW9uX3Byb2JlICpwO1xuJiM0MztcbiYjNDM7XHRcdHAgPSBkYW1vbl9uZXdfcHJvYmUoKTtcbiYjNDM7XHRcdGlmICghcClcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0XHRkYW1vbl9hZGRfcHJvYmUoY3R4LCBwKTtcbiYjNDM7XHRcdHN5c19wcm9iZSA9IHN5c19wcm9iZXMtXHUwMDNlcHJvYmVzX2FycltpXTtcbiYjNDM7XHRcdGVyciA9IGRhbW9uX3N5c2ZzX3NldF9wcm9iZShwLCBzeXNfcHJvYmUpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmggYi9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcbmluZGV4IGEwMDE2ODczMDQ0NWQyLi4wZWM3ZDE0ZDM1NGU3NyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXG5AQCAtMTU0Niw2ICYjNDM7MTU0NiwyMCBAQCBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3dhbGtfY29udHJvbF9vYnNvbGV0ZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZGFtb25fdGVzdF9yYW5kKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9jdHggY3R4O1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2Y3R4LnJuZF9zdGF0ZSwgZ2V0X3JhbmRvbV91NjQoKSk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTAwMDA7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1bnNpZ25lZCBsb25nIHJuZCA9IGRhbW9uX3JhbmQoXHUwMDI2Y3R4LCAwLCAxMCk7XG4mIzQzO1xuJiM0MztcdFx0S1VOSVRfRVhQRUNUX0dFKHRlc3QsIHJuZCwgMCk7XG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfTEUodGVzdCwgcm5kLCA5KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGRhbW9uX3Rlc3RfY2FzZXNbXSA9IHtcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF90YXJnZXQpLFxuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3JlZ2lvbnMpLFxuQEAgLTE1NzcsNiAmIzQzOzE1OTEsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X2FwcGx5X21pbl9ucl9yZWdpb25zKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9pc19sYXN0X3JlZ2lvbiksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfd2Fsa19jb250cm9sX29ic29sZXRlKSxcbiYjNDM7XHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfcmFuZCksXG4gXHR7fSxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2hcbmluZGV4IDJlYWFhNWFlM2M1ZWQ3Li5iNDNkZWVlNjBmZTk1MyAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaFxuQEAgLTk5LDE0ICYjNDM7OTksNTUgQEAgdGVzdF9zdGF0cygpXG4gXHRkb25lXG4gfVxuIFxuJiM0Mzt0ZXN0X2Rlc3QoKVxuJiM0Mzt7XG4mIzQzO1x0ZGVzdF9kaXI9JDFcbiYjNDM7XHRlbnN1cmVfZmlsZSBcJiMzNDskZGVzdF9kaXIvaWRcJiMzNDsgXCYjMzQ7ZXhpc3RcJiMzNDsgXCYjMzQ7NjAwXCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX2ZpbGUgXCYjMzQ7JGRlc3RfZGlyL3dlaWdodFwmIzM0OyBcJiMzNDtleGlzdFwmIzM0OyBcJiMzNDs2MDBcJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dGVzdF9kZXN0cygpXG4mIzQzO3tcbiYjNDM7XHRkZXN0c19kaXI9JDFcbiYjNDM7XHRlbnN1cmVfZmlsZSBcJiMzNDskZGVzdHNfZGlyL25yX2Rlc3RzXCYjMzQ7IFwmIzM0O2V4aXN0XCYjMzQ7IFwmIzM0OzYwMFwmIzM0O1xuJiM0MztcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRkZXN0c19kaXIvbnJfZGVzdHNcJiMzNDsgXCYjMzQ7MVwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdHRlc3RfZGVzdCBcJiMzNDskZGVzdHNfZGlyLzBcJiMzNDtcbiYjNDM7XG4mIzQzO1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCYjMzQ7JGRlc3RzX2Rpci9ucl9kZXN0c1wmIzM0OyBcJiMzNDsyXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4mIzQzO1x0dGVzdF9kZXN0IFwmIzM0OyRkZXN0c19kaXIvMFwmIzM0O1xuJiM0MztcdHRlc3RfZGVzdCBcJiMzNDskZGVzdHNfZGlyLzFcJiMzNDtcbiYjNDM7XG4mIzQzO1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCYjMzQ7JGRlc3RzX2Rpci9ucl9kZXN0c1wmIzM0OyBcJiMzNDswXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX2RpciBcJiMzNDskZGVzdHNfZGlyLzBcJiMzNDsgXCYjMzQ7bm90X2V4aXN0XCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX2RpciBcJiMzNDskZGVzdHNfZGlyLzFcJiMzNDsgXCYjMzQ7bm90X2V4aXN0XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4gdGVzdF9maWx0ZXIoKVxuIHtcbiBcdGZpbHRlcl9kaXI9JDFcbiBcdGVuc3VyZV9maWxlIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7ZXhpc3RcJiMzNDsgXCYjMzQ7NjAwXCYjMzQ7XG4tXHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZmlsdGVyX2Rpci90eXBlXCYjMzQ7IFwmIzM0O2Fub25cJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbi1cdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7bWVtY2dcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbi1cdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7YWRkclwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuLVx0ZW5zdXJlX3dyaXRlX3N1Y2MgXCYjMzQ7JGZpbHRlcl9kaXIvdHlwZVwmIzM0OyBcJiMzNDt0YXJnZXRcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XG4mIzQzO1x0bG9jYWwgZGlyX25hbWU9JChiYXNlbmFtZSBcJiMzNDskKGRpcm5hbWUgXCYjMzQ7JGZpbHRlcl9kaXJcJiMzNDspXCYjMzQ7KVxuJiM0MztcdGlmICBbIFwmIzM0OyRkaXJfbmFtZVwmIzM0OyA9IFwmIzM0O2ZpbHRlcnNcJiMzNDsgXSB8fCBbIFwmIzM0OyRkaXJfbmFtZVwmIzM0OyA9IFwmIzM0O29wc19maWx0ZXJzXCYjMzQ7IF1cbiYjNDM7XHR0aGVuXG4mIzQzO1x0XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZmlsdGVyX2Rpci90eXBlXCYjMzQ7IFwmIzM0O2Fub25cJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7bWVtY2dcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRmaVxuJiM0MztcdGlmICBbIFwmIzM0OyRkaXJfbmFtZVwmIzM0OyA9IFwmIzM0O2ZpbHRlcnNcJiMzNDsgXSB8fCBbIFwmIzM0OyRkaXJfbmFtZVwmIzM0OyA9IFwmIzM0O2NvcmVfZmlsdGVyc1wmIzM0OyBdXG4mIzQzO1x0dGhlblxuJiM0MztcdFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXCYjMzQ7JGZpbHRlcl9kaXIvdHlwZVwmIzM0OyBcJiMzNDthZGRyXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4mIzQzO1x0XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZmlsdGVyX2Rpci90eXBlXCYjMzQ7IFwmIzM0O3RhcmdldFwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdGZpXG4mIzQzO1x0aWYgWyBcJiMzNDskZGlyX25hbWVcJiMzNDsgPSBcJiMzNDtjb3JlX2ZpbHRlcnNcJiMzNDsgXVxuJiM0MztcdHRoZW5cbiYjNDM7XHRcdGVuc3VyZV93cml0ZV9mYWlsIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7YW5vblwmIzM0OyBcJiMzNDtvcHMgdHlwZVwmIzM0O1xuJiM0MztcdFx0ZW5zdXJlX3dyaXRlX2ZhaWwgXCYjMzQ7JGZpbHRlcl9kaXIvdHlwZVwmIzM0OyBcJiMzNDttZW1jZ1wmIzM0OyBcJiMzNDtvcHMgdHlwZVwmIzM0O1xuJiM0MztcdGZpXG4mIzQzO1x0aWYgWyBcJiMzNDskZGlyX25hbWVcJiMzNDsgID0gXCYjMzQ7b3BzX2ZpbHRlcnNcJiMzNDsgXVxuJiM0MztcdHRoZW5cbiYjNDM7XHRcdGVuc3VyZV93cml0ZV9mYWlsIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7YWRkclwmIzM0OyBcJiMzNDtjb3JlIHR5cGVcJiMzNDtcbiYjNDM7XHRcdGVuc3VyZV93cml0ZV9mYWlsIFwmIzM0OyRmaWx0ZXJfZGlyL3R5cGVcJiMzNDsgXCYjMzQ7dGFyZ2V0XCYjMzQ7IFwmIzM0O2NvcmUgdHlwZVwmIzM0O1xuJiM0MztcdGZpXG4gXHRlbnN1cmVfd3JpdGVfZmFpbCBcJiMzNDskZmlsdGVyX2Rpci90eXBlXCYjMzQ7IFwmIzM0O2Zvb1wmIzM0OyBcJiMzNDtpbnZhbGlkIGlucHV0XCYjMzQ7XG4gXHRlbnN1cmVfZmlsZSBcJiMzNDskZmlsdGVyX2Rpci9tYXRjaGluZ1wmIzM0OyBcJiMzNDtleGlzdFwmIzM0OyBcJiMzNDs2MDBcJiMzNDtcbiBcdGVuc3VyZV9maWxlIFwmIzM0OyRmaWx0ZXJfZGlyL21lbWNnX3BhdGhcJiMzNDsgXCYjMzQ7ZXhpc3RcJiMzNDsgXCYjMzQ7NjAwXCYjMzQ7XG5AQCAtMTU4LDYgJiM0MzsxOTksMjAgQEAgdGVzdF9nb2FsKClcbiBcdGVuc3VyZV9kaXIgXCYjMzQ7JGdvYWxfZGlyXCYjMzQ7IFwmIzM0O2V4aXN0XCYjMzQ7XG4gXHRlbnN1cmVfZmlsZSBcJiMzNDskZ29hbF9kaXIvdGFyZ2V0X3ZhbHVlXCYjMzQ7IFwmIzM0O2V4aXN0XCYjMzQ7IFwmIzM0OzYwMFwmIzM0O1xuIFx0ZW5zdXJlX2ZpbGUgXCYjMzQ7JGdvYWxfZGlyL2N1cnJlbnRfdmFsdWVcJiMzNDsgXCYjMzQ7ZXhpc3RcJiMzNDsgXCYjMzQ7NjAwXCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX2ZpbGUgXCYjMzQ7JGdvYWxfZGlyL3RhcmdldF9tZXRyaWNcJiMzNDsgXCYjMzQ7ZXhpc3RcJiMzNDsgXCYjMzQ7NjAwXCYjMzQ7XG4mIzQzO1x0bG9jYWwgZnBhdGg9XCYjMzQ7JGdvYWxfZGlyL3RhcmdldF9tZXRyaWNcJiMzNDtcbiYjNDM7XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7dXNlcl9pbnB1dFwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDtzb21lX21lbV9wc2lfdXNcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7bm9kZV9tZW1fdXNlZF9icFwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDtub2RlX21lbV9mcmVlX2JwXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCYjMzQ7JGZwYXRoXCYjMzQ7IFwmIzM0O25vZGVfbWVtY2dfdXNlZF9icFwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDtub2RlX21lbWNnX2ZyZWVfYnBcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7YWN0aXZlX21lbV9icFwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDtpbmFjdGl2ZV9tZW1fYnBcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7bm9kZV9lbGlnaWJsZV9tZW1fYnBcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRlbnN1cmVfd3JpdGVfZmFpbCBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7Zm9vXCYjMzQ7IFwmIzM0O2ludmFsaWQgaW5wdXRcJiMzNDtcbiYjNDM7XHRlbnN1cmVfZmlsZSBcJiMzNDskZ29hbF9kaXIvbmlkXCYjMzQ7IFwmIzM0O2V4aXN0XCYjMzQ7IFwmIzM0OzYwMFwmIzM0O1xuJiM0MztcdGVuc3VyZV9maWxlIFwmIzM0OyRnb2FsX2Rpci9wYXRoXCYjMzQ7IFwmIzM0O2V4aXN0XCYjMzQ7IFwmIzM0OzYwMFwmIzM0O1xuIH1cbiBcbiB0ZXN0X2dvYWxzKClcbkBAIC0yMDcsNyAmIzQzOzI2MiwxMCBAQCB0ZXN0X3NjaGVtZSgpXG4gXHRlbnN1cmVfZmlsZSBcJiMzNDskc2NoZW1lX2Rpci9hcHBseV9pbnRlcnZhbF91c1wmIzM0OyBcJiMzNDtleGlzdFwmIzM0OyBcJiMzNDs2MDBcJiMzNDtcbiBcdHRlc3RfcXVvdGFzIFwmIzM0OyRzY2hlbWVfZGlyL3F1b3Rhc1wmIzM0O1xuIFx0dGVzdF93YXRlcm1hcmtzIFwmIzM0OyRzY2hlbWVfZGlyL3dhdGVybWFya3NcJiMzNDtcbiYjNDM7XHR0ZXN0X2Rlc3RzIFwmIzM0OyRzY2hlbWVfZGlyL2Rlc3RzXCYjMzQ7XG4gXHR0ZXN0X2ZpbHRlcnMgXCYjMzQ7JHNjaGVtZV9kaXIvZmlsdGVyc1wmIzM0O1xuJiM0MztcdHRlc3RfZmlsdGVycyBcJiMzNDskc2NoZW1lX2Rpci9jb3JlX2ZpbHRlcnNcJiMzNDtcbiYjNDM7XHR0ZXN0X2ZpbHRlcnMgXCYjMzQ7JHNjaGVtZV9kaXIvb3BzX2ZpbHRlcnNcJiMzNDtcbiBcdHRlc3Rfc3RhdHMgXCYjMzQ7JHNjaGVtZV9kaXIvc3RhdHNcJiMzNDtcbiBcdHRlc3RfdHJpZWRfcmVnaW9ucyBcJiMzNDskc2NoZW1lX2Rpci90cmllZF9yZWdpb25zXCYjMzQ7XG4gfVxuQEAgLTM0Niw4ICYjNDM7NDA0LDEzIEBAIHRlc3RfcHJvYmVzKClcbiBcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRwcm9iZXNfZGlyL25yX3Byb2Jlc1wmIzM0OyBcJiMzNDsxXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4gXHR0ZXN0X3Byb2JlIFwmIzM0OyRwcm9iZXNfZGlyLzBcJiMzNDtcbiBcbiYjNDM7XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskcHJvYmVzX2Rpci9ucl9wcm9iZXNcJiMzNDsgXCYjMzQ7MlwmIzM0OyBcJiMzNDt2YWxpZCBpbnB1dFwmIzM0O1xuJiM0MztcdHRlc3RfcHJvYmUgXCYjMzQ7JHByb2Jlc19kaXIvMFwmIzM0O1xuJiM0MztcdHRlc3RfcHJvYmUgXCYjMzQ7JHByb2Jlc19kaXIvMVwmIzM0O1xuJiM0MztcbiBcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRwcm9iZXNfZGlyL25yX3Byb2Jlc1wmIzM0OyBcJiMzNDswXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG4gXHRlbnN1cmVfZGlyIFwmIzM0OyRwcm9iZXNfZGlyLzBcJiMzNDsgXCYjMzQ7bm90X2V4aXN0XCYjMzQ7XG4mIzQzO1x0ZW5zdXJlX2RpciBcJiMzNDskcHJvYmVzX2Rpci8xXCYjMzQ7IFwmIzM0O25vdF9leGlzdFwmIzM0O1xuIH1cbiBcbiB0ZXN0X21vbml0b3JpbmdfYXR0cnMoKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3NldF9maWx0ZXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3NldF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcHJvYmVzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gbG9naWMgZm9yIGNvbW1pdHRpbmcgdGFyZ2V0IHJlZ2lvbnMgKG1lcmdpbmcgY29udGlndW91cyByZWdpb25zKSBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZSBmb3Igc2V0dGluZyB1cCBEQU1PTiBwcm9iZXMgYW5kIGZpbHRlcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgc3lzZnMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3OTM4ZDgwYTZiZjQyZTgwNjI2MWVlMDY2M2U4MWY0NmVmMzI1ZWY5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMjI6NDQ6MTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vbiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uCmluZGV4IDRmZGVjNjNhNDdkNGFhLi5kZDZiNWJkNzZlMTE5NiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb24KJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb24KQEAgLTE1Nyw2ICYjNDM7MTU3LDQ2IEBAIERlc2NyaXB0aW9uOglXcml0aW5nIGEgdmFsdWUgdG8gdGhpcyBmaWxlIHNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mCiAJCW1vbml0b3JpbmcgcmVnaW9ucyBvZiB0aGUgREFNT04gY29udGV4dCBhcyB0aGUgdmFsdWUuICBSZWFkaW5nCiAJCXRoaXMgZmlsZSByZXR1cm5zIHRoZSB2YWx1ZS4KIAomIzQzO1doYXQ6CQkvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy8mbHQ7SyZndDsvY29udGV4dHMvJmx0O0MmZ3Q7L21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL25yX3Byb2JlcwomIzQzO0RhdGU6CQlNYXkgMjAyNgomIzQzO0NvbnRhY3Q6CVNKIFBhcmsgJmx0O3NqQGtlcm5lbC5vcmcmZ3Q7CiYjNDM7RGVzY3JpcHRpb246CVdyaXRpbmcgYSBudW1iZXIgJiMzOTtOJiMzOTsgdG8gdGhpcyBmaWxlIGNyZWF0ZXMgdGhlIG51bWJlciBvZgomIzQzOwkJZGlyZWN0b3JpZXMgZm9yIGVhY2ggREFNT04gcHJvYmUgbmFtZWQgJiMzOTswJiMzOTsgdG8gJiMzOTtOLTEmIzM5OyB1bmRlciB0aGUKJiM0MzsJCXByb2Jlcy8gZGlyZWN0b3J5LgomIzQzOwomIzQzO1doYXQ6CQkvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy8mbHQ7SyZndDsvY29udGV4dHMvJmx0O0MmZ3Q7L21vbml0b3JpbmdfYXR0cnMvcHJvYmVzLyZsdDtQJmd0Oy9maWx0ZXJzL25yX2ZpbHRlcnMKJiM0MztEYXRlOgkJTWF5IDIwMjYKJiM0MztDb250YWN0OglTSiBQYXJrICZsdDtzakBrZXJuZWwub3JnJmd0OwomIzQzO0Rlc2NyaXB0aW9uOglXcml0aW5nIGEgbnVtYmVyICYjMzk7TiYjMzk7IHRvIHRoaXMgZmlsZSBjcmVhdGVzIHRoZSBudW1iZXIgb2YKJiM0MzsJCWRpcmVjdG9yaWVzIGZvciBlYWNoIERBTU9OIHByb2JlIGZpbHRlciBuYW1lZCAmIzM5OzAmIzM5OyB0byAmIzM5O04tMSYjMzk7CiYjNDM7CQl1bmRlciB0aGUgZmlsdGVycy8gZGlyZWN0b3J5LgomIzQzOwomIzQzO1doYXQ6CQkvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy8mbHQ7SyZndDsvY29udGV4dHMvJmx0O0MmZ3Q7L21vbml0b3JpbmdfYXR0cnMvcHJvYmVzLyZsdDtQJmd0Oy9maWx0ZXJzLyZsdDtGJmd0Oy90eXBlCiYjNDM7RGF0ZToJCU1heSAyMDI2CiYjNDM7Q29udGFjdDoJU0ogUGFyayAmbHQ7c2pAa2VybmVsLm9yZyZndDsKJiM0MztEZXNjcmlwdGlvbjoJV3JpdGluZyB0byBhbmQgcmVhZGluZyBmcm9tIHRoaXMgZmlsZSBzZXRzIGFuZCBnZXRzIHRoZSB0eXBlIG9mCiYjNDM7CQl0aGUgbWVtb3J5IG9mIHRoZSBpbnRlcmVzdC4KJiM0MzsKJiM0MztXaGF0OgkJL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvJmx0O0smZ3Q7L2NvbnRleHRzLyZsdDtDJmd0Oy9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy8mbHQ7UCZndDsvZmlsdGVycy8mbHQ7RiZndDsvcGF0aAomIzQzO0RhdGU6CQlNYXkgMjAyNgomIzQzO0NvbnRhY3Q6CVNKIFBhcmsgJmx0O3NqQGtlcm5lbC5vcmcmZ3Q7CiYjNDM7RGVzY3JpcHRpb246CUlmICYjMzk7bWVtY2cmIzM5OyBpcyB3cml0dGVuIHRvIHRoZSAmIzM5O3R5cGUmIzM5OyBmaWxlLCB3cml0aW5nIHRvIGFuZAomIzQzOwkJcmVhZGluZyBmcm9tIHRoaXMgZmlsZSBzZXRzIGFuZCBnZXRzIHRoZSBwYXRoIHRvIHRoZSBtZW1vcnkKJiM0MzsJCWNncm91cCBvZiB0aGUgaW50ZXJlc3QuCiYjNDM7CiYjNDM7V2hhdDoJCS9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzLyZsdDtLJmd0Oy9jb250ZXh0cy8mbHQ7QyZndDsvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvJmx0O1AmZ3Q7L2ZpbHRlcnMvJmx0O0YmZ3Q7L21hdGNoaW5nCiYjNDM7RGF0ZToJCU1heSAyMDI2CiYjNDM7Q29udGFjdDoJU0ogUGFyayAmbHQ7c2pAa2VybmVsLm9yZyZndDsKJiM0MztEZXNjcmlwdGlvbjoJV3JpdGluZyAmIzM5O1kmIzM5OyBvciAmIzM5O04mIzM5OyB0byB0aGlzIGZpbGUgc2V0cyB3aGV0aGVyIHRoZSBmaWx0ZXIgaXMgZm9yCiYjNDM7CQl0aGUgbWVtb3J5IG9mIHRoZSAmIzM5O3R5cGUmIzM5Oywgb3IgYWxsIGV4Y2VwdCB0aGUgJiMzOTt0eXBlJiMzOTsuCiYjNDM7CiYjNDM7V2hhdDoJCS9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzLyZsdDtLJmd0Oy9jb250ZXh0cy8mbHQ7QyZndDsvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvJmx0O1AmZ3Q7L2ZpbHRlcnMvJmx0O0YmZ3Q7L2FsbG93CiYjNDM7RGF0ZToJCU1heSAyMDI2CiYjNDM7Q29udGFjdDoJU0ogUGFyayAmbHQ7c2pAa2VybmVsLm9yZyZndDsKJiM0MztEZXNjcmlwdGlvbjoJV3JpdGluZyAmIzM5O1kmIzM5OyBvciAmIzM5O04mIzM5OyB0byB0aGlzIGZpbGUgc2V0cyB3aGV0aGVyIHRvIGFsbG93IG9yIHJlamVjdAomIzQzOwkJaGl0dGluZyB0aGUgcHJvYmUgZm9yIHRoZSBtZW1vcnkgdGhhdCBzYXRpc2ZpZXMgdGhlICYjMzk7dHlwZSYjMzk7IGFuZAomIzQzOwkJdGhlICYjMzk7bWF0Y2hpbmcmIzM5OyBvZiB0aGUgZGlyZWN0b3J5LgomIzQzOwogV2hhdDoJCS9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzLyZsdDtLJmd0Oy9jb250ZXh0cy8mbHQ7QyZndDsvdGFyZ2V0cy9ucl90YXJnZXRzCiBEYXRlOgkJTWFyIDIwMjIKIENvbnRhY3Q6CVNKIFBhcmsgJmx0O3NqQGtlcm5lbC5vcmcmZ3Q7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QKaW5kZXggYzE2YTNiYjI4OGQwNzkuLjQ1N2Q2ZThiYzc4Nzg1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0CkBAIC02ODYsOSAmIzQzOzY4NiwxMSBAQCBtZWNoYW5pc20gdHJpZXMgdG8gbWFrZSBgYGN1cnJlbnRfdmFsdWVgYCBvZiBgYHRhcmdldF9tZXRyaWNgYCBiZSBzYW1lIHRvCiAgICgxLzEwLDAwMCkuCiAtIGBgaW5hY3RpdmVfbWVtX2JwYGA6IEluYWN0aXZlIHRvIGFjdGl2ZSAmIzQzOyBpbmFjdGl2ZSAoTFJVKSBtZW1vcnkgc2l6ZSByYXRpbyBpbgogICBicCAoMS8xMCwwMDApLgomIzQzOy0gYGBub2RlX2VsaWdpYmxlX21lbV9icGBgOiBTY2hlbWUgdGFyZ2V0IGFjY2VzcyBwYXR0ZXJuLWVsaWdpYmxlIG1lbW9yeSByYXRpbwomIzQzOyAgb2YgYSBub2RlIGluIGJwICgxLzEwLDAwMCkuCiAKLWBgbmlkYGAgaXMgb3B0aW9uYWxseSByZXF1aXJlZCBmb3Igb25seSBgYG5vZGVfbWVtX3VzZWRfYnBgYCwKLWBgbm9kZV9tZW1fZnJlZV9icGBgLCBgYG5vZGVfbWVtY2dfdXNlZF9icGBgIGFuZCBgYG5vZGVfbWVtY2dfZnJlZV9icGBgIHRvCiYjNDM7YGBuaWRgYCBpcyBvcHRpb25hbGx5IHJlcXVpcmVkIGZvciBgYG5vZGVfbWVtX3VzZWRfYnBgYCwgYGBub2RlX21lbV9mcmVlX2JwYGAsCiYjNDM7YGBub2RlX21lbWNnX3VzZWRfYnBgYCwgYGBub2RlX21lbWNnX2ZyZWVfYnBgYCBhbmQgYGBub2RlX2VsaWdpYmxlX21lbV9icGBgIHRvCiBwb2ludCB0aGUgc3BlY2lmaWMgTlVNQSBub2RlLgogCiBgYHBhdGhgYCBpcyBvcHRpb25hbGx5IHJlcXVpcmVkIGZvciBvbmx5IGBgbm9kZV9tZW1jZ191c2VkX2JwYGAgYW5kCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmMKaW5kZXggOWEwMzEyMzI2OWMyOGUuLjVmZWJlNThhMDcwMjg5IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jCkBAIC0xMzQ3LDIxICYjNDM7MTM0NywzMyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogc3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LAogCQlzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpzcmMsIHVuc2lnbmVkIGxvbmcgc3JjX21pbl9yZWdpb25fc3opCiB7Ci0Jc3RydWN0IGRhbW9uX3JlZ2lvbiAqc3JjX3JlZ2lvbjsKJiM0MzsJc3RydWN0IGRhbW9uX3JlZ2lvbiAqc3JjX3JlZ2lvbiwgKnByZXYgPSBOVUxMOwogCXN0cnVjdCBkYW1vbl9hZGRyX3JhbmdlICpyYW5nZXM7CiAJaW50IGkgPSAwLCBlcnI7CiAKLQlkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKQotCQlpJiM0MzsmIzQzOzsKJiM0MzsJZGFtb25fZm9yX2VhY2hfcmVnaW9uKHNyY19yZWdpb24sIHNyYykgewomIzQzOwkJaWYgKCFwcmV2IHx8IHByZXYtJmd0O2FyLmVuZCAhPSBzcmNfcmVnaW9uLSZndDthci5zdGFydCkKJiM0MzsJCQlpJiM0MzsmIzQzOzsKJiM0MzsJCXByZXYgPSBzcmNfcmVnaW9uOwomIzQzOwl9CiAJaWYgKCFpKQogCQlyZXR1cm4gMDsKIAogCXJhbmdlcyA9IGt2bWFsbG9jX29ianMoKnJhbmdlcywgaSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX05PV0FSTik7CiAJaWYgKCFyYW5nZXMpCiAJCXJldHVybiAtRU5PTUVNOwomIzQzOwlwcmV2ID0gTlVMTDsKIAlpID0gMDsKLQlkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKQotCQlyYW5nZXNbaSYjNDM7JiM0MztdID0gc3JjX3JlZ2lvbi0mZ3Q7YXI7CiYjNDM7CWRhbW9uX2Zvcl9lYWNoX3JlZ2lvbihzcmNfcmVnaW9uLCBzcmMpIHsKJiM0MzsJCWlmICghcHJldikgewomIzQzOwkJCXJhbmdlc1tpXS5zdGFydCA9IHNyY19yZWdpb24tJmd0O2FyLnN0YXJ0OwomIzQzOwkJfSBlbHNlIGlmIChwcmV2LSZndDthci5lbmQgIT0gc3JjX3JlZ2lvbi0mZ3Q7YXIuc3RhcnQpIHsKJiM0MzsJCQlyYW5nZXNbaSYjNDM7JiM0MztdLmVuZCA9IHByZXYtJmd0O2FyLmVuZDsKJiM0MzsJCQlyYW5nZXNbaV0uc3RhcnQgPSBzcmNfcmVnaW9uLSZndDthci5zdGFydDsKJiM0MzsJCX0KJiM0MzsJCXByZXYgPSBzcmNfcmVnaW9uOwomIzQzOwl9CiYjNDM7CXJhbmdlc1tpJiM0MzsmIzQzO10uZW5kID0gZGFtb25fbGFzdF9yZWdpb24oc3JjKS0mZ3Q7YXIuZW5kOwogCWVyciA9IGRhbW9uX3NldF9yZWdpb25zKGRzdCwgcmFuZ2VzLCBpLCBzcmNfbWluX3JlZ2lvbl9zeik7CiAJa3ZmcmVlKHJhbmdlcyk7CiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jCmluZGV4IGUzNTI2YTI2M2UyMDVmLi42NzEwYjZkMDE5YmY1MyAxMDA2NDQKLS0tIGEvbW0vZGFtb24vc3lzZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy5jCkBAIC0xMDczLDcgJiM0MzsxMDczLDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqZGFtb25fc3lzZnNfcHJvYmVfYWxsb2Modm9pZCkKIAlyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlKTsKIH0KIAotc3RhdGljIGludCBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKmF0dHIpCiYjNDM7c3RhdGljIGludCBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKnByb2JlKQogewogCXN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpmaWx0ZXJzOwogCWludCBlcnI7CkBAIC0xMDgxLDIyICYjNDM7MTA4MSwyMiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cikKIAlmaWx0ZXJzID0gZGFtb25fc3lzZnNfZmlsdGVyc19hbGxvYygpOwogCWlmICghZmlsdGVycykKIAkJcmV0dXJuIC1FTk9NRU07Ci0JYXR0ci0mZ3Q7ZmlsdGVycyA9IGZpbHRlcnM7CiYjNDM7CXByb2JlLSZndDtmaWx0ZXJzID0gZmlsdGVyczsKIAogCWVyciA9IGtvYmplY3RfaW5pdF9hbmRfYWRkKCZhbXA7ZmlsdGVycy0mZ3Q7a29iaiwgJmFtcDtkYW1vbl9zeXNmc19maWx0ZXJzX2t0eXBlLAotCQkJJmFtcDthdHRyLSZndDtrb2JqLCAmIzM0O2ZpbHRlcnMmIzM0Oyk7CiYjNDM7CQkJJmFtcDtwcm9iZS0mZ3Q7a29iaiwgJiMzNDtmaWx0ZXJzJiMzNDspOwogCWlmIChlcnIpIHsKIAkJa29iamVjdF9wdXQoJmFtcDtmaWx0ZXJzLSZndDtrb2JqKTsKLQkJYXR0ci0mZ3Q7ZmlsdGVycyA9IE5VTEw7CiYjNDM7CQlwcm9iZS0mZ3Q7ZmlsdGVycyA9IE5VTEw7CiAJfQogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICphdHRyKQomIzQzO3N0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSkKIHsKLQlpZiAoYXR0ci0mZ3Q7ZmlsdGVycykgewotCQlkYW1vbl9zeXNmc19maWx0ZXJzX3JtX2RpcnMoYXR0ci0mZ3Q7ZmlsdGVycyk7Ci0JCWtvYmplY3RfcHV0KCZhbXA7YXR0ci0mZ3Q7ZmlsdGVycy0mZ3Q7a29iaik7CiYjNDM7CWlmIChwcm9iZS0mZ3Q7ZmlsdGVycykgewomIzQzOwkJZGFtb25fc3lzZnNfZmlsdGVyc19ybV9kaXJzKHByb2JlLSZndDtmaWx0ZXJzKTsKJiM0MzsJCWtvYmplY3RfcHV0KCZhbXA7cHJvYmUtJmd0O2ZpbHRlcnMtJmd0O2tvYmopOwogCX0KIH0KIApAQCAtMTkwOSw0NyAmIzQzOzE5MDksNjUgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LAogCXJldHVybiBkYW1vbl9zZXRfYXR0cnMoY3R4LCAmYW1wO2F0dHJzKTsKIH0KIAotc3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwKLQkJc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlcyAqc3lzX3Byb2JlcykKJiM0MztzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsCiYjNDM7CQlzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqc3lzX2ZpbHRlcnMpCiB7CiAJaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgc3lzX3Byb2Jlcy0mZ3Q7bnI7IGkmIzQzOyYjNDM7KSB7Ci0JCXN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycyA9Ci0JCQlzeXNfcHJvYmVzLSZndDtwcm9iZXNfYXJyW2ldLSZndDtmaWx0ZXJzOwotCQlzdHJ1Y3QgZGFtb25fcHJvYmUgKmM7Ci0JCWludCBqOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgc3lzX2ZpbHRlcnMtJmd0O25yOyBpJiM0MzsmIzQzOykgewomIzQzOwkJc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqc3lzX2ZpbHRlciA9CiYjNDM7CQkJc3lzX2ZpbHRlcnMtJmd0O2ZpbHRlcnNfYXJyW2ldOwomIzQzOwkJc3RydWN0IGRhbW9uX2ZpbHRlciAqZmlsdGVyOwogCi0JCWlmICghc3lzX2ZpbHRlcnMpCi0JCQljb250aW51ZTsKLQkJYyA9IGRhbW9uX25ld19wcm9iZSgpOwotCQlpZiAoIWMpCiYjNDM7CQlmaWx0ZXIgPSBkYW1vbl9uZXdfZmlsdGVyKHN5c19maWx0ZXItJmd0O3R5cGUsCiYjNDM7CQkJCXN5c19maWx0ZXItJmd0O21hdGNoaW5nLAomIzQzOwkJCQlzeXNfZmlsdGVyLSZndDthbGxvdyk7CiYjNDM7CQlpZiAoIWZpbHRlcikKIAkJCXJldHVybiAtRU5PTUVNOwotCQlkYW1vbl9hZGRfcHJvYmUoY3R4LCBjKTsKLQotCQlmb3IgKGogPSAwOyBqICZsdDsgc3lzX2ZpbHRlcnMtJmd0O25yOyBqJiM0MzsmIzQzOykgewotCQkJc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqc3lzX2ZpbHRlciA9Ci0JCQkJc3lzX2ZpbHRlcnMtJmd0O2ZpbHRlcnNfYXJyW2pdOwotCQkJc3RydWN0IGRhbW9uX2ZpbHRlciAqZmlsdGVyOwotCi0JCQlmaWx0ZXIgPSBkYW1vbl9uZXdfZmlsdGVyKHN5c19maWx0ZXItJmd0O3R5cGUsCi0JCQkJCXN5c19maWx0ZXItJmd0O21hdGNoaW5nLAotCQkJCQlzeXNfZmlsdGVyLSZndDthbGxvdyk7Ci0JCQlpZiAoIWZpbHRlcikKLQkJCQlyZXR1cm4gLUVOT01FTTsKLQkJCWlmIChmaWx0ZXItJmd0O3R5cGUgPT0gREFNT05fRklMVEVSX1RZUEVfTUVNQ0cpIHsKLQkJCQlpbnQgZXJyOwotCi0JCQkJZXJyID0gZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZCgKLQkJCQkJCXN5c19maWx0ZXItJmd0O3BhdGgsCi0JCQkJCQkmYW1wO2ZpbHRlci0mZ3Q7bWVtY2dfaWQpOwotCQkJCWlmIChlcnIpIHsKLQkJCQkJZGFtb25fZGVzdHJveV9maWx0ZXIoZmlsdGVyKTsKLQkJCQkJcmV0dXJuIGVycjsKLQkJCQl9CiYjNDM7CQlpZiAoZmlsdGVyLSZndDt0eXBlID09IERBTU9OX0ZJTFRFUl9UWVBFX01FTUNHKSB7CiYjNDM7CQkJaW50IGVycjsKJiM0MzsKJiM0MzsJCQllcnIgPSBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKAomIzQzOwkJCQkJc3lzX2ZpbHRlci0mZ3Q7cGF0aCwKJiM0MzsJCQkJCSZhbXA7ZmlsdGVyLSZndDttZW1jZ19pZCk7CiYjNDM7CQkJaWYgKGVycikgewomIzQzOwkJCQlkYW1vbl9kZXN0cm95X2ZpbHRlcihmaWx0ZXIpOwomIzQzOwkJCQlyZXR1cm4gZXJyOwogCQkJfQotCQkJZGFtb25fYWRkX2ZpbHRlcihjLCBmaWx0ZXIpOwogCQl9CiYjNDM7CQlkYW1vbl9hZGRfZmlsdGVyKHByb2JlLCBmaWx0ZXIpOwomIzQzOwl9CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9wcm9iZShzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlLAomIzQzOwkJc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpzeXNfcHJvYmUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqc3lzX2ZpbHRlcnM7CiYjNDM7CiYjNDM7CXN5c19maWx0ZXJzID0gc3lzX3Byb2JlLSZndDtmaWx0ZXJzOwomIzQzOwlpZiAoIXN5c19maWx0ZXJzKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CXJldHVybiBkYW1vbl9zeXNmc19zZXRfZmlsdGVycyhwcm9iZSwgc3lzX2ZpbHRlcnMpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9wcm9iZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LAomIzQzOwkJc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlcyAqc3lzX3Byb2JlcykKJiM0Mzt7CiYjNDM7CWludCBpLCBlcnI7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBzeXNfcHJvYmVzLSZndDtucjsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqc3lzX3Byb2JlOwomIzQzOwkJc3RydWN0IGRhbW9uX3Byb2JlICpwOwomIzQzOwomIzQzOwkJcCA9IGRhbW9uX25ld19wcm9iZSgpOwomIzQzOwkJaWYgKCFwKQomIzQzOwkJCXJldHVybiAtRU5PTUVNOwomIzQzOwkJZGFtb25fYWRkX3Byb2JlKGN0eCwgcCk7CiYjNDM7CQlzeXNfcHJvYmUgPSBzeXNfcHJvYmVzLSZndDtwcm9iZXNfYXJyW2ldOwomIzQzOwkJZXJyID0gZGFtb25fc3lzZnNfc2V0X3Byb2JlKHAsIHN5c19wcm9iZSk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiAJfQogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oIGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oCmluZGV4IGEwMDE2ODczMDQ0NWQyLi4wZWM3ZDE0ZDM1NGU3NyAxMDA2NDQKLS0tIGEvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaApAQCAtMTU0Niw2ICYjNDM7MTU0NiwyMCBAQCBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3dhbGtfY29udHJvbF9vYnNvbGV0ZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJZGFtb25fZGVzdHJveV9jdHgoY3R4KTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfcmFuZChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGFtb25fY3R4IGN0eDsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CXByYW5kb21fc2VlZF9zdGF0ZSgmYW1wO2N0eC5ybmRfc3RhdGUsIGdldF9yYW5kb21fdTY0KCkpOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgMTAwMDA7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQl1bnNpZ25lZCBsb25nIHJuZCA9IGRhbW9uX3JhbmQoJmFtcDtjdHgsIDAsIDEwKTsKJiM0MzsKJiM0MzsJCUtVTklUX0VYUEVDVF9HRSh0ZXN0LCBybmQsIDApOwomIzQzOwkJS1VOSVRfRVhQRUNUX0xFKHRlc3QsIHJuZCwgOSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0UoZGFtb25fdGVzdF90YXJnZXQpLAogCUtVTklUX0NBU0UoZGFtb25fdGVzdF9yZWdpb25zKSwKQEAgLTE1NzcsNiAmIzQzOzE1OTEsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0UoZGFtb25fdGVzdF9hcHBseV9taW5fbnJfcmVnaW9ucyksCiAJS1VOSVRfQ0FTRShkYW1vbl90ZXN0X2lzX2xhc3RfcmVnaW9uKSwKIAlLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfd2Fsa19jb250cm9sX29ic29sZXRlKSwKJiM0MzsJS1VOSVRfQ0FTRShkYW1vbl90ZXN0X3JhbmQpLAogCXt9LAogfTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaAppbmRleCAyZWFhYTVhZTNjNWVkNy4uYjQzZGVlZTYwZmU5NTMgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoCkBAIC05OSwxNCAmIzQzOzk5LDU1IEBAIHRlc3Rfc3RhdHMoKQogCWRvbmUKIH0KIAomIzQzO3Rlc3RfZGVzdCgpCiYjNDM7ewomIzQzOwlkZXN0X2Rpcj0kMQomIzQzOwllbnN1cmVfZmlsZSAmIzM0OyRkZXN0X2Rpci9pZCYjMzQ7ICYjMzQ7ZXhpc3QmIzM0OyAmIzM0OzYwMCYjMzQ7CiYjNDM7CWVuc3VyZV9maWxlICYjMzQ7JGRlc3RfZGlyL3dlaWdodCYjMzQ7ICYjMzQ7ZXhpc3QmIzM0OyAmIzM0OzYwMCYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO3Rlc3RfZGVzdHMoKQomIzQzO3sKJiM0MzsJZGVzdHNfZGlyPSQxCiYjNDM7CWVuc3VyZV9maWxlICYjMzQ7JGRlc3RzX2Rpci9ucl9kZXN0cyYjMzQ7ICYjMzQ7ZXhpc3QmIzM0OyAmIzM0OzYwMCYjMzQ7CiYjNDM7CWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGRlc3RzX2Rpci9ucl9kZXN0cyYjMzQ7ICYjMzQ7MSYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwl0ZXN0X2Rlc3QgJiMzNDskZGVzdHNfZGlyLzAmIzM0OwomIzQzOwomIzQzOwllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRkZXN0c19kaXIvbnJfZGVzdHMmIzM0OyAmIzM0OzImIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKJiM0MzsJdGVzdF9kZXN0ICYjMzQ7JGRlc3RzX2Rpci8wJiMzNDsKJiM0MzsJdGVzdF9kZXN0ICYjMzQ7JGRlc3RzX2Rpci8xJiMzNDsKJiM0MzsKJiM0MzsJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskZGVzdHNfZGlyL25yX2Rlc3RzJiMzNDsgJiMzNDswJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWVuc3VyZV9kaXIgJiMzNDskZGVzdHNfZGlyLzAmIzM0OyAmIzM0O25vdF9leGlzdCYjMzQ7CiYjNDM7CWVuc3VyZV9kaXIgJiMzNDskZGVzdHNfZGlyLzEmIzM0OyAmIzM0O25vdF9leGlzdCYjMzQ7CiYjNDM7fQomIzQzOwogdGVzdF9maWx0ZXIoKQogewogCWZpbHRlcl9kaXI9JDEKIAllbnN1cmVfZmlsZSAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O2V4aXN0JiMzNDsgJiMzNDs2MDAmIzM0OwotCWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7YW5vbiYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwotCWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7bWVtY2cmIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKLQllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O2FkZHImIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKLQllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O3RhcmdldCYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwomIzQzOwlsb2NhbCBkaXJfbmFtZT0kKGJhc2VuYW1lICYjMzQ7JChkaXJuYW1lICYjMzQ7JGZpbHRlcl9kaXImIzM0OykmIzM0OykKJiM0MzsJaWYgIFsgJiMzNDskZGlyX25hbWUmIzM0OyA9ICYjMzQ7ZmlsdGVycyYjMzQ7IF0gfHwgWyAmIzM0OyRkaXJfbmFtZSYjMzQ7ID0gJiMzNDtvcHNfZmlsdGVycyYjMzQ7IF0KJiM0MzsJdGhlbgomIzQzOwkJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskZmlsdGVyX2Rpci90eXBlJiMzNDsgJiMzNDthbm9uJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CQllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O21lbWNnJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWZpCiYjNDM7CWlmICBbICYjMzQ7JGRpcl9uYW1lJiMzNDsgPSAmIzM0O2ZpbHRlcnMmIzM0OyBdIHx8IFsgJiMzNDskZGlyX25hbWUmIzM0OyA9ICYjMzQ7Y29yZV9maWx0ZXJzJiMzNDsgXQomIzQzOwl0aGVuCiYjNDM7CQllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O2FkZHImIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKJiM0MzsJCWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7dGFyZ2V0JiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWZpCiYjNDM7CWlmIFsgJiMzNDskZGlyX25hbWUmIzM0OyA9ICYjMzQ7Y29yZV9maWx0ZXJzJiMzNDsgXQomIzQzOwl0aGVuCiYjNDM7CQllbnN1cmVfd3JpdGVfZmFpbCAmIzM0OyRmaWx0ZXJfZGlyL3R5cGUmIzM0OyAmIzM0O2Fub24mIzM0OyAmIzM0O29wcyB0eXBlJiMzNDsKJiM0MzsJCWVuc3VyZV93cml0ZV9mYWlsICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7bWVtY2cmIzM0OyAmIzM0O29wcyB0eXBlJiMzNDsKJiM0MzsJZmkKJiM0MzsJaWYgWyAmIzM0OyRkaXJfbmFtZSYjMzQ7ICA9ICYjMzQ7b3BzX2ZpbHRlcnMmIzM0OyBdCiYjNDM7CXRoZW4KJiM0MzsJCWVuc3VyZV93cml0ZV9mYWlsICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7YWRkciYjMzQ7ICYjMzQ7Y29yZSB0eXBlJiMzNDsKJiM0MzsJCWVuc3VyZV93cml0ZV9mYWlsICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7dGFyZ2V0JiMzNDsgJiMzNDtjb3JlIHR5cGUmIzM0OwomIzQzOwlmaQogCWVuc3VyZV93cml0ZV9mYWlsICYjMzQ7JGZpbHRlcl9kaXIvdHlwZSYjMzQ7ICYjMzQ7Zm9vJiMzNDsgJiMzNDtpbnZhbGlkIGlucHV0JiMzNDsKIAllbnN1cmVfZmlsZSAmIzM0OyRmaWx0ZXJfZGlyL21hdGNoaW5nJiMzNDsgJiMzNDtleGlzdCYjMzQ7ICYjMzQ7NjAwJiMzNDsKIAllbnN1cmVfZmlsZSAmIzM0OyRmaWx0ZXJfZGlyL21lbWNnX3BhdGgmIzM0OyAmIzM0O2V4aXN0JiMzNDsgJiMzNDs2MDAmIzM0OwpAQCAtMTU4LDYgJiM0MzsxOTksMjAgQEAgdGVzdF9nb2FsKCkKIAllbnN1cmVfZGlyICYjMzQ7JGdvYWxfZGlyJiMzNDsgJiMzNDtleGlzdCYjMzQ7CiAJZW5zdXJlX2ZpbGUgJiMzNDskZ29hbF9kaXIvdGFyZ2V0X3ZhbHVlJiMzNDsgJiMzNDtleGlzdCYjMzQ7ICYjMzQ7NjAwJiMzNDsKIAllbnN1cmVfZmlsZSAmIzM0OyRnb2FsX2Rpci9jdXJyZW50X3ZhbHVlJiMzNDsgJiMzNDtleGlzdCYjMzQ7ICYjMzQ7NjAwJiMzNDsKJiM0MzsJZW5zdXJlX2ZpbGUgJiMzNDskZ29hbF9kaXIvdGFyZ2V0X21ldHJpYyYjMzQ7ICYjMzQ7ZXhpc3QmIzM0OyAmIzM0OzYwMCYjMzQ7CiYjNDM7CWxvY2FsIGZwYXRoPSYjMzQ7JGdvYWxfZGlyL3RhcmdldF9tZXRyaWMmIzM0OwomIzQzOwllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmcGF0aCYjMzQ7ICYjMzQ7dXNlcl9pbnB1dCYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmcGF0aCYjMzQ7ICYjMzQ7c29tZV9tZW1fcHNpX3VzJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZwYXRoJiMzNDsgJiMzNDtub2RlX21lbV91c2VkX2JwJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZwYXRoJiMzNDsgJiMzNDtub2RlX21lbV9mcmVlX2JwJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZwYXRoJiMzNDsgJiMzNDtub2RlX21lbWNnX3VzZWRfYnAmIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKJiM0MzsJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskZnBhdGgmIzM0OyAmIzM0O25vZGVfbWVtY2dfZnJlZV9icCYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmcGF0aCYjMzQ7ICYjMzQ7YWN0aXZlX21lbV9icCYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwllbnN1cmVfd3JpdGVfc3VjYyAmIzM0OyRmcGF0aCYjMzQ7ICYjMzQ7aW5hY3RpdmVfbWVtX2JwJiMzNDsgJiMzNDt2YWxpZCBpbnB1dCYjMzQ7CiYjNDM7CWVuc3VyZV93cml0ZV9zdWNjICYjMzQ7JGZwYXRoJiMzNDsgJiMzNDtub2RlX2VsaWdpYmxlX21lbV9icCYjMzQ7ICYjMzQ7dmFsaWQgaW5wdXQmIzM0OwomIzQzOwllbnN1cmVfd3JpdGVfZmFpbCAmIzM0OyRmcGF0aCYjMzQ7ICYjMzQ7Zm9vJiMzNDsgJiMzNDtpbnZhbGlkIGlucHV0JiMzNDsKJiM0MzsJZW5zdXJlX2ZpbGUgJiMzNDskZ29hbF9kaXIvbmlkJiMzNDsgJiMzNDtleGlzdCYjMzQ7ICYjMzQ7NjAwJiMzNDsKJiM0MzsJZW5zdXJlX2ZpbGUgJiMzNDskZ29hbF9kaXIvcGF0aCYjMzQ7ICYjMzQ7ZXhpc3QmIzM0OyAmIzM0OzYwMCYjMzQ7CiB9CiAKIHRlc3RfZ29hbHMoKQpAQCAtMjA3LDcgJiM0MzsyNjIsMTAgQEAgdGVzdF9zY2hlbWUoKQogCWVuc3VyZV9maWxlICYjMzQ7JHNjaGVtZV9kaXIvYXBwbHlfaW50ZXJ2YWxfdXMmIzM0OyAmIzM0O2V4aXN0JiMzNDsgJiMzNDs2MDAmIzM0OwogCXRlc3RfcXVvdGFzICYjMzQ7JHNjaGVtZV9kaXIvcXVvdGFzJiMzNDsKIAl0ZXN0X3dhdGVybWFya3MgJiMzNDskc2NoZW1lX2Rpci93YXRlcm1hcmtzJiMzNDsKJiM0MzsJdGVzdF9kZXN0cyAmIzM0OyRzY2hlbWVfZGlyL2Rlc3RzJiMzNDsKIAl0ZXN0X2ZpbHRlcnMgJiMzNDskc2NoZW1lX2Rpci9maWx0ZXJzJiMzNDsKJiM0MzsJdGVzdF9maWx0ZXJzICYjMzQ7JHNjaGVtZV9kaXIvY29yZV9maWx0ZXJzJiMzNDsKJiM0MzsJdGVzdF9maWx0ZXJzICYjMzQ7JHNjaGVtZV9kaXIvb3BzX2ZpbHRlcnMmIzM0OwogCXRlc3Rfc3RhdHMgJiMzNDskc2NoZW1lX2Rpci9zdGF0cyYjMzQ7CiAJdGVzdF90cmllZF9yZWdpb25zICYjMzQ7JHNjaGVtZV9kaXIvdHJpZWRfcmVnaW9ucyYjMzQ7CiB9CkBAIC0zNDYsOCAmIzQzOzQwNCwxMyBAQCB0ZXN0X3Byb2JlcygpCiAJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskcHJvYmVzX2Rpci9ucl9wcm9iZXMmIzM0OyAmIzM0OzEmIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKIAl0ZXN0X3Byb2JlICYjMzQ7JHByb2Jlc19kaXIvMCYjMzQ7CiAKJiM0MzsJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskcHJvYmVzX2Rpci9ucl9wcm9iZXMmIzM0OyAmIzM0OzImIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKJiM0MzsJdGVzdF9wcm9iZSAmIzM0OyRwcm9iZXNfZGlyLzAmIzM0OwomIzQzOwl0ZXN0X3Byb2JlICYjMzQ7JHByb2Jlc19kaXIvMSYjMzQ7CiYjNDM7CiAJZW5zdXJlX3dyaXRlX3N1Y2MgJiMzNDskcHJvYmVzX2Rpci9ucl9wcm9iZXMmIzM0OyAmIzM0OzAmIzM0OyAmIzM0O3ZhbGlkIGlucHV0JiMzNDsKIAllbnN1cmVfZGlyICYjMzQ7JHByb2Jlc19kaXIvMCYjMzQ7ICYjMzQ7bm90X2V4aXN0JiMzNDsKJiM0MzsJZW5zdXJlX2RpciAmIzM0OyRwcm9iZXNfZGlyLzEmIzM0OyAmIzM0O25vdF9leGlzdCYjMzQ7CiB9CiAKIHRlc3RfbW9uaXRvcmluZ19hdHRycygpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNjEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3ODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaDogQSBGb2N1c2VkIFJldmlldyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIHRoZSBEQU1PTiBzdWJzeXN0ZW0gaW4gdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBkYXRhIGFjY2VzcyBtb25pdG9yaW5nLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhlIGNoYW5nZXMgc3BhbiBxdWl0ZSBhIGZldyBmaWxlczogdGhlIGRvY3VtZW50YXRpb24gKEFCSSBhbmQgZGVzaWduIGRvY3MpLCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiAoYGNvcmUuY2AsIGBzeXNmcy5jYCksIGEgS1VuaXQgdGVzdCBoZWFkZXIsIGFuZCBhIHNlbGYtdGVzdCBzY3JpcHQgKGBzeXNmcy5zaGApLiBUaGlzIHNpZ25hbHMgYSBwb3RlbnRpYWxseSBzdWJzdGFudGlhbCBtb2RpZmljYXRpb24sIHdhcnJhbnRpbmcgYSBjbG9zZSBsb29rLgoKRmlyc3QgdXAsIGBtbS9kYW1vbi9jb3JlLmNgLiBUaGUgY29yZSBsb2dpYyBvZiBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYCBoYXMgYmVlbiBtb2RpZmllZC4gUmVhZGluZyB0aGUgY29kZSwgSSBzZWUgdGhpcyBpcyBhYm91dCBtZXJnaW5nIGNvbnRpZ3VvdXMgcmVnaW9ucy4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgYW4gb3B0aW1pemF0aW9uIHRoYXQgc2hvdWxkIGltcHJvdmUgZWZmaWNpZW5jeS4gVGhlIG9yaWdpbmFsIGNvZGUgaXRlcmF0ZWQgdGhyb3VnaCBlYWNoIHNvdXJjZSByZWdpb24sIGJ1dCB0aGUgbmV3IHZlcnNpb24gZXhwbGljaXRseSBjaGVja3MgZm9yIGNvbnRpZ3VvdXMgcmVnaW9ucyBhbmQgbWVyZ2VzIHRoZW0gaW50byBhIHNtYWxsZXIgc2V0IGJlZm9yZSBzZXR0aW5nIHRoZW0gb24gdGhlIGRlc3RpbmF0aW9uLiBHb29kIHByYWN0aWNlLgoKTmV4dCwgSSYjMzk7bGwgdHVybiBteSBhdHRlbnRpb24gdG8gYG1tL2RhbW9uL3N5c2ZzLmNgLiBJdCBsb29rcyBsaWtlIHRoZSB3YXkgZmlsdGVycyBhcmUgc2V0IGZvciBwcm9iZXMgaGFzIGJlZW4gYWx0ZXJlZC4gU3BlY2lmaWNhbGx5LCBgZGFtb25fc3lzZnNfc2V0X3Byb2Jlc2AgaGFzIGJlZW4gcmVuYW1lZCB0byBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgIGFuZCB0aGUgZnVuY3Rpb24gdGFrZXMgZGlmZmVyZW50IGFyZ3VtZW50cy4KCk5vdywgSSYjMzk7bSBjdXJpb3VzIHdoYXQgY29uZmlncyBhcmUgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgdGhpcyBwYXRjaCwgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgY2hhbmdlcyB0byB0aGVzZSBjb3JlIGZ1bmN0aW9ucy4gSSB0aGluayBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgSSYjMzk7dmUgZXhhbWluZWQgdG8gY2hlY2sgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIHRoaXMgcGF0Y2ggdG8gZnVuY3Rpb24gY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9MTMyOD1zdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzQ2LSAqL1xubW0vZGFtb24vY29yZS5jOjEzNDc6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LFxubW0vZGFtb24vY29yZS5jLTEzNDgtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnNyYywgdW5zaWduZWQgbG9uZyBzcmNfbWluX3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTM4Mj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXQoXG4tLVxubW0vZGFtb24vY29yZS5jLTEzODgtXG5tbS9kYW1vbi9jb3JlLmM6MTM4OTpcdGVyciA9IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3QsIHNyYywgc3JjX21pbl9yZWdpb25fc3opO1xubW0vZGFtb24vY29yZS5jLTEzOTAtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMjAwPXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X3RhcmdldF9yZWdpb25zX2ZvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyMTYtXHR9XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTIxNzpcdGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3RfdGFyZ2V0LCBzcmNfdGFyZ2V0LCAxKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMjE4LVx0aSA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc4NQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgbXkgdGhvdWdodCBwcm9jZXNzIHJlZ2FyZGluZyBLY29uZmlnIGFuZCBEQU1PTiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIEtjb25maWcgZm9yIERBTU9OKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIEtjb25maWcgYXNwZWN0cyBvZiBEQU1PTi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1lbnRhbGx5IHBhcnNlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O20gaW1tZWRpYXRlbHkgaW50ZXJlc3RlZCBpbiB0aGUgbGV2ZWwgb2YgZ3JhbnVsYXJpdHkgYXZhaWxhYmxlLiBBcmUgdGhlcmUgZmluZS1ncmFpbmVkIGNvbnRyb2xzIGZvciBlbmFibGluZy9kaXNhYmxpbmcgc3BlY2lmaWMgREFNT04gZmVhdHVyZXMsIG9yIGlzIGl0IG1vcmUgb2YgYSAmIzM0O3dob2xlIGhvZyYjMzQ7IGFwcHJvYWNoPyBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGF2YWlsYWJsZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgdmFyaW91cyBvcHRpb25zLiBLbm93aW5nIHRoZSBidWlsZCBtYXRyaXggaGVyZSBpcyBrZXkg4oCTIHdoYXQga2VybmVsIGNvbmZpZ3VyYXRpb25zICpyZXF1aXJlKiBEQU1PTiwgd2hpY2ggKmVuYWJsZSogc3BlY2lmaWMgZnVuY3Rpb25hbGl0aWVzLCBhbmQgd2hhdCBjb25mbGljdHMgZXhpc3Q/IEkmIzM5O20gYW50aWNpcGF0aW5nIHBvdGVudGlhbCBjcm9zcy1hcmNoaXRlY3R1cmUgdmFyaWF0aW9uczsgS2NvbmZpZyBjYW4gZ2V0IHF1aXRlIGRpdmVyZ2VudCBhY3Jvc3MgcGxhdGZvcm1zLCBzbyBJIG5lZWQgdG8gbWVudGFsbHkgcHJlcGFyZSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYXJjaC1zcGVjaWZpYyBzZXR0aW5ncyBpZiB0aGVyZSBhcmUgYW55LiBJJiMzOTtsbCBhbHNvIGJlIGxvb2tpbmcgZm9yIGFueSBpbmRpY2F0aW9ucyBvZiBleHBlcmltZW50YWwgb3IgJiMzNDtzdGFnaW5nJiMzNDsgc3RhdHVzIOKAkyBhcmUgd2UgZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IHVuc3RhYmxlIGZlYXR1cmVzLCBvciB0aGluZ3MgcmVhZHkgZm9yIHdpZGVyIGRlcGxveW1lbnQ/IE15IGdvYWwgaXMgdG8gZ3Jhc3AgdGhlIGNvbmZpZ3VyYWJpbGl0eSBvZiBEQU1PTiBhbmQgYW50aWNpcGF0ZSBjb21tb24gc3VwcG9ydCBhbmQgZGVidWdnaW5nIHF1ZXJpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB3ZSBjYW4gZmluZS10dW5lIERBTU9OIGJlaGF2aW9yIGJhc2VkIG9uIG91ciBzcGVjaWZpYyB3b3JrbG9hZCBuZWVkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREFNT04mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXCYjMzQ7RGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1wmIzM0O1xubW0vZGFtb24vS2NvbmZpZy00LVxubW0vZGFtb24vS2NvbmZpZzo1OmNvbmZpZyBEQU1PTlxubW0vZGFtb24vS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTE0LVxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMjUtXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTI3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy0zNy1cbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXG5tbS9kYW1vbi9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTQ2LVxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcbm1tL2RhbW9uL0tjb25maWctNDgtXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy02Ny1cbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy03Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxubW0vZGFtb24vS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTA3LVxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcbm1tL2RhbW9uL0tjb25maWctMTA5LVx0Ym9vbCBcJiMzNDtCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMTUtXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcbm1tL2RhbW9uL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgxNgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGRpZ2dpbmcgaW50byB0aGUgbWVtb3J5IGFjY2VzcyBtb25pdG9yaW5nIChEQU1PTikgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdGhlIGNvcmUgbG9naWMgYW5kIHN5c2ZzIGludGVyZmFjZS4gSSBzZWUgdGhlIGNoYW5nZXMgYXJlIGNlbnRlcmVkIGFyb3VuZCBgbW0vZGFtb24vY29yZS5jYCBhbmQgYG1tL2RhbW9uL3N5c2ZzLmNgLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGBEQU1PTmAgYW5kIGBEQU1PTl9TWVNGU2AgY29uZmlnIG9wdGlvbnMg4oCTIHRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgdG8gcGF5IGF0dGVudGlvbiB0byBoZXJlLiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBkZWVwZXIgbG9vayBhdCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIHdpdGhpbiBgbW0vZGFtb24vc3lzZnMuY2AgdG8gc2VlIGV4YWN0bHkgd2hhdCYjMzk7cyBjaGFuZ2VkIGluIHRoYXQgaW50ZXJmYWNlLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYz0xODg5PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE5MTEtXG5tbS9kYW1vbi9zeXNmcy5jOjE5MTI6c3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfZmlsdGVycyhzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlLFxubW0vZGFtb24vc3lzZnMuYy0xOTEzLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqc3lzX2ZpbHRlcnMpXG4tLVxubW0vZGFtb24vc3lzZnMuYz0xOTQzPXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsXG4tLVxubW0vZGFtb24vc3lzZnMuYy0xOTUwLVx0XHRyZXR1cm4gMDtcbm1tL2RhbW9uL3N5c2ZzLmM6MTk1MTpcdHJldHVybiBkYW1vbl9zeXNmc19zZXRfZmlsdGVycyhwcm9iZSwgc3lzX2ZpbHRlcnMpO1xubW0vZGFtb24vc3lzZnMuYy0xOTUyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI4OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoOiBBIEZvY3VzZWQgUmV2aWV3KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIHRoZSBEQU1PTiAoRHluYW1pYyBBZGRyZXNzYWJsZSBNZW1vcnkgT04tbGluZSkgY29kZSwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBhIGZldyBrZXkgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIGl0JiMzOTtzIHRvdWNoaW5nIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgLCBhbmQgSSBrbm93IHRoYXQgb25lOyBpdCYjMzk7cyBjZW50cmFsIHRvIGhvdyBEQU1PTiBoYW5kbGVzIGl0cyB0YXJnZXQgbWVtb3J5IHJlZ2lvbnMuIFRoZSBvdGhlciBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgYXJlIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYCwgd2hpY2ggbG9va3MgbGlrZSBpdCYjMzk7cyBiZWVuIHJlZmFjdG9yZWQgaW50byBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYW5kIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYC4gT2theSwgdGhhdCYjMzk7cyBhIG1vcmUgZ3JhbnVsYXIgYXBwcm9hY2gsIHdoaWNoIHVzdWFsbHkgbWVhbnMgbW9yZSBjb250cm9sIG9yIGZsZXhpYmlsaXR5LiBJJiMzOTtsbCBuZWVkIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBzcGxpdC4gQWRkaXRpb25hbGx5LCBpdCYjMzk7cyBwbGF5aW5nIHdpdGggdGhlIHN5c2ZzIGludGVyZmFjZXM6IGBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlyc2AgYW5kIGBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzYCBhcmUgYWxzbyBpbiB0aGUgY3Jvc3NoYWlycy4gVGhlc2UgaGFuZGxlIHRoZSBkaXJlY3RvcnkgY3JlYXRpb24gYW5kIHJlbW92YWwgZm9yIHByb2JlcywgcmlnaHQ/IFRoaXMgc3VnZ2VzdHMgYSBjaGFuZ2UgaW4gaG93IERBTU9OIHN0cnVjdHVyZXMgaXRzIHN5c2ZzIGhpZXJhcmNoeS4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2AuIFdoZXJlIGlzIGl0IGNhbGxlZD8gQWgsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBkYW1vbl9jb21taXRfdGFyZ2V0YC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIGBkYW1vbl9jb21taXRfdGFyZ2V0YCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBzbyBhbnkgY2hhbmdlIGluIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgIGhhcyB0aGUgcG90ZW50aWFsIHRvIHJpcHBsZSB0aHJvdWdob3V0IHRoZSBEQU1PTiBzeXN0ZW0uIFRoaXMgY29ubmVjdGlvbiBpcyBrZXkgYW5kIHJlcXVpcmVzIGNhcmVmdWwgc2NydXRpbnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbW9kaWZpY2F0aW9uIHRvIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgIHdpbGwgaW1wYWN0IHRoaXMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2NvbW1pdF90YXJnZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9kYW1vbi5oPTc0PXN0cnVjdCBkYW1vbl9yZWdpb24ge1xuLS1cbmluY2x1ZGUvbGludXgvZGFtb24uaC05OS0gKlxuaW5jbHVkZS9saW51eC9kYW1vbi5oOjEwMDogKiBAb2Jzb2xldGUgaXMgdXNlZCBvbmx5IGZvciBkYW1vbl9jb21taXRfdGFyZ2V0cygpIHNvdXJjZSB0YXJnZXRzLCB0byBzcGVjaWZ5XG5pbmNsdWRlL2xpbnV4L2RhbW9uLmg6MTAxOiAqIHRoZSBtYXRjaGluZyBkZXN0aW5hdGlvbiB0YXJnZXRzIGFyZSBvYnNvbGV0ZS4gIFJlYWQgZGFtb25fY29tbWl0X3RhcmdldHMoKVxuaW5jbHVkZS9saW51eC9kYW1vbi5oLTEwMi0gKiB0byBzZWUgaG93IGl0IGlzIGhhbmRsZWQuXG4tLVxubW0vZGFtb24vY29yZS5jPTEzMjg9c3RhdGljIHN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX250aF90YXJnZXQoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTM0Ni0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMzQ3OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xMzQ4LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpzcmMsIHVuc2lnbmVkIGxvbmcgc3JjX21pbl9yZWdpb25fc3opXG4tLVxubW0vZGFtb24vY29yZS5jLTEzODEtXG5tbS9kYW1vbi9jb3JlLmM6MTM4MjpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXQoXG5tbS9kYW1vbi9jb3JlLmMtMTM4My1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LCBib29sIGRzdF9oYXNfcGlkLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzg4LVxubW0vZGFtb24vY29yZS5jOjEzODk6XHRlcnIgPSBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoZHN0LCBzcmMsIHNyY19taW5fcmVnaW9uX3N6KTtcbm1tL2RhbW9uL2NvcmUuYy0xMzkwLVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQwNS0gKlxubW0vZGFtb24vY29yZS5jOjE0MDY6ICogUmV2ZXJ0IHRhcmdldCBzdGF0ZXMgdGhhdCBjaGFuZ2VkIGJ5IGRhbW9uX2NvbW1pdF90YXJnZXQoKSwgYW5kIGNhbm5vdCBiZVxubW0vZGFtb24vY29yZS5jLTE0MDctICogY2xlYW5lZCB1cCBieSB0aGUgZGVzdGluYXRpb24gY29udGV4dCYjMzk7cyBvcHMuY2xlYW51cF90YXJnZXQoKS5cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTQwOT1zdGF0aWMgdm9pZCBkYW1vbl9yZXZlcnRfdGFyZ2V0X2NvbW1pdHMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDI0LVxubW0vZGFtb24vY29yZS5jOjE0MjU6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0cyhcbm1tL2RhbW9uL2NvcmUuYy0xNDI2LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQzOC1cdFx0aWYgKHNyY190YXJnZXQgXHUwMDI2XHUwMDI2ICFzcmNfdGFyZ2V0LVx1MDAzZW9ic29sZXRlKSB7XG5tbS9kYW1vbi9jb3JlLmM6MTQzOTpcdFx0XHRlcnIgPSBkYW1vbl9jb21taXRfdGFyZ2V0KFxubW0vZGFtb24vY29yZS5jLTE0NDAtXHRcdFx0XHRcdGRzdF90YXJnZXQsIGRhbW9uX3RhcmdldF9oYXNfcGlkKGRzdCksXG4tLVxubW0vZGFtb24vY29yZS5jLTE0NzMtXHRcdH1cbm1tL2RhbW9uL2NvcmUuYzoxNDc0Olx0XHRlcnIgPSBkYW1vbl9jb21taXRfdGFyZ2V0KG5ld190YXJnZXQsIGZhbHNlLFxubW0vZGFtb24vY29yZS5jLTE0NzUtXHRcdFx0XHRzcmNfdGFyZ2V0LCBkYW1vbl90YXJnZXRfaGFzX3BpZChzcmMpLFxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNTgzPWludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNjA4LVx0XHRyZXR1cm4gZXJyO1xubW0vZGFtb24vY29yZS5jOjE2MDk6XHRlcnIgPSBkYW1vbl9jb21taXRfdGFyZ2V0cyhkc3QsIHNyYyk7XG5tbS9kYW1vbi9jb3JlLmMtMTYxMC1cdGlmIChlcnIpXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oPTEyMDA9c3RhdGljIHZvaWQgZGFtb25fdGVzdF9jb21taXRfdGFyZ2V0X3JlZ2lvbnNfZm9yKHN0cnVjdCBrdW5pdCAqdGVzdCxcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTIxNi1cdH1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMjE3Olx0ZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKGRzdF90YXJnZXQsIHNyY190YXJnZXQsIDEpO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyMTgtXHRpID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4MTEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBxdWVzdGlvbjoKCioqRGVlcCBEaXZlIGludG8gYGRhbW9uX2NvbW1pdF9jdHhgKioKCk9rYXksIHNvIEkgc2VlIHRoZSBxdWVzdGlvbjogJiMzNDt3aGVyZSBpcyBgZGFtb25fY29tbWl0X2N0eGAgY2FsbGVkIGZyb20/JiMzNDsgVGhhdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZGVidWdnaW5nIHF1ZXN0aW9uLCBhbmQgSSYjMzk7ZCBhcHByb2FjaCBpdCB3aXRoIGEgZmV3IGFzc3VtcHRpb25zIGFuZCBhIHNwZWNpZmljIG1ldGhvZCBpbiBtaW5kLgoKRmlyc3QsIEkgYXNzdW1lIHRoaXMgaXMgYWJvdXQgYSBmdW5jdGlvbiBvciBhIG1ldGhvZCB3aXRoaW4gYSBjb2RlIGJhc2UsIHByZXN1bWFibHkgcmVsYXRlZCB0byBkYXRhIGFjY2VzcywgbWVtb3J5IG1hbmFnZW1lbnQsIG9yIG1heWJlIGV2ZW4gYSBkYXRhYmFzZSBjb250ZXh0LiBUaGUgbmFtZSBgZGFtb25fY29tbWl0X2N0eGAgaGludHMgYXQgc29tZSBraW5kIG9mIGNvbW1pdCBvcGVyYXRpb24sIHBvc3NpYmx5IHdpdGhpbiBhIGNvbnRleHQuIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIGNhdGFsb2dpbmcgcG9zc2libGUgYXJlYXMgaXQgKmNvdWxkKiBiZTogYSB0cmFuc2FjdGlvbiBtYW5hZ2VtZW50IGxpYnJhcnksIGEgY2FjaGluZyBsYXllciwgb3IgZXZlbiBzb21ldGhpbmcgaW50ZXJuYWwgdG8gYSBrZXJuZWwgZHJpdmVyLCBkZXBlbmRpbmcgb24gdGhlIGxhcmdlciBjb250ZXh0IG9mIHRoZSBwcm9qZWN0LgoKTm93LCBteSB0eXBpY2FsIGFwcHJvYWNoIHdvdWxkIGJlIHRvIHVzZSB0b29saW5nLiBJJiMzOTtkIHJlYWNoIGZvciBhIGNvZGUgc2VhcmNoIHV0aWxpdHnigJRgZ3JlcGAsIGBhY2tgLCBgcmlwZ3JlcGAsIG9yIGlmIEkmIzM5O20gdXNpbmcgYSBtb2Rlcm4gSURFLCBJJiMzOTtkIHVzZSBpdHMgYnVpbHQtaW4gc2VhcmNoIHdpdGggY3Jvc3MtcmVmZXJlbmNlIGNhcGFiaWxpdGllcy4gSSYjMzk7bSBsb29raW5nIGZvciB3aGVyZSB0aGlzIGV4YWN0IHN0cmluZyBgZGFtb25fY29tbWl0X2N0eGAgaXMgdXNlZCwgaWRlYWxseSBsb29raW5nIGZvciBmdW5jdGlvbiBjYWxscyBhbmQgcG90ZW50aWFsbHkgYXNzaWdubWVudHMuIEkgd291bGQgc3RhcnQgd2l0aCBhbiBleGFjdCBtYXRjaCBzZWFyY2ggdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLCBidXQgSSBtaWdodCB3aWRlbiB0aGUgc2VhcmNoIHBhcmFtZXRlcnMgdG8gYWNjb3VudCBmb3IgdmFyaWF0aW9ucyBpbiBuYW1pbmcgY29udmVudGlvbnMsIGxpa2UgcHJlZml4aW5nIHdpdGggYSBuYW1lc3BhY2Ugb3IgbW9kaWZ5aW5nIGNhc2luZy4KCklmIEkmIzM5O20gd29ya2luZyB3aXRoIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBsaWtlIEdpdCwgSSYjMzk7ZCBhbHNvIHN0YXJ0IHRvIHRoaW5rIGFib3V0IGBnaXQgYmxhbWVgIG9yIHRoZSByZXBvc2l0b3J5IGhpc3RvcnkuIElmIEkga25vdyB0aGUgY29kZSBiYXNlIHdlbGwsIEkgbWF5IHJlbWVtYmVyIGEgY2xhc3Mgb3IgZmlsZSB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGNhbGwgdGhlIGZ1bmN0aW9uLCBhbmQgSSBjb3VsZCBzZWFyY2ggb25seSB3aXRoaW4gdGhhdCBmaWxlLiAKClRoZSBnb2FsIGhlcmUgaXMgcHJlY2lzZSBpZGVudGlmaWNhdGlvbiBvZiB0aGUgY2FsbCBzaXRlcy4gT25jZSBJIGhhdmUgdGhlIGNhbGwgc2l0ZXMsIEkgY2FuIHN0YXJ0IHRvIHJlYXNvbiBhYm91dCB0aGUgY2FsbCBzdGFjaywgdGhlIGlucHV0IGFyZ3VtZW50cywgYW5kIHVsdGltYXRlbHkgdGhlIG92ZXJhbGwgZnVuY3Rpb24gYW5kIHdoYXQgaXQmIzM5O3Mgc3VwcG9zZWQgdG8gZG8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2NvbW1pdF9jdHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9kYW1vbi5oPTg1Mj1zdHJ1Y3QgZGFtb25fY3R4IHtcbi0tXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmgtODg4LVx0ICogaW5kaWNhdGUgaWYgdGhpcyBtYXkgYmUgY29ycnVwdGVkLiAgQ3VycmVudG9ubHkgdGhpcyBpcyBzZXQgb25seSBmb3JcbmluY2x1ZGUvbGludXgvZGFtb24uaDo4ODk6XHQgKiBkYW1vbl9jb21taXRfY3R4KCkgZmFpbHVyZS5cbmluY2x1ZGUvbGludXgvZGFtb24uaC04OTAtXHQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmg9MTA1Mj12b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbmluY2x1ZGUvbGludXgvZGFtb24uaC0xMDUzLVx0XHRcdHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsIHNzaXplX3QgbnJfc2NoZW1lcyk7XG5pbmNsdWRlL2xpbnV4L2RhbW9uLmg6MTA1NDppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpvbGRfY3R4LCBzdHJ1Y3QgZGFtb25fY3R4ICpuZXdfY3R4KTtcbmluY2x1ZGUvbGludXgvZGFtb24uaC0xMDU1LWludCBkYW1vbl9ucl9ydW5uaW5nX2N0eHModm9pZCk7XG4tLVxubW0vZGFtb24vY29yZS5jPTE1Mzk9c3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNTcwLS8qKlxubW0vZGFtb24vY29yZS5jOjE1NzE6ICogZGFtb25fY29tbWl0X2N0eCgpIC0gQ29tbWl0IHBhcmFtZXRlcnMgb2YgYSBEQU1PTiBjb250ZXh0IHRvIGFub3RoZXIuXG5tbS9kYW1vbi9jb3JlLmMtMTU3Mi0gKiBAZHN0Olx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PTiBjb250ZXh0LlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNTgyLSAqL1xubW0vZGFtb24vY29yZS5jOjE1ODM6aW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTU4NC17XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0yNzE9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNDAtXHRcdGdvdG8gb3V0O1xubW0vZGFtb24vbHJ1X3NvcnQuYzozNDE6XHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGN0eCwgcGFyYW1fY3R4KTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzQyLW91dDpcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmM9MTk0PXN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vcmVjbGFpbS5jLTI2Ny1cdFx0Z290byBvdXQ7XG5tbS9kYW1vbi9yZWNsYWltLmM6MjY4Olx0ZXJyID0gZGFtb25fY29tbWl0X2N0eChjdHgsIHBhcmFtX2N0eCk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMjY5LW91dDpcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIxMDQ9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX25ld190ZXN0X2N0eChcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIxMTItXHRcdHJldHVybiBOVUxMO1xubW0vZGFtb24vc3lzZnMuYzoyMTEzOlx0ZXJyID0gZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgcnVubmluZ19jdHgpO1xubW0vZGFtb24vc3lzZnMuYy0yMTE0LVx0aWYgKGVycikge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjEyNz1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjE0Ni1cdH1cbm1tL2RhbW9uL3N5c2ZzLmM6MjE0NzpcdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHBhcmFtX2N0eCk7XG5tbS9kYW1vbi9zeXNmcy5jLTIxNDgtXHRpZiAoZXJyKVxubW0vZGFtb24vc3lzZnMuYy0yMTQ5LVx0XHRnb3RvIG91dDtcbm1tL2RhbW9uL3N5c2ZzLmM6MjE1MDpcdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgoa2RhbW9uZC1cdTAwM2VkYW1vbl9jdHgsIHBhcmFtX2N0eCk7XG5tbS9kYW1vbi9zeXNmcy5jLTIxNTEtb3V0OlxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMjQyPXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X2N0eChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyNTUtXHRzcmMtXHUwMDNlbWluX3JlZ2lvbl9zeiA9IDQwOTY7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTI1NjpcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKSwgMCk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTI1Ny1cdHNyYy1cdTAwM2VtaW5fcmVnaW9uX3N6ID0gNDA5NTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMjU4Olx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpLCAtRUlOVkFMKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMjU5LVx0c3JjLVx1MDAzZW1pbl9yZWdpb25fc3ogPSA0MDk2O1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyNjAtXHRzcmMtXHUwMDNlcGF1c2UgPSB0cnVlO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjEyNjE6XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyksIDApO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyNjItXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBkc3QtXHUwMDNlcGF1c2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU0MgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgYGRhbW9uX2NvbW1pdF9jdHhgKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2tpbmcgaG93IGBkYW1vbl9jb21taXRfY3R4YCBpcyB1dGlsaXplZCB3aXRoaW4gdGhpcyBEQU1PTiBzdWJzeXN0ZW0uIFRoZSBjb2RlIHNob3dzIGl0IGFwcGVhcmluZyBpbiBhIGZldyBrZXkgcGxhY2VzOiBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCwgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AsIGFuZCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBkaXJlY3RseSBsaW5rcyBgZGFtb25fY29tbWl0X2N0eGAgdG8gdGhlIHN5c3RlbSBmaWxlIHN5c3RlbSwgb3Igc3lzZnMsIGFzIGEgcG90ZW50aWFsIGFjY2VzcyBwb2ludC4gVGhpcyBpbXBsaWVzIGEgbWV0aG9kIG9mIGV4dGVybmFsIGNvbnRyb2wgb3IgaW5wdXQgYmFzZWQgb24gdGhlc2UgdXNlcy4gCgpTaW5jZSBJIGFtIGNvbnNpZGVyaW5nIHRoZSBmbG93IGhlcmUsIEkgc2hvdWxkIHNlZSBob3cgZWxzZSB0aGlzIHJlYWNoZXMgdGhlIHN5c2ZzLiBMZXQgbWUgbm93IGNoZWNrIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYCwgYXMgaXQgaXMgY2FsbGVkIGJ5IGBkYW1vbl9zeXNmc19zZXRfYXR0cnNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9zeXNmc19zZXRfYXR0cnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYz0xODY3PXN0YXRpYyBzc2l6ZV90IHN0YXRlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE4ODgtXG5tbS9kYW1vbi9zeXNmcy5jOjE4ODk6c3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxubW0vZGFtb24vc3lzZnMuYy0xODkwLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfYXR0cnMgKnN5c19hdHRycylcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIwNzI9c3RhdGljIGludCBkYW1vbl9zeXNmc19hcHBseV9pbnB1dHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjA4NS1cdGN0eC1cdTAwM2VwYXVzZSA9IHN5c19jdHgtXHUwMDNlcGF1c2U7XG5tbS9kYW1vbi9zeXNmcy5jOjIwODY6XHRlcnIgPSBkYW1vbl9zeXNmc19zZXRfYXR0cnMoY3R4LCBzeXNfY3R4LVx1MDAzZWF0dHJzKTtcbm1tL2RhbW9uL3N5c2ZzLmMtMjA4Ny1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDk5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgREFNT04mIzM5O3MgU3lzZnMgSW50ZXJmYWNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSB3b3Jrcy4gSXQgc2VlbXMgYGRhbW9uX3N5c2ZzX2FwcGx5X2lucHV0c2AgaXMgdGhlIGtleSBmdW5jdGlvbiwgYmVpbmcgY2FsbGVkIGZyb20gYm90aCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBhbmQgYGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb25gLiBUaGlzIHRlbGxzIG1lIHRoYXQgYGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIHN5c2ZzLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLgoKTm93LCBmcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgSSYjMzk7bGwgbmVlZCBgREFNT05gIGFuZCBgREFNT05fU1lTRlNgIGVuYWJsZWQsIG9idmlvdXNseS4gQnV0IHRvIGZ1bGx5IGV4cGxvcmUgdGhlIGNhcGFiaWxpdGllcywgSSBzaG91bGQgY29uc2lkZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzdXBwb3J0aW5nIGNvbmZpZ3MgdGhhdCBtaWdodCBiZSB1c2VmdWwuIEkmIzM5O20gdGhpbmtpbmcgdGhpbmdzIGxpa2UgYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX1JFQ0xBSU1gLCBhbmQgYERBTU9OX0xSVV9TT1JUYCBjb3VsZCBiZSBiZW5lZmljaWFsIGZvciBjb21wcmVoZW5zaXZlIHRlc3Rpbmcgb2YgdGhlIHdob2xlIHRoaW5nLgoKVGhlIGNvcmUgaW1wbGVtZW50YXRpb24gbG9va3MgdG8gYmUgaW4gYG1tL2RhbW9uL2NvcmUuY2AgYW5kIHRoZSBzeXNmcyBwYXJ0IGlzIG9idmlvdXNseSBpbiBgbW0vZGFtb24vc3lzZnMuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19EQU1PTmAgaXMgZW5hYmxlZCwgYW5kIHRoZSBzeXNmcyBiaXRzIGFyZSBjb21waWxlZCB3aGVuIGBDT05GSUdfREFNT05fU1lTRlNgIGlzIGVuYWJsZWQuIFRpbWUgdG8gdGFrZSBhIHBlZWsgYXQgYG1tL2RhbW9uL01ha2VmaWxlYCB0byBjb25maXJtIGFsbCB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIHNldCB1cCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29iai0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZS0yLVxubW0vZGFtb24vTWFrZWZpbGU6MzpvYmoteVx0XHRcdFx0Oj0gY29yZS5vXG5tbS9kYW1vbi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19EQU1PTl9WQUREUilcdCYjNDM7PSBvcHMtY29tbW9uLm8gdmFkZHIub1xubW0vZGFtb24vTWFrZWZpbGU6NTpvYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbm1tL2RhbW9uL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0RBTU9OX1NZU0ZTKVx0JiM0Mzs9IHN5c2ZzLWNvbW1vbi5vIHN5c2ZzLXNjaGVtZXMubyBzeXNmcy5vXG5tbS9kYW1vbi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXG5tbS9kYW1vbi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19EQU1PTl9MUlVfU09SVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIGxydV9zb3J0Lm9cbm1tL2RhbW9uL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0RBTU9OX1NUQVQpXHQmIzQzOz0gbW9kdWxlcy1jb21tb24ubyBzdGF0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4OTcKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA0NDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERBTU9OIFBhdGNoIEZvY3VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBvZiBjb3Vyc2UsIGBDT05GSUdfREFNT05gIGFuZCBgQ09ORklHX0RBTU9OX1NZU0ZTYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuCgpOb3csIGxldCYjMzk7cyBnZXQgZG93biB0byB0aGUgc3BlY2lmaWNzOiBXaGF0IGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdGhpcyBwYXRjaCBpcyB0b3VjaGluZz8gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtb2RpZmllZCBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYCwgYGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZWAsIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYCwgYGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzYCwgYW5kIGBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzYC4gVGhvc2UgYXJlIHRoZSBmb2N1cyBzeW1ib2xzLCByaWdodD8gSSYjMzk7bGwgbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRob3NlIHNpeCBmdW5jdGlvbnMuCgpXYWl0IGEgc2Vjb25k4oCmIEkgbmVlZCB0byBjaGVjayB0aG9zZSBmdW5jdGlvbiBkZWZpbml0aW9ucyB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIGNvbnRleHQgcmlnaHQuIE9rYXksIGxldCBtZSBjb25maXJtLiAqQ2hlY2tzIHRoZSBkZWZpbml0aW9ucyouIFJpZ2h0LCBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYCBpcyBzdGF0aWMgaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHdoaWxlIHRoZSByZXN0LCBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgLCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgLCBhbmQgYGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNgLCBhcmUgc3RhdGljIGluIGBtbS9kYW1vbi9zeXNmcy5jYC4gU28gdGhleSBhcmUgYWxsIHN0YXRpYyB3aXRoaW4gdGhlaXIgcmVzcGVjdGl2ZSBzb3VyY2UgZmlsZXMuCgpUaGUgbmV4dCBjcml0aWNhbCBxdWVzdGlvbjogSG93IGFyZSB0aGVzZSBmdW5jdGlvbnMgcmVhY2hlZD8gQWgsIHRoZXkmIzM5O3JlIGFjY2Vzc2VkIHZpYSBzeXNmcyB3cml0ZXMsIGFyZW4mIzM5O3QgdGhleT8gSWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZXJlIGFyZSBwcm9iYWJseSBzeXNjYWxscyB0aGF0IHVsdGltYXRlbHkgdHJpZ2dlciB0aGVzZS4gRm9yIGluc3RhbmNlLCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBpcyBjYWxsZWQgd2hlbiB3cml0aW5nIHRvIHRoZSBgc3RhdGVgIGZpbGUgaW4gc3lzZnMsIGFuZCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgIGlzIGNhbGxlZCB3aGVuIHdyaXRpbmcgdG8gdGhlIGBucl9wcm9iZXNgIGZpbGUuIE9rYXksIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBleGFjdCBzeXNmcyBpbnRlcmZhY2UgbmFtZXMgdG8gYmUgc3VyZSwgYnV0IHRoYXQmIzM5O3MgdGhlIGdlbmVyYWwgcm91dGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL3N5c2ZzLmM9MTA3MT1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpkYW1vbl9zeXNmc19wcm9iZV9hbGxvYyh2b2lkKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTA3NS1cbm1tL2RhbW9uL3N5c2ZzLmM6MTA3NjpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqcHJvYmUpXG5tbS9kYW1vbi9zeXNmcy5jLTEwNzcte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTE1MD1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2Jlc19hZGRfZGlycyhcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTExODEtXG5tbS9kYW1vbi9zeXNmcy5jOjExODI6XHRcdGVyciA9IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHByb2JlKTtcbm1tL2RhbW9uL3N5c2ZzLmMtMTE4My1cdFx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA1NAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogQ29uZmlybWF0aW9uICZhbXA7IEZvY3VzKioKClJpZ2h0LCB0aGUgZGF0YSBpcyBkZWZpbml0ZWx5IHRoZXJlLiBXZSYjMzk7cmUgc2VlaW5nICpzb21ldGhpbmcqLCBhdCBsZWFzdC4gVGhlIG5leHQgY3J1Y2lhbCBzdGVwIGlzIHBpbnBvaW50aW5nIHRoZSBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY3JpdGljYWwgaW5mb3JtYXRpb24gbGl2ZXMuIFdlIG5lZWQgdG8gYW5hbHl6ZSB0aG9zZSBzcGVjaWZpYyByZWdpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGNvbW1pdCB0YXJnZXRzLCBhbmQgZnJvbSB0aGVyZSwgd2UgY2FuIGFzY2VydGFpbiB3aHkgdGhlIHRhcmdldHMgYXJlIHByZXNlbnQuIFdlIGFyZSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgIHNvIHRoYXQgdGhlIG92ZXJhbGwgZGF0YSBzdHJ1Y3R1cmUgY2FuIGJlIHVuZGVyc3Rvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9MTMyOD1zdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzQ2LSAqL1xubW0vZGFtb24vY29yZS5jOjEzNDc6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LFxubW0vZGFtb24vY29yZS5jLTEzNDgtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnNyYywgdW5zaWduZWQgbG9uZyBzcmNfbWluX3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTM4Mj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXQoXG4tLVxubW0vZGFtb24vY29yZS5jLTEzODgtXG5tbS9kYW1vbi9jb3JlLmM6MTM4OTpcdGVyciA9IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3QsIHNyYywgc3JjX21pbl9yZWdpb25fc3opO1xubW0vZGFtb24vY29yZS5jLTEzOTAtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMjAwPXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X3RhcmdldF9yZWdpb25zX2ZvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyMTYtXHR9XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTIxNzpcdGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3RfdGFyZ2V0LCBzcmNfdGFyZ2V0LCAxKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMjE4LVx0aSA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NjAyCgkJCQkJCQlvdXRwdXQ6IDE4OQoJCQkJCQkJdGhvdWdodHM6IDI3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBEQU1PTiBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHNvbWUga2V5IGFyZWFzIG9mIERBTU9OIOKAkyB0aGUgdGFyZ2V0IHJlZ2lvbiBjb21taXR0aW5nIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgbG9naWMgZm9yIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgLCBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgLCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgLCBhbmQgYGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNgLiBUaGVzZSBhcmUgYWxsIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdXNlci1zcGFjZSBpbnRlcmFjdGlvbiB2aWEgc3lzZnMsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIHRoZW0gYXMgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZy4gV2UgaGF2ZSB0aGUgY29uZmlncyBgREFNT05gIGFuZCBgREFNT05fU1lTRlNgIGFzIHJlbGV2YW50LgoKVGhlIGNvcmUgb2YgbXkgcmVhc29uaW5nIGlzIHRoYXQgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyByZWFjaGFibGUgdGhyb3VnaCBzeXNmcyBoYXZlIGEgc3Ryb25nIHBvdGVudGlhbCBmb3IgZmluZGluZyB2dWxuZXJhYmlsaXRpZXMuIFRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBjb2RlIHBhdGhzIG9yIGFsdGVyIGV4aXN0aW5nIG9uZXMgdGhhdCBhIGZ1enplciBjYW4gZWFzaWx5IGhpdC4gVGhlIGFiaWxpdHkgdG8gbWFuaXB1bGF0ZSBEQU1PTiBwcm9iZXMgYW5kIGZpbHRlcnMgdGhyb3VnaCBzeXNmcyBwcm92aWRlcyBhIGRpcmVjdCB2ZWN0b3IuCgpJJiMzOTttIHRoaW5raW5nLCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlncy4gQWgsIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgYXJlIGluIHRoZSBtaXggYXMgdGhleSBvcGVyYXRlIG9uIHRoZSBhY3R1YWwgdmFsdWVzLCBhbmQgYWx0aG91Z2ggYERBTU9OX1NZU0ZTYCBpcyBzdWZmaWNpZW50IHRvIHRyaWdnZXIgdGhlIHBhcnNpbmcsIGl0JiMzOTtzIHNhZmVyIHRvIGluY2x1ZGUgdGhvc2UgYXMgdGhlIGZlYXR1cmVzIG9mIERBTU9OIG9mdGVuIGdvIGhhbmQgaW4gaGFuZC4gQmVzdCB0byBoYXZlIGFsbCB0aGUgcGllY2VzIGluIHBsYWNlIGZvciBhIHJvYnVzdCBmdXp6aW5nIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfZmlsdGVycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19zZXRfcHJvYmUmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfc2V0X3Byb2JlcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIERBTU9OIGxvZ2ljIGZvciBjb21taXR0aW5nIHRhcmdldCByZWdpb25zIChtZXJnaW5nIGNvbnRpZ3VvdXMgcmVnaW9ucykgYW5kIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIHNldHRpbmcgdXAgREFNT04gcHJvYmVzIGFuZCBmaWx0ZXJzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIHN5c2ZzLCBtYWtpbmcgdGhlbSBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfc2V0X3Byb2JlJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3NldF9wcm9iZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfcHJvYmVfcm1fZGlycyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiBsb2dpYyBmb3IgY29tbWl0dGluZyB0YXJnZXQgcmVnaW9ucyAobWVyZ2luZyBjb250aWd1b3VzIHJlZ2lvbnMpIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBzZXR0aW5nIHVwIERBTU9OIHByb2JlcyBhbmQgZmlsdGVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBzeXNmcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDoxNi4yNDU1NTA2OTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzM1NjAxMjM5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9wcm9iZVwiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X3Byb2Jlc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiBsb2dpYyBmb3IgY29tbWl0dGluZyB0YXJnZXQgcmVnaW9ucyAobWVyZ2luZyBjb250aWd1b3VzIHJlZ2lvbnMpIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBzZXR0aW5nIHVwIERBTU9OIHByb2JlcyBhbmQgZmlsdGVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBzeXNmcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjQ0OjE2LjI0NTU1NTQ1OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4NDU4Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzkzOGQ4MGE2YmY0MmU4MDYyNjFlZTA2NjNlODFmNDZlZjMyNWVmOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAyMjo0NDoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vbiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXFxuaW5kZXggNGZkZWM2M2E0N2Q0YWEuLmRkNmI1YmQ3NmUxMTk2IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cXG5AQCAtMTU3LDYgKzE1Nyw0NiBAQCBEZXNjcmlwdGlvbjpcXHRXcml0aW5nIGEgdmFsdWUgdG8gdGhpcyBmaWxlIHNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mXFxuIFxcdFxcdG1vbml0b3JpbmcgcmVnaW9ucyBvZiB0aGUgREFNT04gY29udGV4dCBhcyB0aGUgdmFsdWUuICBSZWFkaW5nXFxuIFxcdFxcdHRoaXMgZmlsZSByZXR1cm5zIHRoZSB2YWx1ZS5cXG4gXFxuK1doYXQ6XFx0XFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXFx1MDAzY0tcXHUwMDNlL2NvbnRleHRzL1xcdTAwM2NDXFx1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9ucl9wcm9iZXNcXG4rRGF0ZTpcXHRcXHRNYXkgMjAyNlxcbitDb250YWN0OlxcdFNKIFBhcmsgXFx1MDAzY3NqQGtlcm5lbC5vcmdcXHUwMDNlXFxuK0Rlc2NyaXB0aW9uOlxcdFdyaXRpbmcgYSBudW1iZXIgJ04nIHRvIHRoaXMgZmlsZSBjcmVhdGVzIHRoZSBudW1iZXIgb2ZcXG4rXFx0XFx0ZGlyZWN0b3JpZXMgZm9yIGVhY2ggREFNT04gcHJvYmUgbmFtZWQgJzAnIHRvICdOLTEnIHVuZGVyIHRoZVxcbitcXHRcXHRwcm9iZXMvIGRpcmVjdG9yeS5cXG4rXFxuK1doYXQ6XFx0XFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXFx1MDAzY0tcXHUwMDNlL2NvbnRleHRzL1xcdTAwM2NDXFx1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9cXHUwMDNjUFxcdTAwM2UvZmlsdGVycy9ucl9maWx0ZXJzXFxuK0RhdGU6XFx0XFx0TWF5IDIwMjZcXG4rQ29udGFjdDpcXHRTSiBQYXJrIFxcdTAwM2NzakBrZXJuZWwub3JnXFx1MDAzZVxcbitEZXNjcmlwdGlvbjpcXHRXcml0aW5nIGEgbnVtYmVyICdOJyB0byB0aGlzIGZpbGUgY3JlYXRlcyB0aGUgbnVtYmVyIG9mXFxuK1xcdFxcdGRpcmVjdG9yaWVzIGZvciBlYWNoIERBTU9OIHByb2JlIGZpbHRlciBuYW1lZCAnMCcgdG8gJ04tMSdcXG4rXFx0XFx0dW5kZXIgdGhlIGZpbHRlcnMvIGRpcmVjdG9yeS5cXG4rXFxuK1doYXQ6XFx0XFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXFx1MDAzY0tcXHUwMDNlL2NvbnRleHRzL1xcdTAwM2NDXFx1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9cXHUwMDNjUFxcdTAwM2UvZmlsdGVycy9cXHUwMDNjRlxcdTAwM2UvdHlwZVxcbitEYXRlOlxcdFxcdE1heSAyMDI2XFxuK0NvbnRhY3Q6XFx0U0ogUGFyayBcXHUwMDNjc2pAa2VybmVsLm9yZ1xcdTAwM2VcXG4rRGVzY3JpcHRpb246XFx0V3JpdGluZyB0byBhbmQgcmVhZGluZyBmcm9tIHRoaXMgZmlsZSBzZXRzIGFuZCBnZXRzIHRoZSB0eXBlIG9mXFxuK1xcdFxcdHRoZSBtZW1vcnkgb2YgdGhlIGludGVyZXN0LlxcbitcXG4rV2hhdDpcXHRcXHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cXHUwMDNjS1xcdTAwM2UvY29udGV4dHMvXFx1MDAzY0NcXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1xcdTAwM2NQXFx1MDAzZS9maWx0ZXJzL1xcdTAwM2NGXFx1MDAzZS9wYXRoXFxuK0RhdGU6XFx0XFx0TWF5IDIwMjZcXG4rQ29udGFjdDpcXHRTSiBQYXJrIFxcdTAwM2NzakBrZXJuZWwub3JnXFx1MDAzZVxcbitEZXNjcmlwdGlvbjpcXHRJZiAnbWVtY2cnIGlzIHdyaXR0ZW4gdG8gdGhlICd0eXBlJyBmaWxlLCB3cml0aW5nIHRvIGFuZFxcbitcXHRcXHRyZWFkaW5nIGZyb20gdGhpcyBmaWxlIHNldHMgYW5kIGdldHMgdGhlIHBhdGggdG8gdGhlIG1lbW9yeVxcbitcXHRcXHRjZ3JvdXAgb2YgdGhlIGludGVyZXN0LlxcbitcXG4rV2hhdDpcXHRcXHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cXHUwMDNjS1xcdTAwM2UvY29udGV4dHMvXFx1MDAzY0NcXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1xcdTAwM2NQXFx1MDAzZS9maWx0ZXJzL1xcdTAwM2NGXFx1MDAzZS9tYXRjaGluZ1xcbitEYXRlOlxcdFxcdE1heSAyMDI2XFxuK0NvbnRhY3Q6XFx0U0ogUGFyayBcXHUwMDNjc2pAa2VybmVsLm9yZ1xcdTAwM2VcXG4rRGVzY3JpcHRpb246XFx0V3JpdGluZyAnWScgb3IgJ04nIHRvIHRoaXMgZmlsZSBzZXRzIHdoZXRoZXIgdGhlIGZpbHRlciBpcyBmb3JcXG4rXFx0XFx0dGhlIG1lbW9yeSBvZiB0aGUgJ3R5cGUnLCBvciBhbGwgZXhjZXB0IHRoZSAndHlwZScuXFxuK1xcbitXaGF0OlxcdFxcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1xcdTAwM2NLXFx1MDAzZS9jb250ZXh0cy9cXHUwMDNjQ1xcdTAwM2UvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvXFx1MDAzY1BcXHUwMDNlL2ZpbHRlcnMvXFx1MDAzY0ZcXHUwMDNlL2FsbG93XFxuK0RhdGU6XFx0XFx0TWF5IDIwMjZcXG4rQ29udGFjdDpcXHRTSiBQYXJrIFxcdTAwM2NzakBrZXJuZWwub3JnXFx1MDAzZVxcbitEZXNjcmlwdGlvbjpcXHRXcml0aW5nICdZJyBvciAnTicgdG8gdGhpcyBmaWxlIHNldHMgd2hldGhlciB0byBhbGxvdyBvciByZWplY3RcXG4rXFx0XFx0aGl0dGluZyB0aGUgcHJvYmUgZm9yIHRoZSBtZW1vcnkgdGhhdCBzYXRpc2ZpZXMgdGhlICd0eXBlJyBhbmRcXG4rXFx0XFx0dGhlICdtYXRjaGluZycgb2YgdGhlIGRpcmVjdG9yeS5cXG4rXFxuIFdoYXQ6XFx0XFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXFx1MDAzY0tcXHUwMDNlL2NvbnRleHRzL1xcdTAwM2NDXFx1MDAzZS90YXJnZXRzL25yX3RhcmdldHNcXG4gRGF0ZTpcXHRcXHRNYXIgMjAyMlxcbiBDb250YWN0OlxcdFNKIFBhcmsgXFx1MDAzY3NqQGtlcm5lbC5vcmdcXHUwMDNlXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdCBiL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdFxcbmluZGV4IGMxNmEzYmIyODhkMDc5Li40NTdkNmU4YmM3ODc4NSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcXG5AQCAtNjg2LDkgKzY4NiwxMSBAQCBtZWNoYW5pc20gdHJpZXMgdG8gbWFrZSBgYGN1cnJlbnRfdmFsdWVgYCBvZiBgYHRhcmdldF9tZXRyaWNgYCBiZSBzYW1lIHRvXFxuICAgKDEvMTAsMDAwKS5cXG4gLSBgYGluYWN0aXZlX21lbV9icGBgOiBJbmFjdGl2ZSB0byBhY3RpdmUgKyBpbmFjdGl2ZSAoTFJVKSBtZW1vcnkgc2l6ZSByYXRpbyBpblxcbiAgIGJwICgxLzEwLDAwMCkuXFxuKy0gYGBub2RlX2VsaWdpYmxlX21lbV9icGBgOiBTY2hlbWUgdGFyZ2V0IGFjY2VzcyBwYXR0ZXJuLWVsaWdpYmxlIG1lbW9yeSByYXRpb1xcbisgIG9mIGEgbm9kZSBpbiBicCAoMS8xMCwwMDApLlxcbiBcXG4tYGBuaWRgYCBpcyBvcHRpb25hbGx5IHJlcXVpcmVkIGZvciBvbmx5IGBgbm9kZV9tZW1fdXNlZF9icGBgLFxcbi1gYG5vZGVfbWVtX2ZyZWVfYnBgYCwgYGBub2RlX21lbWNnX3VzZWRfYnBgYCBhbmQgYGBub2RlX21lbWNnX2ZyZWVfYnBgYCB0b1xcbitgYG5pZGBgIGlzIG9wdGlvbmFsbHkgcmVxdWlyZWQgZm9yIGBgbm9kZV9tZW1fdXNlZF9icGBgLCBgYG5vZGVfbWVtX2ZyZWVfYnBgYCxcXG4rYGBub2RlX21lbWNnX3VzZWRfYnBgYCwgYGBub2RlX21lbWNnX2ZyZWVfYnBgYCBhbmQgYGBub2RlX2VsaWdpYmxlX21lbV9icGBgIHRvXFxuIHBvaW50IHRoZSBzcGVjaWZpYyBOVU1BIG5vZGUuXFxuIFxcbiBgYHBhdGhgYCBpcyBvcHRpb25hbGx5IHJlcXVpcmVkIGZvciBvbmx5IGBgbm9kZV9tZW1jZ191c2VkX2JwYGAgYW5kXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xcbmluZGV4IDlhMDMxMjMyNjljMjhlLi41ZmViZTU4YTA3MDI4OSAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcXG5AQCAtMTM0NywyMSArMTM0NywzMyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiBzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsXFxuIFxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnNyYywgdW5zaWduZWQgbG9uZyBzcmNfbWluX3JlZ2lvbl9zeilcXG4ge1xcbi1cXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpzcmNfcmVnaW9uO1xcbitcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpzcmNfcmVnaW9uLCAqcHJldiA9IE5VTEw7XFxuIFxcdHN0cnVjdCBkYW1vbl9hZGRyX3JhbmdlICpyYW5nZXM7XFxuIFxcdGludCBpID0gMCwgZXJyO1xcbiBcXG4tXFx0ZGFtb25fZm9yX2VhY2hfcmVnaW9uKHNyY19yZWdpb24sIHNyYylcXG4tXFx0XFx0aSsrO1xcbitcXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKSB7XFxuK1xcdFxcdGlmICghcHJldiB8fCBwcmV2LVxcdTAwM2Vhci5lbmQgIT0gc3JjX3JlZ2lvbi1cXHUwMDNlYXIuc3RhcnQpXFxuK1xcdFxcdFxcdGkrKztcXG4rXFx0XFx0cHJldiA9IHNyY19yZWdpb247XFxuK1xcdH1cXG4gXFx0aWYgKCFpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdHJhbmdlcyA9IGt2bWFsbG9jX29ianMoKnJhbmdlcywgaSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX05PV0FSTik7XFxuIFxcdGlmICghcmFuZ2VzKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0cHJldiA9IE5VTEw7XFxuIFxcdGkgPSAwO1xcbi1cXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKVxcbi1cXHRcXHRyYW5nZXNbaSsrXSA9IHNyY19yZWdpb24tXFx1MDAzZWFyO1xcbitcXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKSB7XFxuK1xcdFxcdGlmICghcHJldikge1xcbitcXHRcXHRcXHRyYW5nZXNbaV0uc3RhcnQgPSBzcmNfcmVnaW9uLVxcdTAwM2Vhci5zdGFydDtcXG4rXFx0XFx0fSBlbHNlIGlmIChwcmV2LVxcdTAwM2Vhci5lbmQgIT0gc3JjX3JlZ2lvbi1cXHUwMDNlYXIuc3RhcnQpIHtcXG4rXFx0XFx0XFx0cmFuZ2VzW2krK10uZW5kID0gcHJldi1cXHUwMDNlYXIuZW5kO1xcbitcXHRcXHRcXHRyYW5nZXNbaV0uc3RhcnQgPSBzcmNfcmVnaW9uLVxcdTAwM2Vhci5zdGFydDtcXG4rXFx0XFx0fVxcbitcXHRcXHRwcmV2ID0gc3JjX3JlZ2lvbjtcXG4rXFx0fVxcbitcXHRyYW5nZXNbaSsrXS5lbmQgPSBkYW1vbl9sYXN0X3JlZ2lvbihzcmMpLVxcdTAwM2Vhci5lbmQ7XFxuIFxcdGVyciA9IGRhbW9uX3NldF9yZWdpb25zKGRzdCwgcmFuZ2VzLCBpLCBzcmNfbWluX3JlZ2lvbl9zeik7XFxuIFxcdGt2ZnJlZShyYW5nZXMpO1xcbiBcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xcbmluZGV4IGUzNTI2YTI2M2UyMDVmLi42NzEwYjZkMDE5YmY1MyAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9zeXNmcy5jXFxuKysrIGIvbW0vZGFtb24vc3lzZnMuY1xcbkBAIC0xMDczLDcgKzEwNzMsNyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpkYW1vbl9zeXNmc19wcm9iZV9hbGxvYyh2b2lkKVxcbiBcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlKTtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKmF0dHIpXFxuK3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqZmlsdGVycztcXG4gXFx0aW50IGVycjtcXG5AQCAtMTA4MSwyMiArMTA4MSwyMiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cilcXG4gXFx0ZmlsdGVycyA9IGRhbW9uX3N5c2ZzX2ZpbHRlcnNfYWxsb2MoKTtcXG4gXFx0aWYgKCFmaWx0ZXJzKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tXFx0YXR0ci1cXHUwMDNlZmlsdGVycyA9IGZpbHRlcnM7XFxuK1xcdHByb2JlLVxcdTAwM2VmaWx0ZXJzID0gZmlsdGVycztcXG4gXFxuIFxcdGVyciA9IGtvYmplY3RfaW5pdF9hbmRfYWRkKFxcdTAwMjZmaWx0ZXJzLVxcdTAwM2Vrb2JqLCBcXHUwMDI2ZGFtb25fc3lzZnNfZmlsdGVyc19rdHlwZSxcXG4tXFx0XFx0XFx0XFx1MDAyNmF0dHItXFx1MDAzZWtvYmosIFxcXCJmaWx0ZXJzXFxcIik7XFxuK1xcdFxcdFxcdFxcdTAwMjZwcm9iZS1cXHUwMDNla29iaiwgXFxcImZpbHRlcnNcXFwiKTtcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRrb2JqZWN0X3B1dChcXHUwMDI2ZmlsdGVycy1cXHUwMDNla29iaik7XFxuLVxcdFxcdGF0dHItXFx1MDAzZWZpbHRlcnMgPSBOVUxMO1xcbitcXHRcXHRwcm9iZS1cXHUwMDNlZmlsdGVycyA9IE5VTEw7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZGFtb25fc3lzZnNfcHJvYmVfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKmF0dHIpXFxuK3N0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSlcXG4ge1xcbi1cXHRpZiAoYXR0ci1cXHUwMDNlZmlsdGVycykge1xcbi1cXHRcXHRkYW1vbl9zeXNmc19maWx0ZXJzX3JtX2RpcnMoYXR0ci1cXHUwMDNlZmlsdGVycyk7XFxuLVxcdFxcdGtvYmplY3RfcHV0KFxcdTAwMjZhdHRyLVxcdTAwM2VmaWx0ZXJzLVxcdTAwM2Vrb2JqKTtcXG4rXFx0aWYgKHByb2JlLVxcdTAwM2VmaWx0ZXJzKSB7XFxuK1xcdFxcdGRhbW9uX3N5c2ZzX2ZpbHRlcnNfcm1fZGlycyhwcm9iZS1cXHUwMDNlZmlsdGVycyk7XFxuK1xcdFxcdGtvYmplY3RfcHV0KFxcdTAwMjZwcm9iZS1cXHUwMDNlZmlsdGVycy1cXHUwMDNla29iaik7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMTkwOSw0NyArMTkwOSw2NSBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxuIFxcdHJldHVybiBkYW1vbl9zZXRfYXR0cnMoY3R4LCBcXHUwMDI2YXR0cnMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9wcm9iZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmVzICpzeXNfcHJvYmVzKVxcbitzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsXFxuK1xcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycylcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzeXNfcHJvYmVzLVxcdTAwM2VucjsgaSsrKSB7XFxuLVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycyA9XFxuLVxcdFxcdFxcdHN5c19wcm9iZXMtXFx1MDAzZXByb2Jlc19hcnJbaV0tXFx1MDAzZWZpbHRlcnM7XFxuLVxcdFxcdHN0cnVjdCBkYW1vbl9wcm9iZSAqYztcXG4tXFx0XFx0aW50IGo7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzeXNfZmlsdGVycy1cXHUwMDNlbnI7IGkrKykge1xcbitcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyICpzeXNfZmlsdGVyID1cXG4rXFx0XFx0XFx0c3lzX2ZpbHRlcnMtXFx1MDAzZWZpbHRlcnNfYXJyW2ldO1xcbitcXHRcXHRzdHJ1Y3QgZGFtb25fZmlsdGVyICpmaWx0ZXI7XFxuIFxcbi1cXHRcXHRpZiAoIXN5c19maWx0ZXJzKVxcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0YyA9IGRhbW9uX25ld19wcm9iZSgpO1xcbi1cXHRcXHRpZiAoIWMpXFxuK1xcdFxcdGZpbHRlciA9IGRhbW9uX25ld19maWx0ZXIoc3lzX2ZpbHRlci1cXHUwMDNldHlwZSxcXG4rXFx0XFx0XFx0XFx0c3lzX2ZpbHRlci1cXHUwMDNlbWF0Y2hpbmcsXFxuK1xcdFxcdFxcdFxcdHN5c19maWx0ZXItXFx1MDAzZWFsbG93KTtcXG4rXFx0XFx0aWYgKCFmaWx0ZXIpXFxuIFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi1cXHRcXHRkYW1vbl9hZGRfcHJvYmUoY3R4LCBjKTtcXG4tXFxuLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBzeXNfZmlsdGVycy1cXHUwMDNlbnI7IGorKykge1xcbi1cXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyICpzeXNfZmlsdGVyID1cXG4tXFx0XFx0XFx0XFx0c3lzX2ZpbHRlcnMtXFx1MDAzZWZpbHRlcnNfYXJyW2pdO1xcbi1cXHRcXHRcXHRzdHJ1Y3QgZGFtb25fZmlsdGVyICpmaWx0ZXI7XFxuLVxcbi1cXHRcXHRcXHRmaWx0ZXIgPSBkYW1vbl9uZXdfZmlsdGVyKHN5c19maWx0ZXItXFx1MDAzZXR5cGUsXFxuLVxcdFxcdFxcdFxcdFxcdHN5c19maWx0ZXItXFx1MDAzZW1hdGNoaW5nLFxcbi1cXHRcXHRcXHRcXHRcXHRzeXNfZmlsdGVyLVxcdTAwM2VhbGxvdyk7XFxuLVxcdFxcdFxcdGlmICghZmlsdGVyKVxcbi1cXHRcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tXFx0XFx0XFx0aWYgKGZpbHRlci1cXHUwMDNldHlwZSA9PSBEQU1PTl9GSUxURVJfVFlQRV9NRU1DRykge1xcbi1cXHRcXHRcXHRcXHRpbnQgZXJyO1xcbi1cXG4tXFx0XFx0XFx0XFx0ZXJyID0gZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChcXG4tXFx0XFx0XFx0XFx0XFx0XFx0c3lzX2ZpbHRlci1cXHUwMDNlcGF0aCxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmZpbHRlci1cXHUwMDNlbWVtY2dfaWQpO1xcbi1cXHRcXHRcXHRcXHRpZiAoZXJyKSB7XFxuLVxcdFxcdFxcdFxcdFxcdGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKGZpbHRlcik7XFxuLVxcdFxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuLVxcdFxcdFxcdFxcdH1cXG4rXFx0XFx0aWYgKGZpbHRlci1cXHUwMDNldHlwZSA9PSBEQU1PTl9GSUxURVJfVFlQRV9NRU1DRykge1xcbitcXHRcXHRcXHRpbnQgZXJyO1xcbitcXG4rXFx0XFx0XFx0ZXJyID0gZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChcXG4rXFx0XFx0XFx0XFx0XFx0c3lzX2ZpbHRlci1cXHUwMDNlcGF0aCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx1MDAyNmZpbHRlci1cXHUwMDNlbWVtY2dfaWQpO1xcbitcXHRcXHRcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdFxcdFxcdGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKGZpbHRlcik7XFxuK1xcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0ZGFtb25fYWRkX2ZpbHRlcihjLCBmaWx0ZXIpO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGRhbW9uX2FkZF9maWx0ZXIocHJvYmUsIGZpbHRlcik7XFxuK1xcdH1cXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsXFxuK1xcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqc3lzX3Byb2JlKVxcbit7XFxuK1xcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycztcXG4rXFxuK1xcdHN5c19maWx0ZXJzID0gc3lzX3Byb2JlLVxcdTAwM2VmaWx0ZXJzO1xcbitcXHRpZiAoIXN5c19maWx0ZXJzKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHByb2JlLCBzeXNfZmlsdGVycyk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxuK1xcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMgKnN5c19wcm9iZXMpXFxuK3tcXG4rXFx0aW50IGksIGVycjtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzeXNfcHJvYmVzLVxcdTAwM2VucjsgaSsrKSB7XFxuK1xcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqc3lzX3Byb2JlO1xcbitcXHRcXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnA7XFxuK1xcbitcXHRcXHRwID0gZGFtb25fbmV3X3Byb2JlKCk7XFxuK1xcdFxcdGlmICghcClcXG4rXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdFxcdGRhbW9uX2FkZF9wcm9iZShjdHgsIHApO1xcbitcXHRcXHRzeXNfcHJvYmUgPSBzeXNfcHJvYmVzLVxcdTAwM2Vwcm9iZXNfYXJyW2ldO1xcbitcXHRcXHRlcnIgPSBkYW1vbl9zeXNmc19zZXRfcHJvYmUocCwgc3lzX3Byb2JlKTtcXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmggYi9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcXG5pbmRleCBhMDAxNjg3MzA0NDVkMi4uMGVjN2QxNGQzNTRlNzcgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXFxuKysrIGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXFxuQEAgLTE1NDYsNiArMTU0NiwyMCBAQCBzdGF0aWMgdm9pZCBkYW1vbl90ZXN0X3dhbGtfY29udHJvbF9vYnNvbGV0ZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuIFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfcmFuZChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0c3RydWN0IGRhbW9uX2N0eCBjdHg7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0cHJhbmRvbV9zZWVkX3N0YXRlKFxcdTAwMjZjdHgucm5kX3N0YXRlLCBnZXRfcmFuZG9tX3U2NCgpKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDEwMDAwOyBpKyspIHtcXG4rXFx0XFx0dW5zaWduZWQgbG9uZyBybmQgPSBkYW1vbl9yYW5kKFxcdTAwMjZjdHgsIDAsIDEwKTtcXG4rXFxuK1xcdFxcdEtVTklUX0VYUEVDVF9HRSh0ZXN0LCBybmQsIDApO1xcbitcXHRcXHRLVU5JVF9FWFBFQ1RfTEUodGVzdCwgcm5kLCA5KTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfdGFyZ2V0KSxcXG4gXFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3JlZ2lvbnMpLFxcbkBAIC0xNTc3LDYgKzE1OTEsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfYXBwbHlfbWluX25yX3JlZ2lvbnMpLFxcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfaXNfbGFzdF9yZWdpb24pLFxcbiBcXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfd2Fsa19jb250cm9sX29ic29sZXRlKSxcXG4rXFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X3JhbmQpLFxcbiBcXHR7fSxcXG4gfTtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2hcXG5pbmRleCAyZWFhYTVhZTNjNWVkNy4uYjQzZGVlZTYwZmU5NTMgMTAwNzU1XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2hcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaFxcbkBAIC05OSwxNCArOTksNTUgQEAgdGVzdF9zdGF0cygpXFxuIFxcdGRvbmVcXG4gfVxcbiBcXG4rdGVzdF9kZXN0KClcXG4re1xcbitcXHRkZXN0X2Rpcj0kMVxcbitcXHRlbnN1cmVfZmlsZSBcXFwiJGRlc3RfZGlyL2lkXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuK1xcdGVuc3VyZV9maWxlIFxcXCIkZGVzdF9kaXIvd2VpZ2h0XFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuK31cXG4rXFxuK3Rlc3RfZGVzdHMoKVxcbit7XFxuK1xcdGRlc3RzX2Rpcj0kMVxcbitcXHRlbnN1cmVfZmlsZSBcXFwiJGRlc3RzX2Rpci9ucl9kZXN0c1xcXCIgXFxcImV4aXN0XFxcIiBcXFwiNjAwXFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGRlc3RzX2Rpci9ucl9kZXN0c1xcXCIgXFxcIjFcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFx0dGVzdF9kZXN0IFxcXCIkZGVzdHNfZGlyLzBcXFwiXFxuK1xcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGRlc3RzX2Rpci9ucl9kZXN0c1xcXCIgXFxcIjJcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFx0dGVzdF9kZXN0IFxcXCIkZGVzdHNfZGlyLzBcXFwiXFxuK1xcdHRlc3RfZGVzdCBcXFwiJGRlc3RzX2Rpci8xXFxcIlxcbitcXG4rXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRkZXN0c19kaXIvbnJfZGVzdHNcXFwiIFxcXCIwXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGVuc3VyZV9kaXIgXFxcIiRkZXN0c19kaXIvMFxcXCIgXFxcIm5vdF9leGlzdFxcXCJcXG4rXFx0ZW5zdXJlX2RpciBcXFwiJGRlc3RzX2Rpci8xXFxcIiBcXFwibm90X2V4aXN0XFxcIlxcbit9XFxuK1xcbiB0ZXN0X2ZpbHRlcigpXFxuIHtcXG4gXFx0ZmlsdGVyX2Rpcj0kMVxcbiBcXHRlbnN1cmVfZmlsZSBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcImV4aXN0XFxcIiBcXFwiNjAwXFxcIlxcbi1cXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcImFub25cXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4tXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRmaWx0ZXJfZGlyL3R5cGVcXFwiIFxcXCJtZW1jZ1xcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbi1cXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcImFkZHJcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4tXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRmaWx0ZXJfZGlyL3R5cGVcXFwiIFxcXCJ0YXJnZXRcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFxuK1xcdGxvY2FsIGRpcl9uYW1lPSQoYmFzZW5hbWUgXFxcIiQoZGlybmFtZSBcXFwiJGZpbHRlcl9kaXJcXFwiKVxcXCIpXFxuK1xcdGlmICBbIFxcXCIkZGlyX25hbWVcXFwiID0gXFxcImZpbHRlcnNcXFwiIF0gfHwgWyBcXFwiJGRpcl9uYW1lXFxcIiA9IFxcXCJvcHNfZmlsdGVyc1xcXCIgXVxcbitcXHR0aGVuXFxuK1xcdFxcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZmlsdGVyX2Rpci90eXBlXFxcIiBcXFwiYW5vblxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHRcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcIm1lbWNnXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGZpXFxuK1xcdGlmICBbIFxcXCIkZGlyX25hbWVcXFwiID0gXFxcImZpbHRlcnNcXFwiIF0gfHwgWyBcXFwiJGRpcl9uYW1lXFxcIiA9IFxcXCJjb3JlX2ZpbHRlcnNcXFwiIF1cXG4rXFx0dGhlblxcbitcXHRcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcImFkZHJcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFx0XFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRmaWx0ZXJfZGlyL3R5cGVcXFwiIFxcXCJ0YXJnZXRcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFx0ZmlcXG4rXFx0aWYgWyBcXFwiJGRpcl9uYW1lXFxcIiA9IFxcXCJjb3JlX2ZpbHRlcnNcXFwiIF1cXG4rXFx0dGhlblxcbitcXHRcXHRlbnN1cmVfd3JpdGVfZmFpbCBcXFwiJGZpbHRlcl9kaXIvdHlwZVxcXCIgXFxcImFub25cXFwiIFxcXCJvcHMgdHlwZVxcXCJcXG4rXFx0XFx0ZW5zdXJlX3dyaXRlX2ZhaWwgXFxcIiRmaWx0ZXJfZGlyL3R5cGVcXFwiIFxcXCJtZW1jZ1xcXCIgXFxcIm9wcyB0eXBlXFxcIlxcbitcXHRmaVxcbitcXHRpZiBbIFxcXCIkZGlyX25hbWVcXFwiICA9IFxcXCJvcHNfZmlsdGVyc1xcXCIgXVxcbitcXHR0aGVuXFxuK1xcdFxcdGVuc3VyZV93cml0ZV9mYWlsIFxcXCIkZmlsdGVyX2Rpci90eXBlXFxcIiBcXFwiYWRkclxcXCIgXFxcImNvcmUgdHlwZVxcXCJcXG4rXFx0XFx0ZW5zdXJlX3dyaXRlX2ZhaWwgXFxcIiRmaWx0ZXJfZGlyL3R5cGVcXFwiIFxcXCJ0YXJnZXRcXFwiIFxcXCJjb3JlIHR5cGVcXFwiXFxuK1xcdGZpXFxuIFxcdGVuc3VyZV93cml0ZV9mYWlsIFxcXCIkZmlsdGVyX2Rpci90eXBlXFxcIiBcXFwiZm9vXFxcIiBcXFwiaW52YWxpZCBpbnB1dFxcXCJcXG4gXFx0ZW5zdXJlX2ZpbGUgXFxcIiRmaWx0ZXJfZGlyL21hdGNoaW5nXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuIFxcdGVuc3VyZV9maWxlIFxcXCIkZmlsdGVyX2Rpci9tZW1jZ19wYXRoXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuQEAgLTE1OCw2ICsxOTksMjAgQEAgdGVzdF9nb2FsKClcXG4gXFx0ZW5zdXJlX2RpciBcXFwiJGdvYWxfZGlyXFxcIiBcXFwiZXhpc3RcXFwiXFxuIFxcdGVuc3VyZV9maWxlIFxcXCIkZ29hbF9kaXIvdGFyZ2V0X3ZhbHVlXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuIFxcdGVuc3VyZV9maWxlIFxcXCIkZ29hbF9kaXIvY3VycmVudF92YWx1ZVxcXCIgXFxcImV4aXN0XFxcIiBcXFwiNjAwXFxcIlxcbitcXHRlbnN1cmVfZmlsZSBcXFwiJGdvYWxfZGlyL3RhcmdldF9tZXRyaWNcXFwiIFxcXCJleGlzdFxcXCIgXFxcIjYwMFxcXCJcXG4rXFx0bG9jYWwgZnBhdGg9XFxcIiRnb2FsX2Rpci90YXJnZXRfbWV0cmljXFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwidXNlcl9pbnB1dFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwic29tZV9tZW1fcHNpX3VzXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZnBhdGhcXFwiIFxcXCJub2RlX21lbV91c2VkX2JwXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZnBhdGhcXFwiIFxcXCJub2RlX21lbV9mcmVlX2JwXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZnBhdGhcXFwiIFxcXCJub2RlX21lbWNnX3VzZWRfYnBcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4rXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRmcGF0aFxcXCIgXFxcIm5vZGVfbWVtY2dfZnJlZV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwiYWN0aXZlX21lbV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwiaW5hY3RpdmVfbWVtX2JwXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuK1xcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZnBhdGhcXFwiIFxcXCJub2RlX2VsaWdpYmxlX21lbV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHRlbnN1cmVfd3JpdGVfZmFpbCBcXFwiJGZwYXRoXFxcIiBcXFwiZm9vXFxcIiBcXFwiaW52YWxpZCBpbnB1dFxcXCJcXG4rXFx0ZW5zdXJlX2ZpbGUgXFxcIiRnb2FsX2Rpci9uaWRcXFwiIFxcXCJleGlzdFxcXCIgXFxcIjYwMFxcXCJcXG4rXFx0ZW5zdXJlX2ZpbGUgXFxcIiRnb2FsX2Rpci9wYXRoXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuIH1cXG4gXFxuIHRlc3RfZ29hbHMoKVxcbkBAIC0yMDcsNyArMjYyLDEwIEBAIHRlc3Rfc2NoZW1lKClcXG4gXFx0ZW5zdXJlX2ZpbGUgXFxcIiRzY2hlbWVfZGlyL2FwcGx5X2ludGVydmFsX3VzXFxcIiBcXFwiZXhpc3RcXFwiIFxcXCI2MDBcXFwiXFxuIFxcdHRlc3RfcXVvdGFzIFxcXCIkc2NoZW1lX2Rpci9xdW90YXNcXFwiXFxuIFxcdHRlc3Rfd2F0ZXJtYXJrcyBcXFwiJHNjaGVtZV9kaXIvd2F0ZXJtYXJrc1xcXCJcXG4rXFx0dGVzdF9kZXN0cyBcXFwiJHNjaGVtZV9kaXIvZGVzdHNcXFwiXFxuIFxcdHRlc3RfZmlsdGVycyBcXFwiJHNjaGVtZV9kaXIvZmlsdGVyc1xcXCJcXG4rXFx0dGVzdF9maWx0ZXJzIFxcXCIkc2NoZW1lX2Rpci9jb3JlX2ZpbHRlcnNcXFwiXFxuK1xcdHRlc3RfZmlsdGVycyBcXFwiJHNjaGVtZV9kaXIvb3BzX2ZpbHRlcnNcXFwiXFxuIFxcdHRlc3Rfc3RhdHMgXFxcIiRzY2hlbWVfZGlyL3N0YXRzXFxcIlxcbiBcXHR0ZXN0X3RyaWVkX3JlZ2lvbnMgXFxcIiRzY2hlbWVfZGlyL3RyaWVkX3JlZ2lvbnNcXFwiXFxuIH1cXG5AQCAtMzQ2LDggKzQwNCwxMyBAQCB0ZXN0X3Byb2JlcygpXFxuIFxcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkcHJvYmVzX2Rpci9ucl9wcm9iZXNcXFwiIFxcXCIxXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxuIFxcdHRlc3RfcHJvYmUgXFxcIiRwcm9iZXNfZGlyLzBcXFwiXFxuIFxcbitcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJHByb2Jlc19kaXIvbnJfcHJvYmVzXFxcIiBcXFwiMlxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbitcXHR0ZXN0X3Byb2JlIFxcXCIkcHJvYmVzX2Rpci8wXFxcIlxcbitcXHR0ZXN0X3Byb2JlIFxcXCIkcHJvYmVzX2Rpci8xXFxcIlxcbitcXG4gXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRwcm9iZXNfZGlyL25yX3Byb2Jlc1xcXCIgXFxcIjBcXFwiIFxcXCJ2YWxpZCBpbnB1dFxcXCJcXG4gXFx0ZW5zdXJlX2RpciBcXFwiJHByb2Jlc19kaXIvMFxcXCIgXFxcIm5vdF9leGlzdFxcXCJcXG4rXFx0ZW5zdXJlX2RpciBcXFwiJHByb2Jlc19kaXIvMVxcXCIgXFxcIm5vdF9leGlzdFxcXCJcXG4gfVxcbiBcXG4gdGVzdF9tb25pdG9yaW5nX2F0dHJzKClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6MTYuNjY1ODEwMDU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjkzNTc0NDMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9wcm9iZVwiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X3Byb2Jlc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiBsb2dpYyBmb3IgY29tbWl0dGluZyB0YXJnZXQgcmVnaW9ucyAobWVyZ2luZyBjb250aWd1b3VzIHJlZ2lvbnMpIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBzZXR0aW5nIHVwIERBTU9OIHByb2JlcyBhbmQgZmlsdGVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBzeXNmcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzkzOGQ4MGE2YmY0MmU4MDYyNjFlZTA2NjNlODFmNDZlZjMyNWVmOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDIyOjQ0OjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb24gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vblxuaW5kZXggNGZkZWM2M2E0N2Q0YWEuLmRkNmI1YmQ3NmUxMTk2IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cbisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXG5AQCAtMTU3LDYgKzE1Nyw0NiBAQCBEZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSB2YWx1ZSB0byB0aGlzIGZpbGUgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiBcdFx0bW9uaXRvcmluZyByZWdpb25zIG9mIHRoZSBEQU1PTiBjb250ZXh0IGFzIHRoZSB2YWx1ZS4gIFJlYWRpbmdcbiBcdFx0dGhpcyBmaWxlIHJldHVybnMgdGhlIHZhbHVlLlxuIFxuK1doYXQ6XHRcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1x1MDAzY0tcdTAwM2UvY29udGV4dHMvXHUwMDNjQ1x1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9ucl9wcm9iZXNcbitEYXRlOlx0XHRNYXkgMjAyNlxuK0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbitEZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSBudW1iZXIgJ04nIHRvIHRoaXMgZmlsZSBjcmVhdGVzIHRoZSBudW1iZXIgb2ZcbitcdFx0ZGlyZWN0b3JpZXMgZm9yIGVhY2ggREFNT04gcHJvYmUgbmFtZWQgJzAnIHRvICdOLTEnIHVuZGVyIHRoZVxuK1x0XHRwcm9iZXMvIGRpcmVjdG9yeS5cbitcbitXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2UvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvXHUwMDNjUFx1MDAzZS9maWx0ZXJzL25yX2ZpbHRlcnNcbitEYXRlOlx0XHRNYXkgMjAyNlxuK0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbitEZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSBudW1iZXIgJ04nIHRvIHRoaXMgZmlsZSBjcmVhdGVzIHRoZSBudW1iZXIgb2ZcbitcdFx0ZGlyZWN0b3JpZXMgZm9yIGVhY2ggREFNT04gcHJvYmUgZmlsdGVyIG5hbWVkICcwJyB0byAnTi0xJ1xuK1x0XHR1bmRlciB0aGUgZmlsdGVycy8gZGlyZWN0b3J5LlxuK1xuK1doYXQ6XHRcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1x1MDAzY0tcdTAwM2UvY29udGV4dHMvXHUwMDNjQ1x1MDAzZS9tb25pdG9yaW5nX2F0dHJzL3Byb2Jlcy9cdTAwM2NQXHUwMDNlL2ZpbHRlcnMvXHUwMDNjRlx1MDAzZS90eXBlXG4rRGF0ZTpcdFx0TWF5IDIwMjZcbitDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG4rRGVzY3JpcHRpb246XHRXcml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gdGhpcyBmaWxlIHNldHMgYW5kIGdldHMgdGhlIHR5cGUgb2ZcbitcdFx0dGhlIG1lbW9yeSBvZiB0aGUgaW50ZXJlc3QuXG4rXG4rV2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1x1MDAzY1BcdTAwM2UvZmlsdGVycy9cdTAwM2NGXHUwMDNlL3BhdGhcbitEYXRlOlx0XHRNYXkgMjAyNlxuK0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbitEZXNjcmlwdGlvbjpcdElmICdtZW1jZycgaXMgd3JpdHRlbiB0byB0aGUgJ3R5cGUnIGZpbGUsIHdyaXRpbmcgdG8gYW5kXG4rXHRcdHJlYWRpbmcgZnJvbSB0aGlzIGZpbGUgc2V0cyBhbmQgZ2V0cyB0aGUgcGF0aCB0byB0aGUgbWVtb3J5XG4rXHRcdGNncm91cCBvZiB0aGUgaW50ZXJlc3QuXG4rXG4rV2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL21vbml0b3JpbmdfYXR0cnMvcHJvYmVzL1x1MDAzY1BcdTAwM2UvZmlsdGVycy9cdTAwM2NGXHUwMDNlL21hdGNoaW5nXG4rRGF0ZTpcdFx0TWF5IDIwMjZcbitDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG4rRGVzY3JpcHRpb246XHRXcml0aW5nICdZJyBvciAnTicgdG8gdGhpcyBmaWxlIHNldHMgd2hldGhlciB0aGUgZmlsdGVyIGlzIGZvclxuK1x0XHR0aGUgbWVtb3J5IG9mIHRoZSAndHlwZScsIG9yIGFsbCBleGNlcHQgdGhlICd0eXBlJy5cbitcbitXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2UvbW9uaXRvcmluZ19hdHRycy9wcm9iZXMvXHUwMDNjUFx1MDAzZS9maWx0ZXJzL1x1MDAzY0ZcdTAwM2UvYWxsb3dcbitEYXRlOlx0XHRNYXkgMjAyNlxuK0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbitEZXNjcmlwdGlvbjpcdFdyaXRpbmcgJ1knIG9yICdOJyB0byB0aGlzIGZpbGUgc2V0cyB3aGV0aGVyIHRvIGFsbG93IG9yIHJlamVjdFxuK1x0XHRoaXR0aW5nIHRoZSBwcm9iZSBmb3IgdGhlIG1lbW9yeSB0aGF0IHNhdGlzZmllcyB0aGUgJ3R5cGUnIGFuZFxuK1x0XHR0aGUgJ21hdGNoaW5nJyBvZiB0aGUgZGlyZWN0b3J5LlxuK1xuIFdoYXQ6XHRcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1x1MDAzY0tcdTAwM2UvY29udGV4dHMvXHUwMDNjQ1x1MDAzZS90YXJnZXRzL25yX3RhcmdldHNcbiBEYXRlOlx0XHRNYXIgMjAyMlxuIENvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcbmluZGV4IGMxNmEzYmIyODhkMDc5Li40NTdkNmU4YmM3ODc4NSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XG5AQCAtNjg2LDkgKzY4NiwxMSBAQCBtZWNoYW5pc20gdHJpZXMgdG8gbWFrZSBgYGN1cnJlbnRfdmFsdWVgYCBvZiBgYHRhcmdldF9tZXRyaWNgYCBiZSBzYW1lIHRvXG4gICAoMS8xMCwwMDApLlxuIC0gYGBpbmFjdGl2ZV9tZW1fYnBgYDogSW5hY3RpdmUgdG8gYWN0aXZlICsgaW5hY3RpdmUgKExSVSkgbWVtb3J5IHNpemUgcmF0aW8gaW5cbiAgIGJwICgxLzEwLDAwMCkuXG4rLSBgYG5vZGVfZWxpZ2libGVfbWVtX2JwYGA6IFNjaGVtZSB0YXJnZXQgYWNjZXNzIHBhdHRlcm4tZWxpZ2libGUgbWVtb3J5IHJhdGlvXG4rICBvZiBhIG5vZGUgaW4gYnAgKDEvMTAsMDAwKS5cbiBcbi1gYG5pZGBgIGlzIG9wdGlvbmFsbHkgcmVxdWlyZWQgZm9yIG9ubHkgYGBub2RlX21lbV91c2VkX2JwYGAsXG4tYGBub2RlX21lbV9mcmVlX2JwYGAsIGBgbm9kZV9tZW1jZ191c2VkX2JwYGAgYW5kIGBgbm9kZV9tZW1jZ19mcmVlX2JwYGAgdG9cbitgYG5pZGBgIGlzIG9wdGlvbmFsbHkgcmVxdWlyZWQgZm9yIGBgbm9kZV9tZW1fdXNlZF9icGBgLCBgYG5vZGVfbWVtX2ZyZWVfYnBgYCxcbitgYG5vZGVfbWVtY2dfdXNlZF9icGBgLCBgYG5vZGVfbWVtY2dfZnJlZV9icGBgIGFuZCBgYG5vZGVfZWxpZ2libGVfbWVtX2JwYGAgdG9cbiBwb2ludCB0aGUgc3BlY2lmaWMgTlVNQSBub2RlLlxuIFxuIGBgcGF0aGBgIGlzIG9wdGlvbmFsbHkgcmVxdWlyZWQgZm9yIG9ubHkgYGBub2RlX21lbWNnX3VzZWRfYnBgYCBhbmRcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDlhMDMxMjMyNjljMjhlLi41ZmViZTU4YTA3MDI4OSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuKysrIGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTM0NywyMSArMTM0NywzMyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCxcbiBcdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxuIHtcbi1cdHN0cnVjdCBkYW1vbl9yZWdpb24gKnNyY19yZWdpb247XG4rXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpzcmNfcmVnaW9uLCAqcHJldiA9IE5VTEw7XG4gXHRzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSAqcmFuZ2VzO1xuIFx0aW50IGkgPSAwLCBlcnI7XG4gXG4tXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKVxuLVx0XHRpKys7XG4rXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKSB7XG4rXHRcdGlmICghcHJldiB8fCBwcmV2LVx1MDAzZWFyLmVuZCAhPSBzcmNfcmVnaW9uLVx1MDAzZWFyLnN0YXJ0KVxuK1x0XHRcdGkrKztcbitcdFx0cHJldiA9IHNyY19yZWdpb247XG4rXHR9XG4gXHRpZiAoIWkpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0cmFuZ2VzID0ga3ZtYWxsb2Nfb2JqcygqcmFuZ2VzLCBpLCBHRlBfS0VSTkVMIHwgX19HRlBfTk9XQVJOKTtcbiBcdGlmICghcmFuZ2VzKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbitcdHByZXYgPSBOVUxMO1xuIFx0aSA9IDA7XG4tXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKVxuLVx0XHRyYW5nZXNbaSsrXSA9IHNyY19yZWdpb24tXHUwMDNlYXI7XG4rXHRkYW1vbl9mb3JfZWFjaF9yZWdpb24oc3JjX3JlZ2lvbiwgc3JjKSB7XG4rXHRcdGlmICghcHJldikge1xuK1x0XHRcdHJhbmdlc1tpXS5zdGFydCA9IHNyY19yZWdpb24tXHUwMDNlYXIuc3RhcnQ7XG4rXHRcdH0gZWxzZSBpZiAocHJldi1cdTAwM2Vhci5lbmQgIT0gc3JjX3JlZ2lvbi1cdTAwM2Vhci5zdGFydCkge1xuK1x0XHRcdHJhbmdlc1tpKytdLmVuZCA9IHByZXYtXHUwMDNlYXIuZW5kO1xuK1x0XHRcdHJhbmdlc1tpXS5zdGFydCA9IHNyY19yZWdpb24tXHUwMDNlYXIuc3RhcnQ7XG4rXHRcdH1cbitcdFx0cHJldiA9IHNyY19yZWdpb247XG4rXHR9XG4rXHRyYW5nZXNbaSsrXS5lbmQgPSBkYW1vbl9sYXN0X3JlZ2lvbihzcmMpLVx1MDAzZWFyLmVuZDtcbiBcdGVyciA9IGRhbW9uX3NldF9yZWdpb25zKGRzdCwgcmFuZ2VzLCBpLCBzcmNfbWluX3JlZ2lvbl9zeik7XG4gXHRrdmZyZWUocmFuZ2VzKTtcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMuYyBiL21tL2RhbW9uL3N5c2ZzLmNcbmluZGV4IGUzNTI2YTI2M2UyMDVmLi42NzEwYjZkMDE5YmY1MyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3N5c2ZzLmNcbisrKyBiL21tL2RhbW9uL3N5c2ZzLmNcbkBAIC0xMDczLDcgKzEwNzMsNyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpkYW1vbl9zeXNmc19wcm9iZV9hbGxvYyh2b2lkKVxuIFx0cmV0dXJuIGt6YWxsb2Nfb2JqKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSk7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICphdHRyKVxuK3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSlcbiB7XG4gXHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqZmlsdGVycztcbiBcdGludCBlcnI7XG5AQCAtMTA4MSwyMiArMTA4MSwyMiBAQCBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cilcbiBcdGZpbHRlcnMgPSBkYW1vbl9zeXNmc19maWx0ZXJzX2FsbG9jKCk7XG4gXHRpZiAoIWZpbHRlcnMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuLVx0YXR0ci1cdTAwM2VmaWx0ZXJzID0gZmlsdGVycztcbitcdHByb2JlLVx1MDAzZWZpbHRlcnMgPSBmaWx0ZXJzO1xuIFxuIFx0ZXJyID0ga29iamVjdF9pbml0X2FuZF9hZGQoXHUwMDI2ZmlsdGVycy1cdTAwM2Vrb2JqLCBcdTAwMjZkYW1vbl9zeXNmc19maWx0ZXJzX2t0eXBlLFxuLVx0XHRcdFx1MDAyNmF0dHItXHUwMDNla29iaiwgXCJmaWx0ZXJzXCIpO1xuK1x0XHRcdFx1MDAyNnByb2JlLVx1MDAzZWtvYmosIFwiZmlsdGVyc1wiKTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0a29iamVjdF9wdXQoXHUwMDI2ZmlsdGVycy1cdTAwM2Vrb2JqKTtcbi1cdFx0YXR0ci1cdTAwM2VmaWx0ZXJzID0gTlVMTDtcbitcdFx0cHJvYmUtXHUwMDNlZmlsdGVycyA9IE5VTEw7XG4gXHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqYXR0cilcbitzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSAqcHJvYmUpXG4ge1xuLVx0aWYgKGF0dHItXHUwMDNlZmlsdGVycykge1xuLVx0XHRkYW1vbl9zeXNmc19maWx0ZXJzX3JtX2RpcnMoYXR0ci1cdTAwM2VmaWx0ZXJzKTtcbi1cdFx0a29iamVjdF9wdXQoXHUwMDI2YXR0ci1cdTAwM2VmaWx0ZXJzLVx1MDAzZWtvYmopO1xuK1x0aWYgKHByb2JlLVx1MDAzZWZpbHRlcnMpIHtcbitcdFx0ZGFtb25fc3lzZnNfZmlsdGVyc19ybV9kaXJzKHByb2JlLVx1MDAzZWZpbHRlcnMpO1xuK1x0XHRrb2JqZWN0X3B1dChcdTAwMjZwcm9iZS1cdTAwM2VmaWx0ZXJzLVx1MDAzZWtvYmopO1xuIFx0fVxuIH1cbiBcbkBAIC0xOTA5LDQ3ICsxOTA5LDY1IEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbiBcdHJldHVybiBkYW1vbl9zZXRfYXR0cnMoY3R4LCBcdTAwMjZhdHRycyk7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4tXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMgKnN5c19wcm9iZXMpXG4rc3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfZmlsdGVycyhzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlLFxuK1x0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyAqc3lzX2ZpbHRlcnMpXG4ge1xuIFx0aW50IGk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzeXNfcHJvYmVzLVx1MDAzZW5yOyBpKyspIHtcbi1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMgKnN5c19maWx0ZXJzID1cbi1cdFx0XHRzeXNfcHJvYmVzLVx1MDAzZXByb2Jlc19hcnJbaV0tXHUwMDNlZmlsdGVycztcbi1cdFx0c3RydWN0IGRhbW9uX3Byb2JlICpjO1xuLVx0XHRpbnQgajtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHN5c19maWx0ZXJzLVx1MDAzZW5yOyBpKyspIHtcbitcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqc3lzX2ZpbHRlciA9XG4rXHRcdFx0c3lzX2ZpbHRlcnMtXHUwMDNlZmlsdGVyc19hcnJbaV07XG4rXHRcdHN0cnVjdCBkYW1vbl9maWx0ZXIgKmZpbHRlcjtcbiBcbi1cdFx0aWYgKCFzeXNfZmlsdGVycylcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0YyA9IGRhbW9uX25ld19wcm9iZSgpO1xuLVx0XHRpZiAoIWMpXG4rXHRcdGZpbHRlciA9IGRhbW9uX25ld19maWx0ZXIoc3lzX2ZpbHRlci1cdTAwM2V0eXBlLFxuK1x0XHRcdFx0c3lzX2ZpbHRlci1cdTAwM2VtYXRjaGluZyxcbitcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlYWxsb3cpO1xuK1x0XHRpZiAoIWZpbHRlcilcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbi1cdFx0ZGFtb25fYWRkX3Byb2JlKGN0eCwgYyk7XG4tXG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIHN5c19maWx0ZXJzLVx1MDAzZW5yOyBqKyspIHtcbi1cdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyICpzeXNfZmlsdGVyID1cbi1cdFx0XHRcdHN5c19maWx0ZXJzLVx1MDAzZWZpbHRlcnNfYXJyW2pdO1xuLVx0XHRcdHN0cnVjdCBkYW1vbl9maWx0ZXIgKmZpbHRlcjtcbi1cbi1cdFx0XHRmaWx0ZXIgPSBkYW1vbl9uZXdfZmlsdGVyKHN5c19maWx0ZXItXHUwMDNldHlwZSxcbi1cdFx0XHRcdFx0c3lzX2ZpbHRlci1cdTAwM2VtYXRjaGluZyxcbi1cdFx0XHRcdFx0c3lzX2ZpbHRlci1cdTAwM2VhbGxvdyk7XG4tXHRcdFx0aWYgKCFmaWx0ZXIpXG4tXHRcdFx0XHRyZXR1cm4gLUVOT01FTTtcbi1cdFx0XHRpZiAoZmlsdGVyLVx1MDAzZXR5cGUgPT0gREFNT05fRklMVEVSX1RZUEVfTUVNQ0cpIHtcbi1cdFx0XHRcdGludCBlcnI7XG4tXG4tXHRcdFx0XHRlcnIgPSBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKFxuLVx0XHRcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlcGF0aCxcbi1cdFx0XHRcdFx0XHRcdTAwMjZmaWx0ZXItXHUwMDNlbWVtY2dfaWQpO1xuLVx0XHRcdFx0aWYgKGVycikge1xuLVx0XHRcdFx0XHRkYW1vbl9kZXN0cm95X2ZpbHRlcihmaWx0ZXIpO1xuLVx0XHRcdFx0XHRyZXR1cm4gZXJyO1xuLVx0XHRcdFx0fVxuK1x0XHRpZiAoZmlsdGVyLVx1MDAzZXR5cGUgPT0gREFNT05fRklMVEVSX1RZUEVfTUVNQ0cpIHtcbitcdFx0XHRpbnQgZXJyO1xuK1xuK1x0XHRcdGVyciA9IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoXG4rXHRcdFx0XHRcdHN5c19maWx0ZXItXHUwMDNlcGF0aCxcbitcdFx0XHRcdFx0XHUwMDI2ZmlsdGVyLVx1MDAzZW1lbWNnX2lkKTtcbitcdFx0XHRpZiAoZXJyKSB7XG4rXHRcdFx0XHRkYW1vbl9kZXN0cm95X2ZpbHRlcihmaWx0ZXIpO1xuK1x0XHRcdFx0cmV0dXJuIGVycjtcbiBcdFx0XHR9XG4tXHRcdFx0ZGFtb25fYWRkX2ZpbHRlcihjLCBmaWx0ZXIpO1xuIFx0XHR9XG4rXHRcdGRhbW9uX2FkZF9maWx0ZXIocHJvYmUsIGZpbHRlcik7XG4rXHR9XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwcm9iZSxcbitcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpzeXNfcHJvYmUpXG4re1xuK1x0c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMgKnN5c19maWx0ZXJzO1xuK1xuK1x0c3lzX2ZpbHRlcnMgPSBzeXNfcHJvYmUtXHUwMDNlZmlsdGVycztcbitcdGlmICghc3lzX2ZpbHRlcnMpXG4rXHRcdHJldHVybiAwO1xuK1x0cmV0dXJuIGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHByb2JlLCBzeXNfZmlsdGVycyk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4rXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMgKnN5c19wcm9iZXMpXG4re1xuK1x0aW50IGksIGVycjtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHN5c19wcm9iZXMtXHUwMDNlbnI7IGkrKykge1xuK1x0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKnN5c19wcm9iZTtcbitcdFx0c3RydWN0IGRhbW9uX3Byb2JlICpwO1xuK1xuK1x0XHRwID0gZGFtb25fbmV3X3Byb2JlKCk7XG4rXHRcdGlmICghcClcbitcdFx0XHRyZXR1cm4gLUVOT01FTTtcbitcdFx0ZGFtb25fYWRkX3Byb2JlKGN0eCwgcCk7XG4rXHRcdHN5c19wcm9iZSA9IHN5c19wcm9iZXMtXHUwMDNlcHJvYmVzX2FycltpXTtcbitcdFx0ZXJyID0gZGFtb25fc3lzZnNfc2V0X3Byb2JlKHAsIHN5c19wcm9iZSk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmggYi9tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmhcbmluZGV4IGEwMDE2ODczMDQ0NWQyLi4wZWM3ZDE0ZDM1NGU3NyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaFxuKysrIGIvbW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oXG5AQCAtMTU0Niw2ICsxNTQ2LDIwIEBAIHN0YXRpYyB2b2lkIGRhbW9uX3Rlc3Rfd2Fsa19jb250cm9sX29ic29sZXRlKHN0cnVjdCBrdW5pdCAqdGVzdClcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfcmFuZChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0c3RydWN0IGRhbW9uX2N0eCBjdHg7XG4rXHRpbnQgaTtcbitcbitcdHByYW5kb21fc2VlZF9zdGF0ZShcdTAwMjZjdHgucm5kX3N0YXRlLCBnZXRfcmFuZG9tX3U2NCgpKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwMDAwOyBpKyspIHtcbitcdFx0dW5zaWduZWQgbG9uZyBybmQgPSBkYW1vbl9yYW5kKFx1MDAyNmN0eCwgMCwgMTApO1xuK1xuK1x0XHRLVU5JVF9FWFBFQ1RfR0UodGVzdCwgcm5kLCAwKTtcbitcdFx0S1VOSVRfRVhQRUNUX0xFKHRlc3QsIHJuZCwgOSk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBkYW1vbl90ZXN0X2Nhc2VzW10gPSB7XG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3RfdGFyZ2V0KSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9yZWdpb25zKSxcbkBAIC0xNTc3LDYgKzE1OTEsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZGFtb25fdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShkYW1vbl90ZXN0X2FwcGx5X21pbl9ucl9yZWdpb25zKSxcbiBcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9pc19sYXN0X3JlZ2lvbiksXG4gXHRLVU5JVF9DQVNFKGRhbW9uX3Rlc3Rfd2Fsa19jb250cm9sX29ic29sZXRlKSxcbitcdEtVTklUX0NBU0UoZGFtb25fdGVzdF9yYW5kKSxcbiBcdHt9LFxuIH07XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaFxuaW5kZXggMmVhYWE1YWUzYzVlZDcuLmI0M2RlZWU2MGZlOTUzIDEwMDc1NVxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2hcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoXG5AQCAtOTksMTQgKzk5LDU1IEBAIHRlc3Rfc3RhdHMoKVxuIFx0ZG9uZVxuIH1cbiBcbit0ZXN0X2Rlc3QoKVxuK3tcbitcdGRlc3RfZGlyPSQxXG4rXHRlbnN1cmVfZmlsZSBcIiRkZXN0X2Rpci9pZFwiIFwiZXhpc3RcIiBcIjYwMFwiXG4rXHRlbnN1cmVfZmlsZSBcIiRkZXN0X2Rpci93ZWlnaHRcIiBcImV4aXN0XCIgXCI2MDBcIlxuK31cbitcbit0ZXN0X2Rlc3RzKClcbit7XG4rXHRkZXN0c19kaXI9JDFcbitcdGVuc3VyZV9maWxlIFwiJGRlc3RzX2Rpci9ucl9kZXN0c1wiIFwiZXhpc3RcIiBcIjYwMFwiXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRkZXN0c19kaXIvbnJfZGVzdHNcIiBcIjFcIiBcInZhbGlkIGlucHV0XCJcbitcdHRlc3RfZGVzdCBcIiRkZXN0c19kaXIvMFwiXG4rXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRkZXN0c19kaXIvbnJfZGVzdHNcIiBcIjJcIiBcInZhbGlkIGlucHV0XCJcbitcdHRlc3RfZGVzdCBcIiRkZXN0c19kaXIvMFwiXG4rXHR0ZXN0X2Rlc3QgXCIkZGVzdHNfZGlyLzFcIlxuK1xuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZGVzdHNfZGlyL25yX2Rlc3RzXCIgXCIwXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRlbnN1cmVfZGlyIFwiJGRlc3RzX2Rpci8wXCIgXCJub3RfZXhpc3RcIlxuK1x0ZW5zdXJlX2RpciBcIiRkZXN0c19kaXIvMVwiIFwibm90X2V4aXN0XCJcbit9XG4rXG4gdGVzdF9maWx0ZXIoKVxuIHtcbiBcdGZpbHRlcl9kaXI9JDFcbiBcdGVuc3VyZV9maWxlIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwiZXhpc3RcIiBcIjYwMFwiXG4tXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRmaWx0ZXJfZGlyL3R5cGVcIiBcImFub25cIiBcInZhbGlkIGlucHV0XCJcbi1cdGVuc3VyZV93cml0ZV9zdWNjIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwibWVtY2dcIiBcInZhbGlkIGlucHV0XCJcbi1cdGVuc3VyZV93cml0ZV9zdWNjIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwiYWRkclwiIFwidmFsaWQgaW5wdXRcIlxuLVx0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZmlsdGVyX2Rpci90eXBlXCIgXCJ0YXJnZXRcIiBcInZhbGlkIGlucHV0XCJcbitcbitcdGxvY2FsIGRpcl9uYW1lPSQoYmFzZW5hbWUgXCIkKGRpcm5hbWUgXCIkZmlsdGVyX2RpclwiKVwiKVxuK1x0aWYgIFsgXCIkZGlyX25hbWVcIiA9IFwiZmlsdGVyc1wiIF0gfHwgWyBcIiRkaXJfbmFtZVwiID0gXCJvcHNfZmlsdGVyc1wiIF1cbitcdHRoZW5cbitcdFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZmlsdGVyX2Rpci90eXBlXCIgXCJhbm9uXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRcdGVuc3VyZV93cml0ZV9zdWNjIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwibWVtY2dcIiBcInZhbGlkIGlucHV0XCJcbitcdGZpXG4rXHRpZiAgWyBcIiRkaXJfbmFtZVwiID0gXCJmaWx0ZXJzXCIgXSB8fCBbIFwiJGRpcl9uYW1lXCIgPSBcImNvcmVfZmlsdGVyc1wiIF1cbitcdHRoZW5cbitcdFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZmlsdGVyX2Rpci90eXBlXCIgXCJhZGRyXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRcdGVuc3VyZV93cml0ZV9zdWNjIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwidGFyZ2V0XCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRmaVxuK1x0aWYgWyBcIiRkaXJfbmFtZVwiID0gXCJjb3JlX2ZpbHRlcnNcIiBdXG4rXHR0aGVuXG4rXHRcdGVuc3VyZV93cml0ZV9mYWlsIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwiYW5vblwiIFwib3BzIHR5cGVcIlxuK1x0XHRlbnN1cmVfd3JpdGVfZmFpbCBcIiRmaWx0ZXJfZGlyL3R5cGVcIiBcIm1lbWNnXCIgXCJvcHMgdHlwZVwiXG4rXHRmaVxuK1x0aWYgWyBcIiRkaXJfbmFtZVwiICA9IFwib3BzX2ZpbHRlcnNcIiBdXG4rXHR0aGVuXG4rXHRcdGVuc3VyZV93cml0ZV9mYWlsIFwiJGZpbHRlcl9kaXIvdHlwZVwiIFwiYWRkclwiIFwiY29yZSB0eXBlXCJcbitcdFx0ZW5zdXJlX3dyaXRlX2ZhaWwgXCIkZmlsdGVyX2Rpci90eXBlXCIgXCJ0YXJnZXRcIiBcImNvcmUgdHlwZVwiXG4rXHRmaVxuIFx0ZW5zdXJlX3dyaXRlX2ZhaWwgXCIkZmlsdGVyX2Rpci90eXBlXCIgXCJmb29cIiBcImludmFsaWQgaW5wdXRcIlxuIFx0ZW5zdXJlX2ZpbGUgXCIkZmlsdGVyX2Rpci9tYXRjaGluZ1wiIFwiZXhpc3RcIiBcIjYwMFwiXG4gXHRlbnN1cmVfZmlsZSBcIiRmaWx0ZXJfZGlyL21lbWNnX3BhdGhcIiBcImV4aXN0XCIgXCI2MDBcIlxuQEAgLTE1OCw2ICsxOTksMjAgQEAgdGVzdF9nb2FsKClcbiBcdGVuc3VyZV9kaXIgXCIkZ29hbF9kaXJcIiBcImV4aXN0XCJcbiBcdGVuc3VyZV9maWxlIFwiJGdvYWxfZGlyL3RhcmdldF92YWx1ZVwiIFwiZXhpc3RcIiBcIjYwMFwiXG4gXHRlbnN1cmVfZmlsZSBcIiRnb2FsX2Rpci9jdXJyZW50X3ZhbHVlXCIgXCJleGlzdFwiIFwiNjAwXCJcbitcdGVuc3VyZV9maWxlIFwiJGdvYWxfZGlyL3RhcmdldF9tZXRyaWNcIiBcImV4aXN0XCIgXCI2MDBcIlxuK1x0bG9jYWwgZnBhdGg9XCIkZ29hbF9kaXIvdGFyZ2V0X21ldHJpY1wiXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRmcGF0aFwiIFwidXNlcl9pbnB1dFwiIFwidmFsaWQgaW5wdXRcIlxuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZnBhdGhcIiBcInNvbWVfbWVtX3BzaV91c1wiIFwidmFsaWQgaW5wdXRcIlxuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZnBhdGhcIiBcIm5vZGVfbWVtX3VzZWRfYnBcIiBcInZhbGlkIGlucHV0XCJcbitcdGVuc3VyZV93cml0ZV9zdWNjIFwiJGZwYXRoXCIgXCJub2RlX21lbV9mcmVlX2JwXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRmcGF0aFwiIFwibm9kZV9tZW1jZ191c2VkX2JwXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRmcGF0aFwiIFwibm9kZV9tZW1jZ19mcmVlX2JwXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRmcGF0aFwiIFwiYWN0aXZlX21lbV9icFwiIFwidmFsaWQgaW5wdXRcIlxuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZnBhdGhcIiBcImluYWN0aXZlX21lbV9icFwiIFwidmFsaWQgaW5wdXRcIlxuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkZnBhdGhcIiBcIm5vZGVfZWxpZ2libGVfbWVtX2JwXCIgXCJ2YWxpZCBpbnB1dFwiXG4rXHRlbnN1cmVfd3JpdGVfZmFpbCBcIiRmcGF0aFwiIFwiZm9vXCIgXCJpbnZhbGlkIGlucHV0XCJcbitcdGVuc3VyZV9maWxlIFwiJGdvYWxfZGlyL25pZFwiIFwiZXhpc3RcIiBcIjYwMFwiXG4rXHRlbnN1cmVfZmlsZSBcIiRnb2FsX2Rpci9wYXRoXCIgXCJleGlzdFwiIFwiNjAwXCJcbiB9XG4gXG4gdGVzdF9nb2FscygpXG5AQCAtMjA3LDcgKzI2MiwxMCBAQCB0ZXN0X3NjaGVtZSgpXG4gXHRlbnN1cmVfZmlsZSBcIiRzY2hlbWVfZGlyL2FwcGx5X2ludGVydmFsX3VzXCIgXCJleGlzdFwiIFwiNjAwXCJcbiBcdHRlc3RfcXVvdGFzIFwiJHNjaGVtZV9kaXIvcXVvdGFzXCJcbiBcdHRlc3Rfd2F0ZXJtYXJrcyBcIiRzY2hlbWVfZGlyL3dhdGVybWFya3NcIlxuK1x0dGVzdF9kZXN0cyBcIiRzY2hlbWVfZGlyL2Rlc3RzXCJcbiBcdHRlc3RfZmlsdGVycyBcIiRzY2hlbWVfZGlyL2ZpbHRlcnNcIlxuK1x0dGVzdF9maWx0ZXJzIFwiJHNjaGVtZV9kaXIvY29yZV9maWx0ZXJzXCJcbitcdHRlc3RfZmlsdGVycyBcIiRzY2hlbWVfZGlyL29wc19maWx0ZXJzXCJcbiBcdHRlc3Rfc3RhdHMgXCIkc2NoZW1lX2Rpci9zdGF0c1wiXG4gXHR0ZXN0X3RyaWVkX3JlZ2lvbnMgXCIkc2NoZW1lX2Rpci90cmllZF9yZWdpb25zXCJcbiB9XG5AQCAtMzQ2LDggKzQwNCwxMyBAQCB0ZXN0X3Byb2JlcygpXG4gXHRlbnN1cmVfd3JpdGVfc3VjYyBcIiRwcm9iZXNfZGlyL25yX3Byb2Jlc1wiIFwiMVwiIFwidmFsaWQgaW5wdXRcIlxuIFx0dGVzdF9wcm9iZSBcIiRwcm9iZXNfZGlyLzBcIlxuIFxuK1x0ZW5zdXJlX3dyaXRlX3N1Y2MgXCIkcHJvYmVzX2Rpci9ucl9wcm9iZXNcIiBcIjJcIiBcInZhbGlkIGlucHV0XCJcbitcdHRlc3RfcHJvYmUgXCIkcHJvYmVzX2Rpci8wXCJcbitcdHRlc3RfcHJvYmUgXCIkcHJvYmVzX2Rpci8xXCJcbitcbiBcdGVuc3VyZV93cml0ZV9zdWNjIFwiJHByb2Jlc19kaXIvbnJfcHJvYmVzXCIgXCIwXCIgXCJ2YWxpZCBpbnB1dFwiXG4gXHRlbnN1cmVfZGlyIFwiJHByb2Jlc19kaXIvMFwiIFwibm90X2V4aXN0XCJcbitcdGVuc3VyZV9kaXIgXCIkcHJvYmVzX2Rpci8xXCIgXCJub3RfZXhpc3RcIlxuIH1cbiBcbiB0ZXN0X21vbml0b3JpbmdfYXR0cnMoKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6MTYuNjY1ODEyMDc4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODEyNDA3MjIzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoOiBBIEZvY3VzZWQgUmV2aWV3KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgdGhlIERBTU9OIHN1YnN5c3RlbSBpbiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgY2hhbmdlcyBzcGFuIHF1aXRlIGEgZmV3IGZpbGVzOiB0aGUgZG9jdW1lbnRhdGlvbiAoQUJJIGFuZCBkZXNpZ24gZG9jcyksIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIChgY29yZS5jYCwgYHN5c2ZzLmNgKSwgYSBLVW5pdCB0ZXN0IGhlYWRlciwgYW5kIGEgc2VsZi10ZXN0IHNjcmlwdCAoYHN5c2ZzLnNoYCkuIFRoaXMgc2lnbmFscyBhIHBvdGVudGlhbGx5IHN1YnN0YW50aWFsIG1vZGlmaWNhdGlvbiwgd2FycmFudGluZyBhIGNsb3NlIGxvb2suXG5cbkZpcnN0IHVwLCBgbW0vZGFtb24vY29yZS5jYC4gVGhlIGNvcmUgbG9naWMgb2YgYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2AgaGFzIGJlZW4gbW9kaWZpZWQuIFJlYWRpbmcgdGhlIGNvZGUsIEkgc2VlIHRoaXMgaXMgYWJvdXQgbWVyZ2luZyBjb250aWd1b3VzIHJlZ2lvbnMuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgYW4gb3B0aW1pemF0aW9uIHRoYXQgc2hvdWxkIGltcHJvdmUgZWZmaWNpZW5jeS4gVGhlIG9yaWdpbmFsIGNvZGUgaXRlcmF0ZWQgdGhyb3VnaCBlYWNoIHNvdXJjZSByZWdpb24sIGJ1dCB0aGUgbmV3IHZlcnNpb24gZXhwbGljaXRseSBjaGVja3MgZm9yIGNvbnRpZ3VvdXMgcmVnaW9ucyBhbmQgbWVyZ2VzIHRoZW0gaW50byBhIHNtYWxsZXIgc2V0IGJlZm9yZSBzZXR0aW5nIHRoZW0gb24gdGhlIGRlc3RpbmF0aW9uLiBHb29kIHByYWN0aWNlLlxuXG5OZXh0LCBJJ2xsIHR1cm4gbXkgYXR0ZW50aW9uIHRvIGBtbS9kYW1vbi9zeXNmcy5jYC4gSXQgbG9va3MgbGlrZSB0aGUgd2F5IGZpbHRlcnMgYXJlIHNldCBmb3IgcHJvYmVzIGhhcyBiZWVuIGFsdGVyZWQuIFNwZWNpZmljYWxseSwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzYCBhbmQgdGhlIGZ1bmN0aW9uIHRha2VzIGRpZmZlcmVudCBhcmd1bWVudHMuXG5cbk5vdywgSSdtIGN1cmlvdXMgd2hhdCBjb25maWdzIGFyZSBuZWNlc3NhcnkgdG8gc3VwcG9ydCB0aGlzIHBhdGNoLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBjaGFuZ2VzIHRvIHRoZXNlIGNvcmUgZnVuY3Rpb25zLiBJIHRoaW5rIEknbGwgdXNlIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIEkndmUgZXhhbWluZWQgdG8gY2hlY2sgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIHRoaXMgcGF0Y2ggdG8gZnVuY3Rpb24gY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjYxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzg1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6MjQuNzg5ODg2ODI2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTgxMzI5MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz0xMzI4PXN0YXRpYyBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9udGhfdGFyZ2V0KGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTM0Ni0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTM0NzpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTEzNDgtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTEzODI9c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0KFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzODgtXFxubW0vZGFtb24vY29yZS5jOjEzODk6XFx0ZXJyID0gZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKGRzdCwgc3JjLCBzcmNfbWluX3JlZ2lvbl9zeik7XFxubW0vZGFtb24vY29yZS5jLTEzOTAtXFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMjAwPXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X3RhcmdldF9yZWdpb25zX2ZvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTIxNi1cXHR9XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjEyMTc6XFx0ZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKGRzdF90YXJnZXQsIHNyY190YXJnZXQsIDEpO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMjE4LVxcdGkgPSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDoyNy41ODgwMjQ4NDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA3OTY5NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyBteSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIEtjb25maWcgYW5kIERBTU9OLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBLY29uZmlnIGZvciBEQU1PTioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBhc3BlY3RzIG9mIERBTU9OLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWVudGFsbHkgcGFyc2UgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdtIGltbWVkaWF0ZWx5IGludGVyZXN0ZWQgaW4gdGhlIGxldmVsIG9mIGdyYW51bGFyaXR5IGF2YWlsYWJsZS4gQXJlIHRoZXJlIGZpbmUtZ3JhaW5lZCBjb250cm9scyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHNwZWNpZmljIERBTU9OIGZlYXR1cmVzLCBvciBpcyBpdCBtb3JlIG9mIGEgXCJ3aG9sZSBob2dcIiBhcHByb2FjaD8gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBhdmFpbGFibGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIHZhcmlvdXMgb3B0aW9ucy4gS25vd2luZyB0aGUgYnVpbGQgbWF0cml4IGhlcmUgaXMga2V5IOKAkyB3aGF0IGtlcm5lbCBjb25maWd1cmF0aW9ucyAqcmVxdWlyZSogREFNT04sIHdoaWNoICplbmFibGUqIHNwZWNpZmljIGZ1bmN0aW9uYWxpdGllcywgYW5kIHdoYXQgY29uZmxpY3RzIGV4aXN0PyBJJ20gYW50aWNpcGF0aW5nIHBvdGVudGlhbCBjcm9zcy1hcmNoaXRlY3R1cmUgdmFyaWF0aW9uczsgS2NvbmZpZyBjYW4gZ2V0IHF1aXRlIGRpdmVyZ2VudCBhY3Jvc3MgcGxhdGZvcm1zLCBzbyBJIG5lZWQgdG8gbWVudGFsbHkgcHJlcGFyZSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYXJjaC1zcGVjaWZpYyBzZXR0aW5ncyBpZiB0aGVyZSBhcmUgYW55LiBJJ2xsIGFsc28gYmUgbG9va2luZyBmb3IgYW55IGluZGljYXRpb25zIG9mIGV4cGVyaW1lbnRhbCBvciBcInN0YWdpbmdcIiBzdGF0dXMg4oCTIGFyZSB3ZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgdW5zdGFibGUgZmVhdHVyZXMsIG9yIHRoaW5ncyByZWFkeSBmb3Igd2lkZXIgZGVwbG95bWVudD8gTXkgZ29hbCBpcyB0byBncmFzcCB0aGUgY29uZmlndXJhYmlsaXR5IG9mIERBTU9OIGFuZCBhbnRpY2lwYXRlIGNvbW1vbiBzdXBwb3J0IGFuZCBkZWJ1Z2dpbmcgcXVlcmllcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdlIGNhbiBmaW5lLXR1bmUgREFNT04gYmVoYXZpb3IgYmFzZWQgb24gb3VyIHNwZWNpZmljIHdvcmtsb2FkIG5lZWRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Nzg1LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6MzEuMDk1OTk2NzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAzNDU4Nzc5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDozMy4xMzA1ODk4ODJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODU1NTQyMTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgZGlnZ2luZyBpbnRvIHRoZSBtZW1vcnkgYWNjZXNzIG1vbml0b3JpbmcgKERBTU9OKSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgY29yZSBsb2dpYyBhbmQgc3lzZnMgaW50ZXJmYWNlLiBJIHNlZSB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIGBtbS9kYW1vbi9jb3JlLmNgIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgYERBTU9OYCBhbmQgYERBTU9OX1NZU0ZTYCBjb25maWcgb3B0aW9ucyDigJMgdGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cyB0byBwYXkgYXR0ZW50aW9uIHRvIGhlcmUuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIGRlZXBlciBsb29rIGF0IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgd2l0aGluIGBtbS9kYW1vbi9zeXNmcy5jYCB0byBzZWUgZXhhY3RseSB3aGF0J3MgY2hhbmdlZCBpbiB0aGF0IGludGVyZmFjZS4gTGV0J3Mgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MTYsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDozNS45ODYxMzU0MzNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwMTE3MzI2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9zeXNmc19zZXRfZmlsdGVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9zeXNmcy5jPTE4ODk9c3RhdGljIGludCBkYW1vbl9zeXNmc19zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xOTExLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTkxMjpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzKHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUsXFxubW0vZGFtb24vc3lzZnMuYy0xOTEzLVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXJzICpzeXNfZmlsdGVycylcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTk0Mz1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3NldF9wcm9iZShzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlLFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xOTUwLVxcdFxcdHJldHVybiAwO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTk1MTpcXHRyZXR1cm4gZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnMocHJvYmUsIHN5c19maWx0ZXJzKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTE5NTItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDozOC4wODczMzEzMzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTIxMjc1Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2g6IEEgRm9jdXNlZCBSZXZpZXcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byB0aGUgREFNT04gKER5bmFtaWMgQWRkcmVzc2FibGUgTWVtb3J5IE9OLWxpbmUpIGNvZGUsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYSBmZXcga2V5IGZ1bmN0aW9ucy4gTGV0J3Mgc2VlLi4uIGl0J3MgdG91Y2hpbmcgYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2AsIGFuZCBJIGtub3cgdGhhdCBvbmU7IGl0J3MgY2VudHJhbCB0byBob3cgREFNT04gaGFuZGxlcyBpdHMgdGFyZ2V0IG1lbW9yeSByZWdpb25zLiBUaGUgb3RoZXIgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIGFyZSBgZGFtb25fc3lzZnNfc2V0X3Byb2Jlc2AsIHdoaWNoIGxvb2tzIGxpa2UgaXQncyBiZWVuIHJlZmFjdG9yZWQgaW50byBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYW5kIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYC4gT2theSwgdGhhdCdzIGEgbW9yZSBncmFudWxhciBhcHByb2FjaCwgd2hpY2ggdXN1YWxseSBtZWFucyBtb3JlIGNvbnRyb2wgb3IgZmxleGliaWxpdHkuIEknbGwgbmVlZCB0byBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgc3BsaXQuIEFkZGl0aW9uYWxseSwgaXQncyBwbGF5aW5nIHdpdGggdGhlIHN5c2ZzIGludGVyZmFjZXM6IGBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlyc2AgYW5kIGBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzYCBhcmUgYWxzbyBpbiB0aGUgY3Jvc3NoYWlycy4gVGhlc2UgaGFuZGxlIHRoZSBkaXJlY3RvcnkgY3JlYXRpb24gYW5kIHJlbW92YWwgZm9yIHByb2JlcywgcmlnaHQ/IFRoaXMgc3VnZ2VzdHMgYSBjaGFuZ2UgaW4gaG93IERBTU9OIHN0cnVjdHVyZXMgaXRzIHN5c2ZzIGhpZXJhcmNoeS5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgLiBXaGVyZSBpcyBpdCBjYWxsZWQ/IEFoLCBpdCdzIGNhbGxlZCBmcm9tIGBkYW1vbl9jb21taXRfdGFyZ2V0YC4gVGhhdCdzIGltcG9ydGFudC4gYGRhbW9uX2NvbW1pdF90YXJnZXRgIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24sIHNvIGFueSBjaGFuZ2UgaW4gYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2AgaGFzIHRoZSBwb3RlbnRpYWwgdG8gcmlwcGxlIHRocm91Z2hvdXQgdGhlIERBTU9OIHN5c3RlbS4gVGhpcyBjb25uZWN0aW9uIGlzIGtleSBhbmQgcmVxdWlyZXMgY2FyZWZ1bCBzY3J1dGlueS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBtb2RpZmljYXRpb24gdG8gYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2Agd2lsbCBpbXBhY3QgdGhpcyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyODksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6NDIuMjA4NjA5MTA2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc5MzM3NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2NvbW1pdF90YXJnZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9kYW1vbi5oPTc0PXN0cnVjdCBkYW1vbl9yZWdpb24ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9kYW1vbi5oLTk5LSAqXFxuaW5jbHVkZS9saW51eC9kYW1vbi5oOjEwMDogKiBAb2Jzb2xldGUgaXMgdXNlZCBvbmx5IGZvciBkYW1vbl9jb21taXRfdGFyZ2V0cygpIHNvdXJjZSB0YXJnZXRzLCB0byBzcGVjaWZ5XFxuaW5jbHVkZS9saW51eC9kYW1vbi5oOjEwMTogKiB0aGUgbWF0Y2hpbmcgZGVzdGluYXRpb24gdGFyZ2V0cyBhcmUgb2Jzb2xldGUuICBSZWFkIGRhbW9uX2NvbW1pdF90YXJnZXRzKClcXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmgtMTAyLSAqIHRvIHNlZSBob3cgaXQgaXMgaGFuZGxlZC5cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMzI4PXN0YXRpYyBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9udGhfdGFyZ2V0KGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTM0Ni0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTM0NzpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTEzNDgtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzODEtXFxubW0vZGFtb24vY29yZS5jOjEzODI6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0KFxcbm1tL2RhbW9uL2NvcmUuYy0xMzgzLVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCwgYm9vbCBkc3RfaGFzX3BpZCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzg4LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzg5OlxcdGVyciA9IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3QsIHNyYywgc3JjX21pbl9yZWdpb25fc3opO1xcbm1tL2RhbW9uL2NvcmUuYy0xMzkwLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQwNS0gKlxcbm1tL2RhbW9uL2NvcmUuYzoxNDA2OiAqIFJldmVydCB0YXJnZXQgc3RhdGVzIHRoYXQgY2hhbmdlZCBieSBkYW1vbl9jb21taXRfdGFyZ2V0KCksIGFuZCBjYW5ub3QgYmVcXG5tbS9kYW1vbi9jb3JlLmMtMTQwNy0gKiBjbGVhbmVkIHVwIGJ5IHRoZSBkZXN0aW5hdGlvbiBjb250ZXh0J3Mgb3BzLmNsZWFudXBfdGFyZ2V0KCkuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTQwOT1zdGF0aWMgdm9pZCBkYW1vbl9yZXZlcnRfdGFyZ2V0X2NvbW1pdHMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0MjQtXFxubW0vZGFtb24vY29yZS5jOjE0MjU6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0cyhcXG5tbS9kYW1vbi9jb3JlLmMtMTQyNi1cXHRcXHRzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDM4LVxcdFxcdGlmIChzcmNfdGFyZ2V0IFxcdTAwMjZcXHUwMDI2ICFzcmNfdGFyZ2V0LVxcdTAwM2VvYnNvbGV0ZSkge1xcbm1tL2RhbW9uL2NvcmUuYzoxNDM5OlxcdFxcdFxcdGVyciA9IGRhbW9uX2NvbW1pdF90YXJnZXQoXFxubW0vZGFtb24vY29yZS5jLTE0NDAtXFx0XFx0XFx0XFx0XFx0ZHN0X3RhcmdldCwgZGFtb25fdGFyZ2V0X2hhc19waWQoZHN0KSxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDczLVxcdFxcdH1cXG5tbS9kYW1vbi9jb3JlLmM6MTQ3NDpcXHRcXHRlcnIgPSBkYW1vbl9jb21taXRfdGFyZ2V0KG5ld190YXJnZXQsIGZhbHNlLFxcbm1tL2RhbW9uL2NvcmUuYy0xNDc1LVxcdFxcdFxcdFxcdHNyY190YXJnZXQsIGRhbW9uX3RhcmdldF9oYXNfcGlkKHNyYyksXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTU4Mz1pbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNjA4LVxcdFxcdHJldHVybiBlcnI7XFxubW0vZGFtb24vY29yZS5jOjE2MDk6XFx0ZXJyID0gZGFtb25fY29tbWl0X3RhcmdldHMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xNjEwLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9MTIwMD1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X2NvbW1pdF90YXJnZXRfcmVnaW9uc19mb3Ioc3RydWN0IGt1bml0ICp0ZXN0LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyMTYtXFx0fVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMjE3OlxcdGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3RfdGFyZ2V0LCBzcmNfdGFyZ2V0LCAxKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTIxOC1cXHRpID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6NDQuMDg3OTUyNDIzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDI4OTY0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBxdWVzdGlvbjpcblxuKipEZWVwIERpdmUgaW50byBgZGFtb25fY29tbWl0X2N0eGAqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGUgcXVlc3Rpb246IFwid2hlcmUgaXMgYGRhbW9uX2NvbW1pdF9jdHhgIGNhbGxlZCBmcm9tP1wiIFRoYXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZGVidWdnaW5nIHF1ZXN0aW9uLCBhbmQgSSdkIGFwcHJvYWNoIGl0IHdpdGggYSBmZXcgYXNzdW1wdGlvbnMgYW5kIGEgc3BlY2lmaWMgbWV0aG9kIGluIG1pbmQuXG5cbkZpcnN0LCBJIGFzc3VtZSB0aGlzIGlzIGFib3V0IGEgZnVuY3Rpb24gb3IgYSBtZXRob2Qgd2l0aGluIGEgY29kZSBiYXNlLCBwcmVzdW1hYmx5IHJlbGF0ZWQgdG8gZGF0YSBhY2Nlc3MsIG1lbW9yeSBtYW5hZ2VtZW50LCBvciBtYXliZSBldmVuIGEgZGF0YWJhc2UgY29udGV4dC4gVGhlIG5hbWUgYGRhbW9uX2NvbW1pdF9jdHhgIGhpbnRzIGF0IHNvbWUga2luZCBvZiBjb21taXQgb3BlcmF0aW9uLCBwb3NzaWJseSB3aXRoaW4gYSBjb250ZXh0LiBNeSBtaW5kIGltbWVkaWF0ZWx5IHN0YXJ0cyBjYXRhbG9naW5nIHBvc3NpYmxlIGFyZWFzIGl0ICpjb3VsZCogYmU6IGEgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCBsaWJyYXJ5LCBhIGNhY2hpbmcgbGF5ZXIsIG9yIGV2ZW4gc29tZXRoaW5nIGludGVybmFsIHRvIGEga2VybmVsIGRyaXZlciwgZGVwZW5kaW5nIG9uIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGUgcHJvamVjdC5cblxuTm93LCBteSB0eXBpY2FsIGFwcHJvYWNoIHdvdWxkIGJlIHRvIHVzZSB0b29saW5nLiBJJ2QgcmVhY2ggZm9yIGEgY29kZSBzZWFyY2ggdXRpbGl0eeKAlGBncmVwYCwgYGFja2AsIGByaXBncmVwYCwgb3IgaWYgSSdtIHVzaW5nIGEgbW9kZXJuIElERSwgSSdkIHVzZSBpdHMgYnVpbHQtaW4gc2VhcmNoIHdpdGggY3Jvc3MtcmVmZXJlbmNlIGNhcGFiaWxpdGllcy4gSSdtIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgZXhhY3Qgc3RyaW5nIGBkYW1vbl9jb21taXRfY3R4YCBpcyB1c2VkLCBpZGVhbGx5IGxvb2tpbmcgZm9yIGZ1bmN0aW9uIGNhbGxzIGFuZCBwb3RlbnRpYWxseSBhc3NpZ25tZW50cy4gSSB3b3VsZCBzdGFydCB3aXRoIGFuIGV4YWN0IG1hdGNoIHNlYXJjaCB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMsIGJ1dCBJIG1pZ2h0IHdpZGVuIHRoZSBzZWFyY2ggcGFyYW1ldGVycyB0byBhY2NvdW50IGZvciB2YXJpYXRpb25zIGluIG5hbWluZyBjb252ZW50aW9ucywgbGlrZSBwcmVmaXhpbmcgd2l0aCBhIG5hbWVzcGFjZSBvciBtb2RpZnlpbmcgY2FzaW5nLlxuXG5JZiBJJ20gd29ya2luZyB3aXRoIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBsaWtlIEdpdCwgSSdkIGFsc28gc3RhcnQgdG8gdGhpbmsgYWJvdXQgYGdpdCBibGFtZWAgb3IgdGhlIHJlcG9zaXRvcnkgaGlzdG9yeS4gSWYgSSBrbm93IHRoZSBjb2RlIGJhc2Ugd2VsbCwgSSBtYXkgcmVtZW1iZXIgYSBjbGFzcyBvciBmaWxlIHRoYXQgY291bGQgcG90ZW50aWFsbHkgY2FsbCB0aGUgZnVuY3Rpb24sIGFuZCBJIGNvdWxkIHNlYXJjaCBvbmx5IHdpdGhpbiB0aGF0IGZpbGUuIFxuXG5UaGUgZ29hbCBoZXJlIGlzIHByZWNpc2UgaWRlbnRpZmljYXRpb24gb2YgdGhlIGNhbGwgc2l0ZXMuIE9uY2UgSSBoYXZlIHRoZSBjYWxsIHNpdGVzLCBJIGNhbiBzdGFydCB0byByZWFzb24gYWJvdXQgdGhlIGNhbGwgc3RhY2ssIHRoZSBpbnB1dCBhcmd1bWVudHMsIGFuZCB1bHRpbWF0ZWx5IHRoZSBvdmVyYWxsIGZ1bmN0aW9uIGFuZCB3aGF0IGl0J3Mgc3VwcG9zZWQgdG8gZG8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODExLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6NDguMDMwODUyNjE4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU2ODQ1MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2NvbW1pdF9jdHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9kYW1vbi5oPTg1Mj1zdHJ1Y3QgZGFtb25fY3R4IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZGFtb24uaC04ODgtXFx0ICogaW5kaWNhdGUgaWYgdGhpcyBtYXkgYmUgY29ycnVwdGVkLiAgQ3VycmVudG9ubHkgdGhpcyBpcyBzZXQgb25seSBmb3JcXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmg6ODg5OlxcdCAqIGRhbW9uX2NvbW1pdF9jdHgoKSBmYWlsdXJlLlxcbmluY2x1ZGUvbGludXgvZGFtb24uaC04OTAtXFx0ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmg9MTA1Mj12b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5pbmNsdWRlL2xpbnV4L2RhbW9uLmgtMTA1My1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKipzY2hlbWVzLCBzc2l6ZV90IG5yX3NjaGVtZXMpO1xcbmluY2x1ZGUvbGludXgvZGFtb24uaDoxMDU0OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKm9sZF9jdHgsIHN0cnVjdCBkYW1vbl9jdHggKm5ld19jdHgpO1xcbmluY2x1ZGUvbGludXgvZGFtb24uaC0xMDU1LWludCBkYW1vbl9ucl9ydW5uaW5nX2N0eHModm9pZCk7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTUzOT1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9wcm9iZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTU3MC0vKipcXG5tbS9kYW1vbi9jb3JlLmM6MTU3MTogKiBkYW1vbl9jb21taXRfY3R4KCkgLSBDb21taXQgcGFyYW1ldGVycyBvZiBhIERBTU9OIGNvbnRleHQgdG8gYW5vdGhlci5cXG5tbS9kYW1vbi9jb3JlLmMtMTU3Mi0gKiBAZHN0OlxcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT04gY29udGV4dC5cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNTgyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxNTgzOmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xNTg0LXtcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9MjcxPXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNDAtXFx0XFx0Z290byBvdXQ7XFxubW0vZGFtb24vbHJ1X3NvcnQuYzozNDE6XFx0ZXJyID0gZGFtb25fY29tbWl0X2N0eChjdHgsIHBhcmFtX2N0eCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNDItb3V0Olxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jPTE5ND1zdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTI2Ny1cXHRcXHRnb3RvIG91dDtcXG5tbS9kYW1vbi9yZWNsYWltLmM6MjY4OlxcdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgoY3R4LCBwYXJhbV9jdHgpO1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0yNjktb3V0Olxcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMTA0PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zeXNmc19uZXdfdGVzdF9jdHgoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIxMTItXFx0XFx0cmV0dXJuIE5VTEw7XFxubW0vZGFtb24vc3lzZnMuYzoyMTEzOlxcdGVyciA9IGRhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHJ1bm5pbmdfY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIxMTQtXFx0aWYgKGVycikge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMTI3PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIxNDYtXFx0fVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjE0NzpcXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBwYXJhbV9jdHgpO1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjE0OC1cXHRpZiAoZXJyKVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjE0OS1cXHRcXHRnb3RvIG91dDtcXG5tbS9kYW1vbi9zeXNmcy5jOjIxNTA6XFx0ZXJyID0gZGFtb25fY29tbWl0X2N0eChrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHgsIHBhcmFtX2N0eCk7XFxubW0vZGFtb24vc3lzZnMuYy0yMTUxLW91dDpcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMjQyPXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X2N0eChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTI1NS1cXHRzcmMtXFx1MDAzZW1pbl9yZWdpb25fc3ogPSA0MDk2O1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMjU2OlxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKSwgMCk7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyNTctXFx0c3JjLVxcdTAwM2VtaW5fcmVnaW9uX3N6ID0gNDA5NTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTI1ODpcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyksIC1FSU5WQUwpO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMjU5LVxcdHNyYy1cXHUwMDNlbWluX3JlZ2lvbl9zeiA9IDQwOTY7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyNjAtXFx0c3JjLVxcdTAwM2VwYXVzZSA9IHRydWU7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjEyNjE6XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpLCAwKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTI2Mi1cXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBkc3QtXFx1MDAzZXBhdXNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6NDkuODg3NzAzNTc3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDgzNjExNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBgZGFtb25fY29tbWl0X2N0eGAqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2tpbmcgaG93IGBkYW1vbl9jb21taXRfY3R4YCBpcyB1dGlsaXplZCB3aXRoaW4gdGhpcyBEQU1PTiBzdWJzeXN0ZW0uIFRoZSBjb2RlIHNob3dzIGl0IGFwcGVhcmluZyBpbiBhIGZldyBrZXkgcGxhY2VzOiBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCwgYGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVyc2AsIGFuZCBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBkaXJlY3RseSBsaW5rcyBgZGFtb25fY29tbWl0X2N0eGAgdG8gdGhlIHN5c3RlbSBmaWxlIHN5c3RlbSwgb3Igc3lzZnMsIGFzIGEgcG90ZW50aWFsIGFjY2VzcyBwb2ludC4gVGhpcyBpbXBsaWVzIGEgbWV0aG9kIG9mIGV4dGVybmFsIGNvbnRyb2wgb3IgaW5wdXQgYmFzZWQgb24gdGhlc2UgdXNlcy4gXG5cblNpbmNlIEkgYW0gY29uc2lkZXJpbmcgdGhlIGZsb3cgaGVyZSwgSSBzaG91bGQgc2VlIGhvdyBlbHNlIHRoaXMgcmVhY2hlcyB0aGUgc3lzZnMuIExldCBtZSBub3cgY2hlY2sgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgLCBhcyBpdCBpcyBjYWxsZWQgYnkgYGRhbW9uX3N5c2ZzX3NldF9hdHRyc2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTQyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDQ6NTMuMDM2MDY4NzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTM2MzIwODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fc3lzZnNfc2V0X2F0dHJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmM9MTg2Nz1zdGF0aWMgc3NpemVfdCBzdGF0ZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE4ODgtXFxubW0vZGFtb24vc3lzZnMuYzoxODg5OnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9zeXNmcy5jLTE4OTAtXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX2F0dHJzICpzeXNfYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTIwNzI9c3RhdGljIGludCBkYW1vbl9zeXNmc19hcHBseV9pbnB1dHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMDg1LVxcdGN0eC1cXHUwMDNlcGF1c2UgPSBzeXNfY3R4LVxcdTAwM2VwYXVzZTtcXG5tbS9kYW1vbi9zeXNmcy5jOjIwODY6XFx0ZXJyID0gZGFtb25fc3lzZnNfc2V0X2F0dHJzKGN0eCwgc3lzX2N0eC1cXHUwMDNlYXR0cnMpO1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjA4Ny1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDo1NC44Mjk3MDcxMjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5NzE3MDUyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIERBTU9OJ3MgU3lzZnMgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2Ugd29ya3MuIEl0IHNlZW1zIGBkYW1vbl9zeXNmc19hcHBseV9pbnB1dHNgIGlzIHRoZSBrZXkgZnVuY3Rpb24sIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAgYW5kIGBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29uYC4gVGhpcyB0ZWxscyBtZSB0aGF0IGBkYW1vbl9zeXNmc19zZXRfZmlsdGVyc2AgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgdGhyb3VnaCBzeXNmcywgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC5cblxuTm93LCBmcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgSSdsbCBuZWVkIGBEQU1PTmAgYW5kIGBEQU1PTl9TWVNGU2AgZW5hYmxlZCwgb2J2aW91c2x5LiBCdXQgdG8gZnVsbHkgZXhwbG9yZSB0aGUgY2FwYWJpbGl0aWVzLCBJIHNob3VsZCBjb25zaWRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHN1cHBvcnRpbmcgY29uZmlncyB0aGF0IG1pZ2h0IGJlIHVzZWZ1bC4gSSdtIHRoaW5raW5nIHRoaW5ncyBsaWtlIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAsIGBEQU1PTl9SRUNMQUlNYCwgYW5kIGBEQU1PTl9MUlVfU09SVGAgY291bGQgYmUgYmVuZWZpY2lhbCBmb3IgY29tcHJlaGVuc2l2ZSB0ZXN0aW5nIG9mIHRoZSB3aG9sZSB0aGluZy5cblxuVGhlIGNvcmUgaW1wbGVtZW50YXRpb24gbG9va3MgdG8gYmUgaW4gYG1tL2RhbW9uL2NvcmUuY2AgYW5kIHRoZSBzeXNmcyBwYXJ0IGlzIG9idmlvdXNseSBpbiBgbW0vZGFtb24vc3lzZnMuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19EQU1PTmAgaXMgZW5hYmxlZCwgYW5kIHRoZSBzeXNmcyBiaXRzIGFyZSBjb21waWxlZCB3aGVuIGBDT05GSUdfREFNT05fU1lTRlNgIGlzIGVuYWJsZWQuIFRpbWUgdG8gdGFrZSBhIHBlZWsgYXQgYG1tL2RhbW9uL01ha2VmaWxlYCB0byBjb25maXJtIGFsbCB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIHNldCB1cCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDk5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjQ0OjU5LjYyNjg4MTIyN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTkxNzcwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2JqLVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9NYWtlZmlsZS0yLVxcbm1tL2RhbW9uL01ha2VmaWxlOjM6b2JqLXlcXHRcXHRcXHRcXHQ6PSBjb3JlLm9cXG5tbS9kYW1vbi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19EQU1PTl9WQUREUilcXHQrPSBvcHMtY29tbW9uLm8gdmFkZHIub1xcbm1tL2RhbW9uL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0RBTU9OX1BBRERSKVxcdCs9IG9wcy1jb21tb24ubyBwYWRkci5vXFxubW0vZGFtb24vTWFrZWZpbGU6NjpvYmotJChDT05GSUdfREFNT05fU1lTRlMpXFx0Kz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cXG5tbS9kYW1vbi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXFxubW0vZGFtb24vTWFrZWZpbGU6ODpvYmotJChDT05GSUdfREFNT05fTFJVX1NPUlQpXFx0Kz0gbW9kdWxlcy1jb21tb24ubyBscnVfc29ydC5vXFxubW0vZGFtb24vTWFrZWZpbGU6OTpvYmotJChDT05GSUdfREFNT05fU1RBVClcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NDo1OS43MjYwNjI1OTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIyMTU0MzQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgREFNT04gUGF0Y2ggRm9jdXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBvZiBjb3Vyc2UsIGBDT05GSUdfREFNT05gIGFuZCBgQ09ORklHX0RBTU9OX1NZU0ZTYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byB0aGUgc3BlY2lmaWNzOiBXaGF0IGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdGhpcyBwYXRjaCBpcyB0b3VjaGluZz8gSXQgbG9va3MgbGlrZSBpdCdzIG1vZGlmaWVkIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgLCBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgLCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgLCBhbmQgYGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNgLiBUaG9zZSBhcmUgdGhlIGZvY3VzIHN5bWJvbHMsIHJpZ2h0PyBJJ2xsIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aG9zZSBzaXggZnVuY3Rpb25zLlxuXG5XYWl0IGEgc2Vjb25k4oCmIEkgbmVlZCB0byBjaGVjayB0aG9zZSBmdW5jdGlvbiBkZWZpbml0aW9ucyB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIGNvbnRleHQgcmlnaHQuIE9rYXksIGxldCBtZSBjb25maXJtLiAqQ2hlY2tzIHRoZSBkZWZpbml0aW9ucyouIFJpZ2h0LCBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYCBpcyBzdGF0aWMgaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHdoaWxlIHRoZSByZXN0LCBgZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNgLCBgZGFtb25fc3lzZnNfc2V0X3Byb2JlYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZXNgLCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgLCBhbmQgYGRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNgLCBhcmUgc3RhdGljIGluIGBtbS9kYW1vbi9zeXNmcy5jYC4gU28gdGhleSBhcmUgYWxsIHN0YXRpYyB3aXRoaW4gdGhlaXIgcmVzcGVjdGl2ZSBzb3VyY2UgZmlsZXMuXG5cblRoZSBuZXh0IGNyaXRpY2FsIHF1ZXN0aW9uOiBIb3cgYXJlIHRoZXNlIGZ1bmN0aW9ucyByZWFjaGVkPyBBaCwgdGhleSdyZSBhY2Nlc3NlZCB2aWEgc3lzZnMgd3JpdGVzLCBhcmVuJ3QgdGhleT8gSWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZXJlIGFyZSBwcm9iYWJseSBzeXNjYWxscyB0aGF0IHVsdGltYXRlbHkgdHJpZ2dlciB0aGVzZS4gRm9yIGluc3RhbmNlLCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBpcyBjYWxsZWQgd2hlbiB3cml0aW5nIHRvIHRoZSBgc3RhdGVgIGZpbGUgaW4gc3lzZnMsIGFuZCBgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNgIGlzIGNhbGxlZCB3aGVuIHdyaXRpbmcgdG8gdGhlIGBucl9wcm9iZXNgIGZpbGUuIE9rYXksIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGV4YWN0IHN5c2ZzIGludGVyZmFjZSBuYW1lcyB0byBiZSBzdXJlLCBidXQgdGhhdCdzIHRoZSBnZW5lcmFsIHJvdXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg5NywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjo0NTowNi45NDc2MDgyNjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDg0MjQ4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vc3lzZnMuYz0xMDcxPXN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUgKmRhbW9uX3N5c2ZzX3Byb2JlX2FsbG9jKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTEwNzUtXFxubW0vZGFtb24vc3lzZnMuYzoxMDc2OnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlICpwcm9iZSlcXG5tbS9kYW1vbi9zeXNmcy5jLTEwNzcte1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMTUwPXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfcHJvYmVzX2FkZF9kaXJzKFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xMTgxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTE4MjpcXHRcXHRlcnIgPSBkYW1vbl9zeXNmc19wcm9iZV9hZGRfZGlycyhwcm9iZSk7XFxubW0vZGFtb24vc3lzZnMuYy0xMTgzLVxcdFxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDU6MDguNjk2MDM5OTEyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1ODY5MTU1MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJ20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBDb25maXJtYXRpb24gXHUwMDI2IEZvY3VzKipcblxuUmlnaHQsIHRoZSBkYXRhIGlzIGRlZmluaXRlbHkgdGhlcmUuIFdlJ3JlIHNlZWluZyAqc29tZXRoaW5nKiwgYXQgbGVhc3QuIFRoZSBuZXh0IGNydWNpYWwgc3RlcCBpcyBwaW5wb2ludGluZyB0aGUgYGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc2AuIFRoYXQncyB3aGVyZSB0aGUgY3JpdGljYWwgaW5mb3JtYXRpb24gbGl2ZXMuIFdlIG5lZWQgdG8gYW5hbHl6ZSB0aG9zZSBzcGVjaWZpYyByZWdpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGNvbW1pdCB0YXJnZXRzLCBhbmQgZnJvbSB0aGVyZSwgd2UgY2FuIGFzY2VydGFpbiB3aHkgdGhlIHRhcmdldHMgYXJlIHByZXNlbnQuIFdlIGFyZSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNgIHNvIHRoYXQgdGhlIG92ZXJhbGwgZGF0YSBzdHJ1Y3R1cmUgY2FuIGJlIHVuZGVyc3Rvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDU0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDU6MTEuMjgyOTU3Mzk5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTA1Mzk0MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MTMyOD1zdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzNDYtICovXFxubW0vZGFtb24vY29yZS5jOjEzNDc6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LFxcbm1tL2RhbW9uL2NvcmUuYy0xMzQ4LVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnNyYywgdW5zaWduZWQgbG9uZyBzcmNfbWluX3JlZ2lvbl9zeilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMzgyPXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldChcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzg4LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzg5OlxcdGVyciA9IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3QsIHNyYywgc3JjX21pbl9yZWdpb25fc3opO1xcbm1tL2RhbW9uL2NvcmUuYy0xMzkwLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9MTIwMD1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X2NvbW1pdF90YXJnZXRfcmVnaW9uc19mb3Ioc3RydWN0IGt1bml0ICp0ZXN0LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEyMTYtXFx0fVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMjE3OlxcdGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhkc3RfdGFyZ2V0LCBzcmNfdGFyZ2V0LCAxKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTIxOC1cXHRpID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6NDU6MTMuMTg4MzU4OTk0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMzU1MTkwMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgc29tZSBrZXkgYXJlYXMgb2YgREFNT04g4oCTIHRoZSB0YXJnZXQgcmVnaW9uIGNvbW1pdHRpbmcgYW5kIHRoZSBzeXNmcyBpbnRlcmZhY2UuIFNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgdGhlIGxvZ2ljIGZvciBgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zYCwgYGRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzYCwgYGRhbW9uX3N5c2ZzX3NldF9wcm9iZWAsIGBkYW1vbl9zeXNmc19zZXRfcHJvYmVzYCwgYGRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzYCwgYW5kIGBkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzYC4gVGhlc2UgYXJlIGFsbCBkaXJlY3RseSByZWxhdGVkIHRvIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24gdmlhIHN5c2ZzLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGVtIGFzIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcuIFdlIGhhdmUgdGhlIGNvbmZpZ3MgYERBTU9OYCBhbmQgYERBTU9OX1NZU0ZTYCBhcyByZWxldmFudC5cblxuVGhlIGNvcmUgb2YgbXkgcmVhc29uaW5nIGlzIHRoYXQgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyByZWFjaGFibGUgdGhyb3VnaCBzeXNmcyBoYXZlIGEgc3Ryb25nIHBvdGVudGlhbCBmb3IgZmluZGluZyB2dWxuZXJhYmlsaXRpZXMuIFRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBjb2RlIHBhdGhzIG9yIGFsdGVyIGV4aXN0aW5nIG9uZXMgdGhhdCBhIGZ1enplciBjYW4gZWFzaWx5IGhpdC4gVGhlIGFiaWxpdHkgdG8gbWFuaXB1bGF0ZSBEQU1PTiBwcm9iZXMgYW5kIGZpbHRlcnMgdGhyb3VnaCBzeXNmcyBwcm92aWRlcyBhIGRpcmVjdCB2ZWN0b3IuXG5cbkknbSB0aGlua2luZywgbGV0J3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlncy4gQWgsIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgYXJlIGluIHRoZSBtaXggYXMgdGhleSBvcGVyYXRlIG9uIHRoZSBhY3R1YWwgdmFsdWVzLCBhbmQgYWx0aG91Z2ggYERBTU9OX1NZU0ZTYCBpcyBzdWZmaWNpZW50IHRvIHRyaWdnZXIgdGhlIHBhcnNpbmcsIGl0J3Mgc2FmZXIgdG8gaW5jbHVkZSB0aG9zZSBhcyB0aGUgZmVhdHVyZXMgb2YgREFNT04gb2Z0ZW4gZ28gaGFuZCBpbiBoYW5kLiBCZXN0IHRvIGhhdmUgYWxsIHRoZSBwaWVjZXMgaW4gcGxhY2UgZm9yIGEgcm9idXN0IGZ1enppbmcgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2MDIsIk91dHB1dFRva2VucyI6MTg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjQ1OjE5LjUyMzg3OTkzNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NjcwNDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9uc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X2ZpbHRlcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9wcm9iZVwiLFxuICAgIFwiZGFtb25fc3lzZnNfc2V0X3Byb2Jlc1wiLFxuICAgIFwiZGFtb25fc3lzZnNfcHJvYmVfYWRkX2RpcnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3Byb2JlX3JtX2RpcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiBsb2dpYyBmb3IgY29tbWl0dGluZyB0YXJnZXQgcmVnaW9ucyAobWVyZ2luZyBjb250aWd1b3VzIHJlZ2lvbnMpIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBzZXR0aW5nIHVwIERBTU9OIHByb2JlcyBhbmQgZmlsdGVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBzeXNmcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiLFxuICAgIFwiREFNT05fUEFERFJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9maWx0ZXJzXCIsXG4gICAgXCJkYW1vbl9zeXNmc19zZXRfcHJvYmVcIixcbiAgICBcImRhbW9uX3N5c2ZzX3NldF9wcm9iZXNcIixcbiAgICBcImRhbW9uX3N5c2ZzX3Byb2JlX2FkZF9kaXJzXCIsXG4gICAgXCJkYW1vbl9zeXNmc19wcm9iZV9ybV9kaXJzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gbG9naWMgZm9yIGNvbW1pdHRpbmcgdGFyZ2V0IHJlZ2lvbnMgKG1lcmdpbmcgY29udGlndW91cyByZWdpb25zKSBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZSBmb3Igc2V0dGluZyB1cCBEQU1PTiBwcm9iZXMgYW5kIGZpbHRlcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgc3lzZnMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowcnwgh[1] Phase: Succeeded StartedAt: 2026-06-30 22:46:46 +0000 UTC FinishedAt: 2026-06-30 22:46:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 22:46:46 +0000 UTC FinishedAt: 2026-06-30 22:46:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2] Phase: Succeeded StartedAt: 2026-06-30 22:46:46 +0000 UTC FinishedAt: 2026-07-01 02:48:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 22:46:46 +0000 UTC FinishedAt: 2026-07-01 02:48:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 22:46:46 +0000 UTC FinishedAt: 2026-06-30 22:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 22:46:46 +0000 UTC FinishedAt: 2026-06-30 22:46:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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-workflowcnwgh/series-workflowcnwgh-convert-artifact-28285952/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 22:46:57 +0000 UTC FinishedAt: 2026-06-30 23:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 22:46:57 +0000 UTC FinishedAt: 2026-06-30 23:10:44 +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:*8a7d1c58-79b9-4227-82fc-cd1c4f9251bc,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-workflowcnwgh/series-workflowcnwgh-convert-artifact-28285952/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": "42a6561e-5930-4f0f-8ec2-482287441c71", "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-workflowcnwgh/series-workflowcnwgh-build-action-3753699014/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 22:46:57 +0000 UTC FinishedAt: 2026-06-30 23:09:32 +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:*8a7d1c58-79b9-4227-82fc-cd1c4f9251bc,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-workflowcnwgh/series-workflowcnwgh-convert-artifact-28285952/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": "42a6561e-5930-4f0f-8ec2-482287441c71", "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-workflowcnwgh/series-workflowcnwgh-build-action-3753699014/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:10:44 +0000 UTC FinishedAt: 2026-06-30 23:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:10:44 +0000 UTC FinishedAt: 2026-06-30 23:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:10:44 +0000 UTC FinishedAt: 2026-06-30 23:10:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:10:44 +0000 UTC FinishedAt: 2026-06-30 23:10:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-workflowcnwgh/series-workflowcnwgh-convert-artifact-715434919/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:10:54 +0000 UTC FinishedAt: 2026-06-30 23:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:10:54 +0000 UTC FinishedAt: 2026-06-30 23:12:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*42a6561e-5930-4f0f-8ec2-482287441c71,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-workflowcnwgh/series-workflowcnwgh-build-action-3753699014/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-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:13:07 +0000 UTC FinishedAt: 2026-06-30 23:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:13:07 +0000 UTC FinishedAt: 2026-06-30 23:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:13:07 +0000 UTC FinishedAt: 2026-06-30 23:39:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:13:07 +0000 UTC FinishedAt: 2026-06-30 23:39:20 +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:*8a7d1c58-79b9-4227-82fc-cd1c4f9251bc,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-workflowcnwgh/series-workflowcnwgh-convert-artifact-715434919/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": "be7ebe24-dbe0-4876-ac57-5e9bb86d3cde", "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-workflowcnwgh/series-workflowcnwgh-build-action-2062884139/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:13:07 +0000 UTC FinishedAt: 2026-06-30 23:37:12 +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:*8a7d1c58-79b9-4227-82fc-cd1c4f9251bc,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-workflowcnwgh/series-workflowcnwgh-convert-artifact-715434919/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": "be7ebe24-dbe0-4876-ac57-5e9bb86d3cde", "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-workflowcnwgh/series-workflowcnwgh-build-action-2062884139/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:39:20 +0000 UTC FinishedAt: 2026-06-30 23:39:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:39:20 +0000 UTC FinishedAt: 2026-06-30 23:39:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:39:20 +0000 UTC FinishedAt: 2026-06-30 23:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:39:20 +0000 UTC FinishedAt: 2026-06-30 23:41:28 +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:*be7ebe24-dbe0-4876-ac57-5e9bb86d3cde,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-workflowcnwgh/series-workflowcnwgh-build-action-2062884139/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-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:41:37 +0000 UTC FinishedAt: 2026-07-01 02:48:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:41:37 +0000 UTC FinishedAt: 2026-07-01 02:48:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"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:*42a6561e-5930-4f0f-8ec2-482287441c71,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*be7ebe24-dbe0-4876-ac57-5e9bb86d3cde,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-workflowcnwgh/series-workflowcnwgh-build-action-3753699014/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-workflowcnwgh/series-workflowcnwgh-build-action-2062884139/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:41:37 +0000 UTC FinishedAt: 2026-06-30 23:44:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:41:37 +0000 UTC FinishedAt: 2026-06-30 23:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:41:37 +0000 UTC FinishedAt: 2026-06-30 23:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:41:38 +0000 UTC FinishedAt: 2026-06-30 23:42:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"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-workflowcnwgh/series-workflowcnwgh-convert-artifact-3844915968/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:41:38 +0000 UTC FinishedAt: 2026-06-30 23:41:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:44:03 +0000 UTC FinishedAt: 2026-07-01 02:48:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcnwgh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","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":["damon_commit_target_regions","damon_sysfs_set_filters","damon_sysfs_set_probe","damon_sysfs_set_probes","damon_sysfs_probe_add_dirs","damon_sysfs_probe_rm_dirs"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"6d6f91f3-6e3f-4d31-8a8b-8690616dcb37","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-06-30 23:44:03 +0000 UTC FinishedAt: 2026-07-01 02:48:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*42a6561e-5930-4f0f-8ec2-482287441c71,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*be7ebe24-dbe0-4876-ac57-5e9bb86d3cde,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-workflowcnwgh/series-workflowcnwgh-build-action-3753699014/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-workflowcnwgh/series-workflowcnwgh-build-action-2062884139/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-workflowcnwgh/series-workflowcnwgh-convert-artifact-3844915968/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,}