Name: series-workflowpqnwk Phase: Succeeded StartedAt: 2026-07-22 07:48:26 +0000 UTC FinishedAt: 2026-07-22 10:52:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[0] Phase: Succeeded StartedAt: 2026-07-22 07:48:26 +0000 UTC FinishedAt: 2026-07-22 08:25:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 07:48:26 +0000 UTC FinishedAt: 2026-07-22 08:25:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "3a8476a2-ea22-435d-b5f4-4d12bb04fc5f" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_ioctl_get_sregs", "kvm_arch_vcpu_ioctl_set_sregs", "_kvm_setcsr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzJiMzNDssCiAgICAmIzM0O19rdm1fc2V0Y3NyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgdGhlIEtWTV9HRVRfU1JFR1MgYW5kIEtWTV9TRVRfU1JFR1MgaW9jdGxzIGZvciBMb29uZ0FyY2ggS1ZNLCB3aGljaCBhbGxvd3MgdXNlcnNwYWNlIHRvIHJlYWQgYW5kIHdyaXRlIHNwZWNpYWwgcmVnaXN0ZXJzIG9mIGEgdkNQVS4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHZDUFUgaW9jdGxzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGhhbmRsaW5nIG9mIHJlZ2lzdGVyIHZhbHVlcyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2OGM2MThjMDliNzhiMTdjNmFkZjJjMDU3MjNlMGFhNzI5ZDE2MGM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDg6MjQ6NTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbmluZGV4IGNkMGI1YzExY2E5YzJiLi5kYzA5MWYyOTk2M2RkYiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbkBAIC0xMjQsNyAmIzQzOzEyNCwxMCBAQCBzdHJ1Y3Qga3ZtX3N5bmNfcmVncyB7XG4gfTtcbiBcbiAvKiBkdW1teSBkZWZpbml0aW9uICovXG4mIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9OUl9TUkVHU1x0MHgxODRcbiYjNDM7XG4gc3RydWN0IGt2bV9zcmVncyB7XG4mIzQzO1x0X191NjQgY3NyW0tWTV9MT09OR0FSQ0hfTlJfU1JFR1NdO1xuIH07XG4gXG4gc3RydWN0IGt2bV9pb2Nzcl9lbnRyeSB7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbmluZGV4IDIwYzIwN2Q4MGUzMWFlLi4wODkwYjY4ZWZhMmFlOCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbkBAIC0xMDAxLDEyICYjNDM7MTAwMSw1MSBAQCBzdGF0aWMgaW50IGt2bV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXG4gXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4ge1xuLVx0cmV0dXJuIC1FTk9JT0NUTENNRDtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGVzdGF0LCBnaW50YztcbiYjNDM7XHRzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtXHUwMDNlYXJjaC5jc3I7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUHVsbCBwZW5kaW5nIGludGVycnVwdHMgaW50byBFU1RBVCB3aXRoIGEgc2luZ2xlIHZjcHVfbG9hZC9wdXQgc29cbiYjNDM7XHQgKiB0aGUgRVNUQVQgdmFsdWUgcmVhZCBiZWxvdyBtYXRjaGVzIHRoZSBjdXJyZW50IGludGVycnVwdCBzdGF0ZS5cbiYjNDM7XHQgKiBUaGlzIGFsc28gYXZvaWRzIHRoZSBwZXItcmVnaXN0ZXIgbG9hZC9wdXQgc2lkZS1lZmZlY3QgdGhhdCBtYWtlc1xuJiM0MztcdCAqIHRoZSBPTkVfUkVHIHBhdGgmIzM5O3MgRVNUQVQgc25hcHNob3Qgb3JkZXItc2Vuc2l0aXZlLiAgVGhlIFNXIENTUlxuJiM0MztcdCAqIHJlYWRzIHJ1biB1bmRlciB2Y3B1LVx1MDAzZW11dGV4LCB3aGljaCBzZXJpYWxpc2VzIHRoaXMgaW9jdGwuXG4mIzQzO1x0ICovXG4mIzQzO1x0cHJlZW1wdF9kaXNhYmxlKCk7XG4mIzQzO1x0dmNwdV9sb2FkKHZjcHUpO1xuJiM0MztcdGt2bV9kZWxpdmVyX2ludHIodmNwdSk7XG4mIzQzO1x0dmNwdS1cdTAwM2VhcmNoLmF1eF9pbnVzZSBcdTAwMjY9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUO1xuJiM0MztcdHZjcHVfcHV0KHZjcHUpO1xuJiM0MztcdHByZWVtcHRfZW5hYmxlKCk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRpZiAoaSA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XG4mIzQzO1x0XHRcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFx1MDAyNiBLVk1fR0lOVENfSVJRX01BU0s7XG4mIzQzO1x0XHRcdGVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpIFx1MDAyNiB+S1ZNX0VTVEFUX0VYVElfTUFTSztcbiYjNDM7XHRcdFx0c3JlZ3MtXHUwMDNlY3NyW2ldID0gZXN0YXQgfCAoZ2ludGMgXHUwMDNjXHUwMDNjIFZJUF9ERUxUQSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRzcmVncy1cdTAwM2Vjc3JbaV0gPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgaSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4ge1xuLVx0cmV0dXJuIC1FTk9JT0NUTENNRDtcbiYjNDM7XHRpbnQgaSwgcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBDbGVhciBmaXJzdCBzbyBhIGZhaWxpbmcgX2t2bV9zZXRjc3Igc3RpbGwgZm9yY2VzIGEgSFcgcmVsb2FkLiAqL1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgS1ZNX0xPT05HQVJDSF9OUl9TUkVHUzsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGksIHNyZWdzLVx1MDAzZWNzcltpXSk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyYjMzQ7LAogICAgJiMzNDtfa3ZtX3NldGNzciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHRoZSBLVk1fR0VUX1NSRUdTIGFuZCBLVk1fU0VUX1NSRUdTIGlvY3RscyBmb3IgTG9vbmdBcmNoIEtWTSwgd2hpY2ggYWxsb3dzIHVzZXJzcGFjZSB0byByZWFkIGFuZCB3cml0ZSBzcGVjaWFsIHJlZ2lzdGVycyBvZiBhIHZDUFUuIFRoaXMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB2Q1BVIGlvY3RscyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBoYW5kbGluZyBvZiByZWdpc3RlciB2YWx1ZXMgYW5kIHN0YXRlIHRyYW5zaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OGM2MThjMDliNzhiMTdjNmFkZjJjMDU3MjNlMGFhNzI5ZDE2MGM5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjIgMDg6MjQ6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaAppbmRleCBjZDBiNWMxMWNhOWMyYi4uZGMwOTFmMjk5NjNkZGIgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaApAQCAtMTI0LDcgJiM0MzsxMjQsMTAgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3MgewogfTsKIAogLyogZHVtbXkgZGVmaW5pdGlvbiAqLwomIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9OUl9TUkVHUwkweDE4NAomIzQzOwogc3RydWN0IGt2bV9zcmVncyB7CiYjNDM7CV9fdTY0IGNzcltLVk1fTE9PTkdBUkNIX05SX1NSRUdTXTsKIH07CiAKIHN0cnVjdCBrdm1faW9jc3JfZW50cnkgewpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKaW5kZXggMjBjMjA3ZDgwZTMxYWUuLjA4OTBiNjhlZmEyYWU4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKQEAgLTEwMDEsMTIgJiM0MzsxMDAxLDUxIEBAIHN0YXRpYyBpbnQga3ZtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZykKIAogaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpCiB7Ci0JcmV0dXJuIC1FTk9JT0NUTENNRDsKJiM0MzsJaW50IGk7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjOwomIzQzOwlzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtJmd0O2FyY2guY3NyOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBQdWxsIHBlbmRpbmcgaW50ZXJydXB0cyBpbnRvIEVTVEFUIHdpdGggYSBzaW5nbGUgdmNwdV9sb2FkL3B1dCBzbwomIzQzOwkgKiB0aGUgRVNUQVQgdmFsdWUgcmVhZCBiZWxvdyBtYXRjaGVzIHRoZSBjdXJyZW50IGludGVycnVwdCBzdGF0ZS4KJiM0MzsJICogVGhpcyBhbHNvIGF2b2lkcyB0aGUgcGVyLXJlZ2lzdGVyIGxvYWQvcHV0IHNpZGUtZWZmZWN0IHRoYXQgbWFrZXMKJiM0MzsJICogdGhlIE9ORV9SRUcgcGF0aCYjMzk7cyBFU1RBVCBzbmFwc2hvdCBvcmRlci1zZW5zaXRpdmUuICBUaGUgU1cgQ1NSCiYjNDM7CSAqIHJlYWRzIHJ1biB1bmRlciB2Y3B1LSZndDttdXRleCwgd2hpY2ggc2VyaWFsaXNlcyB0aGlzIGlvY3RsLgomIzQzOwkgKi8KJiM0MzsJcHJlZW1wdF9kaXNhYmxlKCk7CiYjNDM7CXZjcHVfbG9hZCh2Y3B1KTsKJiM0MzsJa3ZtX2RlbGl2ZXJfaW50cih2Y3B1KTsKJiM0MzsJdmNwdS0mZ3Q7YXJjaC5hdXhfaW51c2UgJmFtcDs9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUOwomIzQzOwl2Y3B1X3B1dCh2Y3B1KTsKJiM0MzsJcHJlZW1wdF9lbmFibGUoKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoaSA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7CiYjNDM7CQkJZ2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgJmFtcDsgS1ZNX0dJTlRDX0lSUV9NQVNLOwomIzQzOwkJCWVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpICZhbXA7IH5LVk1fRVNUQVRfRVhUSV9NQVNLOwomIzQzOwkJCXNyZWdzLSZndDtjc3JbaV0gPSBlc3RhdCB8IChnaW50YyAmbHQ7Jmx0OyBWSVBfREVMVEEpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlzcmVncy0mZ3Q7Y3NyW2ldID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGkpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogCiBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncykKIHsKLQlyZXR1cm4gLUVOT0lPQ1RMQ01EOwomIzQzOwlpbnQgaSwgcmV0OwomIzQzOwomIzQzOwkvKiBDbGVhciBmaXJzdCBzbyBhIGZhaWxpbmcgX2t2bV9zZXRjc3Igc3RpbGwgZm9yY2VzIGEgSFcgcmVsb2FkLiAqLwomIzQzOwl2Y3B1LSZndDthcmNoLmF1eF9pbnVzZSAmYW1wOz0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBLVk1fTE9PTkdBUkNIX05SX1NSRUdTOyBpJiM0MzsmIzQzOykgewomIzQzOwkJcmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaSwgc3JlZ3MtJmd0O2NzcltpXSk7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxvb25nQXJjaCBLVk0gUGF0Y2ggQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIHNvbWUgcHJldHR5IGNydWNpYWwgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTTogc3BlY2lmaWNhbGx5LCB0aGUgaW1wbGVtZW50YXRpb25zIGZvciBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYC4gVGhhdCYjMzk7cyBnb29kOyBoYW5kbGluZyB0aGUgU2F2ZS9SZXN0b3JlIG9mIFNwZWNpYWwgUmVnaXN0ZXJzLiBJdCBhbHNvIG1lYW5zIHdlJiMzOTtsbCBuZWVkIHRvIHVwZGF0ZSBgc3RydWN0IGt2bV9zcmVnc2AgaW4gdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUsIHdoaWNoIG1ha2VzIHNlbnNlLgoKR2l2ZW4gdGhhdCBpdCB0b3VjaGVzIHRoZSBMb29uZ0FyY2ggS1ZNIGNvZGUsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzICYjMzQ7aXMgdGhpcyBjb2RlIGZ1enplZD8mIzM0Oy4gU3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IExvb25nQXJjaCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBwcm9wZXJseSBzZXQgdXAgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgbGlrZSBHQ0Ugb3IgUUVNVS4gV2FpdCwgaXQgKmRvZXMqIHN1cHBvcnQgS1ZNIGZ1enppbmcsIHRoYXQmIzM5O3MgcmlnaHQuIFNvLCBpdCAqc2hvdWxkKiBiZSBwb3NzaWJsZSB0byBmdXp6IHRoZXNlIG5ldyBoYW5kbGVycy4KClRoZSByZWFsIHF1ZXN0aW9uIGlzLCBpcyBmdXp6aW5nIGl0ICp3b3J0aCogaXQ/IEFic29sdXRlbHksIGl0IGlzLCBiZWNhdXNlIHRoZXNlIGFyZSAqbmV3KiBpb2N0bCBoYW5kbGVycyBmb3IgS1ZNIG9uIExvb25nQXJjaC4gQWRkaW5nIG5ldyBhdHRhY2sgc3VyZmFjZXMgaXMgYWx3YXlzIHdvcnRoIGZ1enppbmcuCgpCZWZvcmUgSSBnbyB0b28gZmFyIGRvd24gdGhlIGZ1enppbmcgcmFiYml0IGhvbGUsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIGVuc3VyZSBgQ09ORklHX0tWTWAgaXMgcHJvcGVybHkgc2V0IGZvciBMb29uZ0FyY2guIEkmIzM5O2xsIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AgdG8gY29uZmlybSwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gUmVhY2hhYmlsaXR5IGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBteSBmb2N1cyBpcyBvbiBgS1ZNYCDigJMgdGhhdCYjMzk7cyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaGVyZS4gQnV0IHRoZW4gdGhlIHF1ZXN0aW9uIGhpdHMgbWU6IGlzIHRoaXMgY29kZSBldmVuIHJlYWNoYWJsZSB3aGVuIHJ1bm5pbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSBvciBRRU1VPyBJIG1lYW4sIHRoZXNlIHZpcnR1YWxpemVkIHNldHVwcyBhcmUgcHJldHR5IHNwZWNpZmljLgoKV2FpdCwgeWVzLCAqS1ZNKiBpcyB0aGUgdmlydHVhbGl6YXRpb24gbW9kdWxlLCBzbyBpZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gaXMgc3VwcG9ydGVkLCBvciB3ZSBmdXp6IExvb25nQXJjaCBLVk0gc3BlY2lmaWNhbGx5LCB3ZSBjYW4gdGVzdCBpdC4KCkFoYSEgSSByZW1lbWJlciBzeXprYWxsZXIuIEl0IHVzdWFsbHkgZm9jdXNlcyBvbiBLVk0gb24geDg2LCBidXQgaXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZnV6eiBLVk0gb24gKm90aGVyKiBhcmNoaXRlY3R1cmVzIHRvby4gVGhlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbmhlcmVudGx5IHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBUaGluZ3MgbGlrZSBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLgoKU28sIHRoZSBMb29uZ0FyY2ggS1ZNIG1pZ2h0IGFjdHVhbGx5IGJlIHdpdGhpbiByZWFjaCBpZiB3ZSBydW4gc3l6a2FsbGVyIG9uIExvb25nQXJjaCBRRU1VLCByaWdodD8gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBsaW5rLgoKQWxyaWdodCwgbGV0JiMzOTtzIGRyaWxsIGRvd24uIFRoZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIGFkZGVkIGFyZToKKiAgIGBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc2AKKiAgIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AKCk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRldGVybWluZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGNhbGxlZC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9NzE5PWludCBrdm1fYXJtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbi0tXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTczNS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NzM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTczNy1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz05ODQ9c3RhdGljIGludCBrdm1fc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwMS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAwMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwMy17XG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmM9OTg3PWludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy05OTgtXG5hcmNoL21pcHMva3ZtL21pcHMuYzo5OTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMDAtXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM9NTI1PXZvaWQga3ZtcHBjX3N1YmFyY2hfdmNwdV91bmluaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTI4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1Mjk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTMwLVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTE5Njg9c3RhdGljIGludCBrdm1wcGNfaGFuZGxlX25lc3RlZF9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwOTktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxMDA6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc19odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxMDEtXHRcdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTY1MTM9c3RhdGljIHN0cnVjdCBrdm1wcGNfb3BzIGt2bV9vcHNfaHYgPSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MTQ6XHQuZ2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfaHYsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1MTUtXHQuc2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfaHYsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYz0xMTM1PWludCBrdm1wcGNfaGFuZGxlX2V4aXRfcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgZXhpdF9ucilcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0NTQtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jOjE0NTU6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc19wcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0NTYtXHRcdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jPTIwNDU9c3RhdGljIHN0cnVjdCBrdm1wcGNfb3BzIGt2bV9vcHNfcHIgPSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jOjIwNDY6XHQuZ2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfcHIsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTIwNDctXHQuc2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfcHIsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE2MDU9aW50IGt2bXBwY19zZXRfc3JlZ3NfaXZvcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjI5LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jOjE2MzA6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjMxLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9MjcwPWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzE2LVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMxNzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTMxOC1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTQxNDQ9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE1NS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTU2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE1Ny1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTEyMjE4PXN0YXRpYyB2b2lkIF9fZ2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MyICpzcmVnczIpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMjM1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyMjM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTIyMzctXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNjA3PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKTtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNjA4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTYwOS1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NDQwNj1zdGF0aWMgbG9uZyBrdm1fdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ1MTYtXHRcdFx0Z290byBvdXQ7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ1MTc6XHRcdHIgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyh2Y3B1LCBrdm1fc3JlZ3MpO1xudmlydC9rdm0va3ZtX21haW4uYy00NTE4LVx0XHRpZiAocilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDM0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIExvb25nQXJjaCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyBob3cgaXQgZml0cyBpbnRvIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgZm9yIExvb25nQXJjaC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc2AgaXMgYmVpbmcgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGt2bV92Y3B1X2lvY3RsYCB3aXRoaW4gYGt2bV9tYWluLmNgLiBUaGF0IG1lYW5zIHRoZSBgS1ZNX0dFVF9TUkVHU2AgaW9jdGwgb24gYSB2Q1BVIGZpbGUgZGVzY3JpcHRvciBpcyB0aGUgZW50cnkgcG9pbnQuIFRoZSBzYW1lIGdvZXMgZm9yIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AgdmlhIHRoZSBgS1ZNX1NFVF9TUkVHU2AgaW9jdGwuIEJvdGggb2YgdGhlc2UgZnVuY3Rpb25zLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgLCBhcmUgZGVmaW5lZCBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AuCgpSaWdodCwgbm93IHRoZSBjcnVjaWFsIHBhcnQgZm9yIGZ1enppbmcgLSB3aGF0IGVsc2UgaXMgdG91Y2hlZD8gVGhlIHBhdGNoIHNlZW1zIHRvIGV4cGxpY2l0bHkgbW9kaWZ5IG9ubHkgdGhvc2UgdHdvIGZ1bmN0aW9ucywgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzYCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYC4gSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgZm9yIGFueSBvdGhlciBtb2RpZmljYXRpb25zIHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBzb21ldGhpbmcgY3JpdGljYWwgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MganVzdCB0aG9zZSB0d28sIGJ1dCB3YWl0LCBgX2t2bV9zZXRjc3JgIGlzIGNhbGxlZCB3aXRoaW4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYC4gSG1tLCBJIHNob3VsZCBpbmNsdWRlIHRoYXQgZm9yIGZ1enppbmcuIFRpbWUgdG8gaW52ZXN0aWdhdGUgYF9rdm1fc2V0Y3NyYCBtb3JlIGNsb3NlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X2t2bV9zZXRjc3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NTk0PXN0YXRpYyBpbnQgX2t2bV9nZXRjc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgaWQsIHU2NCAqdmFsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjI5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2MzA6c3RhdGljIGludCBfa3ZtX3NldGNzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBpZCwgdTY0IHZhbClcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjMxLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTkwMD1zdGF0aWMgaW50IGt2bV9zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy05MDgtXHRcdGlkID0gS1ZNX0dFVF9JT0NfQ1NSX0lEWChyZWctXHUwMDNlaWQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo5MDk6XHRcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGlkLCB2KTtcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtOTEwLVx0XHRicmVhaztcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTk2NS1cdFx0XHQgKiBXaGVuIHZDUFUgcmVzZXQsIGNsZWFyIHRoZSBFU1RBVCBhbmQgR0lOVEMgcmVnaXN0ZXJzXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjk2NjpcdFx0XHQgKiBPdGhlciBDU1IgcmVnaXN0ZXJzIGFyZSBjbGVhcmVkIHdpdGggZnVuY3Rpb24gX2t2bV9zZXRjc3IoKS5cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtOTY3LVx0XHRcdCAqL1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTAzNT1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMzgtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMzk6XHQvKiBDbGVhciBmaXJzdCBzbyBhIGZhaWxpbmcgX2t2bV9zZXRjc3Igc3RpbGwgZm9yY2VzIGEgSFcgcmVsb2FkLiAqL1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDQwLVx0dmNwdS1cdTAwM2VhcmNoLmF1eF9pbnVzZSBcdTAwMjY9IH5LVk1fTEFSQ0hfSFdDU1JfVVNBQkxFO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTA0Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkmIzQzOyYjNDM7KSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwNDM6XHRcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGksIHNyZWdzLVx1MDAzZWNzcltpXSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwNDQtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gTG9vbmdBcmNoIEtWTSBTUkVHIElPQ1RMcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIHdlIG5lZWQgdG8gaW5jbHVkZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGluIHRoZSBGb2N1c1N5bWJvbHMgbGlzdC4gYF9rdm1fc2V0Y3NyYCBjb3VsZCBhbHNvIGJlIGNvbnNpZGVyZWQsIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBJJiMzOTttIGZpbmUgd2l0aCBhZGRpbmcgaXQgYXMgd2VsbCBmb3IgY29tcGxldGVuZXNzLgoKTm93LCBsZXQmIzM5O3Mgc2VlIGFib3V0IGNvbmZpZyBvcHRpb25zLiBgQ09ORklHX0tWTWAgc2VlbXMgdG8gYmUgdGhlIG1haW4gb25lLCBhcyBleHBlY3RlZC4gQnV0LCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGZvciBvdGhlcnMuIEFoLCBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdgIGluZGVlZCwgYEtWTWAgaXMgcHJlc2VudCwgaXQmIzM5O3Mgc2FmZSB0byBhc3N1bWUgYEtWTWAgYWxvbmUgaXMgc3VmZmljaWVudC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgYWJvdXQgYEtWTV9MT09OR0FSQ0hfTlJfU1JFR1NgLiBJdCYjMzk7cyBkZWZpbmVkIGluIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oYCwgc28gYWxsIGdvb2QuCgpPa2F5LCBsZXQmIzM5O3MgcmV2aWV3IHRoaXMgcGF0Y2ggdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGltcGxlbWVudGF0aW9uLiBIbW0sIGBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc2AgYW5kIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AgaGFuZGxlIHRoZSBgS1ZNX0dFVF9TUkVHU2AgYW5kIGBLVk1fU0VUX1NSRUdTYCBpb2N0bHMgcmVzcGVjdGl2ZWx5IGZvciBMb29uZ0FyY2guIFRoZSBgZ2V0YCBmdW5jdGlvbiBwdWxscyBwZW5kaW5nIGludGVycnVwdHMgaW50byBFU1RBVCB1c2luZyBga3ZtX2RlbGl2ZXJfaW50cmAsIHdoaWNoIHNlcmlhbGl6ZXMgdGhlIGlvY3RsIHVuZGVyIHZjcHUtJmd0O211dGV4LiBUaGUgYHNldGAgZnVuY3Rpb24gY2xlYXJzIHRoZSBgSFdDU1JfVVNBQkxFYCBmbGFnIGZpcnN0LiBCb3RoIGl0ZXJhdGUgdGhyb3VnaCB0aGUgYEtWTV9MT09OR0FSQ0hfTlJfU1JFR1NgIGFuZCBkbyB0aGUgc2V0IGFuZCBnZXQgdmlhIGBrdm1fcmVhZF9zd19nY3NyYCBhbmQgYF9rdm1fc2V0Y3NyYCwgc28gaXQmIzM5O3MgYSBjbGVhciBpbXBsZW1lbnRhdGlvbi4KCmBgYGMKaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpCnsKCWludCBpOwoJdW5zaWduZWQgbG9uZyBlc3RhdCwgZ2ludGM7CglzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtJmd0O2FyY2guY3NyOwoKCS8qCgkgKiBQdWxsIHBlbmRpbmcgaW50ZXJydXB0cyBpbnRvIEVTVEFUIHdpdGggYSBzaW5nbGUgdmNwdV9sb2FkL3B1dCBzbwoJICogdGhlIEVTVEFUIHZhbHVlIHJlYWQgYmVsb3cgbWF0Y2hlcyB0aGUgY3VycmVudCBpbnRlcnJ1cHQgc3RhdGUuCgkgKiBUaGlzIGFsc28gYXZvaWRzIHRoZSBwZXItcmVnaXN0ZXIgbG9hZC9wdXQgc2lkZS1lZmZlY3QgdGhhdCBtYWtlcwoJICogdGhlIE9ORV9SRUcgcGF0aCYjMzk7cyBFU1RBVCBzbmFwc2hvdCBvcmRlci1zZW5zaXRpdmUuICBUaGUgU1cgQ1NSCgkgKiByZWFkcyBydW4gdW5kZXIgdmNwdS0mZ3Q7bXV0ZXgsIHdoaWNoIHNlcmlhbGlzZXMgdGhpcyBpb2N0bC4KCSAqLwoJcHJlZW1wdF9kaXNhYmxlKCk7Cgl2Y3B1X2xvYWQodmNwdSk7Cglrdm1fZGVsaXZlcl9pbnRyKHZjcHUpOwoJdmNwdS0mZ3Q7YXJjaC5hdXhfaW51c2UgJmFtcDs9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUOwoJdmNwdV9wdXQodmNwdSk7CglwcmVlbXB0X2VuYWJsZSgpOwoKCWZvciAoaSA9IDA7IGkgJmx0OyBLVk1fTE9PTkdBUkNIX05SX1NSRUdTOyBpJiM0MzsmIzQzOykgewoJCWlmIChpID09IExPT05HQVJDSF9DU1JfRVNUQVQpIHsKCQkJZ2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgJmFtcDsgS1ZNX0dJTlRDX0lSUV9NQVNLOwoJCQllc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSAmYW1wOyB+S1ZNX0VTVEFUX0VYVElfTUFTSzsKCQkJc3JlZ3MtJmd0O2NzcltpXSA9IGVzdGF0IHwgKGdpbnRjICZsdDsmbHQ7IFZJUF9ERUxUQSk7CgkJfSBlbHNlIHsKCQkJc3JlZ3MtJmd0O2NzcltpXSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpKTsKCQl9Cgl9CgoJcmV0dXJuIDA7Cn0KCmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKQp7CglpbnQgaSwgcmV0OwoKCS8qIENsZWFyIGZpcnN0IHNvIGEgZmFpbGluZyBfa3ZtX3NldGNzciBzdGlsbCBmb3JjZXMgYSBIVyByZWxvYWQuICovCgl2Y3B1LSZndDthcmNoLmF1eF9pbnVzZSAmYW1wOz0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7CgoJZm9yIChpID0gMDsgaSAmbHQ7IEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkmIzQzOyYjNDM7KSB7CgkJcmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaSwgc3JlZ3MtJmd0O2NzcltpXSk7CgkJaWYgKHJldCkKCQkJcmV0dXJuIHJldDsKCX0KCglyZXR1cm4gMDsKfQpgYGAKClRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBmdW5jdGlvbmFsLiBCZWNhdXNlIHVzZXJzcGFjZSBjYW4gbm93IGNvbnRyb2wgdGhlCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3JlYWRfc3dfZ2NzciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fY3NyLmg9MTg3PWludCBrdm1fZW11X2lvY3NyKGxhcmNoX2luc3QgaW5zdCwgc3RydWN0IGt2bV9ydW4gKnJ1biwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9jc3IuaC0xODgtXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fY3NyLmg6MTg5OnN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBrdm1fcmVhZF9zd19nY3NyKHN0cnVjdCBsb29uZ2FyY2hfY3NycyAqY3NyLCBpbnQgZ2lkKVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Nzci5oLTE5MC17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYz02NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBrdm1fZW11X3JlYWRfY3NyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNzcmlkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmMtNzQtXHRpZiAoZ2V0X2djc3JfZmxhZyhjc3JpZCkgXHUwMDI2IFNXX0dDU1IpXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jOjc1Olx0XHR2YWwgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgY3NyaWQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy03Ni1cdGVsc2Vcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jPTgyPXN0YXRpYyB1bnNpZ25lZCBsb25nIGt2bV9lbXVfd3JpdGVfY3NyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNzcmlkLCB1bnNpZ25lZCBsb25nIHZhbClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jLTg3LVx0aWYgKGdldF9nY3NyX2ZsYWcoY3NyaWQpIFx1MDAyNiBTV19HQ1NSKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jOjg4Olx0XHRvbGQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgY3NyaWQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy04OS1cdFx0a3ZtX3dyaXRlX3N3X2djc3IoY3NyLCBjc3JpZCwgdmFsKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jPTk2PXN0YXRpYyB1bnNpZ25lZCBsb25nIGt2bV9lbXVfeGNoZ19jc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3NyaWQsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy0xMDItXHRpZiAoZ2V0X2djc3JfZmxhZyhjc3JpZCkgXHUwMDI2IFNXX0dDU1IpIHtcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmM6MTAzOlx0XHRvbGQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgY3NyaWQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy0xMDQtXHRcdHZhbCA9IChvbGQgXHUwMDI2IH5jc3JfbWFzaykgfCAodmFsIFx1MDAyNiBjc3JfbWFzayk7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM9NTI9dm9pZCBrdm1fcmVzdG9yZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNjMtXHQgKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjY0Olx0Y2ZnID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVENGRyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy02NS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy04OS1cdCAqL1xuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6OTA6XHR0aWNrcyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6OTE6XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTkyLVx0aWYgKCEoY2ZnIFx1MDAyNiBDU1JfVENGR19QRVJJT0QpIFx1MDAyNlx1MDAyNiAodGlja3MgXHUwMDNlIGNmZykpIHtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYz0xNDU9c3RhdGljIHZvaWQgX2t2bV9zYXZlX3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy0xNTAtXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYzoxNTE6XHRjZmcgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9UQ0ZHKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjE1MjpcdHRpY2tzID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVFZBTCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy0xNTMtXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM9MTgzPXZvaWQga3ZtX3NhdmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTE5MS1cdGt2bV9zYXZlX2h3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6MTkyOlx0aWYgKGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RDRkcpIFx1MDAyNiBDU1JfVENGR19FTilcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTE5My1cdFx0X2t2bV9zYXZlX3RpbWVyKHZjcHUpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTE5PXN0YXRpYyB2b2lkIGt2bV9sb3NlX3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzktXHQgKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTQwOlx0dmFsID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwwKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTQxOlx0dmFsIHw9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1BFUkZDVFJMMSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE0MjpcdHZhbCB8PSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9QRVJGQ1RSTDIpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxNDM6XHR2YWwgfD0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwzKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTQ0LVx0aWYgKCEodmFsIFx1MDAyNiBLVk1fUE1VX0VWRU5UX0VOQUJMRUQpKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NTA1PXN0YXRpYyBpbmxpbmUgaW50IGt2bV9zZXRfY3B1aWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdmFsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNTE0LVx0bWFwID0gdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5waHlpZF9tYXA7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjUxNTpcdGNwdWlkID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfQ1BVSUQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy01MTYtXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz01NTY9c3RhdGljIGlubGluZSB2b2lkIGt2bV9kcm9wX2NwdWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTU2Mi1cdG1hcCA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gucGh5aWRfbWFwO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo1NjM6XHRjcHVpZCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0NQVUlEKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNTY0LVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NTk0PXN0YXRpYyBpbnQgX2t2bV9nZXRjc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgaWQsIHU2NCAqdmFsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjE0LVx0XHQvKiBFU1RBVCBJUDB+SVA3IGdldCBmcm9tIEdJTlRDICovXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjYxNTpcdFx0Z2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NjE2Olx0XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcdTAwMjYgfktWTV9FU1RBVF9FWFRJX01BU0s7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTYxNy1cdFx0KnZhbCA9IGVzdGF0IHwgKGdpbnRjIFx1MDAzY1x1MDAzYyBWSVBfREVMVEEpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjI0LVx0ICovXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjYyNTpcdCp2YWwgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgaWQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02MjYtXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz02MzA9c3RhdGljIGludCBfa3ZtX3NldGNzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBpZCwgdTY0IHZhbClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTY0NC1cdFx0Z2ludGMgPSAodmFsIFx1MDAzZVx1MDAzZSBWSVBfREVMVEEpIFx1MDAyNiBLVk1fR0lOVENfSVJRX01BU0s7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjY0NTpcdFx0Z2ludGMgfD0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFx1MDAyNiB+S1ZNX0dJTlRDX0lSUV9NQVNLO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02NDYtXHRcdGt2bV93cml0ZV9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQywgZ2ludGMpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjY2LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njc6XHRcdHZhbCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1BFUkZDVFJMMCkgfFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njg6XHRcdCAgICAgIGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1BFUkZDVFJMMSkgfFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njk6XHRcdCAgICAgIGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1BFUkZDVFJMMikgfFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2NzA6XHRcdCAgICAgIGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1BFUkZDVFJMMyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTY3MS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEwMDI9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDIzLVx0XHRpZiAoaSA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMjQ6XHRcdFx0Z2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAyNTpcdFx0XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcdTAwMjYgfktWTV9FU1RBVF9FWFRJX01BU0s7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjYtXHRcdFx0c3JlZ3MtXHUwMDNlY3NyW2ldID0gZXN0YXQgfCAoZ2ludGMgXHUwMDNjXHUwMDNjIFZJUF9ERUxUQSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjctXHRcdH0gZWxzZSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMjg6XHRcdFx0c3JlZ3MtXHUwMDNlY3NyW2ldID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGkpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDI5LVx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjY3CgkJCQkJCQlvdXRwdXQ6IDE1MgoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBMb29uZ0FyY2ggS1ZNIFNSRUcgSU9DVEwgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbXBsZW1lbnRpbmcgdGhlIGBLVk1fR0VUX1NSRUdTYCBhbmQgYEtWTV9TRVRfU1JFR1NgIGlvY3RscyBzcGVjaWZpY2FsbHkgZm9yIExvb25nQXJjaCBLVk0uIFRoYXQmIzM5O3MgZ29vZDsgaXQgbWVhbnMgdXNlcnNwYWNlIGNhbiBub3cgaW50ZXJhY3Qgd2l0aCB0aGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiBJdCYjMzk7cyBhbiBpbmxpbmUgZnVuY3Rpb24sIHdoaWNoIGdlbmVyYWxseSBkb2VzbiYjMzk7dCByYWlzZSBhbnkgaW1tZWRpYXRlIHJlZCBmbGFncyByZWdhcmRpbmcgcGVyZm9ybWFuY2Ugb3IgY29tcGxleGl0eS4KCk15IHByaW1hcnkgY29uY2Vybiwgb2YgY291cnNlLCBpcyBmdXp6aW5nLiBUaGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdGhvcm91Z2ggdGVzdGluZy4gVGhlIGBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc2AsIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AsIGFuZCB0aGUgdW5kZXJseWluZyBgX2t2bV9zZXRjc3JgIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwuIFRoZXkgYXJlIHRoZSBjb25kdWl0cyBiZXR3ZWVuIHVzZXJzcGFjZSByZXF1ZXN0cyAodmlhIHRoZSBpb2N0bHMpIGFuZCB0aGUgYWN0dWFsIHJlZ2lzdGVyIG1hbmlwdWxhdGlvbiB3aXRoaW4gdGhlIHZpcnR1YWwgbWFjaGluZS4gVGhlIGZhY3QgdGhhdCB0aGlzIGlzIHJlYWNoYWJsZSB2aWEgdkNQVSBpb2N0bHMgaXMgYSBrZXkgdHJpZ2dlciBmb3IgZnV6emluZy4gV2UgbmVlZCB0byBiZSBjb25maWRlbnQgdGhhdCB0aGUgY29kZSBoYW5kbGVzIHJlZ2lzdGVyIHZhbHVlcyBjb3JyZWN0bHksIGFuZCB0aGF0IHN0YXRlIHRyYW5zaXRpb25zIGFyZSB2YWxpZGF0ZWQgcm9idXN0bHkuIEkmIzM5O20gZ29pbmcgdG8gc2V0IHRoZSByZXN1bHRzIGFzIGZ1enphYmxlLCBhbmQgaXQgc2hvdWxkIGJlIGEgaGlnaCBwcmlvcml0eS4gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgS1ZNIHN1YnN5c3RlbSwgZXNwZWNpYWxseSB0aGVzZSBuZXcgaW9jdGwgaGFuZGxlcnMsIGFyZSByZXNpbGllbnQgdG8gbWFsZm9ybWVkIG9yIHVuZXhwZWN0ZWQgZGF0YSBjb21pbmcgZnJvbSB0aGUgZnV6emVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7X2t2bV9zZXRjc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgS1ZNX0dFVF9TUkVHUyBhbmQgS1ZNX1NFVF9TUkVHUyBpb2N0bHMgZm9yIExvb25nQXJjaCBLVk0sIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gcmVhZCBhbmQgd3JpdGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdkNQVSBpb2N0bHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgcmVnaXN0ZXIgdmFsdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7X2t2bV9zZXRjc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgS1ZNX0dFVF9TUkVHUyBhbmQgS1ZNX1NFVF9TUkVHUyBpb2N0bHMgZm9yIExvb25nQXJjaCBLVk0sIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gcmVhZCBhbmQgd3JpdGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdkNQVSBpb2N0bHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgcmVnaXN0ZXIgdmFsdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjI0OjU3LjY5Njc0ODQzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMzQzNTcyNjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc1wiLFxuICAgIFwiX2t2bV9zZXRjc3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHRoZSBLVk1fR0VUX1NSRUdTIGFuZCBLVk1fU0VUX1NSRUdTIGlvY3RscyBmb3IgTG9vbmdBcmNoIEtWTSwgd2hpY2ggYWxsb3dzIHVzZXJzcGFjZSB0byByZWFkIGFuZCB3cml0ZSBzcGVjaWFsIHJlZ2lzdGVycyBvZiBhIHZDUFUuIFRoaXMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB2Q1BVIGlvY3RscyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBoYW5kbGluZyBvZiByZWdpc3RlciB2YWx1ZXMgYW5kIHN0YXRlIHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNDo1Ny42OTY3NTg3NTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MjYxMTIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY4YzYxOGMwOWI3OGIxN2M2YWRmMmMwNTcyM2UwYWE3MjlkMTYwYzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDg6MjQ6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG5pbmRleCBjZDBiNWMxMWNhOWMyYi4uZGMwOTFmMjk5NjNkZGIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG5AQCAtMTI0LDcgKzEyNCwxMCBAQCBzdHJ1Y3Qga3ZtX3N5bmNfcmVncyB7XFxuIH07XFxuIFxcbiAvKiBkdW1teSBkZWZpbml0aW9uICovXFxuKyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9OUl9TUkVHU1xcdDB4MTg0XFxuK1xcbiBzdHJ1Y3Qga3ZtX3NyZWdzIHtcXG4rXFx0X191NjQgY3NyW0tWTV9MT09OR0FSQ0hfTlJfU1JFR1NdO1xcbiB9O1xcbiBcXG4gc3RydWN0IGt2bV9pb2Nzcl9lbnRyeSB7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXFxuaW5kZXggMjBjMjA3ZDgwZTMxYWUuLjA4OTBiNjhlZmEyYWU4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXFxuQEAgLTEwMDEsMTIgKzEwMDEsNTEgQEAgc3RhdGljIGludCBrdm1fc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbiBcXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuIHtcXG4tXFx0cmV0dXJuIC1FTk9JT0NUTENNRDtcXG4rXFx0aW50IGk7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjO1xcbitcXHRzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtXFx1MDAzZWFyY2guY3NyO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUHVsbCBwZW5kaW5nIGludGVycnVwdHMgaW50byBFU1RBVCB3aXRoIGEgc2luZ2xlIHZjcHVfbG9hZC9wdXQgc29cXG4rXFx0ICogdGhlIEVTVEFUIHZhbHVlIHJlYWQgYmVsb3cgbWF0Y2hlcyB0aGUgY3VycmVudCBpbnRlcnJ1cHQgc3RhdGUuXFxuK1xcdCAqIFRoaXMgYWxzbyBhdm9pZHMgdGhlIHBlci1yZWdpc3RlciBsb2FkL3B1dCBzaWRlLWVmZmVjdCB0aGF0IG1ha2VzXFxuK1xcdCAqIHRoZSBPTkVfUkVHIHBhdGgncyBFU1RBVCBzbmFwc2hvdCBvcmRlci1zZW5zaXRpdmUuICBUaGUgU1cgQ1NSXFxuK1xcdCAqIHJlYWRzIHJ1biB1bmRlciB2Y3B1LVxcdTAwM2VtdXRleCwgd2hpY2ggc2VyaWFsaXNlcyB0aGlzIGlvY3RsLlxcbitcXHQgKi9cXG4rXFx0cHJlZW1wdF9kaXNhYmxlKCk7XFxuK1xcdHZjcHVfbG9hZCh2Y3B1KTtcXG4rXFx0a3ZtX2RlbGl2ZXJfaW50cih2Y3B1KTtcXG4rXFx0dmNwdS1cXHUwMDNlYXJjaC5hdXhfaW51c2UgXFx1MDAyNj0gfktWTV9MQVJDSF9TV0NTUl9MQVRFU1Q7XFxuK1xcdHZjcHVfcHV0KHZjcHUpO1xcbitcXHRwcmVlbXB0X2VuYWJsZSgpO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkrKykge1xcbitcXHRcXHRpZiAoaSA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XFxuK1xcdFxcdFxcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFxcdTAwMjYgS1ZNX0dJTlRDX0lSUV9NQVNLO1xcbitcXHRcXHRcXHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcXHUwMDI2IH5LVk1fRVNUQVRfRVhUSV9NQVNLO1xcbitcXHRcXHRcXHRzcmVncy1cXHUwMDNlY3NyW2ldID0gZXN0YXQgfCAoZ2ludGMgXFx1MDAzY1xcdTAwM2MgVklQX0RFTFRBKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0c3JlZ3MtXFx1MDAzZWNzcltpXSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuIHtcXG4tXFx0cmV0dXJuIC1FTk9JT0NUTENNRDtcXG4rXFx0aW50IGksIHJldDtcXG4rXFxuK1xcdC8qIENsZWFyIGZpcnN0IHNvIGEgZmFpbGluZyBfa3ZtX3NldGNzciBzdGlsbCBmb3JjZXMgYSBIVyByZWxvYWQuICovXFxuK1xcdHZjcHUtXFx1MDAzZWFyY2guYXV4X2ludXNlIFxcdTAwMjY9IH5LVk1fTEFSQ0hfSFdDU1JfVVNBQkxFO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkrKykge1xcbitcXHRcXHRyZXQgPSBfa3ZtX3NldGNzcih2Y3B1LCBpLCBzcmVncy1cXHUwMDNlY3NyW2ldKTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNDo1OC40NDAwNDE1NjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozOTYwMDI3MTY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc1wiLFxuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NcIixcbiAgICBcIl9rdm1fc2V0Y3NyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgS1ZNX0dFVF9TUkVHUyBhbmQgS1ZNX1NFVF9TUkVHUyBpb2N0bHMgZm9yIExvb25nQXJjaCBLVk0sIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gcmVhZCBhbmQgd3JpdGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdkNQVSBpb2N0bHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgcmVnaXN0ZXIgdmFsdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OGM2MThjMDliNzhiMTdjNmFkZjJjMDU3MjNlMGFhNzI5ZDE2MGM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDg6MjQ6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuaW5kZXggY2QwYjVjMTFjYTljMmIuLmRjMDkxZjI5OTYzZGRiIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuQEAgLTEyNCw3ICsxMjQsMTAgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xuIH07XG4gXG4gLyogZHVtbXkgZGVmaW5pdGlvbiAqL1xuKyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9OUl9TUkVHU1x0MHgxODRcbitcbiBzdHJ1Y3Qga3ZtX3NyZWdzIHtcbitcdF9fdTY0IGNzcltLVk1fTE9PTkdBUkNIX05SX1NSRUdTXTtcbiB9O1xuIFxuIHN0cnVjdCBrdm1faW9jc3JfZW50cnkge1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5pbmRleCAyMGMyMDdkODBlMzFhZS4uMDg5MGI2OGVmYTJhZTggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5AQCAtMTAwMSwxMiArMTAwMSw1MSBAQCBzdGF0aWMgaW50IGt2bV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXG4gXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4ge1xuLVx0cmV0dXJuIC1FTk9JT0NUTENNRDtcbitcdGludCBpO1xuK1x0dW5zaWduZWQgbG9uZyBlc3RhdCwgZ2ludGM7XG4rXHRzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtXHUwMDNlYXJjaC5jc3I7XG4rXG4rXHQvKlxuK1x0ICogUHVsbCBwZW5kaW5nIGludGVycnVwdHMgaW50byBFU1RBVCB3aXRoIGEgc2luZ2xlIHZjcHVfbG9hZC9wdXQgc29cbitcdCAqIHRoZSBFU1RBVCB2YWx1ZSByZWFkIGJlbG93IG1hdGNoZXMgdGhlIGN1cnJlbnQgaW50ZXJydXB0IHN0YXRlLlxuK1x0ICogVGhpcyBhbHNvIGF2b2lkcyB0aGUgcGVyLXJlZ2lzdGVyIGxvYWQvcHV0IHNpZGUtZWZmZWN0IHRoYXQgbWFrZXNcbitcdCAqIHRoZSBPTkVfUkVHIHBhdGgncyBFU1RBVCBzbmFwc2hvdCBvcmRlci1zZW5zaXRpdmUuICBUaGUgU1cgQ1NSXG4rXHQgKiByZWFkcyBydW4gdW5kZXIgdmNwdS1cdTAwM2VtdXRleCwgd2hpY2ggc2VyaWFsaXNlcyB0aGlzIGlvY3RsLlxuK1x0ICovXG4rXHRwcmVlbXB0X2Rpc2FibGUoKTtcbitcdHZjcHVfbG9hZCh2Y3B1KTtcbitcdGt2bV9kZWxpdmVyX2ludHIodmNwdSk7XG4rXHR2Y3B1LVx1MDAzZWFyY2guYXV4X2ludXNlIFx1MDAyNj0gfktWTV9MQVJDSF9TV0NTUl9MQVRFU1Q7XG4rXHR2Y3B1X3B1dCh2Y3B1KTtcbitcdHByZWVtcHRfZW5hYmxlKCk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBLVk1fTE9PTkdBUkNIX05SX1NSRUdTOyBpKyspIHtcbitcdFx0aWYgKGkgPT0gTE9PTkdBUkNIX0NTUl9FU1RBVCkge1xuK1x0XHRcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFx1MDAyNiBLVk1fR0lOVENfSVJRX01BU0s7XG4rXHRcdFx0ZXN0YXQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCkgXHUwMDI2IH5LVk1fRVNUQVRfRVhUSV9NQVNLO1xuK1x0XHRcdHNyZWdzLVx1MDAzZWNzcltpXSA9IGVzdGF0IHwgKGdpbnRjIFx1MDAzY1x1MDAzYyBWSVBfREVMVEEpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdHNyZWdzLVx1MDAzZWNzcltpXSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpKTtcbitcdFx0fVxuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuIHtcbi1cdHJldHVybiAtRU5PSU9DVExDTUQ7XG4rXHRpbnQgaSwgcmV0O1xuK1xuK1x0LyogQ2xlYXIgZmlyc3Qgc28gYSBmYWlsaW5nIF9rdm1fc2V0Y3NyIHN0aWxsIGZvcmNlcyBhIEhXIHJlbG9hZC4gKi9cbitcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkrKykge1xuK1x0XHRyZXQgPSBfa3ZtX3NldGNzcih2Y3B1LCBpLCBzcmVncy1cdTAwM2Vjc3JbaV0pO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNDo1OC40NDAwNDI4NjFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTM5MjQ1NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxvb25nQXJjaCBLVk0gUGF0Y2ggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIHNvbWUgcHJldHR5IGNydWNpYWwgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTTogc3BlY2lmaWNhbGx5LCB0aGUgaW1wbGVtZW50YXRpb25zIGZvciBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYC4gVGhhdCdzIGdvb2Q7IGhhbmRsaW5nIHRoZSBTYXZlL1Jlc3RvcmUgb2YgU3BlY2lhbCBSZWdpc3RlcnMuIEl0IGFsc28gbWVhbnMgd2UnbGwgbmVlZCB0byB1cGRhdGUgYHN0cnVjdCBrdm1fc3JlZ3NgIGluIHRoZSBjb3JyZXNwb25kaW5nIGhlYWRlciBmaWxlLCB3aGljaCBtYWtlcyBzZW5zZS5cblxuR2l2ZW4gdGhhdCBpdCB0b3VjaGVzIHRoZSBMb29uZ0FyY2ggS1ZNIGNvZGUsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIFwiaXMgdGhpcyBjb2RlIGZ1enplZD9cIi4gU3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IExvb25nQXJjaCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBwcm9wZXJseSBzZXQgdXAgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgbGlrZSBHQ0Ugb3IgUUVNVS4gV2FpdCwgaXQgKmRvZXMqIHN1cHBvcnQgS1ZNIGZ1enppbmcsIHRoYXQncyByaWdodC4gU28sIGl0ICpzaG91bGQqIGJlIHBvc3NpYmxlIHRvIGZ1enogdGhlc2UgbmV3IGhhbmRsZXJzLlxuXG5UaGUgcmVhbCBxdWVzdGlvbiBpcywgaXMgZnV6emluZyBpdCAqd29ydGgqIGl0PyBBYnNvbHV0ZWx5LCBpdCBpcywgYmVjYXVzZSB0aGVzZSBhcmUgKm5ldyogaW9jdGwgaGFuZGxlcnMgZm9yIEtWTSBvbiBMb29uZ0FyY2guIEFkZGluZyBuZXcgYXR0YWNrIHN1cmZhY2VzIGlzIGFsd2F5cyB3b3J0aCBmdXp6aW5nLlxuXG5CZWZvcmUgSSBnbyB0b28gZmFyIGRvd24gdGhlIGZ1enppbmcgcmFiYml0IGhvbGUsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIGVuc3VyZSBgQ09ORklHX0tWTWAgaXMgcHJvcGVybHkgc2V0IGZvciBMb29uZ0FyY2guIEknbGwgY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYCB0byBjb25maXJtLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MjU6MDQuOTc5MjkxMzExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDM3NDQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjI1OjA1LjEzMzY3NDM3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MjU3MjE1OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBSZWFjaGFiaWxpdHkgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBteSBmb2N1cyBpcyBvbiBgS1ZNYCDigJMgdGhhdCdzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBoZXJlLiBCdXQgdGhlbiB0aGUgcXVlc3Rpb24gaGl0cyBtZTogaXMgdGhpcyBjb2RlIGV2ZW4gcmVhY2hhYmxlIHdoZW4gcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIG9yIFFFTVU/IEkgbWVhbiwgdGhlc2UgdmlydHVhbGl6ZWQgc2V0dXBzIGFyZSBwcmV0dHkgc3BlY2lmaWMuXG5cbldhaXQsIHllcywgKktWTSogaXMgdGhlIHZpcnR1YWxpemF0aW9uIG1vZHVsZSwgc28gaWYgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGlzIHN1cHBvcnRlZCwgb3Igd2UgZnV6eiBMb29uZ0FyY2ggS1ZNIHNwZWNpZmljYWxseSwgd2UgY2FuIHRlc3QgaXQuXG5cbkFoYSEgSSByZW1lbWJlciBzeXprYWxsZXIuIEl0IHVzdWFsbHkgZm9jdXNlcyBvbiBLVk0gb24geDg2LCBidXQgaXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZnV6eiBLVk0gb24gKm90aGVyKiBhcmNoaXRlY3R1cmVzIHRvby4gVGhlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbmhlcmVudGx5IHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBUaGluZ3MgbGlrZSBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLlxuXG5TbywgdGhlIExvb25nQXJjaCBLVk0gbWlnaHQgYWN0dWFsbHkgYmUgd2l0aGluIHJlYWNoIGlmIHdlIHJ1biBzeXprYWxsZXIgb24gTG9vbmdBcmNoIFFFTVUsIHJpZ2h0PyBUaGF0J3MgdGhlIGNydWNpYWwgbGluay5cblxuQWxyaWdodCwgbGV0J3MgZHJpbGwgZG93bi4gVGhlIGZ1bmN0aW9ucyB0aGF0IHdlcmUgYWRkZWQgYXJlOlxuKiAgIGBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc2BcbiogICBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgXG5cbk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRldGVybWluZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGNhbGxlZC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MjU6MDkuODU5Mzk4MTQzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDk3NDYxNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9NzE5PWludCBrdm1fYXJtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzM1LVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NzM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy03MzctXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9OTg0PXN0YXRpYyBpbnQga3ZtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwMS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMDI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDAzLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTk4Nz1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy05OTgtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6OTk5OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTAwMC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYz01MjU9dm9pZCBrdm1wcGNfc3ViYXJjaF92Y3B1X3VuaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTUyOC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjUyOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTMwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTE5Njg9c3RhdGljIGludCBrdm1wcGNfaGFuZGxlX25lc3RlZF9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjA5OS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxMDA6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc19odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTAxLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NjUxMz1zdGF0aWMgc3RydWN0IGt2bXBwY19vcHMga3ZtX29wc19odiA9IHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MTQ6XFx0LmdldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX2h2LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUxNS1cXHQuc2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfaHYsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jPTExMzU9aW50IGt2bXBwY19oYW5kbGVfZXhpdF9wcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBleGl0X25yKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDU0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MTQ1NTpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX3ByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0NTYtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYz0yMDQ1PXN0YXRpYyBzdHJ1Y3Qga3ZtcHBjX29wcyBrdm1fb3BzX3ByID0ge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MjA0NjpcXHQuZ2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfcHIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0yMDQ3LVxcdC5zZXRfc3JlZ3MgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc19wcixcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYz0xNjA1PWludCBrdm1wcGNfc2V0X3NyZWdzX2l2b3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjI5LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxNjMwOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE2MzEtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTI3MD1sb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzE2LVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzozMTc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzE4LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NDE0ND1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNTUtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxNTY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE1Ny1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTEyMjE4PXN0YXRpYyB2b2lkIF9fZ2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MyICpzcmVnczIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTIyMzUtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyMjM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMjM3LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTYwNz1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncyk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE2MDg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTYwOS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKTtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NDQwNj1zdGF0aWMgbG9uZyBrdm1fdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDUxNi1cXHRcXHRcXHRnb3RvIG91dDtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ1MTc6XFx0XFx0ciA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHZjcHUsIGt2bV9zcmVncyk7XFxudmlydC9rdm0va3ZtX21haW4uYy00NTE4LVxcdFxcdGlmIChyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNToxMi4yNjkxNTE5ODRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTcwNzk1NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIExvb25nQXJjaCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgaG93IGl0IGZpdHMgaW50byB0aGUgS1ZNIGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IGZvciBMb29uZ0FyY2guIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGlzIGJlaW5nIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBrdm1fdmNwdV9pb2N0bGAgd2l0aGluIGBrdm1fbWFpbi5jYC4gVGhhdCBtZWFucyB0aGUgYEtWTV9HRVRfU1JFR1NgIGlvY3RsIG9uIGEgdkNQVSBmaWxlIGRlc2NyaXB0b3IgaXMgdGhlIGVudHJ5IHBvaW50LiBUaGUgc2FtZSBnb2VzIGZvciBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIHZpYSB0aGUgYEtWTV9TRVRfU1JFR1NgIGlvY3RsLiBCb3RoIG9mIHRoZXNlIGZ1bmN0aW9ucywgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzYCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYCwgYXJlIGRlZmluZWQgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgLlxuXG5SaWdodCwgbm93IHRoZSBjcnVjaWFsIHBhcnQgZm9yIGZ1enppbmcgLSB3aGF0IGVsc2UgaXMgdG91Y2hlZD8gVGhlIHBhdGNoIHNlZW1zIHRvIGV4cGxpY2l0bHkgbW9kaWZ5IG9ubHkgdGhvc2UgdHdvIGZ1bmN0aW9ucywgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzYCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYC4gSSdtIGRvdWJsZS1jaGVja2luZyBmb3IgYW55IG90aGVyIG1vZGlmaWNhdGlvbnMgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgc29tZXRoaW5nIGNyaXRpY2FsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBJdCBsb29rcyBsaWtlIGl0J3MganVzdCB0aG9zZSB0d28sIGJ1dCB3YWl0LCBgX2t2bV9zZXRjc3JgIGlzIGNhbGxlZCB3aXRoaW4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYC4gSG1tLCBJIHNob3VsZCBpbmNsdWRlIHRoYXQgZm9yIGZ1enppbmcuIFRpbWUgdG8gaW52ZXN0aWdhdGUgYF9rdm1fc2V0Y3NyYCBtb3JlIGNsb3NlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMzQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MjU6MTcuODM5OTQ5NDM4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzgwNTM2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfa3ZtX3NldGNzclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NTk0PXN0YXRpYyBpbnQgX2t2bV9nZXRjc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgaWQsIHU2NCAqdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02MjktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2MzA6c3RhdGljIGludCBfa3ZtX3NldGNzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBpZCwgdTY0IHZhbClcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTYzMS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTkwMD1zdGF0aWMgaW50IGt2bV9zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTkwOC1cXHRcXHRpZCA9IEtWTV9HRVRfSU9DX0NTUl9JRFgocmVnLVxcdTAwM2VpZCk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo5MDk6XFx0XFx0cmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaWQsIHYpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtOTEwLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy05NjUtXFx0XFx0XFx0ICogV2hlbiB2Q1BVIHJlc2V0LCBjbGVhciB0aGUgRVNUQVQgYW5kIEdJTlRDIHJlZ2lzdGVyc1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6OTY2OlxcdFxcdFxcdCAqIE90aGVyIENTUiByZWdpc3RlcnMgYXJlIGNsZWFyZWQgd2l0aCBmdW5jdGlvbiBfa3ZtX3NldGNzcigpLlxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtOTY3LVxcdFxcdFxcdCAqL1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMDM1PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDM4LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAzOTpcXHQvKiBDbGVhciBmaXJzdCBzbyBhIGZhaWxpbmcgX2t2bV9zZXRjc3Igc3RpbGwgZm9yY2VzIGEgSFcgcmVsb2FkLiAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTA0MC1cXHR2Y3B1LVxcdTAwM2VhcmNoLmF1eF9pbnVzZSBcXHUwMDI2PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTA0Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgS1ZNX0xPT05HQVJDSF9OUl9TUkVHUzsgaSsrKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDQzOlxcdFxcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGksIHNyZWdzLVxcdTAwM2Vjc3JbaV0pO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTA0NC1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNToxNy45NDc3NTg5MDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTcyMDIwOTk4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBMb29uZ0FyY2ggS1ZNIFNSRUcgSU9DVExzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gaW5jbHVkZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGluIHRoZSBGb2N1c1N5bWJvbHMgbGlzdC4gYF9rdm1fc2V0Y3NyYCBjb3VsZCBhbHNvIGJlIGNvbnNpZGVyZWQsIGV2ZW4gdGhvdWdoIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24uIEknbSBmaW5lIHdpdGggYWRkaW5nIGl0IGFzIHdlbGwgZm9yIGNvbXBsZXRlbmVzcy5cblxuTm93LCBsZXQncyBzZWUgYWJvdXQgY29uZmlnIG9wdGlvbnMuIGBDT05GSUdfS1ZNYCBzZWVtcyB0byBiZSB0aGUgbWFpbiBvbmUsIGFzIGV4cGVjdGVkLiBCdXQsIEknbGwgcXVpY2tseSBjaGVjayBmb3Igb3RoZXJzLiBBaCwgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYCBpbmRlZWQsIGBLVk1gIGlzIHByZXNlbnQsIGl0J3Mgc2FmZSB0byBhc3N1bWUgYEtWTWAgYWxvbmUgaXMgc3VmZmljaWVudC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGFib3V0IGBLVk1fTE9PTkdBUkNIX05SX1NSRUdTYC4gSXQncyBkZWZpbmVkIGluIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oYCwgc28gYWxsIGdvb2QuXG5cbk9rYXksIGxldCdzIHJldmlldyB0aGlzIHBhdGNoIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbXBsZW1lbnRhdGlvbi4gSG1tLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGhhbmRsZSB0aGUgYEtWTV9HRVRfU1JFR1NgIGFuZCBgS1ZNX1NFVF9TUkVHU2AgaW9jdGxzIHJlc3BlY3RpdmVseSBmb3IgTG9vbmdBcmNoLiBUaGUgYGdldGAgZnVuY3Rpb24gcHVsbHMgcGVuZGluZyBpbnRlcnJ1cHRzIGludG8gRVNUQVQgdXNpbmcgYGt2bV9kZWxpdmVyX2ludHJgLCB3aGljaCBzZXJpYWxpemVzIHRoZSBpb2N0bCB1bmRlciB2Y3B1LVx1MDAzZW11dGV4LiBUaGUgYHNldGAgZnVuY3Rpb24gY2xlYXJzIHRoZSBgSFdDU1JfVVNBQkxFYCBmbGFnIGZpcnN0LiBCb3RoIGl0ZXJhdGUgdGhyb3VnaCB0aGUgYEtWTV9MT09OR0FSQ0hfTlJfU1JFR1NgIGFuZCBkbyB0aGUgc2V0IGFuZCBnZXQgdmlhIGBrdm1fcmVhZF9zd19nY3NyYCBhbmQgYF9rdm1fc2V0Y3NyYCwgc28gaXQncyBhIGNsZWFyIGltcGxlbWVudGF0aW9uLlxuXG5gYGBjXG5pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbntcblx0aW50IGk7XG5cdHVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjO1xuXHRzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtXHUwMDNlYXJjaC5jc3I7XG5cblx0Lypcblx0ICogUHVsbCBwZW5kaW5nIGludGVycnVwdHMgaW50byBFU1RBVCB3aXRoIGEgc2luZ2xlIHZjcHVfbG9hZC9wdXQgc29cblx0ICogdGhlIEVTVEFUIHZhbHVlIHJlYWQgYmVsb3cgbWF0Y2hlcyB0aGUgY3VycmVudCBpbnRlcnJ1cHQgc3RhdGUuXG5cdCAqIFRoaXMgYWxzbyBhdm9pZHMgdGhlIHBlci1yZWdpc3RlciBsb2FkL3B1dCBzaWRlLWVmZmVjdCB0aGF0IG1ha2VzXG5cdCAqIHRoZSBPTkVfUkVHIHBhdGgncyBFU1RBVCBzbmFwc2hvdCBvcmRlci1zZW5zaXRpdmUuICBUaGUgU1cgQ1NSXG5cdCAqIHJlYWRzIHJ1biB1bmRlciB2Y3B1LVx1MDAzZW11dGV4LCB3aGljaCBzZXJpYWxpc2VzIHRoaXMgaW9jdGwuXG5cdCAqL1xuXHRwcmVlbXB0X2Rpc2FibGUoKTtcblx0dmNwdV9sb2FkKHZjcHUpO1xuXHRrdm1fZGVsaXZlcl9pbnRyKHZjcHUpO1xuXHR2Y3B1LVx1MDAzZWFyY2guYXV4X2ludXNlIFx1MDAyNj0gfktWTV9MQVJDSF9TV0NTUl9MQVRFU1Q7XG5cdHZjcHVfcHV0KHZjcHUpO1xuXHRwcmVlbXB0X2VuYWJsZSgpO1xuXG5cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkrKykge1xuXHRcdGlmIChpID09IExPT05HQVJDSF9DU1JfRVNUQVQpIHtcblx0XHRcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFx1MDAyNiBLVk1fR0lOVENfSVJRX01BU0s7XG5cdFx0XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcdTAwMjYgfktWTV9FU1RBVF9FWFRJX01BU0s7XG5cdFx0XHRzcmVncy1cdTAwM2Vjc3JbaV0gPSBlc3RhdCB8IChnaW50YyBcdTAwM2NcdTAwM2MgVklQX0RFTFRBKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3JlZ3MtXHUwMDNlY3NyW2ldID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGkpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiAwO1xufVxuXG5pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbntcblx0aW50IGksIHJldDtcblxuXHQvKiBDbGVhciBmaXJzdCBzbyBhIGZhaWxpbmcgX2t2bV9zZXRjc3Igc3RpbGwgZm9yY2VzIGEgSFcgcmVsb2FkLiAqL1xuXHR2Y3B1LVx1MDAzZWFyY2guYXV4X2ludXNlIFx1MDAyNj0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7XG5cblx0Zm9yIChpID0gMDsgaSBcdTAwM2MgS1ZNX0xPT05HQVJDSF9OUl9TUkVHUzsgaSsrKSB7XG5cdFx0cmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaSwgc3JlZ3MtXHUwMDNlY3NyW2ldKTtcblx0XHRpZiAocmV0KVxuXHRcdFx0cmV0dXJuIHJldDtcblx0fVxuXG5cdHJldHVybiAwO1xufVxuYGBgXG5cblRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBmdW5jdGlvbmFsLiBCZWNhdXNlIHVzZXJzcGFjZSBjYW4gbm93IGNvbnRyb2wgdGhlXG5cbiIsIklucHV0VG9rZW5zIjo3MzYwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNToyOS42Njc5NzIwMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc4MjYyMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3JlYWRfc3dfZ2NzclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Nzci5oPTE4Nz1pbnQga3ZtX2VtdV9pb2NzcihsYXJjaF9pbnN0IGluc3QsIHN0cnVjdCBrdm1fcnVuICpydW4sIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Nzci5oLTE4OC1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fY3NyLmg6MTg5OnN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBrdm1fcmVhZF9zd19nY3NyKHN0cnVjdCBsb29uZ2FyY2hfY3NycyAqY3NyLCBpbnQgZ2lkKVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9jc3IuaC0xOTAte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYz02NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBrdm1fZW11X3JlYWRfY3NyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNzcmlkKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy03NC1cXHRpZiAoZ2V0X2djc3JfZmxhZyhjc3JpZCkgXFx1MDAyNiBTV19HQ1NSKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmM6NzU6XFx0XFx0dmFsID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGNzcmlkKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jLTc2LVxcdGVsc2VcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmM9ODI9c3RhdGljIHVuc2lnbmVkIGxvbmcga3ZtX2VtdV93cml0ZV9jc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3NyaWQsIHVuc2lnbmVkIGxvbmcgdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy04Ny1cXHRpZiAoZ2V0X2djc3JfZmxhZyhjc3JpZCkgXFx1MDAyNiBTV19HQ1NSKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYzo4ODpcXHRcXHRvbGQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgY3NyaWQpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmMtODktXFx0XFx0a3ZtX3dyaXRlX3N3X2djc3IoY3NyLCBjc3JpZCwgdmFsKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmM9OTY9c3RhdGljIHVuc2lnbmVkIGxvbmcga3ZtX2VtdV94Y2hnX2NzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjc3JpZCxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmMtMTAyLVxcdGlmIChnZXRfZ2Nzcl9mbGFnKGNzcmlkKSBcXHUwMDI2IFNXX0dDU1IpIHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jOjEwMzpcXHRcXHRvbGQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgY3NyaWQpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmMtMTA0LVxcdFxcdHZhbCA9IChvbGQgXFx1MDAyNiB+Y3NyX21hc2spIHwgKHZhbCBcXHUwMDI2IGNzcl9tYXNrKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jPTUyPXZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNjMtXFx0ICovXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6NjQ6XFx0Y2ZnID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVENGRyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNjUtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy04OS1cXHQgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYzo5MDpcXHR0aWNrcyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjkxOlxcdGVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTkyLVxcdGlmICghKGNmZyBcXHUwMDI2IENTUl9UQ0ZHX1BFUklPRCkgXFx1MDAyNlxcdTAwMjYgKHRpY2tzIFxcdTAwM2UgY2ZnKSkge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM9MTQ1PXN0YXRpYyB2b2lkIF9rdm1fc2F2ZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy0xNTAtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6MTUxOlxcdGNmZyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RDRkcpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjE1MjpcXHR0aWNrcyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTE1My1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jPTE4Mz12b2lkIGt2bV9zYXZlX3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTE5MS1cXHRrdm1fc2F2ZV9od19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9UVkFMKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYzoxOTI6XFx0aWYgKGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RDRkcpIFxcdTAwMjYgQ1NSX1RDRkdfRU4pXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtMTkzLVxcdFxcdF9rdm1fc2F2ZV90aW1lcih2Y3B1KTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTE5PXN0YXRpYyB2b2lkIGt2bV9sb3NlX3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzOS1cXHQgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE0MDpcXHR2YWwgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9QRVJGQ1RSTDApO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTQxOlxcdHZhbCB8PSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9QRVJGQ1RSTDEpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTQyOlxcdHZhbCB8PSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9QRVJGQ1RSTDIpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTQzOlxcdHZhbCB8PSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9QRVJGQ1RSTDMpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTQ0LVxcdGlmICghKHZhbCBcXHUwMDI2IEtWTV9QTVVfRVZFTlRfRU5BQkxFRCkpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTUwNT1zdGF0aWMgaW5saW5lIGludCBrdm1fc2V0X2NwdWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHZhbClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNTE0LVxcdG1hcCA9IHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5waHlpZF9tYXA7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo1MTU6XFx0Y3B1aWQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9DUFVJRCk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy01MTYtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTU1Nj1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX2Ryb3BfY3B1aWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy01NjItXFx0bWFwID0gdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnBoeWlkX21hcDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjU2MzpcXHRjcHVpZCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0NQVUlEKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTU2NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NTk0PXN0YXRpYyBpbnQgX2t2bV9nZXRjc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgaWQsIHU2NCAqdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02MTQtXFx0XFx0LyogRVNUQVQgSVAwfklQNyBnZXQgZnJvbSBHSU5UQyAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NjE1OlxcdFxcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFxcdTAwMjYgS1ZNX0dJTlRDX0lSUV9NQVNLO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NjE2OlxcdFxcdGVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpIFxcdTAwMjYgfktWTV9FU1RBVF9FWFRJX01BU0s7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02MTctXFx0XFx0KnZhbCA9IGVzdGF0IHwgKGdpbnRjIFxcdTAwM2NcXHUwMDNjIFZJUF9ERUxUQSk7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTYyNC1cXHQgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjYyNTpcXHQqdmFsID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGlkKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTYyNi1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NjMwPXN0YXRpYyBpbnQgX2t2bV9zZXRjc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgaWQsIHU2NCB2YWwpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTY0NC1cXHRcXHRnaW50YyA9ICh2YWwgXFx1MDAzZVxcdTAwM2UgVklQX0RFTFRBKSBcXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjY0NTpcXHRcXHRnaW50YyB8PSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgXFx1MDAyNiB+S1ZNX0dJTlRDX0lSUV9NQVNLO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjQ2LVxcdFxcdGt2bV93cml0ZV9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQywgZ2ludGMpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02NjYtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njc6XFx0XFx0dmFsID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwwKSB8XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njg6XFx0XFx0ICAgICAga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwxKSB8XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njk6XFx0XFx0ICAgICAga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwyKSB8XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2NzA6XFx0XFx0ICAgICAga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwzKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTY3MS1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTAwMj1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAyMy1cXHRcXHRpZiAoaSA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDI0OlxcdFxcdFxcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFxcdTAwMjYgS1ZNX0dJTlRDX0lSUV9NQVNLO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAyNTpcXHRcXHRcXHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcXHUwMDI2IH5LVk1fRVNUQVRfRVhUSV9NQVNLO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAyNi1cXHRcXHRcXHRzcmVncy1cXHUwMDNlY3NyW2ldID0gZXN0YXQgfCAoZ2ludGMgXFx1MDAzY1xcdTAwM2MgVklQX0RFTFRBKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjctXFx0XFx0fSBlbHNlIHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMjg6XFx0XFx0XFx0c3JlZ3MtXFx1MDAzZWNzcltpXSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjktXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNToyOS43NTU4MDQwNjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE0NDI0MjI2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBMb29uZ0FyY2ggS1ZNIFNSRUcgSU9DVEwgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGltcGxlbWVudGluZyB0aGUgYEtWTV9HRVRfU1JFR1NgIGFuZCBgS1ZNX1NFVF9TUkVHU2AgaW9jdGxzIHNwZWNpZmljYWxseSBmb3IgTG9vbmdBcmNoIEtWTS4gVGhhdCdzIGdvb2Q7IGl0IG1lYW5zIHVzZXJzcGFjZSBjYW4gbm93IGludGVyYWN0IHdpdGggdGhlIHNwZWNpYWwgcmVnaXN0ZXJzIG9mIGEgdkNQVSBvbiB0aGlzIGFyY2hpdGVjdHVyZS4gSXQncyBhbiBpbmxpbmUgZnVuY3Rpb24sIHdoaWNoIGdlbmVyYWxseSBkb2Vzbid0IHJhaXNlIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzIHJlZ2FyZGluZyBwZXJmb3JtYW5jZSBvciBjb21wbGV4aXR5LlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4sIG9mIGNvdXJzZSwgaXMgZnV6emluZy4gVGhpcyBpcyBhYnNvbHV0ZWx5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRob3JvdWdoIHRlc3RpbmcuIFRoZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgLCBhbmQgdGhlIHVuZGVybHlpbmcgYF9rdm1fc2V0Y3NyYCBmdW5jdGlvbnMgYXJlIGNyaXRpY2FsLiBUaGV5IGFyZSB0aGUgY29uZHVpdHMgYmV0d2VlbiB1c2Vyc3BhY2UgcmVxdWVzdHMgKHZpYSB0aGUgaW9jdGxzKSBhbmQgdGhlIGFjdHVhbCByZWdpc3RlciBtYW5pcHVsYXRpb24gd2l0aGluIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIFRoZSBmYWN0IHRoYXQgdGhpcyBpcyByZWFjaGFibGUgdmlhIHZDUFUgaW9jdGxzIGlzIGEga2V5IHRyaWdnZXIgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gYmUgY29uZmlkZW50IHRoYXQgdGhlIGNvZGUgaGFuZGxlcyByZWdpc3RlciB2YWx1ZXMgY29ycmVjdGx5LCBhbmQgdGhhdCBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUgdmFsaWRhdGVkIHJvYnVzdGx5LiBJJ20gZ29pbmcgdG8gc2V0IHRoZSByZXN1bHRzIGFzIGZ1enphYmxlLCBhbmQgaXQgc2hvdWxkIGJlIGEgaGlnaCBwcmlvcml0eS4gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgS1ZNIHN1YnN5c3RlbSwgZXNwZWNpYWxseSB0aGVzZSBuZXcgaW9jdGwgaGFuZGxlcnMsIGFyZSByZXNpbGllbnQgdG8gbWFsZm9ybWVkIG9yIHVuZXhwZWN0ZWQgZGF0YSBjb21pbmcgZnJvbSB0aGUgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI2NywiT3V0cHV0VG9rZW5zIjoxNTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MjU6MzcuOTAwMDQ5MjMzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMjYwMzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc1wiLFxuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NcIixcbiAgICBcIl9rdm1fc2V0Y3NyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgS1ZNX0dFVF9TUkVHUyBhbmQgS1ZNX1NFVF9TUkVHUyBpb2N0bHMgZm9yIExvb25nQXJjaCBLVk0sIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gcmVhZCBhbmQgd3JpdGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdkNQVSBpb2N0bHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgcmVnaXN0ZXIgdmFsdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc1wiLFxuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NcIixcbiAgICBcIl9rdm1fc2V0Y3NyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgS1ZNX0dFVF9TUkVHUyBhbmQgS1ZNX1NFVF9TUkVHUyBpb2N0bHMgZm9yIExvb25nQXJjaCBLVk0sIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gcmVhZCBhbmQgd3JpdGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdkNQVSBpb2N0bHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgcmVnaXN0ZXIgdmFsdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpqnwk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 07:48:26 +0000 UTC FinishedAt: 2026-07-22 08:25:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "3a8476a2-ea22-435d-b5f4-4d12bb04fc5f" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_ioctl_get_sregs", "kvm_arch_vcpu_ioctl_set_sregs", "_kvm_setcsr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzJiMzNDssCiAgICAmIzM0O19rdm1fc2V0Y3NyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgdGhlIEtWTV9HRVRfU1JFR1MgYW5kIEtWTV9TRVRfU1JFR1MgaW9jdGxzIGZvciBMb29uZ0FyY2ggS1ZNLCB3aGljaCBhbGxvd3MgdXNlcnNwYWNlIHRvIHJlYWQgYW5kIHdyaXRlIHNwZWNpYWwgcmVnaXN0ZXJzIG9mIGEgdkNQVS4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHZDUFUgaW9jdGxzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGhhbmRsaW5nIG9mIHJlZ2lzdGVyIHZhbHVlcyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2OGM2MThjMDliNzhiMTdjNmFkZjJjMDU3MjNlMGFhNzI5ZDE2MGM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDg6MjQ6NTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbmluZGV4IGNkMGI1YzExY2E5YzJiLi5kYzA5MWYyOTk2M2RkYiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbkBAIC0xMjQsNyAmIzQzOzEyNCwxMCBAQCBzdHJ1Y3Qga3ZtX3N5bmNfcmVncyB7XG4gfTtcbiBcbiAvKiBkdW1teSBkZWZpbml0aW9uICovXG4mIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9OUl9TUkVHU1x0MHgxODRcbiYjNDM7XG4gc3RydWN0IGt2bV9zcmVncyB7XG4mIzQzO1x0X191NjQgY3NyW0tWTV9MT09OR0FSQ0hfTlJfU1JFR1NdO1xuIH07XG4gXG4gc3RydWN0IGt2bV9pb2Nzcl9lbnRyeSB7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbmluZGV4IDIwYzIwN2Q4MGUzMWFlLi4wODkwYjY4ZWZhMmFlOCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbkBAIC0xMDAxLDEyICYjNDM7MTAwMSw1MSBAQCBzdGF0aWMgaW50IGt2bV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXG4gXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4ge1xuLVx0cmV0dXJuIC1FTk9JT0NUTENNRDtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGVzdGF0LCBnaW50YztcbiYjNDM7XHRzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtXHUwMDNlYXJjaC5jc3I7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUHVsbCBwZW5kaW5nIGludGVycnVwdHMgaW50byBFU1RBVCB3aXRoIGEgc2luZ2xlIHZjcHVfbG9hZC9wdXQgc29cbiYjNDM7XHQgKiB0aGUgRVNUQVQgdmFsdWUgcmVhZCBiZWxvdyBtYXRjaGVzIHRoZSBjdXJyZW50IGludGVycnVwdCBzdGF0ZS5cbiYjNDM7XHQgKiBUaGlzIGFsc28gYXZvaWRzIHRoZSBwZXItcmVnaXN0ZXIgbG9hZC9wdXQgc2lkZS1lZmZlY3QgdGhhdCBtYWtlc1xuJiM0MztcdCAqIHRoZSBPTkVfUkVHIHBhdGgmIzM5O3MgRVNUQVQgc25hcHNob3Qgb3JkZXItc2Vuc2l0aXZlLiAgVGhlIFNXIENTUlxuJiM0MztcdCAqIHJlYWRzIHJ1biB1bmRlciB2Y3B1LVx1MDAzZW11dGV4LCB3aGljaCBzZXJpYWxpc2VzIHRoaXMgaW9jdGwuXG4mIzQzO1x0ICovXG4mIzQzO1x0cHJlZW1wdF9kaXNhYmxlKCk7XG4mIzQzO1x0dmNwdV9sb2FkKHZjcHUpO1xuJiM0MztcdGt2bV9kZWxpdmVyX2ludHIodmNwdSk7XG4mIzQzO1x0dmNwdS1cdTAwM2VhcmNoLmF1eF9pbnVzZSBcdTAwMjY9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUO1xuJiM0MztcdHZjcHVfcHV0KHZjcHUpO1xuJiM0MztcdHByZWVtcHRfZW5hYmxlKCk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRpZiAoaSA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XG4mIzQzO1x0XHRcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFx1MDAyNiBLVk1fR0lOVENfSVJRX01BU0s7XG4mIzQzO1x0XHRcdGVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpIFx1MDAyNiB+S1ZNX0VTVEFUX0VYVElfTUFTSztcbiYjNDM7XHRcdFx0c3JlZ3MtXHUwMDNlY3NyW2ldID0gZXN0YXQgfCAoZ2ludGMgXHUwMDNjXHUwMDNjIFZJUF9ERUxUQSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRzcmVncy1cdTAwM2Vjc3JbaV0gPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgaSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4ge1xuLVx0cmV0dXJuIC1FTk9JT0NUTENNRDtcbiYjNDM7XHRpbnQgaSwgcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBDbGVhciBmaXJzdCBzbyBhIGZhaWxpbmcgX2t2bV9zZXRjc3Igc3RpbGwgZm9yY2VzIGEgSFcgcmVsb2FkLiAqL1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgS1ZNX0xPT05HQVJDSF9OUl9TUkVHUzsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGksIHNyZWdzLVx1MDAzZWNzcltpXSk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyYjMzQ7LAogICAgJiMzNDtfa3ZtX3NldGNzciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHRoZSBLVk1fR0VUX1NSRUdTIGFuZCBLVk1fU0VUX1NSRUdTIGlvY3RscyBmb3IgTG9vbmdBcmNoIEtWTSwgd2hpY2ggYWxsb3dzIHVzZXJzcGFjZSB0byByZWFkIGFuZCB3cml0ZSBzcGVjaWFsIHJlZ2lzdGVycyBvZiBhIHZDUFUuIFRoaXMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB2Q1BVIGlvY3RscyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBoYW5kbGluZyBvZiByZWdpc3RlciB2YWx1ZXMgYW5kIHN0YXRlIHRyYW5zaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OGM2MThjMDliNzhiMTdjNmFkZjJjMDU3MjNlMGFhNzI5ZDE2MGM5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjIgMDg6MjQ6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaAppbmRleCBjZDBiNWMxMWNhOWMyYi4uZGMwOTFmMjk5NjNkZGIgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaApAQCAtMTI0LDcgJiM0MzsxMjQsMTAgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3MgewogfTsKIAogLyogZHVtbXkgZGVmaW5pdGlvbiAqLwomIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9OUl9TUkVHUwkweDE4NAomIzQzOwogc3RydWN0IGt2bV9zcmVncyB7CiYjNDM7CV9fdTY0IGNzcltLVk1fTE9PTkdBUkNIX05SX1NSRUdTXTsKIH07CiAKIHN0cnVjdCBrdm1faW9jc3JfZW50cnkgewpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKaW5kZXggMjBjMjA3ZDgwZTMxYWUuLjA4OTBiNjhlZmEyYWU4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKQEAgLTEwMDEsMTIgJiM0MzsxMDAxLDUxIEBAIHN0YXRpYyBpbnQga3ZtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZykKIAogaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpCiB7Ci0JcmV0dXJuIC1FTk9JT0NUTENNRDsKJiM0MzsJaW50IGk7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjOwomIzQzOwlzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtJmd0O2FyY2guY3NyOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBQdWxsIHBlbmRpbmcgaW50ZXJydXB0cyBpbnRvIEVTVEFUIHdpdGggYSBzaW5nbGUgdmNwdV9sb2FkL3B1dCBzbwomIzQzOwkgKiB0aGUgRVNUQVQgdmFsdWUgcmVhZCBiZWxvdyBtYXRjaGVzIHRoZSBjdXJyZW50IGludGVycnVwdCBzdGF0ZS4KJiM0MzsJICogVGhpcyBhbHNvIGF2b2lkcyB0aGUgcGVyLXJlZ2lzdGVyIGxvYWQvcHV0IHNpZGUtZWZmZWN0IHRoYXQgbWFrZXMKJiM0MzsJICogdGhlIE9ORV9SRUcgcGF0aCYjMzk7cyBFU1RBVCBzbmFwc2hvdCBvcmRlci1zZW5zaXRpdmUuICBUaGUgU1cgQ1NSCiYjNDM7CSAqIHJlYWRzIHJ1biB1bmRlciB2Y3B1LSZndDttdXRleCwgd2hpY2ggc2VyaWFsaXNlcyB0aGlzIGlvY3RsLgomIzQzOwkgKi8KJiM0MzsJcHJlZW1wdF9kaXNhYmxlKCk7CiYjNDM7CXZjcHVfbG9hZCh2Y3B1KTsKJiM0MzsJa3ZtX2RlbGl2ZXJfaW50cih2Y3B1KTsKJiM0MzsJdmNwdS0mZ3Q7YXJjaC5hdXhfaW51c2UgJmFtcDs9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUOwomIzQzOwl2Y3B1X3B1dCh2Y3B1KTsKJiM0MzsJcHJlZW1wdF9lbmFibGUoKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoaSA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7CiYjNDM7CQkJZ2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgJmFtcDsgS1ZNX0dJTlRDX0lSUV9NQVNLOwomIzQzOwkJCWVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpICZhbXA7IH5LVk1fRVNUQVRfRVhUSV9NQVNLOwomIzQzOwkJCXNyZWdzLSZndDtjc3JbaV0gPSBlc3RhdCB8IChnaW50YyAmbHQ7Jmx0OyBWSVBfREVMVEEpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlzcmVncy0mZ3Q7Y3NyW2ldID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGkpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogCiBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncykKIHsKLQlyZXR1cm4gLUVOT0lPQ1RMQ01EOwomIzQzOwlpbnQgaSwgcmV0OwomIzQzOwomIzQzOwkvKiBDbGVhciBmaXJzdCBzbyBhIGZhaWxpbmcgX2t2bV9zZXRjc3Igc3RpbGwgZm9yY2VzIGEgSFcgcmVsb2FkLiAqLwomIzQzOwl2Y3B1LSZndDthcmNoLmF1eF9pbnVzZSAmYW1wOz0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBLVk1fTE9PTkdBUkNIX05SX1NSRUdTOyBpJiM0MzsmIzQzOykgewomIzQzOwkJcmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaSwgc3JlZ3MtJmd0O2NzcltpXSk7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxvb25nQXJjaCBLVk0gUGF0Y2ggQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIHNvbWUgcHJldHR5IGNydWNpYWwgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTTogc3BlY2lmaWNhbGx5LCB0aGUgaW1wbGVtZW50YXRpb25zIGZvciBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYC4gVGhhdCYjMzk7cyBnb29kOyBoYW5kbGluZyB0aGUgU2F2ZS9SZXN0b3JlIG9mIFNwZWNpYWwgUmVnaXN0ZXJzLiBJdCBhbHNvIG1lYW5zIHdlJiMzOTtsbCBuZWVkIHRvIHVwZGF0ZSBgc3RydWN0IGt2bV9zcmVnc2AgaW4gdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUsIHdoaWNoIG1ha2VzIHNlbnNlLgoKR2l2ZW4gdGhhdCBpdCB0b3VjaGVzIHRoZSBMb29uZ0FyY2ggS1ZNIGNvZGUsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzICYjMzQ7aXMgdGhpcyBjb2RlIGZ1enplZD8mIzM0Oy4gU3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IExvb25nQXJjaCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBwcm9wZXJseSBzZXQgdXAgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgbGlrZSBHQ0Ugb3IgUUVNVS4gV2FpdCwgaXQgKmRvZXMqIHN1cHBvcnQgS1ZNIGZ1enppbmcsIHRoYXQmIzM5O3MgcmlnaHQuIFNvLCBpdCAqc2hvdWxkKiBiZSBwb3NzaWJsZSB0byBmdXp6IHRoZXNlIG5ldyBoYW5kbGVycy4KClRoZSByZWFsIHF1ZXN0aW9uIGlzLCBpcyBmdXp6aW5nIGl0ICp3b3J0aCogaXQ/IEFic29sdXRlbHksIGl0IGlzLCBiZWNhdXNlIHRoZXNlIGFyZSAqbmV3KiBpb2N0bCBoYW5kbGVycyBmb3IgS1ZNIG9uIExvb25nQXJjaC4gQWRkaW5nIG5ldyBhdHRhY2sgc3VyZmFjZXMgaXMgYWx3YXlzIHdvcnRoIGZ1enppbmcuCgpCZWZvcmUgSSBnbyB0b28gZmFyIGRvd24gdGhlIGZ1enppbmcgcmFiYml0IGhvbGUsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIGVuc3VyZSBgQ09ORklHX0tWTWAgaXMgcHJvcGVybHkgc2V0IGZvciBMb29uZ0FyY2guIEkmIzM5O2xsIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AgdG8gY29uZmlybSwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gUmVhY2hhYmlsaXR5IGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBteSBmb2N1cyBpcyBvbiBgS1ZNYCDigJMgdGhhdCYjMzk7cyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaGVyZS4gQnV0IHRoZW4gdGhlIHF1ZXN0aW9uIGhpdHMgbWU6IGlzIHRoaXMgY29kZSBldmVuIHJlYWNoYWJsZSB3aGVuIHJ1bm5pbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSBvciBRRU1VPyBJIG1lYW4sIHRoZXNlIHZpcnR1YWxpemVkIHNldHVwcyBhcmUgcHJldHR5IHNwZWNpZmljLgoKV2FpdCwgeWVzLCAqS1ZNKiBpcyB0aGUgdmlydHVhbGl6YXRpb24gbW9kdWxlLCBzbyBpZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gaXMgc3VwcG9ydGVkLCBvciB3ZSBmdXp6IExvb25nQXJjaCBLVk0gc3BlY2lmaWNhbGx5LCB3ZSBjYW4gdGVzdCBpdC4KCkFoYSEgSSByZW1lbWJlciBzeXprYWxsZXIuIEl0IHVzdWFsbHkgZm9jdXNlcyBvbiBLVk0gb24geDg2LCBidXQgaXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZnV6eiBLVk0gb24gKm90aGVyKiBhcmNoaXRlY3R1cmVzIHRvby4gVGhlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbmhlcmVudGx5IHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBUaGluZ3MgbGlrZSBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLgoKU28sIHRoZSBMb29uZ0FyY2ggS1ZNIG1pZ2h0IGFjdHVhbGx5IGJlIHdpdGhpbiByZWFjaCBpZiB3ZSBydW4gc3l6a2FsbGVyIG9uIExvb25nQXJjaCBRRU1VLCByaWdodD8gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBsaW5rLgoKQWxyaWdodCwgbGV0JiMzOTtzIGRyaWxsIGRvd24uIFRoZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIGFkZGVkIGFyZToKKiAgIGBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc2AKKiAgIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AKCk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRldGVybWluZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGNhbGxlZC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9NzE5PWludCBrdm1fYXJtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbi0tXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTczNS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NzM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTczNy1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz05ODQ9c3RhdGljIGludCBrdm1fc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwMS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAwMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwMy17XG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmM9OTg3PWludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy05OTgtXG5hcmNoL21pcHMva3ZtL21pcHMuYzo5OTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMDAtXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM9NTI1PXZvaWQga3ZtcHBjX3N1YmFyY2hfdmNwdV91bmluaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTI4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1Mjk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTMwLVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTE5Njg9c3RhdGljIGludCBrdm1wcGNfaGFuZGxlX25lc3RlZF9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwOTktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxMDA6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc19odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxMDEtXHRcdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTY1MTM9c3RhdGljIHN0cnVjdCBrdm1wcGNfb3BzIGt2bV9vcHNfaHYgPSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MTQ6XHQuZ2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfaHYsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1MTUtXHQuc2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfaHYsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYz0xMTM1PWludCBrdm1wcGNfaGFuZGxlX2V4aXRfcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgZXhpdF9ucilcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0NTQtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jOjE0NTU6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc19wcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0NTYtXHRcdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jPTIwNDU9c3RhdGljIHN0cnVjdCBrdm1wcGNfb3BzIGt2bV9vcHNfcHIgPSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jOjIwNDY6XHQuZ2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfcHIsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTIwNDctXHQuc2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfcHIsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE2MDU9aW50IGt2bXBwY19zZXRfc3JlZ3NfaXZvcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjI5LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jOjE2MzA6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjMxLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9MjcwPWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzE2LVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMxNzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTMxOC1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTQxNDQ9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE1NS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTU2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE1Ny1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTEyMjE4PXN0YXRpYyB2b2lkIF9fZ2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MyICpzcmVnczIpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMjM1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyMjM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTIyMzctXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNjA3PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKTtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNjA4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTYwOS1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NDQwNj1zdGF0aWMgbG9uZyBrdm1fdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ1MTYtXHRcdFx0Z290byBvdXQ7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ1MTc6XHRcdHIgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyh2Y3B1LCBrdm1fc3JlZ3MpO1xudmlydC9rdm0va3ZtX21haW4uYy00NTE4LVx0XHRpZiAocilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDM0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIExvb25nQXJjaCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyBob3cgaXQgZml0cyBpbnRvIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgZm9yIExvb25nQXJjaC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc2AgaXMgYmVpbmcgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGt2bV92Y3B1X2lvY3RsYCB3aXRoaW4gYGt2bV9tYWluLmNgLiBUaGF0IG1lYW5zIHRoZSBgS1ZNX0dFVF9TUkVHU2AgaW9jdGwgb24gYSB2Q1BVIGZpbGUgZGVzY3JpcHRvciBpcyB0aGUgZW50cnkgcG9pbnQuIFRoZSBzYW1lIGdvZXMgZm9yIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AgdmlhIHRoZSBgS1ZNX1NFVF9TUkVHU2AgaW9jdGwuIEJvdGggb2YgdGhlc2UgZnVuY3Rpb25zLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgLCBhcmUgZGVmaW5lZCBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AuCgpSaWdodCwgbm93IHRoZSBjcnVjaWFsIHBhcnQgZm9yIGZ1enppbmcgLSB3aGF0IGVsc2UgaXMgdG91Y2hlZD8gVGhlIHBhdGNoIHNlZW1zIHRvIGV4cGxpY2l0bHkgbW9kaWZ5IG9ubHkgdGhvc2UgdHdvIGZ1bmN0aW9ucywgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzYCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYC4gSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgZm9yIGFueSBvdGhlciBtb2RpZmljYXRpb25zIHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBzb21ldGhpbmcgY3JpdGljYWwgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MganVzdCB0aG9zZSB0d28sIGJ1dCB3YWl0LCBgX2t2bV9zZXRjc3JgIGlzIGNhbGxlZCB3aXRoaW4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYC4gSG1tLCBJIHNob3VsZCBpbmNsdWRlIHRoYXQgZm9yIGZ1enppbmcuIFRpbWUgdG8gaW52ZXN0aWdhdGUgYF9rdm1fc2V0Y3NyYCBtb3JlIGNsb3NlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X2t2bV9zZXRjc3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NTk0PXN0YXRpYyBpbnQgX2t2bV9nZXRjc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgaWQsIHU2NCAqdmFsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjI5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2MzA6c3RhdGljIGludCBfa3ZtX3NldGNzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBpZCwgdTY0IHZhbClcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjMxLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTkwMD1zdGF0aWMgaW50IGt2bV9zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy05MDgtXHRcdGlkID0gS1ZNX0dFVF9JT0NfQ1NSX0lEWChyZWctXHUwMDNlaWQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo5MDk6XHRcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGlkLCB2KTtcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtOTEwLVx0XHRicmVhaztcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTk2NS1cdFx0XHQgKiBXaGVuIHZDUFUgcmVzZXQsIGNsZWFyIHRoZSBFU1RBVCBhbmQgR0lOVEMgcmVnaXN0ZXJzXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjk2NjpcdFx0XHQgKiBPdGhlciBDU1IgcmVnaXN0ZXJzIGFyZSBjbGVhcmVkIHdpdGggZnVuY3Rpb24gX2t2bV9zZXRjc3IoKS5cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtOTY3LVx0XHRcdCAqL1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTAzNT1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMzgtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMzk6XHQvKiBDbGVhciBmaXJzdCBzbyBhIGZhaWxpbmcgX2t2bV9zZXRjc3Igc3RpbGwgZm9yY2VzIGEgSFcgcmVsb2FkLiAqL1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDQwLVx0dmNwdS1cdTAwM2VhcmNoLmF1eF9pbnVzZSBcdTAwMjY9IH5LVk1fTEFSQ0hfSFdDU1JfVVNBQkxFO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTA0Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkmIzQzOyYjNDM7KSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwNDM6XHRcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGksIHNyZWdzLVx1MDAzZWNzcltpXSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwNDQtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gTG9vbmdBcmNoIEtWTSBTUkVHIElPQ1RMcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIHdlIG5lZWQgdG8gaW5jbHVkZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGluIHRoZSBGb2N1c1N5bWJvbHMgbGlzdC4gYF9rdm1fc2V0Y3NyYCBjb3VsZCBhbHNvIGJlIGNvbnNpZGVyZWQsIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBJJiMzOTttIGZpbmUgd2l0aCBhZGRpbmcgaXQgYXMgd2VsbCBmb3IgY29tcGxldGVuZXNzLgoKTm93LCBsZXQmIzM5O3Mgc2VlIGFib3V0IGNvbmZpZyBvcHRpb25zLiBgQ09ORklHX0tWTWAgc2VlbXMgdG8gYmUgdGhlIG1haW4gb25lLCBhcyBleHBlY3RlZC4gQnV0LCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGZvciBvdGhlcnMuIEFoLCBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdgIGluZGVlZCwgYEtWTWAgaXMgcHJlc2VudCwgaXQmIzM5O3Mgc2FmZSB0byBhc3N1bWUgYEtWTWAgYWxvbmUgaXMgc3VmZmljaWVudC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgYWJvdXQgYEtWTV9MT09OR0FSQ0hfTlJfU1JFR1NgLiBJdCYjMzk7cyBkZWZpbmVkIGluIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oYCwgc28gYWxsIGdvb2QuCgpPa2F5LCBsZXQmIzM5O3MgcmV2aWV3IHRoaXMgcGF0Y2ggdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGltcGxlbWVudGF0aW9uLiBIbW0sIGBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc2AgYW5kIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AgaGFuZGxlIHRoZSBgS1ZNX0dFVF9TUkVHU2AgYW5kIGBLVk1fU0VUX1NSRUdTYCBpb2N0bHMgcmVzcGVjdGl2ZWx5IGZvciBMb29uZ0FyY2guIFRoZSBgZ2V0YCBmdW5jdGlvbiBwdWxscyBwZW5kaW5nIGludGVycnVwdHMgaW50byBFU1RBVCB1c2luZyBga3ZtX2RlbGl2ZXJfaW50cmAsIHdoaWNoIHNlcmlhbGl6ZXMgdGhlIGlvY3RsIHVuZGVyIHZjcHUtJmd0O211dGV4LiBUaGUgYHNldGAgZnVuY3Rpb24gY2xlYXJzIHRoZSBgSFdDU1JfVVNBQkxFYCBmbGFnIGZpcnN0LiBCb3RoIGl0ZXJhdGUgdGhyb3VnaCB0aGUgYEtWTV9MT09OR0FSQ0hfTlJfU1JFR1NgIGFuZCBkbyB0aGUgc2V0IGFuZCBnZXQgdmlhIGBrdm1fcmVhZF9zd19nY3NyYCBhbmQgYF9rdm1fc2V0Y3NyYCwgc28gaXQmIzM5O3MgYSBjbGVhciBpbXBsZW1lbnRhdGlvbi4KCmBgYGMKaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpCnsKCWludCBpOwoJdW5zaWduZWQgbG9uZyBlc3RhdCwgZ2ludGM7CglzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtJmd0O2FyY2guY3NyOwoKCS8qCgkgKiBQdWxsIHBlbmRpbmcgaW50ZXJydXB0cyBpbnRvIEVTVEFUIHdpdGggYSBzaW5nbGUgdmNwdV9sb2FkL3B1dCBzbwoJICogdGhlIEVTVEFUIHZhbHVlIHJlYWQgYmVsb3cgbWF0Y2hlcyB0aGUgY3VycmVudCBpbnRlcnJ1cHQgc3RhdGUuCgkgKiBUaGlzIGFsc28gYXZvaWRzIHRoZSBwZXItcmVnaXN0ZXIgbG9hZC9wdXQgc2lkZS1lZmZlY3QgdGhhdCBtYWtlcwoJICogdGhlIE9ORV9SRUcgcGF0aCYjMzk7cyBFU1RBVCBzbmFwc2hvdCBvcmRlci1zZW5zaXRpdmUuICBUaGUgU1cgQ1NSCgkgKiByZWFkcyBydW4gdW5kZXIgdmNwdS0mZ3Q7bXV0ZXgsIHdoaWNoIHNlcmlhbGlzZXMgdGhpcyBpb2N0bC4KCSAqLwoJcHJlZW1wdF9kaXNhYmxlKCk7Cgl2Y3B1X2xvYWQodmNwdSk7Cglrdm1fZGVsaXZlcl9pbnRyKHZjcHUpOwoJdmNwdS0mZ3Q7YXJjaC5hdXhfaW51c2UgJmFtcDs9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUOwoJdmNwdV9wdXQodmNwdSk7CglwcmVlbXB0X2VuYWJsZSgpOwoKCWZvciAoaSA9IDA7IGkgJmx0OyBLVk1fTE9PTkdBUkNIX05SX1NSRUdTOyBpJiM0MzsmIzQzOykgewoJCWlmIChpID09IExPT05HQVJDSF9DU1JfRVNUQVQpIHsKCQkJZ2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgJmFtcDsgS1ZNX0dJTlRDX0lSUV9NQVNLOwoJCQllc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSAmYW1wOyB+S1ZNX0VTVEFUX0VYVElfTUFTSzsKCQkJc3JlZ3MtJmd0O2NzcltpXSA9IGVzdGF0IHwgKGdpbnRjICZsdDsmbHQ7IFZJUF9ERUxUQSk7CgkJfSBlbHNlIHsKCQkJc3JlZ3MtJmd0O2NzcltpXSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpKTsKCQl9Cgl9CgoJcmV0dXJuIDA7Cn0KCmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKQp7CglpbnQgaSwgcmV0OwoKCS8qIENsZWFyIGZpcnN0IHNvIGEgZmFpbGluZyBfa3ZtX3NldGNzciBzdGlsbCBmb3JjZXMgYSBIVyByZWxvYWQuICovCgl2Y3B1LSZndDthcmNoLmF1eF9pbnVzZSAmYW1wOz0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7CgoJZm9yIChpID0gMDsgaSAmbHQ7IEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkmIzQzOyYjNDM7KSB7CgkJcmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaSwgc3JlZ3MtJmd0O2NzcltpXSk7CgkJaWYgKHJldCkKCQkJcmV0dXJuIHJldDsKCX0KCglyZXR1cm4gMDsKfQpgYGAKClRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBmdW5jdGlvbmFsLiBCZWNhdXNlIHVzZXJzcGFjZSBjYW4gbm93IGNvbnRyb2wgdGhlCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3JlYWRfc3dfZ2NzciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fY3NyLmg9MTg3PWludCBrdm1fZW11X2lvY3NyKGxhcmNoX2luc3QgaW5zdCwgc3RydWN0IGt2bV9ydW4gKnJ1biwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9jc3IuaC0xODgtXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fY3NyLmg6MTg5OnN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBrdm1fcmVhZF9zd19nY3NyKHN0cnVjdCBsb29uZ2FyY2hfY3NycyAqY3NyLCBpbnQgZ2lkKVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Nzci5oLTE5MC17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYz02NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBrdm1fZW11X3JlYWRfY3NyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNzcmlkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmMtNzQtXHRpZiAoZ2V0X2djc3JfZmxhZyhjc3JpZCkgXHUwMDI2IFNXX0dDU1IpXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jOjc1Olx0XHR2YWwgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgY3NyaWQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy03Ni1cdGVsc2Vcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jPTgyPXN0YXRpYyB1bnNpZ25lZCBsb25nIGt2bV9lbXVfd3JpdGVfY3NyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNzcmlkLCB1bnNpZ25lZCBsb25nIHZhbClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jLTg3LVx0aWYgKGdldF9nY3NyX2ZsYWcoY3NyaWQpIFx1MDAyNiBTV19HQ1NSKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jOjg4Olx0XHRvbGQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgY3NyaWQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy04OS1cdFx0a3ZtX3dyaXRlX3N3X2djc3IoY3NyLCBjc3JpZCwgdmFsKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jPTk2PXN0YXRpYyB1bnNpZ25lZCBsb25nIGt2bV9lbXVfeGNoZ19jc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3NyaWQsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy0xMDItXHRpZiAoZ2V0X2djc3JfZmxhZyhjc3JpZCkgXHUwMDI2IFNXX0dDU1IpIHtcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmM6MTAzOlx0XHRvbGQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgY3NyaWQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy0xMDQtXHRcdHZhbCA9IChvbGQgXHUwMDI2IH5jc3JfbWFzaykgfCAodmFsIFx1MDAyNiBjc3JfbWFzayk7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM9NTI9dm9pZCBrdm1fcmVzdG9yZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNjMtXHQgKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjY0Olx0Y2ZnID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVENGRyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy02NS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy04OS1cdCAqL1xuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6OTA6XHR0aWNrcyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6OTE6XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTkyLVx0aWYgKCEoY2ZnIFx1MDAyNiBDU1JfVENGR19QRVJJT0QpIFx1MDAyNlx1MDAyNiAodGlja3MgXHUwMDNlIGNmZykpIHtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYz0xNDU9c3RhdGljIHZvaWQgX2t2bV9zYXZlX3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy0xNTAtXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYzoxNTE6XHRjZmcgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9UQ0ZHKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjE1MjpcdHRpY2tzID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVFZBTCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy0xNTMtXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM9MTgzPXZvaWQga3ZtX3NhdmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTE5MS1cdGt2bV9zYXZlX2h3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6MTkyOlx0aWYgKGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RDRkcpIFx1MDAyNiBDU1JfVENGR19FTilcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTE5My1cdFx0X2t2bV9zYXZlX3RpbWVyKHZjcHUpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTE5PXN0YXRpYyB2b2lkIGt2bV9sb3NlX3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzktXHQgKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTQwOlx0dmFsID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwwKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTQxOlx0dmFsIHw9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1BFUkZDVFJMMSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE0MjpcdHZhbCB8PSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9QRVJGQ1RSTDIpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxNDM6XHR2YWwgfD0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwzKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTQ0LVx0aWYgKCEodmFsIFx1MDAyNiBLVk1fUE1VX0VWRU5UX0VOQUJMRUQpKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NTA1PXN0YXRpYyBpbmxpbmUgaW50IGt2bV9zZXRfY3B1aWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdmFsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNTE0LVx0bWFwID0gdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5waHlpZF9tYXA7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjUxNTpcdGNwdWlkID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfQ1BVSUQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy01MTYtXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz01NTY9c3RhdGljIGlubGluZSB2b2lkIGt2bV9kcm9wX2NwdWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTU2Mi1cdG1hcCA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gucGh5aWRfbWFwO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo1NjM6XHRjcHVpZCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0NQVUlEKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNTY0LVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NTk0PXN0YXRpYyBpbnQgX2t2bV9nZXRjc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgaWQsIHU2NCAqdmFsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjE0LVx0XHQvKiBFU1RBVCBJUDB+SVA3IGdldCBmcm9tIEdJTlRDICovXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjYxNTpcdFx0Z2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NjE2Olx0XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcdTAwMjYgfktWTV9FU1RBVF9FWFRJX01BU0s7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTYxNy1cdFx0KnZhbCA9IGVzdGF0IHwgKGdpbnRjIFx1MDAzY1x1MDAzYyBWSVBfREVMVEEpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjI0LVx0ICovXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjYyNTpcdCp2YWwgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgaWQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02MjYtXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz02MzA9c3RhdGljIGludCBfa3ZtX3NldGNzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBpZCwgdTY0IHZhbClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTY0NC1cdFx0Z2ludGMgPSAodmFsIFx1MDAzZVx1MDAzZSBWSVBfREVMVEEpIFx1MDAyNiBLVk1fR0lOVENfSVJRX01BU0s7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjY0NTpcdFx0Z2ludGMgfD0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFx1MDAyNiB+S1ZNX0dJTlRDX0lSUV9NQVNLO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02NDYtXHRcdGt2bV93cml0ZV9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQywgZ2ludGMpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjY2LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njc6XHRcdHZhbCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1BFUkZDVFJMMCkgfFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njg6XHRcdCAgICAgIGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1BFUkZDVFJMMSkgfFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njk6XHRcdCAgICAgIGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1BFUkZDVFJMMikgfFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2NzA6XHRcdCAgICAgIGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1BFUkZDVFJMMyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTY3MS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEwMDI9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDIzLVx0XHRpZiAoaSA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMjQ6XHRcdFx0Z2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAyNTpcdFx0XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcdTAwMjYgfktWTV9FU1RBVF9FWFRJX01BU0s7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjYtXHRcdFx0c3JlZ3MtXHUwMDNlY3NyW2ldID0gZXN0YXQgfCAoZ2ludGMgXHUwMDNjXHUwMDNjIFZJUF9ERUxUQSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjctXHRcdH0gZWxzZSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMjg6XHRcdFx0c3JlZ3MtXHUwMDNlY3NyW2ldID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGkpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDI5LVx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjY3CgkJCQkJCQlvdXRwdXQ6IDE1MgoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBMb29uZ0FyY2ggS1ZNIFNSRUcgSU9DVEwgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbXBsZW1lbnRpbmcgdGhlIGBLVk1fR0VUX1NSRUdTYCBhbmQgYEtWTV9TRVRfU1JFR1NgIGlvY3RscyBzcGVjaWZpY2FsbHkgZm9yIExvb25nQXJjaCBLVk0uIFRoYXQmIzM5O3MgZ29vZDsgaXQgbWVhbnMgdXNlcnNwYWNlIGNhbiBub3cgaW50ZXJhY3Qgd2l0aCB0aGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiBJdCYjMzk7cyBhbiBpbmxpbmUgZnVuY3Rpb24sIHdoaWNoIGdlbmVyYWxseSBkb2VzbiYjMzk7dCByYWlzZSBhbnkgaW1tZWRpYXRlIHJlZCBmbGFncyByZWdhcmRpbmcgcGVyZm9ybWFuY2Ugb3IgY29tcGxleGl0eS4KCk15IHByaW1hcnkgY29uY2Vybiwgb2YgY291cnNlLCBpcyBmdXp6aW5nLiBUaGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdGhvcm91Z2ggdGVzdGluZy4gVGhlIGBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc2AsIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AsIGFuZCB0aGUgdW5kZXJseWluZyBgX2t2bV9zZXRjc3JgIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwuIFRoZXkgYXJlIHRoZSBjb25kdWl0cyBiZXR3ZWVuIHVzZXJzcGFjZSByZXF1ZXN0cyAodmlhIHRoZSBpb2N0bHMpIGFuZCB0aGUgYWN0dWFsIHJlZ2lzdGVyIG1hbmlwdWxhdGlvbiB3aXRoaW4gdGhlIHZpcnR1YWwgbWFjaGluZS4gVGhlIGZhY3QgdGhhdCB0aGlzIGlzIHJlYWNoYWJsZSB2aWEgdkNQVSBpb2N0bHMgaXMgYSBrZXkgdHJpZ2dlciBmb3IgZnV6emluZy4gV2UgbmVlZCB0byBiZSBjb25maWRlbnQgdGhhdCB0aGUgY29kZSBoYW5kbGVzIHJlZ2lzdGVyIHZhbHVlcyBjb3JyZWN0bHksIGFuZCB0aGF0IHN0YXRlIHRyYW5zaXRpb25zIGFyZSB2YWxpZGF0ZWQgcm9idXN0bHkuIEkmIzM5O20gZ29pbmcgdG8gc2V0IHRoZSByZXN1bHRzIGFzIGZ1enphYmxlLCBhbmQgaXQgc2hvdWxkIGJlIGEgaGlnaCBwcmlvcml0eS4gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgS1ZNIHN1YnN5c3RlbSwgZXNwZWNpYWxseSB0aGVzZSBuZXcgaW9jdGwgaGFuZGxlcnMsIGFyZSByZXNpbGllbnQgdG8gbWFsZm9ybWVkIG9yIHVuZXhwZWN0ZWQgZGF0YSBjb21pbmcgZnJvbSB0aGUgZnV6emVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7X2t2bV9zZXRjc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgS1ZNX0dFVF9TUkVHUyBhbmQgS1ZNX1NFVF9TUkVHUyBpb2N0bHMgZm9yIExvb25nQXJjaCBLVk0sIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gcmVhZCBhbmQgd3JpdGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdkNQVSBpb2N0bHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgcmVnaXN0ZXIgdmFsdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7X2t2bV9zZXRjc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgS1ZNX0dFVF9TUkVHUyBhbmQgS1ZNX1NFVF9TUkVHUyBpb2N0bHMgZm9yIExvb25nQXJjaCBLVk0sIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gcmVhZCBhbmQgd3JpdGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdkNQVSBpb2N0bHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgcmVnaXN0ZXIgdmFsdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjI0OjU3LjY5Njc0ODQzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMzQzNTcyNjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc1wiLFxuICAgIFwiX2t2bV9zZXRjc3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHRoZSBLVk1fR0VUX1NSRUdTIGFuZCBLVk1fU0VUX1NSRUdTIGlvY3RscyBmb3IgTG9vbmdBcmNoIEtWTSwgd2hpY2ggYWxsb3dzIHVzZXJzcGFjZSB0byByZWFkIGFuZCB3cml0ZSBzcGVjaWFsIHJlZ2lzdGVycyBvZiBhIHZDUFUuIFRoaXMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB2Q1BVIGlvY3RscyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBoYW5kbGluZyBvZiByZWdpc3RlciB2YWx1ZXMgYW5kIHN0YXRlIHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNDo1Ny42OTY3NTg3NTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MjYxMTIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY4YzYxOGMwOWI3OGIxN2M2YWRmMmMwNTcyM2UwYWE3MjlkMTYwYzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDg6MjQ6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG5pbmRleCBjZDBiNWMxMWNhOWMyYi4uZGMwOTFmMjk5NjNkZGIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG5AQCAtMTI0LDcgKzEyNCwxMCBAQCBzdHJ1Y3Qga3ZtX3N5bmNfcmVncyB7XFxuIH07XFxuIFxcbiAvKiBkdW1teSBkZWZpbml0aW9uICovXFxuKyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9OUl9TUkVHU1xcdDB4MTg0XFxuK1xcbiBzdHJ1Y3Qga3ZtX3NyZWdzIHtcXG4rXFx0X191NjQgY3NyW0tWTV9MT09OR0FSQ0hfTlJfU1JFR1NdO1xcbiB9O1xcbiBcXG4gc3RydWN0IGt2bV9pb2Nzcl9lbnRyeSB7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXFxuaW5kZXggMjBjMjA3ZDgwZTMxYWUuLjA4OTBiNjhlZmEyYWU4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXFxuQEAgLTEwMDEsMTIgKzEwMDEsNTEgQEAgc3RhdGljIGludCBrdm1fc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbiBcXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuIHtcXG4tXFx0cmV0dXJuIC1FTk9JT0NUTENNRDtcXG4rXFx0aW50IGk7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjO1xcbitcXHRzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtXFx1MDAzZWFyY2guY3NyO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUHVsbCBwZW5kaW5nIGludGVycnVwdHMgaW50byBFU1RBVCB3aXRoIGEgc2luZ2xlIHZjcHVfbG9hZC9wdXQgc29cXG4rXFx0ICogdGhlIEVTVEFUIHZhbHVlIHJlYWQgYmVsb3cgbWF0Y2hlcyB0aGUgY3VycmVudCBpbnRlcnJ1cHQgc3RhdGUuXFxuK1xcdCAqIFRoaXMgYWxzbyBhdm9pZHMgdGhlIHBlci1yZWdpc3RlciBsb2FkL3B1dCBzaWRlLWVmZmVjdCB0aGF0IG1ha2VzXFxuK1xcdCAqIHRoZSBPTkVfUkVHIHBhdGgncyBFU1RBVCBzbmFwc2hvdCBvcmRlci1zZW5zaXRpdmUuICBUaGUgU1cgQ1NSXFxuK1xcdCAqIHJlYWRzIHJ1biB1bmRlciB2Y3B1LVxcdTAwM2VtdXRleCwgd2hpY2ggc2VyaWFsaXNlcyB0aGlzIGlvY3RsLlxcbitcXHQgKi9cXG4rXFx0cHJlZW1wdF9kaXNhYmxlKCk7XFxuK1xcdHZjcHVfbG9hZCh2Y3B1KTtcXG4rXFx0a3ZtX2RlbGl2ZXJfaW50cih2Y3B1KTtcXG4rXFx0dmNwdS1cXHUwMDNlYXJjaC5hdXhfaW51c2UgXFx1MDAyNj0gfktWTV9MQVJDSF9TV0NTUl9MQVRFU1Q7XFxuK1xcdHZjcHVfcHV0KHZjcHUpO1xcbitcXHRwcmVlbXB0X2VuYWJsZSgpO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkrKykge1xcbitcXHRcXHRpZiAoaSA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XFxuK1xcdFxcdFxcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFxcdTAwMjYgS1ZNX0dJTlRDX0lSUV9NQVNLO1xcbitcXHRcXHRcXHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcXHUwMDI2IH5LVk1fRVNUQVRfRVhUSV9NQVNLO1xcbitcXHRcXHRcXHRzcmVncy1cXHUwMDNlY3NyW2ldID0gZXN0YXQgfCAoZ2ludGMgXFx1MDAzY1xcdTAwM2MgVklQX0RFTFRBKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0c3JlZ3MtXFx1MDAzZWNzcltpXSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuIHtcXG4tXFx0cmV0dXJuIC1FTk9JT0NUTENNRDtcXG4rXFx0aW50IGksIHJldDtcXG4rXFxuK1xcdC8qIENsZWFyIGZpcnN0IHNvIGEgZmFpbGluZyBfa3ZtX3NldGNzciBzdGlsbCBmb3JjZXMgYSBIVyByZWxvYWQuICovXFxuK1xcdHZjcHUtXFx1MDAzZWFyY2guYXV4X2ludXNlIFxcdTAwMjY9IH5LVk1fTEFSQ0hfSFdDU1JfVVNBQkxFO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkrKykge1xcbitcXHRcXHRyZXQgPSBfa3ZtX3NldGNzcih2Y3B1LCBpLCBzcmVncy1cXHUwMDNlY3NyW2ldKTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNDo1OC40NDAwNDE1NjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozOTYwMDI3MTY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc1wiLFxuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NcIixcbiAgICBcIl9rdm1fc2V0Y3NyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgS1ZNX0dFVF9TUkVHUyBhbmQgS1ZNX1NFVF9TUkVHUyBpb2N0bHMgZm9yIExvb25nQXJjaCBLVk0sIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gcmVhZCBhbmQgd3JpdGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdkNQVSBpb2N0bHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgcmVnaXN0ZXIgdmFsdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OGM2MThjMDliNzhiMTdjNmFkZjJjMDU3MjNlMGFhNzI5ZDE2MGM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDg6MjQ6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuaW5kZXggY2QwYjVjMTFjYTljMmIuLmRjMDkxZjI5OTYzZGRiIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuQEAgLTEyNCw3ICsxMjQsMTAgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xuIH07XG4gXG4gLyogZHVtbXkgZGVmaW5pdGlvbiAqL1xuKyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9OUl9TUkVHU1x0MHgxODRcbitcbiBzdHJ1Y3Qga3ZtX3NyZWdzIHtcbitcdF9fdTY0IGNzcltLVk1fTE9PTkdBUkNIX05SX1NSRUdTXTtcbiB9O1xuIFxuIHN0cnVjdCBrdm1faW9jc3JfZW50cnkge1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5pbmRleCAyMGMyMDdkODBlMzFhZS4uMDg5MGI2OGVmYTJhZTggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5AQCAtMTAwMSwxMiArMTAwMSw1MSBAQCBzdGF0aWMgaW50IGt2bV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXG4gXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4ge1xuLVx0cmV0dXJuIC1FTk9JT0NUTENNRDtcbitcdGludCBpO1xuK1x0dW5zaWduZWQgbG9uZyBlc3RhdCwgZ2ludGM7XG4rXHRzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtXHUwMDNlYXJjaC5jc3I7XG4rXG4rXHQvKlxuK1x0ICogUHVsbCBwZW5kaW5nIGludGVycnVwdHMgaW50byBFU1RBVCB3aXRoIGEgc2luZ2xlIHZjcHVfbG9hZC9wdXQgc29cbitcdCAqIHRoZSBFU1RBVCB2YWx1ZSByZWFkIGJlbG93IG1hdGNoZXMgdGhlIGN1cnJlbnQgaW50ZXJydXB0IHN0YXRlLlxuK1x0ICogVGhpcyBhbHNvIGF2b2lkcyB0aGUgcGVyLXJlZ2lzdGVyIGxvYWQvcHV0IHNpZGUtZWZmZWN0IHRoYXQgbWFrZXNcbitcdCAqIHRoZSBPTkVfUkVHIHBhdGgncyBFU1RBVCBzbmFwc2hvdCBvcmRlci1zZW5zaXRpdmUuICBUaGUgU1cgQ1NSXG4rXHQgKiByZWFkcyBydW4gdW5kZXIgdmNwdS1cdTAwM2VtdXRleCwgd2hpY2ggc2VyaWFsaXNlcyB0aGlzIGlvY3RsLlxuK1x0ICovXG4rXHRwcmVlbXB0X2Rpc2FibGUoKTtcbitcdHZjcHVfbG9hZCh2Y3B1KTtcbitcdGt2bV9kZWxpdmVyX2ludHIodmNwdSk7XG4rXHR2Y3B1LVx1MDAzZWFyY2guYXV4X2ludXNlIFx1MDAyNj0gfktWTV9MQVJDSF9TV0NTUl9MQVRFU1Q7XG4rXHR2Y3B1X3B1dCh2Y3B1KTtcbitcdHByZWVtcHRfZW5hYmxlKCk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBLVk1fTE9PTkdBUkNIX05SX1NSRUdTOyBpKyspIHtcbitcdFx0aWYgKGkgPT0gTE9PTkdBUkNIX0NTUl9FU1RBVCkge1xuK1x0XHRcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFx1MDAyNiBLVk1fR0lOVENfSVJRX01BU0s7XG4rXHRcdFx0ZXN0YXQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCkgXHUwMDI2IH5LVk1fRVNUQVRfRVhUSV9NQVNLO1xuK1x0XHRcdHNyZWdzLVx1MDAzZWNzcltpXSA9IGVzdGF0IHwgKGdpbnRjIFx1MDAzY1x1MDAzYyBWSVBfREVMVEEpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdHNyZWdzLVx1MDAzZWNzcltpXSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpKTtcbitcdFx0fVxuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuIHtcbi1cdHJldHVybiAtRU5PSU9DVExDTUQ7XG4rXHRpbnQgaSwgcmV0O1xuK1xuK1x0LyogQ2xlYXIgZmlyc3Qgc28gYSBmYWlsaW5nIF9rdm1fc2V0Y3NyIHN0aWxsIGZvcmNlcyBhIEhXIHJlbG9hZC4gKi9cbitcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkrKykge1xuK1x0XHRyZXQgPSBfa3ZtX3NldGNzcih2Y3B1LCBpLCBzcmVncy1cdTAwM2Vjc3JbaV0pO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNDo1OC40NDAwNDI4NjFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTM5MjQ1NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxvb25nQXJjaCBLVk0gUGF0Y2ggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIHNvbWUgcHJldHR5IGNydWNpYWwgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTTogc3BlY2lmaWNhbGx5LCB0aGUgaW1wbGVtZW50YXRpb25zIGZvciBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYC4gVGhhdCdzIGdvb2Q7IGhhbmRsaW5nIHRoZSBTYXZlL1Jlc3RvcmUgb2YgU3BlY2lhbCBSZWdpc3RlcnMuIEl0IGFsc28gbWVhbnMgd2UnbGwgbmVlZCB0byB1cGRhdGUgYHN0cnVjdCBrdm1fc3JlZ3NgIGluIHRoZSBjb3JyZXNwb25kaW5nIGhlYWRlciBmaWxlLCB3aGljaCBtYWtlcyBzZW5zZS5cblxuR2l2ZW4gdGhhdCBpdCB0b3VjaGVzIHRoZSBMb29uZ0FyY2ggS1ZNIGNvZGUsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIFwiaXMgdGhpcyBjb2RlIGZ1enplZD9cIi4gU3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IExvb25nQXJjaCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBwcm9wZXJseSBzZXQgdXAgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgbGlrZSBHQ0Ugb3IgUUVNVS4gV2FpdCwgaXQgKmRvZXMqIHN1cHBvcnQgS1ZNIGZ1enppbmcsIHRoYXQncyByaWdodC4gU28sIGl0ICpzaG91bGQqIGJlIHBvc3NpYmxlIHRvIGZ1enogdGhlc2UgbmV3IGhhbmRsZXJzLlxuXG5UaGUgcmVhbCBxdWVzdGlvbiBpcywgaXMgZnV6emluZyBpdCAqd29ydGgqIGl0PyBBYnNvbHV0ZWx5LCBpdCBpcywgYmVjYXVzZSB0aGVzZSBhcmUgKm5ldyogaW9jdGwgaGFuZGxlcnMgZm9yIEtWTSBvbiBMb29uZ0FyY2guIEFkZGluZyBuZXcgYXR0YWNrIHN1cmZhY2VzIGlzIGFsd2F5cyB3b3J0aCBmdXp6aW5nLlxuXG5CZWZvcmUgSSBnbyB0b28gZmFyIGRvd24gdGhlIGZ1enppbmcgcmFiYml0IGhvbGUsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIGVuc3VyZSBgQ09ORklHX0tWTWAgaXMgcHJvcGVybHkgc2V0IGZvciBMb29uZ0FyY2guIEknbGwgY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYCB0byBjb25maXJtLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MjU6MDQuOTc5MjkxMzExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDM3NDQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjI1OjA1LjEzMzY3NDM3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MjU3MjE1OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBSZWFjaGFiaWxpdHkgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBteSBmb2N1cyBpcyBvbiBgS1ZNYCDigJMgdGhhdCdzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBoZXJlLiBCdXQgdGhlbiB0aGUgcXVlc3Rpb24gaGl0cyBtZTogaXMgdGhpcyBjb2RlIGV2ZW4gcmVhY2hhYmxlIHdoZW4gcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIG9yIFFFTVU/IEkgbWVhbiwgdGhlc2UgdmlydHVhbGl6ZWQgc2V0dXBzIGFyZSBwcmV0dHkgc3BlY2lmaWMuXG5cbldhaXQsIHllcywgKktWTSogaXMgdGhlIHZpcnR1YWxpemF0aW9uIG1vZHVsZSwgc28gaWYgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGlzIHN1cHBvcnRlZCwgb3Igd2UgZnV6eiBMb29uZ0FyY2ggS1ZNIHNwZWNpZmljYWxseSwgd2UgY2FuIHRlc3QgaXQuXG5cbkFoYSEgSSByZW1lbWJlciBzeXprYWxsZXIuIEl0IHVzdWFsbHkgZm9jdXNlcyBvbiBLVk0gb24geDg2LCBidXQgaXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZnV6eiBLVk0gb24gKm90aGVyKiBhcmNoaXRlY3R1cmVzIHRvby4gVGhlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbmhlcmVudGx5IHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBUaGluZ3MgbGlrZSBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLlxuXG5TbywgdGhlIExvb25nQXJjaCBLVk0gbWlnaHQgYWN0dWFsbHkgYmUgd2l0aGluIHJlYWNoIGlmIHdlIHJ1biBzeXprYWxsZXIgb24gTG9vbmdBcmNoIFFFTVUsIHJpZ2h0PyBUaGF0J3MgdGhlIGNydWNpYWwgbGluay5cblxuQWxyaWdodCwgbGV0J3MgZHJpbGwgZG93bi4gVGhlIGZ1bmN0aW9ucyB0aGF0IHdlcmUgYWRkZWQgYXJlOlxuKiAgIGBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc2BcbiogICBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgXG5cbk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRldGVybWluZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGNhbGxlZC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MjU6MDkuODU5Mzk4MTQzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDk3NDYxNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9NzE5PWludCBrdm1fYXJtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzM1LVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NzM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy03MzctXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9OTg0PXN0YXRpYyBpbnQga3ZtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwMS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMDI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDAzLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTk4Nz1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy05OTgtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6OTk5OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTAwMC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYz01MjU9dm9pZCBrdm1wcGNfc3ViYXJjaF92Y3B1X3VuaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTUyOC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjUyOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTMwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTE5Njg9c3RhdGljIGludCBrdm1wcGNfaGFuZGxlX25lc3RlZF9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjA5OS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxMDA6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc19odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTAxLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NjUxMz1zdGF0aWMgc3RydWN0IGt2bXBwY19vcHMga3ZtX29wc19odiA9IHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MTQ6XFx0LmdldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX2h2LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUxNS1cXHQuc2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfaHYsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jPTExMzU9aW50IGt2bXBwY19oYW5kbGVfZXhpdF9wcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBleGl0X25yKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDU0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MTQ1NTpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX3ByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0NTYtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYz0yMDQ1PXN0YXRpYyBzdHJ1Y3Qga3ZtcHBjX29wcyBrdm1fb3BzX3ByID0ge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MjA0NjpcXHQuZ2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfcHIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0yMDQ3LVxcdC5zZXRfc3JlZ3MgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc19wcixcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYz0xNjA1PWludCBrdm1wcGNfc2V0X3NyZWdzX2l2b3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjI5LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxNjMwOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE2MzEtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTI3MD1sb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzE2LVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzozMTc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzE4LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NDE0ND1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNTUtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxNTY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE1Ny1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTEyMjE4PXN0YXRpYyB2b2lkIF9fZ2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MyICpzcmVnczIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTIyMzUtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEyMjM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyMjM3LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTYwNz1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncyk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE2MDg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTYwOS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKTtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NDQwNj1zdGF0aWMgbG9uZyBrdm1fdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDUxNi1cXHRcXHRcXHRnb3RvIG91dDtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ1MTc6XFx0XFx0ciA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHZjcHUsIGt2bV9zcmVncyk7XFxudmlydC9rdm0va3ZtX21haW4uYy00NTE4LVxcdFxcdGlmIChyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNToxMi4yNjkxNTE5ODRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTcwNzk1NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIExvb25nQXJjaCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgaG93IGl0IGZpdHMgaW50byB0aGUgS1ZNIGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IGZvciBMb29uZ0FyY2guIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGlzIGJlaW5nIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBrdm1fdmNwdV9pb2N0bGAgd2l0aGluIGBrdm1fbWFpbi5jYC4gVGhhdCBtZWFucyB0aGUgYEtWTV9HRVRfU1JFR1NgIGlvY3RsIG9uIGEgdkNQVSBmaWxlIGRlc2NyaXB0b3IgaXMgdGhlIGVudHJ5IHBvaW50LiBUaGUgc2FtZSBnb2VzIGZvciBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIHZpYSB0aGUgYEtWTV9TRVRfU1JFR1NgIGlvY3RsLiBCb3RoIG9mIHRoZXNlIGZ1bmN0aW9ucywgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzYCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYCwgYXJlIGRlZmluZWQgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgLlxuXG5SaWdodCwgbm93IHRoZSBjcnVjaWFsIHBhcnQgZm9yIGZ1enppbmcgLSB3aGF0IGVsc2UgaXMgdG91Y2hlZD8gVGhlIHBhdGNoIHNlZW1zIHRvIGV4cGxpY2l0bHkgbW9kaWZ5IG9ubHkgdGhvc2UgdHdvIGZ1bmN0aW9ucywgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzYCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYC4gSSdtIGRvdWJsZS1jaGVja2luZyBmb3IgYW55IG90aGVyIG1vZGlmaWNhdGlvbnMgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgc29tZXRoaW5nIGNyaXRpY2FsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBJdCBsb29rcyBsaWtlIGl0J3MganVzdCB0aG9zZSB0d28sIGJ1dCB3YWl0LCBgX2t2bV9zZXRjc3JgIGlzIGNhbGxlZCB3aXRoaW4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYC4gSG1tLCBJIHNob3VsZCBpbmNsdWRlIHRoYXQgZm9yIGZ1enppbmcuIFRpbWUgdG8gaW52ZXN0aWdhdGUgYF9rdm1fc2V0Y3NyYCBtb3JlIGNsb3NlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMzQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MjU6MTcuODM5OTQ5NDM4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzgwNTM2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfa3ZtX3NldGNzclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NTk0PXN0YXRpYyBpbnQgX2t2bV9nZXRjc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgaWQsIHU2NCAqdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02MjktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2MzA6c3RhdGljIGludCBfa3ZtX3NldGNzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBpZCwgdTY0IHZhbClcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTYzMS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTkwMD1zdGF0aWMgaW50IGt2bV9zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTkwOC1cXHRcXHRpZCA9IEtWTV9HRVRfSU9DX0NTUl9JRFgocmVnLVxcdTAwM2VpZCk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo5MDk6XFx0XFx0cmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaWQsIHYpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtOTEwLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy05NjUtXFx0XFx0XFx0ICogV2hlbiB2Q1BVIHJlc2V0LCBjbGVhciB0aGUgRVNUQVQgYW5kIEdJTlRDIHJlZ2lzdGVyc1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6OTY2OlxcdFxcdFxcdCAqIE90aGVyIENTUiByZWdpc3RlcnMgYXJlIGNsZWFyZWQgd2l0aCBmdW5jdGlvbiBfa3ZtX3NldGNzcigpLlxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtOTY3LVxcdFxcdFxcdCAqL1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMDM1PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDM4LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAzOTpcXHQvKiBDbGVhciBmaXJzdCBzbyBhIGZhaWxpbmcgX2t2bV9zZXRjc3Igc3RpbGwgZm9yY2VzIGEgSFcgcmVsb2FkLiAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTA0MC1cXHR2Y3B1LVxcdTAwM2VhcmNoLmF1eF9pbnVzZSBcXHUwMDI2PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTA0Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgS1ZNX0xPT05HQVJDSF9OUl9TUkVHUzsgaSsrKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDQzOlxcdFxcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGksIHNyZWdzLVxcdTAwM2Vjc3JbaV0pO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTA0NC1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNToxNy45NDc3NTg5MDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTcyMDIwOTk4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBMb29uZ0FyY2ggS1ZNIFNSRUcgSU9DVExzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gaW5jbHVkZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGluIHRoZSBGb2N1c1N5bWJvbHMgbGlzdC4gYF9rdm1fc2V0Y3NyYCBjb3VsZCBhbHNvIGJlIGNvbnNpZGVyZWQsIGV2ZW4gdGhvdWdoIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24uIEknbSBmaW5lIHdpdGggYWRkaW5nIGl0IGFzIHdlbGwgZm9yIGNvbXBsZXRlbmVzcy5cblxuTm93LCBsZXQncyBzZWUgYWJvdXQgY29uZmlnIG9wdGlvbnMuIGBDT05GSUdfS1ZNYCBzZWVtcyB0byBiZSB0aGUgbWFpbiBvbmUsIGFzIGV4cGVjdGVkLiBCdXQsIEknbGwgcXVpY2tseSBjaGVjayBmb3Igb3RoZXJzLiBBaCwgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYCBpbmRlZWQsIGBLVk1gIGlzIHByZXNlbnQsIGl0J3Mgc2FmZSB0byBhc3N1bWUgYEtWTWAgYWxvbmUgaXMgc3VmZmljaWVudC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGFib3V0IGBLVk1fTE9PTkdBUkNIX05SX1NSRUdTYC4gSXQncyBkZWZpbmVkIGluIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oYCwgc28gYWxsIGdvb2QuXG5cbk9rYXksIGxldCdzIHJldmlldyB0aGlzIHBhdGNoIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbXBsZW1lbnRhdGlvbi4gSG1tLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGhhbmRsZSB0aGUgYEtWTV9HRVRfU1JFR1NgIGFuZCBgS1ZNX1NFVF9TUkVHU2AgaW9jdGxzIHJlc3BlY3RpdmVseSBmb3IgTG9vbmdBcmNoLiBUaGUgYGdldGAgZnVuY3Rpb24gcHVsbHMgcGVuZGluZyBpbnRlcnJ1cHRzIGludG8gRVNUQVQgdXNpbmcgYGt2bV9kZWxpdmVyX2ludHJgLCB3aGljaCBzZXJpYWxpemVzIHRoZSBpb2N0bCB1bmRlciB2Y3B1LVx1MDAzZW11dGV4LiBUaGUgYHNldGAgZnVuY3Rpb24gY2xlYXJzIHRoZSBgSFdDU1JfVVNBQkxFYCBmbGFnIGZpcnN0LiBCb3RoIGl0ZXJhdGUgdGhyb3VnaCB0aGUgYEtWTV9MT09OR0FSQ0hfTlJfU1JFR1NgIGFuZCBkbyB0aGUgc2V0IGFuZCBnZXQgdmlhIGBrdm1fcmVhZF9zd19nY3NyYCBhbmQgYF9rdm1fc2V0Y3NyYCwgc28gaXQncyBhIGNsZWFyIGltcGxlbWVudGF0aW9uLlxuXG5gYGBjXG5pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbntcblx0aW50IGk7XG5cdHVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjO1xuXHRzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtXHUwMDNlYXJjaC5jc3I7XG5cblx0Lypcblx0ICogUHVsbCBwZW5kaW5nIGludGVycnVwdHMgaW50byBFU1RBVCB3aXRoIGEgc2luZ2xlIHZjcHVfbG9hZC9wdXQgc29cblx0ICogdGhlIEVTVEFUIHZhbHVlIHJlYWQgYmVsb3cgbWF0Y2hlcyB0aGUgY3VycmVudCBpbnRlcnJ1cHQgc3RhdGUuXG5cdCAqIFRoaXMgYWxzbyBhdm9pZHMgdGhlIHBlci1yZWdpc3RlciBsb2FkL3B1dCBzaWRlLWVmZmVjdCB0aGF0IG1ha2VzXG5cdCAqIHRoZSBPTkVfUkVHIHBhdGgncyBFU1RBVCBzbmFwc2hvdCBvcmRlci1zZW5zaXRpdmUuICBUaGUgU1cgQ1NSXG5cdCAqIHJlYWRzIHJ1biB1bmRlciB2Y3B1LVx1MDAzZW11dGV4LCB3aGljaCBzZXJpYWxpc2VzIHRoaXMgaW9jdGwuXG5cdCAqL1xuXHRwcmVlbXB0X2Rpc2FibGUoKTtcblx0dmNwdV9sb2FkKHZjcHUpO1xuXHRrdm1fZGVsaXZlcl9pbnRyKHZjcHUpO1xuXHR2Y3B1LVx1MDAzZWFyY2guYXV4X2ludXNlIFx1MDAyNj0gfktWTV9MQVJDSF9TV0NTUl9MQVRFU1Q7XG5cdHZjcHVfcHV0KHZjcHUpO1xuXHRwcmVlbXB0X2VuYWJsZSgpO1xuXG5cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEtWTV9MT09OR0FSQ0hfTlJfU1JFR1M7IGkrKykge1xuXHRcdGlmIChpID09IExPT05HQVJDSF9DU1JfRVNUQVQpIHtcblx0XHRcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFx1MDAyNiBLVk1fR0lOVENfSVJRX01BU0s7XG5cdFx0XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcdTAwMjYgfktWTV9FU1RBVF9FWFRJX01BU0s7XG5cdFx0XHRzcmVncy1cdTAwM2Vjc3JbaV0gPSBlc3RhdCB8IChnaW50YyBcdTAwM2NcdTAwM2MgVklQX0RFTFRBKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3JlZ3MtXHUwMDNlY3NyW2ldID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGkpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiAwO1xufVxuXG5pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbntcblx0aW50IGksIHJldDtcblxuXHQvKiBDbGVhciBmaXJzdCBzbyBhIGZhaWxpbmcgX2t2bV9zZXRjc3Igc3RpbGwgZm9yY2VzIGEgSFcgcmVsb2FkLiAqL1xuXHR2Y3B1LVx1MDAzZWFyY2guYXV4X2ludXNlIFx1MDAyNj0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7XG5cblx0Zm9yIChpID0gMDsgaSBcdTAwM2MgS1ZNX0xPT05HQVJDSF9OUl9TUkVHUzsgaSsrKSB7XG5cdFx0cmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaSwgc3JlZ3MtXHUwMDNlY3NyW2ldKTtcblx0XHRpZiAocmV0KVxuXHRcdFx0cmV0dXJuIHJldDtcblx0fVxuXG5cdHJldHVybiAwO1xufVxuYGBgXG5cblRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBmdW5jdGlvbmFsLiBCZWNhdXNlIHVzZXJzcGFjZSBjYW4gbm93IGNvbnRyb2wgdGhlXG5cbiIsIklucHV0VG9rZW5zIjo3MzYwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNToyOS42Njc5NzIwMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc4MjYyMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3JlYWRfc3dfZ2NzclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Nzci5oPTE4Nz1pbnQga3ZtX2VtdV9pb2NzcihsYXJjaF9pbnN0IGluc3QsIHN0cnVjdCBrdm1fcnVuICpydW4sIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Nzci5oLTE4OC1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fY3NyLmg6MTg5OnN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBrdm1fcmVhZF9zd19nY3NyKHN0cnVjdCBsb29uZ2FyY2hfY3NycyAqY3NyLCBpbnQgZ2lkKVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9jc3IuaC0xOTAte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYz02NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBrdm1fZW11X3JlYWRfY3NyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNzcmlkKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy03NC1cXHRpZiAoZ2V0X2djc3JfZmxhZyhjc3JpZCkgXFx1MDAyNiBTV19HQ1NSKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmM6NzU6XFx0XFx0dmFsID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGNzcmlkKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jLTc2LVxcdGVsc2VcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmM9ODI9c3RhdGljIHVuc2lnbmVkIGxvbmcga3ZtX2VtdV93cml0ZV9jc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3NyaWQsIHVuc2lnbmVkIGxvbmcgdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYy04Ny1cXHRpZiAoZ2V0X2djc3JfZmxhZyhjc3JpZCkgXFx1MDAyNiBTV19HQ1NSKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2V4aXQuYzo4ODpcXHRcXHRvbGQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgY3NyaWQpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmMtODktXFx0XFx0a3ZtX3dyaXRlX3N3X2djc3IoY3NyLCBjc3JpZCwgdmFsKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmM9OTY9c3RhdGljIHVuc2lnbmVkIGxvbmcga3ZtX2VtdV94Y2hnX2NzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjc3JpZCxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmMtMTAyLVxcdGlmIChnZXRfZ2Nzcl9mbGFnKGNzcmlkKSBcXHUwMDI2IFNXX0dDU1IpIHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vZXhpdC5jOjEwMzpcXHRcXHRvbGQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgY3NyaWQpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9leGl0LmMtMTA0LVxcdFxcdHZhbCA9IChvbGQgXFx1MDAyNiB+Y3NyX21hc2spIHwgKHZhbCBcXHUwMDI2IGNzcl9tYXNrKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jPTUyPXZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNjMtXFx0ICovXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6NjQ6XFx0Y2ZnID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVENGRyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNjUtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy04OS1cXHQgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYzo5MDpcXHR0aWNrcyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjkxOlxcdGVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTkyLVxcdGlmICghKGNmZyBcXHUwMDI2IENTUl9UQ0ZHX1BFUklPRCkgXFx1MDAyNlxcdTAwMjYgKHRpY2tzIFxcdTAwM2UgY2ZnKSkge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM9MTQ1PXN0YXRpYyB2b2lkIF9rdm1fc2F2ZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy0xNTAtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6MTUxOlxcdGNmZyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RDRkcpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjE1MjpcXHR0aWNrcyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTE1My1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jPTE4Mz12b2lkIGt2bV9zYXZlX3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTE5MS1cXHRrdm1fc2F2ZV9od19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9UVkFMKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYzoxOTI6XFx0aWYgKGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RDRkcpIFxcdTAwMjYgQ1NSX1RDRkdfRU4pXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtMTkzLVxcdFxcdF9rdm1fc2F2ZV90aW1lcih2Y3B1KTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTE5PXN0YXRpYyB2b2lkIGt2bV9sb3NlX3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzOS1cXHQgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE0MDpcXHR2YWwgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9QRVJGQ1RSTDApO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTQxOlxcdHZhbCB8PSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9QRVJGQ1RSTDEpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTQyOlxcdHZhbCB8PSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9QRVJGQ1RSTDIpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTQzOlxcdHZhbCB8PSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9QRVJGQ1RSTDMpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTQ0LVxcdGlmICghKHZhbCBcXHUwMDI2IEtWTV9QTVVfRVZFTlRfRU5BQkxFRCkpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTUwNT1zdGF0aWMgaW5saW5lIGludCBrdm1fc2V0X2NwdWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHZhbClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNTE0LVxcdG1hcCA9IHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5waHlpZF9tYXA7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo1MTU6XFx0Y3B1aWQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9DUFVJRCk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy01MTYtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTU1Nj1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX2Ryb3BfY3B1aWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy01NjItXFx0bWFwID0gdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnBoeWlkX21hcDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjU2MzpcXHRjcHVpZCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0NQVUlEKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTU2NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NTk0PXN0YXRpYyBpbnQgX2t2bV9nZXRjc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgaWQsIHU2NCAqdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02MTQtXFx0XFx0LyogRVNUQVQgSVAwfklQNyBnZXQgZnJvbSBHSU5UQyAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NjE1OlxcdFxcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFxcdTAwMjYgS1ZNX0dJTlRDX0lSUV9NQVNLO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NjE2OlxcdFxcdGVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpIFxcdTAwMjYgfktWTV9FU1RBVF9FWFRJX01BU0s7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02MTctXFx0XFx0KnZhbCA9IGVzdGF0IHwgKGdpbnRjIFxcdTAwM2NcXHUwMDNjIFZJUF9ERUxUQSk7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTYyNC1cXHQgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjYyNTpcXHQqdmFsID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGlkKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTYyNi1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NjMwPXN0YXRpYyBpbnQgX2t2bV9zZXRjc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgaWQsIHU2NCB2YWwpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTY0NC1cXHRcXHRnaW50YyA9ICh2YWwgXFx1MDAzZVxcdTAwM2UgVklQX0RFTFRBKSBcXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjY0NTpcXHRcXHRnaW50YyB8PSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgXFx1MDAyNiB+S1ZNX0dJTlRDX0lSUV9NQVNLO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNjQ2LVxcdFxcdGt2bV93cml0ZV9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQywgZ2ludGMpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy02NjYtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njc6XFx0XFx0dmFsID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwwKSB8XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njg6XFx0XFx0ICAgICAga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwxKSB8XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2Njk6XFx0XFx0ICAgICAga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwyKSB8XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo2NzA6XFx0XFx0ICAgICAga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfUEVSRkNUUkwzKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTY3MS1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTAwMj1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAyMy1cXHRcXHRpZiAoaSA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDI0OlxcdFxcdFxcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFxcdTAwMjYgS1ZNX0dJTlRDX0lSUV9NQVNLO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAyNTpcXHRcXHRcXHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcXHUwMDI2IH5LVk1fRVNUQVRfRVhUSV9NQVNLO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAyNi1cXHRcXHRcXHRzcmVncy1cXHUwMDNlY3NyW2ldID0gZXN0YXQgfCAoZ2ludGMgXFx1MDAzY1xcdTAwM2MgVklQX0RFTFRBKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjctXFx0XFx0fSBlbHNlIHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMjg6XFx0XFx0XFx0c3JlZ3MtXFx1MDAzZWNzcltpXSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjktXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODoyNToyOS43NTU4MDQwNjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE0NDI0MjI2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBMb29uZ0FyY2ggS1ZNIFNSRUcgSU9DVEwgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGltcGxlbWVudGluZyB0aGUgYEtWTV9HRVRfU1JFR1NgIGFuZCBgS1ZNX1NFVF9TUkVHU2AgaW9jdGxzIHNwZWNpZmljYWxseSBmb3IgTG9vbmdBcmNoIEtWTS4gVGhhdCdzIGdvb2Q7IGl0IG1lYW5zIHVzZXJzcGFjZSBjYW4gbm93IGludGVyYWN0IHdpdGggdGhlIHNwZWNpYWwgcmVnaXN0ZXJzIG9mIGEgdkNQVSBvbiB0aGlzIGFyY2hpdGVjdHVyZS4gSXQncyBhbiBpbmxpbmUgZnVuY3Rpb24sIHdoaWNoIGdlbmVyYWxseSBkb2Vzbid0IHJhaXNlIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzIHJlZ2FyZGluZyBwZXJmb3JtYW5jZSBvciBjb21wbGV4aXR5LlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4sIG9mIGNvdXJzZSwgaXMgZnV6emluZy4gVGhpcyBpcyBhYnNvbHV0ZWx5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRob3JvdWdoIHRlc3RpbmcuIFRoZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgLCBhbmQgdGhlIHVuZGVybHlpbmcgYF9rdm1fc2V0Y3NyYCBmdW5jdGlvbnMgYXJlIGNyaXRpY2FsLiBUaGV5IGFyZSB0aGUgY29uZHVpdHMgYmV0d2VlbiB1c2Vyc3BhY2UgcmVxdWVzdHMgKHZpYSB0aGUgaW9jdGxzKSBhbmQgdGhlIGFjdHVhbCByZWdpc3RlciBtYW5pcHVsYXRpb24gd2l0aGluIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIFRoZSBmYWN0IHRoYXQgdGhpcyBpcyByZWFjaGFibGUgdmlhIHZDUFUgaW9jdGxzIGlzIGEga2V5IHRyaWdnZXIgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gYmUgY29uZmlkZW50IHRoYXQgdGhlIGNvZGUgaGFuZGxlcyByZWdpc3RlciB2YWx1ZXMgY29ycmVjdGx5LCBhbmQgdGhhdCBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUgdmFsaWRhdGVkIHJvYnVzdGx5LiBJJ20gZ29pbmcgdG8gc2V0IHRoZSByZXN1bHRzIGFzIGZ1enphYmxlLCBhbmQgaXQgc2hvdWxkIGJlIGEgaGlnaCBwcmlvcml0eS4gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgS1ZNIHN1YnN5c3RlbSwgZXNwZWNpYWxseSB0aGVzZSBuZXcgaW9jdGwgaGFuZGxlcnMsIGFyZSByZXNpbGllbnQgdG8gbWFsZm9ybWVkIG9yIHVuZXhwZWN0ZWQgZGF0YSBjb21pbmcgZnJvbSB0aGUgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI2NywiT3V0cHV0VG9rZW5zIjoxNTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MjU6MzcuOTAwMDQ5MjMzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMjYwMzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc1wiLFxuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NcIixcbiAgICBcIl9rdm1fc2V0Y3NyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgS1ZNX0dFVF9TUkVHUyBhbmQgS1ZNX1NFVF9TUkVHUyBpb2N0bHMgZm9yIExvb25nQXJjaCBLVk0sIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gcmVhZCBhbmQgd3JpdGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdkNQVSBpb2N0bHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgcmVnaXN0ZXIgdmFsdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc1wiLFxuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NcIixcbiAgICBcIl9rdm1fc2V0Y3NyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyB0aGUgS1ZNX0dFVF9TUkVHUyBhbmQgS1ZNX1NFVF9TUkVHUyBpb2N0bHMgZm9yIExvb25nQXJjaCBLVk0sIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gcmVhZCBhbmQgd3JpdGUgc3BlY2lhbCByZWdpc3RlcnMgb2YgYSB2Q1BVLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdkNQVSBpb2N0bHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgcmVnaXN0ZXIgdmFsdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpqnwk[1] Phase: Succeeded StartedAt: 2026-07-22 08:25:50 +0000 UTC FinishedAt: 2026-07-22 08:25:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 08:25:50 +0000 UTC FinishedAt: 2026-07-22 08:25:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2] Phase: Succeeded StartedAt: 2026-07-22 08:25:50 +0000 UTC FinishedAt: 2026-07-22 10:52:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 08:25:50 +0000 UTC FinishedAt: 2026-07-22 10:52:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 08:25:50 +0000 UTC FinishedAt: 2026-07-22 08:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 08:25:50 +0000 UTC FinishedAt: 2026-07-22 08:25:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowpqnwk/series-workflowpqnwk-convert-artifact-2811448514/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 08:26:00 +0000 UTC FinishedAt: 2026-07-22 09:31:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 08:26:00 +0000 UTC FinishedAt: 2026-07-22 09:31:23 +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:*98cb260f-6e88-428e-869e-7dc28c638af3,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-workflowpqnwk/series-workflowpqnwk-convert-artifact-2811448514/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": "fbd8585a-e14e-4822-b5f7-5bdf5bfed434", "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-workflowpqnwk/series-workflowpqnwk-build-action-2466645888/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 08:26:00 +0000 UTC FinishedAt: 2026-07-22 09:31:13 +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:*98cb260f-6e88-428e-869e-7dc28c638af3,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-workflowpqnwk/series-workflowpqnwk-convert-artifact-2811448514/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": "fbd8585a-e14e-4822-b5f7-5bdf5bfed434", "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-workflowpqnwk/series-workflowpqnwk-build-action-2466645888/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 09:31:23 +0000 UTC FinishedAt: 2026-07-22 09:31:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 09:31:23 +0000 UTC FinishedAt: 2026-07-22 09:31:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 09:31:23 +0000 UTC FinishedAt: 2026-07-22 09:31:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 09:31:23 +0000 UTC FinishedAt: 2026-07-22 09:31:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowpqnwk/series-workflowpqnwk-convert-artifact-3283606557/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 09:31:33 +0000 UTC FinishedAt: 2026-07-22 09:33:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 09:31:33 +0000 UTC FinishedAt: 2026-07-22 09:33:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fbd8585a-e14e-4822-b5f7-5bdf5bfed434,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-workflowpqnwk/series-workflowpqnwk-build-action-2466645888/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-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 09:33:53 +0000 UTC FinishedAt: 2026-07-22 09:33:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 09:33:53 +0000 UTC FinishedAt: 2026-07-22 09:33:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 09:33:53 +0000 UTC FinishedAt: 2026-07-22 10:48:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 09:33:53 +0000 UTC FinishedAt: 2026-07-22 10:48:44 +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:*98cb260f-6e88-428e-869e-7dc28c638af3,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-workflowpqnwk/series-workflowpqnwk-convert-artifact-3283606557/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": "f7795838-6e74-4b98-a771-fb484c7f1155", "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-workflowpqnwk/series-workflowpqnwk-build-action-251177209/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 09:33:53 +0000 UTC FinishedAt: 2026-07-22 10:48:34 +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:*98cb260f-6e88-428e-869e-7dc28c638af3,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-workflowpqnwk/series-workflowpqnwk-convert-artifact-3283606557/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": "f7795838-6e74-4b98-a771-fb484c7f1155", "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-workflowpqnwk/series-workflowpqnwk-build-action-251177209/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 10:48:44 +0000 UTC FinishedAt: 2026-07-22 10:48:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 10:48:44 +0000 UTC FinishedAt: 2026-07-22 10:48:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 10:48:44 +0000 UTC FinishedAt: 2026-07-22 10:50:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 10:48:44 +0000 UTC FinishedAt: 2026-07-22 10:50:36 +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:*f7795838-6e74-4b98-a771-fb484c7f1155,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-workflowpqnwk/series-workflowpqnwk-build-action-251177209/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-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 10:50:46 +0000 UTC FinishedAt: 2026-07-22 10:52:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 10:50:46 +0000 UTC FinishedAt: 2026-07-22 10:52:06 +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":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*fbd8585a-e14e-4822-b5f7-5bdf5bfed434,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f7795838-6e74-4b98-a771-fb484c7f1155,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-workflowpqnwk/series-workflowpqnwk-build-action-2466645888/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-workflowpqnwk/series-workflowpqnwk-build-action-251177209/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 10:50:46 +0000 UTC FinishedAt: 2026-07-22 10:50:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 10:50:46 +0000 UTC FinishedAt: 2026-07-22 10:50:51 +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":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpqnwk/series-workflowpqnwk-convert-artifact-3838647458/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 10:50:46 +0000 UTC FinishedAt: 2026-07-22 10:50:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 10:50:46 +0000 UTC FinishedAt: 2026-07-22 10:50:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 10:50:47 +0000 UTC FinishedAt: 2026-07-22 10:50:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 10:50:57 +0000 UTC FinishedAt: 2026-07-22 10:52:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpqnwk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_get_sregs","kvm_arch_vcpu_ioctl_set_sregs","_kvm_setcsr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3a8476a2-ea22-435d-b5f4-4d12bb04fc5f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 10:50:57 +0000 UTC FinishedAt: 2026-07-22 10:52:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fbd8585a-e14e-4822-b5f7-5bdf5bfed434,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f7795838-6e74-4b98-a771-fb484c7f1155,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-workflowpqnwk/series-workflowpqnwk-build-action-2466645888/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-workflowpqnwk/series-workflowpqnwk-build-action-251177209/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-workflowpqnwk/series-workflowpqnwk-convert-artifact-3838647458/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,}