Name: series-workflowxllqq Phase: Succeeded StartedAt: 2026-06-22 02:41:52 +0000 UTC FinishedAt: 2026-06-22 06:43:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[0] Phase: Succeeded StartedAt: 2026-06-22 02:41:52 +0000 UTC FinishedAt: 2026-06-22 02:49:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[0].run-triage Phase: Succeeded StartedAt: 2026-06-22 02:41:52 +0000 UTC FinishedAt: 2026-06-22 02:49:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "4d4dc076-b84b-449c-a449-e782ee3629c7" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "__check_func_arg_reg_off", "check_kfunc_args", "bpf_refcount_acquire" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDAyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19jaGVja19mdW5jX2FyZ19yZWdfb2ZmJiMzNDssCiAgICAmIzM0O2NoZWNrX2tmdW5jX2FyZ3MmIzM0OywKICAgICYjMzQ7YnBmX3JlZmNvdW50X2FjcXVpcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZXN0cmljdCB0aGUgYWxsb3dlZCBvZmZzZXQgZm9yIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZ3VtZW50cyB0byAwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IHJlamVjdHMgaW52YWxpZCBvZmZzZXRzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgdXNlIGNhc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDAyOjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWNmMGFlODIzZGQzNzdhY2VlNzFlY2EwZTlkZmUzZjI0ZjFlODA0MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDAyOjQ3OjQ4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmY2NWVmZjI4ZWNkMjVlIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC03OTkwLDkgJiM0Mzs3OTkwLDEwIEBAIHJlZ19maW5kX2ZpZWxkX29mZnNldChjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBzMzIgb2ZmLCB1MzIgZmllbGRzKVxuIFx0cmV0dXJuIGZpZWxkO1xuIH1cbiBcbi1zdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbi1cdFx0XHRcdCAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUpXG4mIzQzO3N0YXRpYyBpbnQgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4mIzQzO1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4mIzQzO1x0XHRcdFx0ICAgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlLFxuJiM0MztcdFx0XHRcdCAgICBib29sIGJ0Zl9pZF9maXhlZF9vZmZfb2spXG4ge1xuIFx0dTMyIHR5cGUgPSByZWctXHUwMDNldHlwZTtcbiBcbkBAIC04MDQ5LDEyICYjNDM7ODA1MCwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdGNhc2UgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQyB8IE5PTl9PV05fUkVGIHwgTUVNX1JDVTpcbiBcdFx0LyogV2hlbiByZWZlcmVuY2VkIFBUUl9UT19CVEZfSUQgaXMgcGFzc2VkIHRvIHJlbGVhc2UgZnVuY3Rpb24sXG4gXHRcdCAqIGl0cyBmaXhlZCBvZmZzZXQgbXVzdCBiZSAwLiBJbiB0aGUgb3RoZXIgY2FzZXMsIGZpeGVkIG9mZnNldFxuLVx0XHQgKiBjYW4gYmUgbm9uLXplcm8uIFRoaXMgd2FzIGFscmVhZHkgY2hlY2tlZCBhYm92ZS4gU28gcGFzc1xuLVx0XHQgKiBmaXhlZF9vZmZfb2sgYXMgdHJ1ZSB0byBhbGxvdyBmaXhlZCBvZmZzZXQgZm9yIGFsbCBvdGhlclxuLVx0XHQgKiBjYXNlcy4gdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZVxuLVx0XHQgKiBzdGlsbCBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbiYjNDM7XHRcdCAqIGNhbiBiZSBub24temVybyB1bmxlc3MgdGhlIGNhbGxlciByZXF1aXJlcyBvdGhlcndpc2UuXG4mIzQzO1x0XHQgKiB2YXJfb2ZmIGFsd2F5cyBtdXN0IGJlIDAgZm9yIFBUUl9UT19CVEZfSUQsIGhlbmNlIHdlIHN0aWxsXG4mIzQzO1x0XHQgKiBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbiBcdFx0ICovXG4tXHRcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgdHJ1ZSk7XG4mIzQzO1x0XHRyZXR1cm4gX19jaGVja19wdHJfb2ZmX3JlZyhlbnYsIHJlZywgYXJnbm8sIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xuIFx0Y2FzZSBQVFJfVE9fQ1RYOlxuIFx0XHQvKlxuIFx0XHQgKiBBbGxvdyBmaXhlZCBhbmQgdmFyaWFibGUgb2Zmc2V0cyBmb3Igc3lzY2FsbCBjb250ZXh0LCBidXRcbkBAIC04MDcwLDYgJiM0Mzs4MDcwLDEzIEBAIHN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4mIzQzO1x0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuJiM0MztcdFx0XHRcdCAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsIHRydWUpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgY2hlY2tfYXJnX2NvbnN0X3N0cihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vKVxuIHtcbkBAIC0xMTk0MSw2ICYjNDM7MTE5NDgsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFx0XHRlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSA9IEFSR19ET05UQ0FSRTtcbiBcdFx0YXJnbm9fdCBhcmdubyA9IGFyZ25vX2Zyb21fYXJnKGkgJiM0MzsgMSk7XG4gXHRcdGludCByZWdubyA9IHJlZ19mcm9tX2FyZ25vKGFyZ25vKTtcbiYjNDM7XHRcdGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vayA9IHRydWU7XG4gXHRcdHUzMiByZWZfaWQsIHR5cGVfc2l6ZTtcbiBcdFx0Ym9vbCBpc19yZXRfYnVmX3N6ID0gZmFsc2U7XG4gXHRcdGludCBrZl9hcmdfdHlwZTtcbkBAIC0xMjExNCw3ICYjNDM7MTIxMjIsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fTUVNOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fTUVNX1NJWkU6XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19DQUxMQkFDSzpcbi1cdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NPTlNUX1NUUjpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1dPUktRVUVVRTpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1RJTUVSOlxuQEAgLTEyMTI4LDYgJiM0MzsxMjEzNSwxMCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fQ1RYOlxuIFx0XHRcdGFyZ190eXBlID0gQVJHX1BUUl9UT19DVFg7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxuJiM0MztcdFx0XHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQlRGX0lEO1xuJiM0MztcdFx0XHRidGZfaWRfZml4ZWRfb2ZmX29rID0gZmFsc2U7XG4mIzQzO1x0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHZlcmlmaWVyX2J1ZyhlbnYsIFwmIzM0O3Vua25vd24ga2Z1bmMgYXJnIHR5cGUgJWRcJiMzNDssIGtmX2FyZ190eXBlKTtcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbkBAIC0xMjEzNSw3ICYjNDM7MTIxNDYsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFxuIFx0XHRpZiAocmVnbm8gPT0gbWV0YS1cdTAwM2VyZWxlYXNlX3JlZ25vKVxuIFx0XHRcdGFyZ190eXBlIHw9IE9CSl9SRUxFQVNFO1xuLVx0XHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpO1xuJiM0MztcdFx0cmV0ID0gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgYnRmX2lkX2ZpeGVkX29mZl9vayk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jXG5pbmRleCA3MjQ3YTIwYzBhM2JmNS4uNzdjZGE1Y2EyMzYwMTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcbkBAIC0xMywxMiAmIzQzOzEzLDIyIEBAIHN0cnVjdCBub2RlX2FjcXVpcmUge1xuIFx0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcbiB9O1xuIFxuJiM0MztzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkIHtcbiYjNDM7XHRsb25nIGtleTtcbiYjNDM7XHRzdHJ1Y3QgYnBmX3JiX25vZGUgcmI7XG4mIzQzO1x0c3RydWN0IGJwZl9saXN0X25vZGUgbGlzdDtcbiYjNDM7XHRzdHJ1Y3QgYnBmX3JlZmNvdW50IHJlZmNvdW50O1xuJiM0Mzt9O1xuJiM0MztcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfbG9jayh2b2lkKSBfX2tzeW07XG4gZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07XG4gXG4gI2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcJiMzNDsuZGF0YS5cJiMzNDsgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9zcGluX2xvY2sgZ2xvY2s7XG4gcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3JiX3Jvb3QgZ3Jvb3QgX19jb250YWlucyhub2RlX2FjcXVpcmUsIG5vZGUpO1xuJiM0Mztwcml2YXRlKEIpIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7XG4mIzQzO3ByaXZhdGUoQikgc3RydWN0IGJwZl9yYl9yb290IHJvb3QgX19jb250YWlucyhub2RlX3JlZmNvdW50ZWQsIHJiKTtcbiYjNDM7cHJpdmF0ZShCKSBzdHJ1Y3QgYnBmX2xpc3RfaGVhZCBoZWFkIF9fY29udGFpbnMobm9kZV9yZWZjb3VudGVkLCBsaXN0KTtcbiBcbiBzdGF0aWMgYm9vbCBsZXNzKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxuIHtcbkBAIC0zMSw2ICYjNDM7NDEsMTcgQEAgc3RhdGljIGJvb2wgbGVzcyhzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYilcbiBcdHJldHVybiBub2RlX2EtXHUwMDNla2V5IFx1MDAzYyBub2RlX2ItXHUwMDNla2V5O1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgbGVzc19yZWZjb3VudGVkKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZV9hO1xuJiM0MztcdHN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGVfYjtcbiYjNDM7XG4mIzQzO1x0bm9kZV9hID0gY29udGFpbmVyX29mKGEsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIHJiKTtcbiYjNDM7XHRub2RlX2IgPSBjb250YWluZXJfb2YoYiwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgcmIpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbm9kZV9hLVx1MDAzZWtleSBcdTAwM2Mgbm9kZV9iLVx1MDAzZWtleTtcbiYjNDM7fVxuJiM0MztcbiBTRUMoXCYjMzQ7P3RjXCYjMzQ7KVxuIF9fZmFpbHVyZSBfX21zZyhcJiMzNDtVbnJlbGVhc2VkIHJlZmVyZW5jZSBpZD00IGFsbG9jX2luc249e3tbMC05XSYjNDM7fX1cJiMzNDspXG4gbG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcbkBAIC05Myw2ICYjNDM7MTE0LDYyIEBAIGxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlc19vd25pbmdfaW5wdXQodm9pZCAqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztTRUMoXCYjMzQ7P3RjXCYjMzQ7KVxuJiM0MztfX2ZhaWx1cmUgX19tc2coXCYjMzQ7ZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjFcJiMzNDspXG4mIzQzO2xvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGUsICpiYXNlLCAqcmVmO1xuJiM0MztcdHN0cnVjdCBicGZfbGlzdF9ub2RlICpsaXN0X25vZGU7XG4mIzQzO1xuJiM0MztcdG5vZGUgPSBicGZfb2JqX25ldyh0eXBlb2YoKm5vZGUpKTtcbiYjNDM7XHRpZiAoIW5vZGUpXG4mIzQzO1x0XHRyZXR1cm4gMTtcbiYjNDM7XG4mIzQzO1x0YnBmX3NwaW5fbG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XHRicGZfbGlzdF9wdXNoX2Zyb250KFx1MDAyNmhlYWQsIFx1MDAyNm5vZGUtXHUwMDNlbGlzdCk7XG4mIzQzO1x0bGlzdF9ub2RlID0gYnBmX2xpc3RfcG9wX2Zyb250KFx1MDAyNmhlYWQpO1xuJiM0MztcdGJwZl9zcGluX3VubG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XHRpZiAoIWxpc3Rfbm9kZSlcbiYjNDM7XHRcdHJldHVybiAyO1xuJiM0MztcbiYjNDM7XHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XG4mIzQzO1x0cmVmID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobGlzdF9ub2RlKTtcbiYjNDM7XHRpZiAocmVmKVxuJiM0MztcdFx0YnBmX29ial9kcm9wKHJlZik7XG4mIzQzO1x0YnBmX29ial9kcm9wKGJhc2UpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7P3RjXCYjMzQ7KVxuJiM0MztfX2ZhaWx1cmUgX19tc2coXCYjMzQ7ZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjFcJiMzNDspXG4mIzQzO2xvbmcgcmVmY291bnRfYWNxdWlyZV9yYnRyZWVfbm9kZV9vZmZzZXQodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7XG4mIzQzO1x0c3RydWN0IGJwZl9yYl9ub2RlICpyYl9ub2RlO1xuJiM0MztcbiYjNDM7XHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XG4mIzQzO1x0aWYgKCFub2RlKVxuJiM0MztcdFx0cmV0dXJuIDE7XG4mIzQzO1xuJiM0MztcdG5vZGUtXHUwMDNla2V5ID0gMTtcbiYjNDM7XG4mIzQzO1x0YnBmX3NwaW5fbG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XHRicGZfcmJ0cmVlX2FkZChcdTAwMjZyb290LCBcdTAwMjZub2RlLVx1MDAzZXJiLCBsZXNzX3JlZmNvdW50ZWQpO1xuJiM0MztcdHJiX25vZGUgPSBicGZfcmJ0cmVlX2ZpcnN0KFx1MDAyNnJvb3QpO1xuJiM0MztcdGlmIChyYl9ub2RlKVxuJiM0MztcdFx0cmJfbm9kZSA9IGJwZl9yYnRyZWVfcmVtb3ZlKFx1MDAyNnJvb3QsIHJiX25vZGUpO1xuJiM0MztcdGJwZl9zcGluX3VubG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XHRpZiAoIXJiX25vZGUpXG4mIzQzO1x0XHRyZXR1cm4gMjtcbiYjNDM7XG4mIzQzO1x0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XG4mIzQzO1x0cmVmID0gYnBmX3JlZmNvdW50X2FjcXVpcmUocmJfbm9kZSk7XG4mIzQzO1x0aWYgKHJlZilcbiYjNDM7XHRcdGJwZl9vYmpfZHJvcChyZWYpO1xuJiM0MztcdGJwZl9vYmpfZHJvcChiYXNlKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBTRUMoXCYjMzQ7P2ZlbnRyeS5zL1wmIzM0OyBTWVNfUFJFRklYIFwmIzM0O3N5c19nZXRwZ2lkXCYjMzQ7KVxuIF9fZmFpbHVyZSBfX21zZyhcJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcJiMzNDspXG4gaW50IEJQRl9QUk9HKHJidHJlZV9mYWlsX3NsZWVwYWJsZV9sb2NrX2Fjcm9zc19yY3UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYmIzM0OywKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfYXJncyYjMzQ7LAogICAgJiMzNDticGZfcmVmY291bnRfYWNxdWlyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlc3RyaWN0IHRoZSBhbGxvd2VkIG9mZnNldCBmb3IgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJndW1lbnRzIHRvIDAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgcmVqZWN0cyBpbnZhbGlkIG9mZnNldHMgd2l0aG91dCBicmVha2luZyB2YWxpZCB1c2UgY2FzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFjZjBhZTgyM2RkMzc3YWNlZTcxZWNhMGU5ZGZlM2YyNGYxZTgwNDEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyMiAwMjo0Nzo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCAyYWJjNzlkYmYyODFjMi4uZjY1ZWZmMjhlY2QyNWUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTc5OTAsOSAmIzQzOzc5OTAsMTAgQEAgcmVnX2ZpbmRfZmllbGRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIHMzMiBvZmYsIHUzMiBmaWVsZHMpCiAJcmV0dXJuIGZpZWxkOwogfQogCi1zdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKLQkJCQkgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sCi0JCQkJICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSkKJiM0MztzdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAomIzQzOwkJCQkgICAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywKJiM0MzsJCQkJICAgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlLAomIzQzOwkJCQkgICAgYm9vbCBidGZfaWRfZml4ZWRfb2ZmX29rKQogewogCXUzMiB0eXBlID0gcmVnLSZndDt0eXBlOwogCkBAIC04MDQ5LDEyICYjNDM7ODA1MCwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAljYXNlIFBUUl9UT19CVEZfSUQgfCBNRU1fQUxMT0MgfCBOT05fT1dOX1JFRiB8IE1FTV9SQ1U6CiAJCS8qIFdoZW4gcmVmZXJlbmNlZCBQVFJfVE9fQlRGX0lEIGlzIHBhc3NlZCB0byByZWxlYXNlIGZ1bmN0aW9uLAogCQkgKiBpdHMgZml4ZWQgb2Zmc2V0IG11c3QgYmUgMC4gSW4gdGhlIG90aGVyIGNhc2VzLCBmaXhlZCBvZmZzZXQKLQkJICogY2FuIGJlIG5vbi16ZXJvLiBUaGlzIHdhcyBhbHJlYWR5IGNoZWNrZWQgYWJvdmUuIFNvIHBhc3MKLQkJICogZml4ZWRfb2ZmX29rIGFzIHRydWUgdG8gYWxsb3cgZml4ZWQgb2Zmc2V0IGZvciBhbGwgb3RoZXIKLQkJICogY2FzZXMuIHZhcl9vZmYgYWx3YXlzIG11c3QgYmUgMCBmb3IgUFRSX1RPX0JURl9JRCwgaGVuY2Ugd2UKLQkJICogc3RpbGwgbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuCiYjNDM7CQkgKiBjYW4gYmUgbm9uLXplcm8gdW5sZXNzIHRoZSBjYWxsZXIgcmVxdWlyZXMgb3RoZXJ3aXNlLgomIzQzOwkJICogdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZSBzdGlsbAomIzQzOwkJICogbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuCiAJCSAqLwotCQlyZXR1cm4gX19jaGVja19wdHJfb2ZmX3JlZyhlbnYsIHJlZywgYXJnbm8sIHRydWUpOwomIzQzOwkJcmV0dXJuIF9fY2hlY2tfcHRyX29mZl9yZWcoZW52LCByZWcsIGFyZ25vLCBidGZfaWRfZml4ZWRfb2ZmX29rKTsKIAljYXNlIFBUUl9UT19DVFg6CiAJCS8qCiAJCSAqIEFsbG93IGZpeGVkIGFuZCB2YXJpYWJsZSBvZmZzZXRzIGZvciBzeXNjYWxsIGNvbnRleHQsIGJ1dApAQCAtODA3MCw2ICYjNDM7ODA3MCwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAl9CiB9CiAKJiM0MztzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKJiM0MzsJCQkJICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLAomIzQzOwkJCQkgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKQomIzQzO3sKJiM0MzsJcmV0dXJuIF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLCB0cnVlKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGNoZWNrX2FyZ19jb25zdF9zdHIoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCSAgICAgICBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vKQogewpAQCAtMTE5NDEsNiAmIzQzOzExOTQ4LDcgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF8KIAkJZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUgPSBBUkdfRE9OVENBUkU7CiAJCWFyZ25vX3QgYXJnbm8gPSBhcmdub19mcm9tX2FyZyhpICYjNDM7IDEpOwogCQlpbnQgcmVnbm8gPSByZWdfZnJvbV9hcmdubyhhcmdubyk7CiYjNDM7CQlib29sIGJ0Zl9pZF9maXhlZF9vZmZfb2sgPSB0cnVlOwogCQl1MzIgcmVmX2lkLCB0eXBlX3NpemU7CiAJCWJvb2wgaXNfcmV0X2J1Zl9zeiA9IGZhbHNlOwogCQlpbnQga2ZfYXJnX3R5cGU7CkBAIC0xMjExNCw3ICYjNDM7MTIxMjIsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsXwogCQljYXNlIEtGX0FSR19QVFJfVE9fTUVNOgogCQljYXNlIEtGX0FSR19QVFJfVE9fTUVNX1NJWkU6CiAJCWNhc2UgS0ZfQVJHX1BUUl9UT19DQUxMQkFDSzoKLQkJY2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjoKIAkJY2FzZSBLRl9BUkdfUFRSX1RPX0NPTlNUX1NUUjoKIAkJY2FzZSBLRl9BUkdfUFRSX1RPX1dPUktRVUVVRToKIAkJY2FzZSBLRl9BUkdfUFRSX1RPX1RJTUVSOgpAQCAtMTIxMjgsNiAmIzQzOzEyMTM1LDEwIEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfCiAJCWNhc2UgS0ZfQVJHX1BUUl9UT19DVFg6CiAJCQlhcmdfdHlwZSA9IEFSR19QVFJfVE9fQ1RYOwogCQkJYnJlYWs7CiYjNDM7CQljYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOgomIzQzOwkJCWFyZ190eXBlID0gQVJHX1BUUl9UT19CVEZfSUQ7CiYjNDM7CQkJYnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlOwomIzQzOwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJdmVyaWZpZXJfYnVnKGVudiwgJiMzNDt1bmtub3duIGtmdW5jIGFyZyB0eXBlICVkJiMzNDssIGtmX2FyZ190eXBlKTsKIAkJCXJldHVybiAtRUZBVUxUOwpAQCAtMTIxMzUsNyAmIzQzOzEyMTQ2LDggQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF8KIAogCQlpZiAocmVnbm8gPT0gbWV0YS0mZ3Q7cmVsZWFzZV9yZWdubykKIAkJCWFyZ190eXBlIHw9IE9CSl9SRUxFQVNFOwotCQlyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpOwomIzQzOwkJcmV0ID0gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsCiYjNDM7CQkJCQkgICAgICAgYnRmX2lkX2ZpeGVkX29mZl9vayk7CiAJCWlmIChyZXQgJmx0OyAwKQogCQkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYwppbmRleCA3MjQ3YTIwYzBhM2JmNS4uNzdjZGE1Y2EyMzYwMTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jCkBAIC0xMywxMiAmIzQzOzEzLDIyIEBAIHN0cnVjdCBub2RlX2FjcXVpcmUgewogCXN0cnVjdCBicGZfcmVmY291bnQgcmVmY291bnQ7CiB9OwogCiYjNDM7c3RydWN0IG5vZGVfcmVmY291bnRlZCB7CiYjNDM7CWxvbmcga2V5OwomIzQzOwlzdHJ1Y3QgYnBmX3JiX25vZGUgcmI7CiYjNDM7CXN0cnVjdCBicGZfbGlzdF9ub2RlIGxpc3Q7CiYjNDM7CXN0cnVjdCBicGZfcmVmY291bnQgcmVmY291bnQ7CiYjNDM7fTsKJiM0MzsKIGV4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF9sb2NrKHZvaWQpIF9fa3N5bTsKIGV4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF91bmxvY2sodm9pZCkgX19rc3ltOwogCiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKCYjMzQ7LmRhdGEuJiMzNDsgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQogcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3NwaW5fbG9jayBnbG9jazsKIHByaXZhdGUoQSkgc3RydWN0IGJwZl9yYl9yb290IGdyb290IF9fY29udGFpbnMobm9kZV9hY3F1aXJlLCBub2RlKTsKJiM0Mztwcml2YXRlKEIpIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7CiYjNDM7cHJpdmF0ZShCKSBzdHJ1Y3QgYnBmX3JiX3Jvb3Qgcm9vdCBfX2NvbnRhaW5zKG5vZGVfcmVmY291bnRlZCwgcmIpOwomIzQzO3ByaXZhdGUoQikgc3RydWN0IGJwZl9saXN0X2hlYWQgaGVhZCBfX2NvbnRhaW5zKG5vZGVfcmVmY291bnRlZCwgbGlzdCk7CiAKIHN0YXRpYyBib29sIGxlc3Moc3RydWN0IGJwZl9yYl9ub2RlICphLCBjb25zdCBzdHJ1Y3QgYnBmX3JiX25vZGUgKmIpCiB7CkBAIC0zMSw2ICYjNDM7NDEsMTcgQEAgc3RhdGljIGJvb2wgbGVzcyhzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYikKIAlyZXR1cm4gbm9kZV9hLSZndDtrZXkgJmx0OyBub2RlX2ItJmd0O2tleTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGxlc3NfcmVmY291bnRlZChzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGVfYTsKJiM0MzsJc3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZV9iOwomIzQzOwomIzQzOwlub2RlX2EgPSBjb250YWluZXJfb2YoYSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgcmIpOwomIzQzOwlub2RlX2IgPSBjb250YWluZXJfb2YoYiwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgcmIpOwomIzQzOwomIzQzOwlyZXR1cm4gbm9kZV9hLSZndDtrZXkgJmx0OyBub2RlX2ItJmd0O2tleTsKJiM0Mzt9CiYjNDM7CiBTRUMoJiMzNDs/dGMmIzM0OykKIF9fZmFpbHVyZSBfX21zZygmIzM0O1VucmVsZWFzZWQgcmVmZXJlbmNlIGlkPTQgYWxsb2NfaW5zbj17e1swLTldJiM0Mzt9fSYjMzQ7KQogbG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eCkKQEAgLTkzLDYgJiM0MzsxMTQsNjIgQEAgbG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztTRUMoJiMzNDs/dGMmIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtkZXJlZmVyZW5jZSBvZiBtb2RpZmllZCBwdHJfIHB0ciBSMSYjMzQ7KQomIzQzO2xvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGUsICpiYXNlLCAqcmVmOwomIzQzOwlzdHJ1Y3QgYnBmX2xpc3Rfbm9kZSAqbGlzdF9ub2RlOwomIzQzOwomIzQzOwlub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7CiYjNDM7CWlmICghbm9kZSkKJiM0MzsJCXJldHVybiAxOwomIzQzOwomIzQzOwlicGZfc3Bpbl9sb2NrKCZhbXA7bG9jayk7CiYjNDM7CWJwZl9saXN0X3B1c2hfZnJvbnQoJmFtcDtoZWFkLCAmYW1wO25vZGUtJmd0O2xpc3QpOwomIzQzOwlsaXN0X25vZGUgPSBicGZfbGlzdF9wb3BfZnJvbnQoJmFtcDtoZWFkKTsKJiM0MzsJYnBmX3NwaW5fdW5sb2NrKCZhbXA7bG9jayk7CiYjNDM7CWlmICghbGlzdF9ub2RlKQomIzQzOwkJcmV0dXJuIDI7CiYjNDM7CiYjNDM7CWJhc2UgPSBjb250YWluZXJfb2YobGlzdF9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCBsaXN0KTsKJiM0MzsJcmVmID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobGlzdF9ub2RlKTsKJiM0MzsJaWYgKHJlZikKJiM0MzsJCWJwZl9vYmpfZHJvcChyZWYpOwomIzQzOwlicGZfb2JqX2Ryb3AoYmFzZSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDs/dGMmIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtkZXJlZmVyZW5jZSBvZiBtb2RpZmllZCBwdHJfIHB0ciBSMSYjMzQ7KQomIzQzO2xvbmcgcmVmY291bnRfYWNxdWlyZV9yYnRyZWVfbm9kZV9vZmZzZXQodm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7CiYjNDM7CXN0cnVjdCBicGZfcmJfbm9kZSAqcmJfbm9kZTsKJiM0MzsKJiM0MzsJbm9kZSA9IGJwZl9vYmpfbmV3KHR5cGVvZigqbm9kZSkpOwomIzQzOwlpZiAoIW5vZGUpCiYjNDM7CQlyZXR1cm4gMTsKJiM0MzsKJiM0MzsJbm9kZS0mZ3Q7a2V5ID0gMTsKJiM0MzsKJiM0MzsJYnBmX3NwaW5fbG9jaygmYW1wO2xvY2spOwomIzQzOwlicGZfcmJ0cmVlX2FkZCgmYW1wO3Jvb3QsICZhbXA7bm9kZS0mZ3Q7cmIsIGxlc3NfcmVmY291bnRlZCk7CiYjNDM7CXJiX25vZGUgPSBicGZfcmJ0cmVlX2ZpcnN0KCZhbXA7cm9vdCk7CiYjNDM7CWlmIChyYl9ub2RlKQomIzQzOwkJcmJfbm9kZSA9IGJwZl9yYnRyZWVfcmVtb3ZlKCZhbXA7cm9vdCwgcmJfbm9kZSk7CiYjNDM7CWJwZl9zcGluX3VubG9jaygmYW1wO2xvY2spOwomIzQzOwlpZiAoIXJiX25vZGUpCiYjNDM7CQlyZXR1cm4gMjsKJiM0MzsKJiM0MzsJYmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7CiYjNDM7CXJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHJiX25vZGUpOwomIzQzOwlpZiAocmVmKQomIzQzOwkJYnBmX29ial9kcm9wKHJlZik7CiYjNDM7CWJwZl9vYmpfZHJvcChiYXNlKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogU0VDKCYjMzQ7P2ZlbnRyeS5zLyYjMzQ7IFNZU19QUkVGSVggJiMzNDtzeXNfZ2V0cGdpZCYjMzQ7KQogX19mYWlsdXJlIF9fbXNnKCYjMzQ7ZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrJiMzNDspCiBpbnQgQlBGX1BST0cocmJ0cmVlX2ZhaWxfc2xlZXBhYmxlX2xvY2tfYWNyb3NzX3JjdSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQyMgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhleSYjMzk7dmUgYWRkZWQgc29tZSB0ZXN0cywgdG9vLCB3aGljaCBpcyBhbHdheXMgZ29vZCDigJMgc3BlY2lmaWNhbGx5IGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gYSBmdW5jdGlvbiBjYWxsZWQgYGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmZgLiBJdCYjMzk7cyBiZWVuIHJlbmFtZWQgKG9yIG1heWJlIGp1c3QgZGVjbGFyZWQsIGFuZCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgc3RpbGwgdGhlcmU/KSB0byBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCwgYW5kIG5vdyBhY2NlcHRzIGFuIGV4dHJhIGJvb2xlYW4gYXJndW1lbnQsIGBidGZfaWRfZml4ZWRfb2ZmX29rYC4gVGhhdCYjMzk7cyB0aGUga2V5LgoKTm93LCBpbiBgY2hlY2tfa2Z1bmNfYXJnc2AsIHRoZXkmIzM5O3JlIGhhbmRsaW5nIGFyZ3VtZW50cyBvZiB0aGUgYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCB0eXBlLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcsIGFuZCBJIG5lZWQgdG8gZGl2ZSBpbiBhIGJpdCBkZWVwZXIuIFdoYXQgdGhleSYjMzk7cmUgZG9pbmcgaXMsIHdoZW4gdGhleSBlbmNvdW50ZXIgdGhpcyBhcmd1bWVudCB0eXBlLCB0aGV5IHNldCBgYXJnX3R5cGVgIHRvIGBBUkdfUFRSX1RPX0JURl9JRGAgYW5kIGNyaXRpY2FsbHksIHNldCBgYnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlYC4gVGhpcyBtZWFucyB0aGV5JiMzOTtyZSBleHBsaWNpdGx5ICpkaXNhbGxvd2luZyogYSBmaXhlZCBvZmZzZXQgZm9yIGBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUmAgYXJndW1lbnRzLiBFZmZlY3RpdmVseSwgdGhleSYjMzk7cmUgZW5mb3JjaW5nIHRoYXQgdGhlIG9mZnNldCBoYXMgdG8gYmUgemVybywgcmlnaHQ/IE5vIHdpZ2dsZSByb29tLgoKSSBuZWVkIHRvIHNlZSB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgY2hhbmdlLiBTbywgSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBxdWlja2x5IGZpbmQgdGhlIGBjaGVja19rZnVuY19hcmdzYCBmdW5jdGlvbiBhbmQgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIGBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUmAuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgaXMgY3J1Y2lhbCB0byBldmFsdWF0aW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZXN0cmljdGlvbi4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIHZlcmlmaWVyIHV0aWxpemVzIHRoYXQgYGFyZ190eXBlYCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBmb3JiaWRkaW5nIGEgZml4ZWQgb2Zmc2V0IGluIHRoaXMgc3BlY2lmaWMgc2NlbmFyaW8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xNDQxPXN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSB7XG4tLVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDYzLVx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIGRyb3AmIzM5O2RcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg6MTQ2NDpcdCAqICAgYnBmX3JlZmNvdW50X2FjcXVpcmUgKHZpYSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUiBhcmcgdHlwZSlcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgtMTQ2NS1cdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSByZWZjb3VudF9pbmNyJiMzOTtkIGFuZCB1c2Vcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5NjU9ZW51bSBrZnVuY19wdHJfYXJnX3R5cGUge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDk2Ny1cdEtGX0FSR19QVFJfVE9fQUxMT0NfQlRGX0lELCAgICAvKiBBbGxvY2F0ZWQgb2JqZWN0ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5Njg6XHRLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUiwgLyogUmVmY291bnRlZCBsb2NhbCBrcHRyICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5NjktXHRLRl9BUkdfUFRSX1RPX0RZTlBUUixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyNDM9Z2V0X2tmdW5jX3B0cl9hcmdfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmNhbGxlcixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNzYtXHRpZiAoaXNfa2Z1bmNfYXJnX3JlZmNvdW50ZWRfa3B0cihtZXRhLVx1MDAzZWJ0ZiwgXHUwMDI2YXJnc1thcmddKSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTI3NzpcdFx0cmV0dXJuIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjc4LVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTkxMz1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjEzNy1cdFx0XHRicmVhaztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjEzODpcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjEzOS1cdFx0XHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQlRGX0lEO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjQwMC1cdFx0XHRicmVhaztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjQwMTpcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjQwMi1cdFx0XHRpZiAoIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctXHUwMDNldHlwZSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Nzg3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBCUEYgVmVyaWZpZXIgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgaG93IHRoZSBCUEYgdmVyaWZpZXIgZGVhbHMgd2l0aCBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgIGFyZ3VtZW50cyBwYXNzZWQgdG8ga2Z1bmNzLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaWYgdGhlcmUmIzM5O3MgYSBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJiMzOTtzIGxvZ2ljLCBlc3BlY2lhbGx5IGFyb3VuZCBob3cgaXQgdmFsaWRhdGVzIHRob3NlIGFyZ3VtZW50cywgaXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcsIGFuZCBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBgYnBmKClgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydC4KCk15IGZpcnN0IHRob3VnaHQgaXMsIHdoYXQga2Z1bmNzIGFyZSBldmVuICp1c2luZyogdGhpcyBhcmd1bWVudCB0eXBlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4gTHVja2lseSB0aGUgY29tbWVudCBtZW50aW9ucyB0aGF0IHRoaXMgYXJndW1lbnQgdHlwZSBpcyB1c2VkIHdpdGggYGJwZl9yZWZjb3VudF9hY3F1aXJlYC4gVGhhdCBnaXZlcyBtZSBhIGtleXdvcmQgdG8gZ3JlcCBmb3IuIExldCYjMzk7cyBzZWUgd2hhdCBwb3BzIHVwIHdoZW4gSSBzZWFyY2ggZm9yIHRoYXQuIEtub3dpbmcgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0JiMzOTtzIHBvdGVudGlhbGx5IGFmZmVjdGVkLiBUaW1lIHRvIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfcmVmY291bnRfYWNxdWlyZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oPTE0NDE9c3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjMtXHQgKiAgICAgUmVjb3JkIHRoZSBsb2NhbCBrcHRyIHR5cGUgdG8gYmUgZHJvcCYjMzk7ZFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxNDY0Olx0ICogICBicGZfcmVmY291bnRfYWNxdWlyZSAodmlhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZyB0eXBlKVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDY1LVx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIHJlZmNvdW50X2luY3ImIzM5O2QgYW5kIHVzZVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTI0NDk9X19icGZfa2Z1bmMgdm9pZCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwodm9pZCAqcF9fYWxsb2MsIHZvaWQgKm1ldGFfX2lnbilcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU0LS8qKlxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ1NTogKiBicGZfcmVmY291bnRfYWNxdWlyZSgpIC0gdHVybiBhIGxvY2FsIGtwdHIgaW50byBhbiBvd25pbmcgcmVmZXJlbmNlXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU2LSAqIEBwX19yZWZjb3VudGVkX2twdHI6IG5vbi1vd25pbmcgbG9jYWwga3B0clxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NjMtICovXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDY0Ol9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NjUte1xuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODAtXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDgxOl9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwodm9pZCAqcF9fcmVmY291bnRlZF9rcHRyLCB2b2lkICptZXRhX19pZ24pXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDgyLXtcbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODM6XHRyZXR1cm4gYnBmX3JlZmNvdW50X2FjcXVpcmUocF9fcmVmY291bnRlZF9rcHRyLCBtZXRhX19pZ24pO1xua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ4NC19XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgxMz1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODE2LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDk4OT1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTkzLVx0S0ZfYnBmX29ial9kcm9wLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTk0Olx0S0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NTpcdEtGX2JwZl9yZWZjb3VudF9hY3F1aXJlLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTk2LVx0S0ZfYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTA2Nj1CVEZfSUQoZnVuYywgYnBmX29ial9kcm9wKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY3OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY4OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA2OS1CVEZfSUQoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE3Nj1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4MS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4MjpzdGF0aWMgYm9vbCBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4My17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODQ6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODU6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExODYtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19rZnVuY19yZXRfbnVsbChzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTAte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjExOlx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXHUwMDNlZnVuY19pZCkgXHUwMDI2XHUwMDI2IG1ldGEtXHUwMDNlYXJnX293bmluZ19yZWYpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2MTc9c3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMC1cdCAgICAgICBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyhidGZfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2MjE6XHQgICAgICAgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoYnRmX2lkKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMi19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNzI3PXN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODE1LVx0XHRpbnNuX2F1eC1cdTAwM2VrcHRyX3N0cnVjdF9tZXRhID0gc3RydWN0X21ldGE7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4MTY6XHR9IGVsc2UgaWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXHUwMDNlZnVuY19pZCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjgxNy1cdFx0bWFya19yZWdfa25vd25femVybyhlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTE4LVx0XHQgICAgICFpc19icGZfcGVyY3B1X29ial9uZXdfa2Z1bmMobWV0YS5mdW5jX2lkKSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzExOTpcdFx0ICAgICAhaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS5mdW5jX2lkKSkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyMC1cdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7YWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSURcXG5cJiMzNDspO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTU3ND1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMi1cdFx0ICAgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyhkZXNjLVx1MDAzZWZ1bmNfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2MjM6XHRcdCAgIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXHUwMDNlZnVuY19pZCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyNC1cdFx0c3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqa3B0cl9zdHJ1Y3RfbWV0YSA9IGVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5rcHRyX3N0cnVjdF9tZXRhO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYzMi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYzMzpcdFx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXHUwMDNlZnVuY19pZCkgXHUwMDI2XHUwMDI2ICFrcHRyX3N0cnVjdF9tZXRhKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzQtXHRcdFx0dmVyaWZpZXJfYnVnKGVudiwgXCYjMzQ7a3B0cl9zdHJ1Y3RfbWV0YSBleHBlY3RlZCBhdCBpbnNuX2lkeCAlZFwmIzM0Oyxcbi0tXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oPTM4ND1zdHJ1Y3QgYnBmX3JiX25vZGUgKmJwZl9yYnRyZWVfZmlyc3Qoc3RydWN0IGJwZl9yYl9yb290ICpyb290KSBfX2tzeW07XG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oLTM4NS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmg6Mzg2OnZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwodm9pZCAqa3B0ciwgdm9pZCAqbWV0YSkgX19rc3ltO1xudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODc6I2RlZmluZSBicGZfcmVmY291bnRfYWNxdWlyZShrcHRyKSBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKGtwdHIsIE5VTEwpXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oLTM4OC1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmM9MzAzPWludCBCUEZfUFJPRyhicGZfZnFfZW5xdWV1ZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jLTM0NC1cdFx0aWYgKGZxX2Zsb3dfaXNfZGV0YWNoZWQoZmxvdykpIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfcWRpc2NfZnEuYzozNDU6XHRcdFx0Zmxvd19jb3B5ID0gYnBmX3JlZmNvdW50X2FjcXVpcmUoZmxvdyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ2LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmM9MjM0PWxvbmcgcmVmY291bnRfYWNxdWlyZV93aXRob3V0X3Vuc3Rhc2godm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmMtMjQ5LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYzoyNTA6XHRwID0gYnBmX3JlZmNvdW50X2FjcXVpcmUocy1cdTAwM2VzdGFzaGVkKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmMtMjUxLVx0aWYgKCFwKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9NTM9bG9uZyByYnRyZWVfc2VhcmNoKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTY0LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzo2NTpcdFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy02Ni1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTEwOC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM6MTA5Olx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xMTAtXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2Z2xvY2swKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jPTE1Nj1sb25nIHRlc3RfIyNvcCMjX3NwaW5sb2NrXyMjZG9sb2NrKHZvaWQgKmN0eClcdFx0XFxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTE2OC1cdG4gPSByYl9lbnRyeShyYl9uLCBzdHJ1Y3Qgbm9kZV9kYXRhLCByMCk7XHRcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzoxNjk6XHRuID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XHRcdFx0XFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTcwLVx0YnBmX3NwaW5fdW5sb2NrKFx1MDAyNmdsb2NrMCk7XHRcdFx0XFxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmM9MTU1PWxvbmcgcmJ0cmVlX3NlYXJjaF9rcHRyX3JlZih2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jLTE4Mi1cdFx0LyogVW51c2VkIHJlZmVyZW5jZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jOjE4MzpcdFx0dG5vZGVfbSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHRub2RlX3IpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jLTE4NC1cdFx0aWYgKCF0bm9kZV9tKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz03Mz1zdGF0aWMgbG9uZyBfX2luc2VydF9pbl90cmVlX2FuZF9saXN0KHN0cnVjdCBicGZfbGlzdF9oZWFkICpoZWFkLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04Mi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NC1cdG0tXHUwMDNla2V5ID0gMTIzO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDY9c3RhdGljIGxvbmcgX19zdGFzaF9tYXBfaW5zZXJ0X3RyZWUoaW50IGlkeCwgaW50IHZhbCwgc3RydWN0IGJwZl9yYl9yb290ICpyb290LFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMjAtXHRuLVx1MDAzZWtleSA9IHZhbDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMjE6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIyLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0zOTk9c3RhdGljIHN0cnVjdCBub2RlX2RhdGEgKl9fYWRkX2luX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTQwNy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo0MDg6XHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy00MDktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTc5Mz1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDItXHRicGZfcmJ0cmVlX2FkZChcdTAwMjZhcm9vdCwgXHUwMDI2bi1cdTAwM2Vub2RlLCBsZXNzX2EpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgwMzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDQtXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2YWxvY2spO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz04MTU9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyMi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MjM6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODI0LVx0bS1cdTAwM2VrZXkgPSAyO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz04NTI9bG9uZyByYnRyZWVfd3Jvbmdfb3duZXJfcmVtb3ZlX2ZhaWxfYTEodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NTgtXHRcdHJldHVybiAxO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjg1OTpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NjAtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwMDI9c3RhdGljIGludCBfX2luc2VydF9pbl9saXN0KHN0cnVjdCBicGZfbGlzdF9oZWFkICpoZWFkLCBzdHJ1Y3QgYnBmX3NwaW5fbG9jayAqbG9jayxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMDExOlx0bm9kZV9yZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShub2RlX25ldyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMi1cdG5vZGVfb2xkID0gYnBmX2twdHJfeGNoZyhub2RlLCBub2RlX25ldyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9NTc9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy02Ny1cdC8qIG0gYmVjb21lcyBhbiBvd25pbmcgcmVmIGJ1dCBpcyBuZXZlciBkcm9wJiMzOTtkIG9yIGFkZGVkIHRvIGEgdHJlZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6Njg6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy02OS1cdGJwZl9zcGluX3VubG9jayhcdTAwMjZnbG9jayk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9Nzk9bG9uZyByZWZjb3VudF9hY3F1aXJlX21heWJlX251bGwodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg2LVx0ICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzo4NzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg4LVx0aWYgKG0pXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9OTg9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTA2LVx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AmIzM5O2Qgb3IgYWRkZWQgdG8gYSB0cmVlICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMDc6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMDgtXHRtLVx1MDAzZWtleSA9IDI7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9MTE5PWxvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMzUtXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMzY6XHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShsaXN0X25vZGUpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTM3LVx0aWYgKHJlZilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz0xNDU9bG9uZyByZWZjb3VudF9hY3F1aXJlX3JidHJlZV9ub2RlX29mZnNldCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTY1LVx0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxNjY6XHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShyYl9ub2RlKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTE2Ny1cdGlmIChyZWYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyODgKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZXN0cmljdGlvbiBvbiBgYnBmX3JlZmNvdW50X2FjcXVpcmVgIHdpdGggUmVmY291bnRlZCBLUFRScyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGBicGZfcmVmY291bnRfYWNxdWlyZWAuIFRoZSBjb3JlIGNoYW5nZSBjZW50ZXJzIGFyb3VuZCB0aGUgYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCBhcmd1bWVudCB0eXBlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHZlcmlmaWVyLiBJdCBzZWVtcyB0aGUgY29tbWl0IGV4cGxpY2l0bHkgbW9kaWZpZXMgYGNoZWNrX2tmdW5jX2FyZ3NgIHRvIGVuc3VyZSBgYnRmX2lkX2ZpeGVkX29mZl9va2AgaXMgYGZhbHNlYCB3aGVuIGRlYWxpbmcgd2l0aCBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgLiBUaGlzIGlzIHByZXR0eSBjcnVjaWFsLiBXaGF0IHRoaXMgKmFjdHVhbGx5KiBtZWFucyBpcyB0aGF0IHdlJiMzOTtyZSBwcmV2ZW50aW5nIGBicGZfcmVmY291bnRfYWNxdWlyZWAgZnJvbSBiZWluZyBjYWxsZWQgd2l0aCBhbnkgbm9uLXplcm8gZml4ZWQgb2Zmc2V0LCB3aGljaCBpcyBieSBkZXNpZ24sIG9idmlvdXNseSwgZm9yIHNlY3VyaXR5IHJlYXNvbnMuCgpOb3csIHRoZSBhZGRlZCB0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNgIGFyZSBhIG5pY2UgY29uZmlybWF0aW9uIG9mIHRoaXMgcmVzdHJpY3Rpb24uIFBhc3NpbmcgdGhpbmdzIGxpa2UgYGxpc3Rfbm9kZWAgb3IgYHJiX25vZGVgLCBib3RoIG9mIHdoaWNoIGhhdmUgdGhvc2UgZm9yYmlkZGVuIG9mZnNldHMgd2l0aGluIHRoZSBgc3RydWN0IG5vZGVfcmVmY291bnRlZGAgc3RydWN0dXJlLCB3aWxsIG5vdyBiZSBjb3JyZWN0bHkgcmVqZWN0ZWQgZHVyaW5nIHZlcmlmaWNhdGlvbi4gVGhpcyBpcyBhIGdvb2Qgc2FuaXR5IGNoZWNrIGFuZCBhbHNvIGdpdmVzIGV4YW1wbGVzIG9mIHRoZSBmb3JiaWRkZW4gb3BlcmF0aW9ucy4KClRoZXJlZm9yZSwgdGhlIGtleSBwaWVjZXMgb2YgY29kZSBJIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhpcyBhcmU6IGBjaGVja19rZnVuY19hcmdzYCwgYF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZmAsIGFuZCBvYnZpb3VzbHksIGBicGZfcmVmY291bnRfYWNxdWlyZWAgaXRzZWxmLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgdmVyaWZpZXIgbWFrZXMgc3VyZSB0aGUgb2Zmc2V0IGlzIHplcm8uCgpJIGtub3cgdGhlIGNvZGUgZm9yIHRoZXNlIGZ1bmN0aW9ucyBpcyBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYGtlcm5lbC9icGYvaGVscGVycy5jYCwgc28gSSYjMzk7bGwgY2hlY2sgdGhlcmUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGUgQlBGIHN1YnN5c3RlbSBpcyBlbmFibGVkIHZpYSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIGZvciB0aGF0LCBhbmQgcGVyaGFwcyBsb29rIGFyb3VuZCBga2VybmVsL2JwZi9LY29uZmlnYCBvciBldmVuIGBpbml0L0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIG9yIGZsYWdzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhpcyBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5LiBKdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxNjkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQlBGIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgQlBGIHN5c2NhbGxzLCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaW1tZWRpYXRlbHkgc3ByaW5ncyB0byBtaW5kIGFzIHRoZSBwaXZvdGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGJyb2FkZXIgY29udGV4dCBoZXJlLiBJJiMzOTttIHdvbmRlcmluZyBpZiBgYnBmX3JlZmNvdW50X2FjcXVpcmVgIGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIGFsd2F5cyBhdmFpbGFibGUsIG9yIGlmIGl0JiMzOTtzIGRlcGVuZGVudCBvbiB0aGUgcHJvZ3JhbSB0eXBlIG9yIHNvbWUgb3RoZXIgZmFjdG9yLiBUbyBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkgcmVhbGx5IG5lZWQgdG8gZHJpbGwgZG93biBhbmQgZXhhbWluZSB0aGUgaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaW4gYGtlcm5lbC9icGYvaGVscGVycy5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYW5zd2VyIGlzIGdvaW5nIHRvIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfcmVmY291bnRfYWNxdWlyZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oPTE0NDE9c3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjMtXHQgKiAgICAgUmVjb3JkIHRoZSBsb2NhbCBrcHRyIHR5cGUgdG8gYmUgZHJvcCYjMzk7ZFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxNDY0Olx0ICogICBicGZfcmVmY291bnRfYWNxdWlyZSAodmlhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZyB0eXBlKVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDY1LVx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIHJlZmNvdW50X2luY3ImIzM5O2QgYW5kIHVzZVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTI0NDk9X19icGZfa2Z1bmMgdm9pZCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwodm9pZCAqcF9fYWxsb2MsIHZvaWQgKm1ldGFfX2lnbilcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU0LS8qKlxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ1NTogKiBicGZfcmVmY291bnRfYWNxdWlyZSgpIC0gdHVybiBhIGxvY2FsIGtwdHIgaW50byBhbiBvd25pbmcgcmVmZXJlbmNlXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU2LSAqIEBwX19yZWZjb3VudGVkX2twdHI6IG5vbi1vd25pbmcgbG9jYWwga3B0clxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NjMtICovXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDY0Ol9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NjUte1xuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODAtXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDgxOl9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwodm9pZCAqcF9fcmVmY291bnRlZF9rcHRyLCB2b2lkICptZXRhX19pZ24pXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDgyLXtcbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODM6XHRyZXR1cm4gYnBmX3JlZmNvdW50X2FjcXVpcmUocF9fcmVmY291bnRlZF9rcHRyLCBtZXRhX19pZ24pO1xua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ4NC19XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgxMz1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODE2LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDk4OT1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTkzLVx0S0ZfYnBmX29ial9kcm9wLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTk0Olx0S0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NTpcdEtGX2JwZl9yZWZjb3VudF9hY3F1aXJlLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTk2LVx0S0ZfYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTA2Nj1CVEZfSUQoZnVuYywgYnBmX29ial9kcm9wKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY3OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY4OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA2OS1CVEZfSUQoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE3Nj1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4MS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4MjpzdGF0aWMgYm9vbCBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4My17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODQ6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODU6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExODYtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19rZnVuY19yZXRfbnVsbChzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTAte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjExOlx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXHUwMDNlZnVuY19pZCkgXHUwMDI2XHUwMDI2IG1ldGEtXHUwMDNlYXJnX293bmluZ19yZWYpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2MTc9c3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMC1cdCAgICAgICBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyhidGZfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2MjE6XHQgICAgICAgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoYnRmX2lkKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMi19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNzI3PXN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODE1LVx0XHRpbnNuX2F1eC1cdTAwM2VrcHRyX3N0cnVjdF9tZXRhID0gc3RydWN0X21ldGE7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4MTY6XHR9IGVsc2UgaWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXHUwMDNlZnVuY19pZCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjgxNy1cdFx0bWFya19yZWdfa25vd25femVybyhlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTE4LVx0XHQgICAgICFpc19icGZfcGVyY3B1X29ial9uZXdfa2Z1bmMobWV0YS5mdW5jX2lkKSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzExOTpcdFx0ICAgICAhaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS5mdW5jX2lkKSkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyMC1cdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7YWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSURcXG5cJiMzNDspO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTU3ND1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMi1cdFx0ICAgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyhkZXNjLVx1MDAzZWZ1bmNfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2MjM6XHRcdCAgIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXHUwMDNlZnVuY19pZCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyNC1cdFx0c3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqa3B0cl9zdHJ1Y3RfbWV0YSA9IGVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5rcHRyX3N0cnVjdF9tZXRhO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYzMi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYzMzpcdFx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXHUwMDNlZnVuY19pZCkgXHUwMDI2XHUwMDI2ICFrcHRyX3N0cnVjdF9tZXRhKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzQtXHRcdFx0dmVyaWZpZXJfYnVnKGVudiwgXCYjMzQ7a3B0cl9zdHJ1Y3RfbWV0YSBleHBlY3RlZCBhdCBpbnNuX2lkeCAlZFwmIzM0Oyxcbi0tXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oPTM4ND1zdHJ1Y3QgYnBmX3JiX25vZGUgKmJwZl9yYnRyZWVfZmlyc3Qoc3RydWN0IGJwZl9yYl9yb290ICpyb290KSBfX2tzeW07XG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oLTM4NS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmg6Mzg2OnZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwodm9pZCAqa3B0ciwgdm9pZCAqbWV0YSkgX19rc3ltO1xudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODc6I2RlZmluZSBicGZfcmVmY291bnRfYWNxdWlyZShrcHRyKSBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKGtwdHIsIE5VTEwpXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oLTM4OC1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmM9MzAzPWludCBCUEZfUFJPRyhicGZfZnFfZW5xdWV1ZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jLTM0NC1cdFx0aWYgKGZxX2Zsb3dfaXNfZGV0YWNoZWQoZmxvdykpIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfcWRpc2NfZnEuYzozNDU6XHRcdFx0Zmxvd19jb3B5ID0gYnBmX3JlZmNvdW50X2FjcXVpcmUoZmxvdyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ2LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmM9MjM0PWxvbmcgcmVmY291bnRfYWNxdWlyZV93aXRob3V0X3Vuc3Rhc2godm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmMtMjQ5LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYzoyNTA6XHRwID0gYnBmX3JlZmNvdW50X2FjcXVpcmUocy1cdTAwM2VzdGFzaGVkKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmMtMjUxLVx0aWYgKCFwKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9NTM9bG9uZyByYnRyZWVfc2VhcmNoKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTY0LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzo2NTpcdFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy02Ni1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTEwOC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM6MTA5Olx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xMTAtXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2Z2xvY2swKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jPTE1Nj1sb25nIHRlc3RfIyNvcCMjX3NwaW5sb2NrXyMjZG9sb2NrKHZvaWQgKmN0eClcdFx0XFxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTE2OC1cdG4gPSByYl9lbnRyeShyYl9uLCBzdHJ1Y3Qgbm9kZV9kYXRhLCByMCk7XHRcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzoxNjk6XHRuID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XHRcdFx0XFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTcwLVx0YnBmX3NwaW5fdW5sb2NrKFx1MDAyNmdsb2NrMCk7XHRcdFx0XFxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmM9MTU1PWxvbmcgcmJ0cmVlX3NlYXJjaF9rcHRyX3JlZih2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jLTE4Mi1cdFx0LyogVW51c2VkIHJlZmVyZW5jZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jOjE4MzpcdFx0dG5vZGVfbSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHRub2RlX3IpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jLTE4NC1cdFx0aWYgKCF0bm9kZV9tKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz03Mz1zdGF0aWMgbG9uZyBfX2luc2VydF9pbl90cmVlX2FuZF9saXN0KHN0cnVjdCBicGZfbGlzdF9oZWFkICpoZWFkLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04Mi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NC1cdG0tXHUwMDNla2V5ID0gMTIzO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDY9c3RhdGljIGxvbmcgX19zdGFzaF9tYXBfaW5zZXJ0X3RyZWUoaW50IGlkeCwgaW50IHZhbCwgc3RydWN0IGJwZl9yYl9yb290ICpyb290LFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMjAtXHRuLVx1MDAzZWtleSA9IHZhbDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMjE6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIyLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0zOTk9c3RhdGljIHN0cnVjdCBub2RlX2RhdGEgKl9fYWRkX2luX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTQwNy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo0MDg6XHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy00MDktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTc5Mz1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDItXHRicGZfcmJ0cmVlX2FkZChcdTAwMjZhcm9vdCwgXHUwMDI2bi1cdTAwM2Vub2RlLCBsZXNzX2EpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgwMzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDQtXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2YWxvY2spO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz04MTU9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyMi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MjM6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODI0LVx0bS1cdTAwM2VrZXkgPSAyO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz04NTI9bG9uZyByYnRyZWVfd3Jvbmdfb3duZXJfcmVtb3ZlX2ZhaWxfYTEodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NTgtXHRcdHJldHVybiAxO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjg1OTpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NjAtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwMDI9c3RhdGljIGludCBfX2luc2VydF9pbl9saXN0KHN0cnVjdCBicGZfbGlzdF9oZWFkICpoZWFkLCBzdHJ1Y3QgYnBmX3NwaW5fbG9jayAqbG9jayxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMDExOlx0bm9kZV9yZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShub2RlX25ldyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMi1cdG5vZGVfb2xkID0gYnBmX2twdHJfeGNoZyhub2RlLCBub2RlX25ldyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9NTc9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy02Ny1cdC8qIG0gYmVjb21lcyBhbiBvd25pbmcgcmVmIGJ1dCBpcyBuZXZlciBkcm9wJiMzOTtkIG9yIGFkZGVkIHRvIGEgdHJlZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6Njg6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy02OS1cdGJwZl9zcGluX3VubG9jayhcdTAwMjZnbG9jayk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9Nzk9bG9uZyByZWZjb3VudF9hY3F1aXJlX21heWJlX251bGwodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg2LVx0ICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzo4NzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg4LVx0aWYgKG0pXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9OTg9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTA2LVx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AmIzM5O2Qgb3IgYWRkZWQgdG8gYSB0cmVlICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMDc6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMDgtXHRtLVx1MDAzZWtleSA9IDI7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9MTE5PWxvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMzUtXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMzY6XHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShsaXN0X25vZGUpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTM3LVx0aWYgKHJlZilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz0xNDU9bG9uZyByZWZjb3VudF9hY3F1aXJlX3JidHJlZV9ub2RlX29mZnNldCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTY1LVx0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxNjY6XHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShyYl9ub2RlKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTE2Ny1cdGlmIChyZWYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDAyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTM1CgkJCQkJCQlvdXRwdXQ6IDE0NwoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9uIGhlcmUgYm9pbHMgZG93biB0byBgQlBGX1NZU0NBTExgLiBJIG5lZWQgdG8gc3ludGhlc2l6ZSBhIHN1bW1hcnkgb2YgdGhlIGFwcHJvYWNoIGZvciB0aGUgZnV6emluZy4KCk15IHRoaW5raW5nIGlzIHRoaXM6IFRoZSBrZXkgYXNwZWN0cyB0byBmdXp6aW5nIGFyZSBzdHJhaWdodGZvcndhcmQsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIG9mIHRoZSBvdmVyYWxsIGFwcHJvYWNoIHRvIHRoaXMgcGFydGljdWxhciBwYXRjaC4KCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlLCBkZWZpbml0ZWx5LiBUaGlzIGlzIGNyaXRpY2FsIEJQRiB2ZXJpZmllciBsb2dpYywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwuIENoYW5nZXMgYXQgdGhpcyBsZXZlbCBhcmUgYWx3YXlzIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4KKiAgICoqRm9jdXNTeW1ib2xzOioqIEkmIzM5O2xsIGJlIHRhcmdldGluZyBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCwgYGNoZWNrX2tmdW5jX2FyZ3NgLCBhbmQgYGJwZl9yZWZjb3VudF9hY3F1aXJlYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhlIG9mZnNldCByZXN0cmljdGlvbiBmb3IgYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCBhcmd1bWVudHMuIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgdGVzdCB0aGUgYm91bmRhcnkgY29uZGl0aW9ucy4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBDb25maXJtZWQ6IGBCUEZfU1lTQ0FMTGAuIFRoaXMgaXMgaG93IHVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCB0aGUgdmVyaWZpZXIsIHNvIGl0JiMzOTtzIHRoZSByaWdodCBmb2N1cy4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpcyBhbHRlcmluZyB0aGUgdmVyaWZpZXImIzM5O3MgYmVoYXZpb3IgcmVnYXJkaW5nIG9mZnNldCByZXN0cmljdGlvbnMgZm9yIGEgc3BlY2lmaWMgdHlwZSBvZiBrZXJuZWwgZnVuY3Rpb24gYXJndW1lbnQuIFRoZSBhaW0gaXMgdG8gbWFrZSBzdXJlIGl0IGZ1bmN0aW9ucyBjb3JyZWN0bHksIHJlamVjdGluZyBpbmNvcnJlY3Qgb2Zmc2V0cyBhbmQgYWxsb3dpbmcgdmFsaWQgb2Zmc2V0cy4gSSBoYXZlIHRvIGZ1enogdG8gc2VlIHRoZSBwYXRjaCYjMzk7cyBjaGFuZ2VzIGRvbiYjMzk7dCBpbnRyb2R1Y2UgZXJyb3JzIGluIHZhbGlkIGNhc2VzIG9yIG1pc3MgaW5jb3JyZWN0IGNhc2VzLiBUaGlzIGNoYW5nZSBpcyBzZWN1cml0eS1zZW5zaXRpdmUsIHNvIHRob3JvdWdoIHRlc3RpbmcgaXMgaW1wb3J0YW50LgoKSSYjMzk7bGwgYmUgdXNpbmcgYHNldC1yZXN1bHRzYCB0byByZWNvcmQgYW5kIHJldHVybiB0aGUgZnV6emluZyBvdXRjb21lcy4gVGhpcyBzdW1tYXJpemVzIHRoZSBmdXp6aW5nIHN0cmF0ZWd5IHByZXR0eSB3ZWxsLCBzbyBJJiMzOTttIG5vdyByZWFkeSB0byBzdGFydCBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYmIzM0OywKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfYXJncyYjMzQ7LAogICAgJiMzNDticGZfcmVmY291bnRfYWNxdWlyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlc3RyaWN0IHRoZSBhbGxvd2VkIG9mZnNldCBmb3IgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJndW1lbnRzIHRvIDAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgcmVqZWN0cyBpbnZhbGlkIG9mZnNldHMgd2l0aG91dCBicmVha2luZyB2YWxpZCB1c2UgY2FzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19jaGVja19mdW5jX2FyZ19yZWdfb2ZmJiMzNDssCiAgICAmIzM0O2NoZWNrX2tmdW5jX2FyZ3MmIzM0OywKICAgICYjMzQ7YnBmX3JlZmNvdW50X2FjcXVpcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZXN0cmljdCB0aGUgYWxsb3dlZCBvZmZzZXQgZm9yIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZ3VtZW50cyB0byAwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IHJlamVjdHMgaW52YWxpZCBvZmZzZXRzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgdXNlIGNhc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDI6NDc6NTAuMTIwNDg5NTgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQxMDkzOTIyMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZcIixcbiAgICBcImNoZWNrX2tmdW5jX2FyZ3NcIixcbiAgICBcImJwZl9yZWZjb3VudF9hY3F1aXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZXN0cmljdCB0aGUgYWxsb3dlZCBvZmZzZXQgZm9yIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZ3VtZW50cyB0byAwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IHJlamVjdHMgaW52YWxpZCBvZmZzZXRzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgdXNlIGNhc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0Nzo1MC4xMjA0OTgzNTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDg3MTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFjZjBhZTgyM2RkMzc3YWNlZTcxZWNhMGU5ZGZlM2YyNGYxZTgwNDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDI6NDc6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmY2NWVmZjI4ZWNkMjVlIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC03OTkwLDkgKzc5OTAsMTAgQEAgcmVnX2ZpbmRfZmllbGRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIHMzMiBvZmYsIHUzMiBmaWVsZHMpXFxuIFxcdHJldHVybiBmaWVsZDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tXFx0XFx0XFx0XFx0ICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSlcXG4rc3RhdGljIGludCBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4rXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuK1xcdFxcdFxcdFxcdCAgICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSxcXG4rXFx0XFx0XFx0XFx0ICAgIGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vaylcXG4ge1xcbiBcXHR1MzIgdHlwZSA9IHJlZy1cXHUwMDNldHlwZTtcXG4gXFxuQEAgLTgwNDksMTIgKzgwNTAsMTEgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdGNhc2UgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQyB8IE5PTl9PV05fUkVGIHwgTUVNX1JDVTpcXG4gXFx0XFx0LyogV2hlbiByZWZlcmVuY2VkIFBUUl9UT19CVEZfSUQgaXMgcGFzc2VkIHRvIHJlbGVhc2UgZnVuY3Rpb24sXFxuIFxcdFxcdCAqIGl0cyBmaXhlZCBvZmZzZXQgbXVzdCBiZSAwLiBJbiB0aGUgb3RoZXIgY2FzZXMsIGZpeGVkIG9mZnNldFxcbi1cXHRcXHQgKiBjYW4gYmUgbm9uLXplcm8uIFRoaXMgd2FzIGFscmVhZHkgY2hlY2tlZCBhYm92ZS4gU28gcGFzc1xcbi1cXHRcXHQgKiBmaXhlZF9vZmZfb2sgYXMgdHJ1ZSB0byBhbGxvdyBmaXhlZCBvZmZzZXQgZm9yIGFsbCBvdGhlclxcbi1cXHRcXHQgKiBjYXNlcy4gdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZVxcbi1cXHRcXHQgKiBzdGlsbCBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cXG4rXFx0XFx0ICogY2FuIGJlIG5vbi16ZXJvIHVubGVzcyB0aGUgY2FsbGVyIHJlcXVpcmVzIG90aGVyd2lzZS5cXG4rXFx0XFx0ICogdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZSBzdGlsbFxcbitcXHRcXHQgKiBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgdHJ1ZSk7XFxuK1xcdFxcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgYnRmX2lkX2ZpeGVkX29mZl9vayk7XFxuIFxcdGNhc2UgUFRSX1RPX0NUWDpcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogQWxsb3cgZml4ZWQgYW5kIHZhcmlhYmxlIG9mZnNldHMgZm9yIHN5c2NhbGwgY29udGV4dCwgYnV0XFxuQEAgLTgwNzAsNiArODA3MCwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0fVxcbiB9XFxuIFxcbitzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4rXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbitcXHRcXHRcXHRcXHQgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKVxcbit7XFxuK1xcdHJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgY2hlY2tfYXJnX2NvbnN0X3N0cihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRcXHQgICAgICAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubylcXG4ge1xcbkBAIC0xMTk0MSw2ICsxMTk0OCw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXFxuIFxcdFxcdGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlID0gQVJHX0RPTlRDQVJFO1xcbiBcXHRcXHRhcmdub190IGFyZ25vID0gYXJnbm9fZnJvbV9hcmcoaSArIDEpO1xcbiBcXHRcXHRpbnQgcmVnbm8gPSByZWdfZnJvbV9hcmdubyhhcmdubyk7XFxuK1xcdFxcdGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vayA9IHRydWU7XFxuIFxcdFxcdHUzMiByZWZfaWQsIHR5cGVfc2l6ZTtcXG4gXFx0XFx0Ym9vbCBpc19yZXRfYnVmX3N6ID0gZmFsc2U7XFxuIFxcdFxcdGludCBrZl9hcmdfdHlwZTtcXG5AQCAtMTIxMTQsNyArMTIxMjIsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xcbiBcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fTUVNOlxcbiBcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fTUVNX1NJWkU6XFxuIFxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19DQUxMQkFDSzpcXG4tXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NPTlNUX1NUUjpcXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1dPUktRVUVVRTpcXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1RJTUVSOlxcbkBAIC0xMjEyOCw2ICsxMjEzNSwxMCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xcbiBcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fQ1RYOlxcbiBcXHRcXHRcXHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQ1RYO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcXG4rXFx0XFx0XFx0YXJnX3R5cGUgPSBBUkdfUFRSX1RPX0JURl9JRDtcXG4rXFx0XFx0XFx0YnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlO1xcbitcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG4gXFx0XFx0XFx0dmVyaWZpZXJfYnVnKGVudiwgXFxcInVua25vd24ga2Z1bmMgYXJnIHR5cGUgJWRcXFwiLCBrZl9hcmdfdHlwZSk7XFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbkBAIC0xMjEzNSw3ICsxMjE0Niw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXFxuIFxcbiBcXHRcXHRpZiAocmVnbm8gPT0gbWV0YS1cXHUwMDNlcmVsZWFzZV9yZWdubylcXG4gXFx0XFx0XFx0YXJnX3R5cGUgfD0gT0JKX1JFTEVBU0U7XFxuLVxcdFxcdHJldCA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSk7XFxuK1xcdFxcdHJldCA9IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgYnRmX2lkX2ZpeGVkX29mZl9vayk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xcbmluZGV4IDcyNDdhMjBjMGEzYmY1Li43N2NkYTVjYTIzNjAxMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jXFxuQEAgLTEzLDEyICsxMywyMiBAQCBzdHJ1Y3Qgbm9kZV9hY3F1aXJlIHtcXG4gXFx0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcXG4gfTtcXG4gXFxuK3N0cnVjdCBub2RlX3JlZmNvdW50ZWQge1xcbitcXHRsb25nIGtleTtcXG4rXFx0c3RydWN0IGJwZl9yYl9ub2RlIHJiO1xcbitcXHRzdHJ1Y3QgYnBmX2xpc3Rfbm9kZSBsaXN0O1xcbitcXHRzdHJ1Y3QgYnBmX3JlZmNvdW50IHJlZmNvdW50O1xcbit9O1xcbitcXG4gZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX2xvY2sodm9pZCkgX19rc3ltO1xcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfdW5sb2NrKHZvaWQpIF9fa3N5bTtcXG4gXFxuICNkZWZpbmUgcHJpdmF0ZShuYW1lKSBTRUMoXFxcIi5kYXRhLlxcXCIgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxcbiBwcml2YXRlKEEpIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGdsb2NrO1xcbiBwcml2YXRlKEEpIHN0cnVjdCBicGZfcmJfcm9vdCBncm9vdCBfX2NvbnRhaW5zKG5vZGVfYWNxdWlyZSwgbm9kZSk7XFxuK3ByaXZhdGUoQikgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jaztcXG4rcHJpdmF0ZShCKSBzdHJ1Y3QgYnBmX3JiX3Jvb3Qgcm9vdCBfX2NvbnRhaW5zKG5vZGVfcmVmY291bnRlZCwgcmIpO1xcbitwcml2YXRlKEIpIHN0cnVjdCBicGZfbGlzdF9oZWFkIGhlYWQgX19jb250YWlucyhub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xcbiBcXG4gc3RhdGljIGJvb2wgbGVzcyhzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYilcXG4ge1xcbkBAIC0zMSw2ICs0MSwxNyBAQCBzdGF0aWMgYm9vbCBsZXNzKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxcbiBcXHRyZXR1cm4gbm9kZV9hLVxcdTAwM2VrZXkgXFx1MDAzYyBub2RlX2ItXFx1MDAzZWtleTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgbGVzc19yZWZjb3VudGVkKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxcbit7XFxuK1xcdHN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGVfYTtcXG4rXFx0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZV9iO1xcbitcXG4rXFx0bm9kZV9hID0gY29udGFpbmVyX29mKGEsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIHJiKTtcXG4rXFx0bm9kZV9iID0gY29udGFpbmVyX29mKGIsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIHJiKTtcXG4rXFxuK1xcdHJldHVybiBub2RlX2EtXFx1MDAzZWtleSBcXHUwMDNjIG5vZGVfYi1cXHUwMDNla2V5O1xcbit9XFxuK1xcbiBTRUMoXFxcIj90Y1xcXCIpXFxuIF9fZmFpbHVyZSBfX21zZyhcXFwiVW5yZWxlYXNlZCByZWZlcmVuY2UgaWQ9NCBhbGxvY19pbnNuPXt7WzAtOV0rfX1cXFwiKVxcbiBsb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxcbkBAIC05Myw2ICsxMTQsNjIgQEAgbG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitTRUMoXFxcIj90Y1xcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjFcXFwiKVxcbitsb25nIHJlZmNvdW50X2FjcXVpcmVfbGlzdF9ub2RlX29mZnNldCh2b2lkICpjdHgpXFxuK3tcXG4rXFx0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7XFxuK1xcdHN0cnVjdCBicGZfbGlzdF9ub2RlICpsaXN0X25vZGU7XFxuK1xcbitcXHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XFxuK1xcdGlmICghbm9kZSlcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcbitcXHRicGZfc3Bpbl9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0YnBmX2xpc3RfcHVzaF9mcm9udChcXHUwMDI2aGVhZCwgXFx1MDAyNm5vZGUtXFx1MDAzZWxpc3QpO1xcbitcXHRsaXN0X25vZGUgPSBicGZfbGlzdF9wb3BfZnJvbnQoXFx1MDAyNmhlYWQpO1xcbitcXHRicGZfc3Bpbl91bmxvY2soXFx1MDAyNmxvY2spO1xcbitcXHRpZiAoIWxpc3Rfbm9kZSlcXG4rXFx0XFx0cmV0dXJuIDI7XFxuK1xcbitcXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XFxuK1xcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XFxuK1xcdGlmIChyZWYpXFxuK1xcdFxcdGJwZl9vYmpfZHJvcChyZWYpO1xcbitcXHRicGZfb2JqX2Ryb3AoYmFzZSk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcIj90Y1xcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjFcXFwiKVxcbitsb25nIHJlZmNvdW50X2FjcXVpcmVfcmJ0cmVlX25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcXG4re1xcbitcXHRzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkICpub2RlLCAqYmFzZSwgKnJlZjtcXG4rXFx0c3RydWN0IGJwZl9yYl9ub2RlICpyYl9ub2RlO1xcbitcXG4rXFx0bm9kZSA9IGJwZl9vYmpfbmV3KHR5cGVvZigqbm9kZSkpO1xcbitcXHRpZiAoIW5vZGUpXFxuK1xcdFxcdHJldHVybiAxO1xcbitcXG4rXFx0bm9kZS1cXHUwMDNla2V5ID0gMTtcXG4rXFxuK1xcdGJwZl9zcGluX2xvY2soXFx1MDAyNmxvY2spO1xcbitcXHRicGZfcmJ0cmVlX2FkZChcXHUwMDI2cm9vdCwgXFx1MDAyNm5vZGUtXFx1MDAzZXJiLCBsZXNzX3JlZmNvdW50ZWQpO1xcbitcXHRyYl9ub2RlID0gYnBmX3JidHJlZV9maXJzdChcXHUwMDI2cm9vdCk7XFxuK1xcdGlmIChyYl9ub2RlKVxcbitcXHRcXHRyYl9ub2RlID0gYnBmX3JidHJlZV9yZW1vdmUoXFx1MDAyNnJvb3QsIHJiX25vZGUpO1xcbitcXHRicGZfc3Bpbl91bmxvY2soXFx1MDAyNmxvY2spO1xcbitcXHRpZiAoIXJiX25vZGUpXFxuK1xcdFxcdHJldHVybiAyO1xcbitcXG4rXFx0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XFxuK1xcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHJiX25vZGUpO1xcbitcXHRpZiAocmVmKVxcbitcXHRcXHRicGZfb2JqX2Ryb3AocmVmKTtcXG4rXFx0YnBmX29ial9kcm9wKGJhc2UpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gU0VDKFxcXCI/ZmVudHJ5LnMvXFxcIiBTWVNfUFJFRklYIFxcXCJzeXNfZ2V0cGdpZFxcXCIpXFxuIF9fZmFpbHVyZSBfX21zZyhcXFwiZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrXFxcIilcXG4gaW50IEJQRl9QUk9HKHJidHJlZV9mYWlsX3NsZWVwYWJsZV9sb2NrX2Fjcm9zc19yY3UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDAyOjQ3OjUwLjczMjU3NDQ1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0OTcyOTU2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZcIixcbiAgICBcImNoZWNrX2tmdW5jX2FyZ3NcIixcbiAgICBcImJwZl9yZWZjb3VudF9hY3F1aXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZXN0cmljdCB0aGUgYWxsb3dlZCBvZmZzZXQgZm9yIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZ3VtZW50cyB0byAwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IHJlamVjdHMgaW52YWxpZCBvZmZzZXRzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgdXNlIGNhc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFjZjBhZTgyM2RkMzc3YWNlZTcxZWNhMGU5ZGZlM2YyNGYxZTgwNDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAwMjo0Nzo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmY2NWVmZjI4ZWNkMjVlIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC03OTkwLDkgKzc5OTAsMTAgQEAgcmVnX2ZpbmRfZmllbGRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIHMzMiBvZmYsIHUzMiBmaWVsZHMpXG4gXHRyZXR1cm4gZmllbGQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLVx0XHRcdFx0ICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSlcbitzdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuK1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4rXHRcdFx0XHQgICAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUsXG4rXHRcdFx0XHQgICAgYm9vbCBidGZfaWRfZml4ZWRfb2ZmX29rKVxuIHtcbiBcdHUzMiB0eXBlID0gcmVnLVx1MDAzZXR5cGU7XG4gXG5AQCAtODA0OSwxMiArODA1MCwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdGNhc2UgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQyB8IE5PTl9PV05fUkVGIHwgTUVNX1JDVTpcbiBcdFx0LyogV2hlbiByZWZlcmVuY2VkIFBUUl9UT19CVEZfSUQgaXMgcGFzc2VkIHRvIHJlbGVhc2UgZnVuY3Rpb24sXG4gXHRcdCAqIGl0cyBmaXhlZCBvZmZzZXQgbXVzdCBiZSAwLiBJbiB0aGUgb3RoZXIgY2FzZXMsIGZpeGVkIG9mZnNldFxuLVx0XHQgKiBjYW4gYmUgbm9uLXplcm8uIFRoaXMgd2FzIGFscmVhZHkgY2hlY2tlZCBhYm92ZS4gU28gcGFzc1xuLVx0XHQgKiBmaXhlZF9vZmZfb2sgYXMgdHJ1ZSB0byBhbGxvdyBmaXhlZCBvZmZzZXQgZm9yIGFsbCBvdGhlclxuLVx0XHQgKiBjYXNlcy4gdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZVxuLVx0XHQgKiBzdGlsbCBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbitcdFx0ICogY2FuIGJlIG5vbi16ZXJvIHVubGVzcyB0aGUgY2FsbGVyIHJlcXVpcmVzIG90aGVyd2lzZS5cbitcdFx0ICogdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZSBzdGlsbFxuK1x0XHQgKiBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbiBcdFx0ICovXG4tXHRcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgdHJ1ZSk7XG4rXHRcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgYnRmX2lkX2ZpeGVkX29mZl9vayk7XG4gXHRjYXNlIFBUUl9UT19DVFg6XG4gXHRcdC8qXG4gXHRcdCAqIEFsbG93IGZpeGVkIGFuZCB2YXJpYWJsZSBvZmZzZXRzIGZvciBzeXNjYWxsIGNvbnRleHQsIGJ1dFxuQEAgLTgwNzAsNiArODA3MCwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdH1cbiB9XG4gXG4rc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4rXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4rXHRcdFx0XHQgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKVxuK3tcbitcdHJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgY2hlY2tfYXJnX2NvbnN0X3N0cihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vKVxuIHtcbkBAIC0xMTk0MSw2ICsxMTk0OCw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXG4gXHRcdGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlID0gQVJHX0RPTlRDQVJFO1xuIFx0XHRhcmdub190IGFyZ25vID0gYXJnbm9fZnJvbV9hcmcoaSArIDEpO1xuIFx0XHRpbnQgcmVnbm8gPSByZWdfZnJvbV9hcmdubyhhcmdubyk7XG4rXHRcdGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vayA9IHRydWU7XG4gXHRcdHUzMiByZWZfaWQsIHR5cGVfc2l6ZTtcbiBcdFx0Ym9vbCBpc19yZXRfYnVmX3N6ID0gZmFsc2U7XG4gXHRcdGludCBrZl9hcmdfdHlwZTtcbkBAIC0xMjExNCw3ICsxMjEyMiw2IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19NRU06XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19NRU1fU0laRTpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NBTExCQUNLOlxuLVx0XHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fQ09OU1RfU1RSOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fV09SS1FVRVVFOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fVElNRVI6XG5AQCAtMTIxMjgsNiArMTIxMzUsMTAgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NUWDpcbiBcdFx0XHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQ1RYO1xuIFx0XHRcdGJyZWFrO1xuK1x0XHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxuK1x0XHRcdGFyZ190eXBlID0gQVJHX1BUUl9UT19CVEZfSUQ7XG4rXHRcdFx0YnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlO1xuK1x0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHZlcmlmaWVyX2J1ZyhlbnYsIFwidW5rbm93biBrZnVuYyBhcmcgdHlwZSAlZFwiLCBrZl9hcmdfdHlwZSk7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG5AQCAtMTIxMzUsNyArMTIxNDYsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFxuIFx0XHRpZiAocmVnbm8gPT0gbWV0YS1cdTAwM2VyZWxlYXNlX3JlZ25vKVxuIFx0XHRcdGFyZ190eXBlIHw9IE9CSl9SRUxFQVNFO1xuLVx0XHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpO1xuK1x0XHRyZXQgPSBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSxcbitcdFx0XHRcdFx0ICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xuaW5kZXggNzI0N2EyMGMwYTNiZjUuLjc3Y2RhNWNhMjM2MDEyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jXG5AQCAtMTMsMTIgKzEzLDIyIEBAIHN0cnVjdCBub2RlX2FjcXVpcmUge1xuIFx0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcbiB9O1xuIFxuK3N0cnVjdCBub2RlX3JlZmNvdW50ZWQge1xuK1x0bG9uZyBrZXk7XG4rXHRzdHJ1Y3QgYnBmX3JiX25vZGUgcmI7XG4rXHRzdHJ1Y3QgYnBmX2xpc3Rfbm9kZSBsaXN0O1xuK1x0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcbit9O1xuK1xuIGV4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF9sb2NrKHZvaWQpIF9fa3N5bTtcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfdW5sb2NrKHZvaWQpIF9fa3N5bTtcbiBcbiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKFwiLmRhdGEuXCIgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9zcGluX2xvY2sgZ2xvY2s7XG4gcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3JiX3Jvb3QgZ3Jvb3QgX19jb250YWlucyhub2RlX2FjcXVpcmUsIG5vZGUpO1xuK3ByaXZhdGUoQikgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jaztcbitwcml2YXRlKEIpIHN0cnVjdCBicGZfcmJfcm9vdCByb290IF9fY29udGFpbnMobm9kZV9yZWZjb3VudGVkLCByYik7XG4rcHJpdmF0ZShCKSBzdHJ1Y3QgYnBmX2xpc3RfaGVhZCBoZWFkIF9fY29udGFpbnMobm9kZV9yZWZjb3VudGVkLCBsaXN0KTtcbiBcbiBzdGF0aWMgYm9vbCBsZXNzKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxuIHtcbkBAIC0zMSw2ICs0MSwxNyBAQCBzdGF0aWMgYm9vbCBsZXNzKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxuIFx0cmV0dXJuIG5vZGVfYS1cdTAwM2VrZXkgXHUwMDNjIG5vZGVfYi1cdTAwM2VrZXk7XG4gfVxuIFxuK3N0YXRpYyBib29sIGxlc3NfcmVmY291bnRlZChzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYilcbit7XG4rXHRzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkICpub2RlX2E7XG4rXHRzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkICpub2RlX2I7XG4rXG4rXHRub2RlX2EgPSBjb250YWluZXJfb2YoYSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgcmIpO1xuK1x0bm9kZV9iID0gY29udGFpbmVyX29mKGIsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIHJiKTtcbitcbitcdHJldHVybiBub2RlX2EtXHUwMDNla2V5IFx1MDAzYyBub2RlX2ItXHUwMDNla2V5O1xuK31cbitcbiBTRUMoXCI/dGNcIilcbiBfX2ZhaWx1cmUgX19tc2coXCJVbnJlbGVhc2VkIHJlZmVyZW5jZSBpZD00IGFsbG9jX2luc249e3tbMC05XSt9fVwiKVxuIGxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlcyh2b2lkICpjdHgpXG5AQCAtOTMsNiArMTE0LDYyIEBAIGxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlc19vd25pbmdfaW5wdXQodm9pZCAqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK1NFQyhcIj90Y1wiKVxuK19fZmFpbHVyZSBfX21zZyhcImRlcmVmZXJlbmNlIG9mIG1vZGlmaWVkIHB0cl8gcHRyIFIxXCIpXG4rbG9uZyByZWZjb3VudF9hY3F1aXJlX2xpc3Rfbm9kZV9vZmZzZXQodm9pZCAqY3R4KVxuK3tcbitcdHN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGUsICpiYXNlLCAqcmVmO1xuK1x0c3RydWN0IGJwZl9saXN0X25vZGUgKmxpc3Rfbm9kZTtcbitcbitcdG5vZGUgPSBicGZfb2JqX25ldyh0eXBlb2YoKm5vZGUpKTtcbitcdGlmICghbm9kZSlcbitcdFx0cmV0dXJuIDE7XG4rXG4rXHRicGZfc3Bpbl9sb2NrKFx1MDAyNmxvY2spO1xuK1x0YnBmX2xpc3RfcHVzaF9mcm9udChcdTAwMjZoZWFkLCBcdTAwMjZub2RlLVx1MDAzZWxpc3QpO1xuK1x0bGlzdF9ub2RlID0gYnBmX2xpc3RfcG9wX2Zyb250KFx1MDAyNmhlYWQpO1xuK1x0YnBmX3NwaW5fdW5sb2NrKFx1MDAyNmxvY2spO1xuK1x0aWYgKCFsaXN0X25vZGUpXG4rXHRcdHJldHVybiAyO1xuK1xuK1x0YmFzZSA9IGNvbnRhaW5lcl9vZihsaXN0X25vZGUsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xuK1x0cmVmID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobGlzdF9ub2RlKTtcbitcdGlmIChyZWYpXG4rXHRcdGJwZl9vYmpfZHJvcChyZWYpO1xuK1x0YnBmX29ial9kcm9wKGJhc2UpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcIj90Y1wiKVxuK19fZmFpbHVyZSBfX21zZyhcImRlcmVmZXJlbmNlIG9mIG1vZGlmaWVkIHB0cl8gcHRyIFIxXCIpXG4rbG9uZyByZWZjb3VudF9hY3F1aXJlX3JidHJlZV9ub2RlX29mZnNldCh2b2lkICpjdHgpXG4re1xuK1x0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7XG4rXHRzdHJ1Y3QgYnBmX3JiX25vZGUgKnJiX25vZGU7XG4rXG4rXHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XG4rXHRpZiAoIW5vZGUpXG4rXHRcdHJldHVybiAxO1xuK1xuK1x0bm9kZS1cdTAwM2VrZXkgPSAxO1xuK1xuK1x0YnBmX3NwaW5fbG9jayhcdTAwMjZsb2NrKTtcbitcdGJwZl9yYnRyZWVfYWRkKFx1MDAyNnJvb3QsIFx1MDAyNm5vZGUtXHUwMDNlcmIsIGxlc3NfcmVmY291bnRlZCk7XG4rXHRyYl9ub2RlID0gYnBmX3JidHJlZV9maXJzdChcdTAwMjZyb290KTtcbitcdGlmIChyYl9ub2RlKVxuK1x0XHRyYl9ub2RlID0gYnBmX3JidHJlZV9yZW1vdmUoXHUwMDI2cm9vdCwgcmJfbm9kZSk7XG4rXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2bG9jayk7XG4rXHRpZiAoIXJiX25vZGUpXG4rXHRcdHJldHVybiAyO1xuK1xuK1x0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XG4rXHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShyYl9ub2RlKTtcbitcdGlmIChyZWYpXG4rXHRcdGJwZl9vYmpfZHJvcChyZWYpO1xuK1x0YnBmX29ial9kcm9wKGJhc2UpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIFNFQyhcIj9mZW50cnkucy9cIiBTWVNfUFJFRklYIFwic3lzX2dldHBnaWRcIilcbiBfX2ZhaWx1cmUgX19tc2coXCJmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcIilcbiBpbnQgQlBGX1BST0cocmJ0cmVlX2ZhaWxfc2xlZXBhYmxlX2xvY2tfYWNyb3NzX3JjdSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDAyOjQ3OjUwLjczMjU3Nzg1N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MzUxMzQ2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGV5J3ZlIGFkZGVkIHNvbWUgdGVzdHMsIHRvbywgd2hpY2ggaXMgYWx3YXlzIGdvb2Qg4oCTIHNwZWNpZmljYWxseSBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGEgZnVuY3Rpb24gY2FsbGVkIGBjaGVja19mdW5jX2FyZ19yZWdfb2ZmYC4gSXQncyBiZWVuIHJlbmFtZWQgKG9yIG1heWJlIGp1c3QgZGVjbGFyZWQsIGFuZCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgc3RpbGwgdGhlcmU/KSB0byBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCwgYW5kIG5vdyBhY2NlcHRzIGFuIGV4dHJhIGJvb2xlYW4gYXJndW1lbnQsIGBidGZfaWRfZml4ZWRfb2ZmX29rYC4gVGhhdCdzIHRoZSBrZXkuXG5cbk5vdywgaW4gYGNoZWNrX2tmdW5jX2FyZ3NgLCB0aGV5J3JlIGhhbmRsaW5nIGFyZ3VtZW50cyBvZiB0aGUgYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCB0eXBlLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcsIGFuZCBJIG5lZWQgdG8gZGl2ZSBpbiBhIGJpdCBkZWVwZXIuIFdoYXQgdGhleSdyZSBkb2luZyBpcywgd2hlbiB0aGV5IGVuY291bnRlciB0aGlzIGFyZ3VtZW50IHR5cGUsIHRoZXkgc2V0IGBhcmdfdHlwZWAgdG8gYEFSR19QVFJfVE9fQlRGX0lEYCBhbmQgY3JpdGljYWxseSwgc2V0IGBidGZfaWRfZml4ZWRfb2ZmX29rID0gZmFsc2VgLiBUaGlzIG1lYW5zIHRoZXkncmUgZXhwbGljaXRseSAqZGlzYWxsb3dpbmcqIGEgZml4ZWQgb2Zmc2V0IGZvciBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgIGFyZ3VtZW50cy4gRWZmZWN0aXZlbHksIHRoZXkncmUgZW5mb3JjaW5nIHRoYXQgdGhlIG9mZnNldCBoYXMgdG8gYmUgemVybywgcmlnaHQ/IE5vIHdpZ2dsZSByb29tLlxuXG5JIG5lZWQgdG8gc2VlIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBjaGFuZ2UuIFNvLCBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSBmaW5kIHRoZSBgY2hlY2tfa2Z1bmNfYXJnc2AgZnVuY3Rpb24gYW5kIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IGlzIGNydWNpYWwgdG8gZXZhbHVhdGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcmVzdHJpY3Rpb24uIEkgbmVlZCB0byBzZWUgaG93IHRoZSB2ZXJpZmllciB1dGlsaXplcyB0aGF0IGBhcmdfdHlwZWAgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZm9yYmlkZGluZyBhIGZpeGVkIG9mZnNldCBpbiB0aGlzIHNwZWNpZmljIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDIyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDI6NDc6NTYuMzY3NzE1NjcyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NTAwNzExNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xNDQxPXN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjMtXFx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIGRyb3AnZFxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg6MTQ2NDpcXHQgKiAgIGJwZl9yZWZjb3VudF9hY3F1aXJlICh2aWEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJnIHR5cGUpXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDY1LVxcdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSByZWZjb3VudF9pbmNyJ2QgYW5kIHVzZVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwOTY1PWVudW0ga2Z1bmNfcHRyX2FyZ190eXBlIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDk2Ny1cXHRLRl9BUkdfUFRSX1RPX0FMTE9DX0JURl9JRCwgICAgLyogQWxsb2NhdGVkIG9iamVjdCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk2ODpcXHRLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUiwgLyogUmVmY291bnRlZCBsb2NhbCBrcHRyICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTY5LVxcdEtGX0FSR19QVFJfVE9fRFlOUFRSLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjQzPWdldF9rZnVuY19wdHJfYXJnX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9mdW5jX3N0YXRlICpjYWxsZXIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNzYtXFx0aWYgKGlzX2tmdW5jX2FyZ19yZWZjb3VudGVkX2twdHIobWV0YS1cXHUwMDNlYnRmLCBcXHUwMDI2YXJnc1thcmddKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNzc6XFx0XFx0cmV0dXJuIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI3OC1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTkxMz1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMTM3LVxcdFxcdFxcdGJyZWFrO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjEzODpcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjEzOS1cXHRcXHRcXHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQlRGX0lEO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNDAwLVxcdFxcdFxcdGJyZWFrO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjQwMTpcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjQwMi1cXHRcXHRcXHRpZiAoIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctXFx1MDAzZXR5cGUpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDAyOjQ3OjU5LjExNzc5NTQzMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NjA5MDQ1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IEJQRiBWZXJpZmllciBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHR3ZWFraW5nIGhvdyB0aGUgQlBGIHZlcmlmaWVyIGRlYWxzIHdpdGggYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCBhcmd1bWVudHMgcGFzc2VkIHRvIGtmdW5jcy4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaWYgdGhlcmUncyBhIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXIncyBsb2dpYywgZXNwZWNpYWxseSBhcm91bmQgaG93IGl0IHZhbGlkYXRlcyB0aG9zZSBhcmd1bWVudHMsIGl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcsIGFuZCBpdCdzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIGBicGYoKWAuIFRoYXQncyBhIGdvb2Qgc3RhcnQuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIHdoYXQga2Z1bmNzIGFyZSBldmVuICp1c2luZyogdGhpcyBhcmd1bWVudCB0eXBlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4gTHVja2lseSB0aGUgY29tbWVudCBtZW50aW9ucyB0aGF0IHRoaXMgYXJndW1lbnQgdHlwZSBpcyB1c2VkIHdpdGggYGJwZl9yZWZjb3VudF9hY3F1aXJlYC4gVGhhdCBnaXZlcyBtZSBhIGtleXdvcmQgdG8gZ3JlcCBmb3IuIExldCdzIHNlZSB3aGF0IHBvcHMgdXAgd2hlbiBJIHNlYXJjaCBmb3IgdGhhdC4gS25vd2luZyB0aGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQncyBwb3RlbnRpYWxseSBhZmZlY3RlZC4gVGltZSB0byBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3ODcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDI6NDg6MDIuOTc4NzAyNzIzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTIxMTExMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3JlZmNvdW50X2FjcXVpcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xNDQxPXN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjMtXFx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIGRyb3AnZFxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg6MTQ2NDpcXHQgKiAgIGJwZl9yZWZjb3VudF9hY3F1aXJlICh2aWEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJnIHR5cGUpXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDY1LVxcdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSByZWZjb3VudF9pbmNyJ2QgYW5kIHVzZVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9MjQ0OT1fX2JwZl9rZnVuYyB2b2lkIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCh2b2lkICpwX19hbGxvYywgdm9pZCAqbWV0YV9faWduKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ1NC0vKipcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDU1OiAqIGJwZl9yZWZjb3VudF9hY3F1aXJlKCkgLSB0dXJuIGEgbG9jYWwga3B0ciBpbnRvIGFuIG93bmluZyByZWZlcmVuY2VcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU2LSAqIEBwX19yZWZjb3VudGVkX2twdHI6IG5vbi1vd25pbmcgbG9jYWwga3B0clxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ2My0gKi9cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDY0Ol9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDY1LXtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODAtXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ4MTpfX2JwZl9rZnVuYyB2b2lkICpicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgdm9pZCAqbWV0YV9faWduKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODIte1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODM6XFx0cmV0dXJuIGJwZl9yZWZjb3VudF9hY3F1aXJlKHBfX3JlZmNvdW50ZWRfa3B0ciwgbWV0YV9faWduKTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDg0LX1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MTM9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxNi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDk4OT1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTMtXFx0S0ZfYnBmX29ial9kcm9wLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NDpcXHRLRl9icGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NTpcXHRLRl9icGZfcmVmY291bnRfYWNxdWlyZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTYtXFx0S0ZfYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMDY2PUJURl9JRChmdW5jLCBicGZfb2JqX2Ryb3ApXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY3OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTA2ODpCVEZfSUQoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDY5LUJURl9JRChmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTExNzY9c3RhdGljIGJvb2wgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyh1MzIgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4MS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODI6c3RhdGljIGJvb2wgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmModTMyIGZ1bmNfaWQpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTgzLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODQ6XFx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4NTpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTg2LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19rZnVuY19yZXRfbnVsbChzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjEwLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTE6XFx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXFx1MDAzZWZ1bmNfaWQpIFxcdTAwMjZcXHUwMDI2IG1ldGEtXFx1MDAzZWFyZ19vd25pbmdfcmVmKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2MTc9c3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjIwLVxcdCAgICAgICBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyhidGZfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNjIxOlxcdCAgICAgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhidGZfaWQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMi19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3Mjc9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjgxNS1cXHRcXHRpbnNuX2F1eC1cXHUwMDNla3B0cl9zdHJ1Y3RfbWV0YSA9IHN0cnVjdF9tZXRhO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjgxNjpcXHR9IGVsc2UgaWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXFx1MDAzZWZ1bmNfaWQpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODE3LVxcdFxcdG1hcmtfcmVnX2tub3duX3plcm8oZW52LCByZWdzLCBCUEZfUkVHXzApO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMTgtXFx0XFx0ICAgICAhaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKG1ldGEuZnVuY19pZCkgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMTk6XFx0XFx0ICAgICAhaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS5mdW5jX2lkKSkpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMjAtXFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJhY3F1aXJlIGtlcm5lbCBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gUFRSX1RPX0JURl9JRFxcXFxuXFxcIik7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1NzQ9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMi1cXHRcXHQgICBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjIzOlxcdFxcdCAgIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjI0LVxcdFxcdHN0cnVjdCBidGZfc3RydWN0X21ldGEgKmtwdHJfc3RydWN0X21ldGEgPSBlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLmtwdHJfc3RydWN0X21ldGE7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjMzOlxcdFxcdGlmIChpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhkZXNjLVxcdTAwM2VmdW5jX2lkKSBcXHUwMDI2XFx1MDAyNiAha3B0cl9zdHJ1Y3RfbWV0YSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYzNC1cXHRcXHRcXHR2ZXJpZmllcl9idWcoZW52LCBcXFwia3B0cl9zdHJ1Y3RfbWV0YSBleHBlY3RlZCBhdCBpbnNuX2lkeCAlZFxcXCIsXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oPTM4ND1zdHJ1Y3QgYnBmX3JiX25vZGUgKmJwZl9yYnRyZWVfZmlyc3Qoc3RydWN0IGJwZl9yYl9yb290ICpyb290KSBfX2tzeW07XFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaC0zODUtXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODY6dm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCh2b2lkICprcHRyLCB2b2lkICptZXRhKSBfX2tzeW07XFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODc6I2RlZmluZSBicGZfcmVmY291bnRfYWNxdWlyZShrcHRyKSBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKGtwdHIsIE5VTEwpXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaC0zODgtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmM9MzAzPWludCBCUEZfUFJPRyhicGZfZnFfZW5xdWV1ZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ0LVxcdFxcdGlmIChmcV9mbG93X2lzX2RldGFjaGVkKGZsb3cpKSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jOjM0NTpcXHRcXHRcXHRmbG93X2NvcHkgPSBicGZfcmVmY291bnRfYWNxdWlyZShmbG93KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYz0yMzQ9bG9uZyByZWZjb3VudF9hY3F1aXJlX3dpdGhvdXRfdW5zdGFzaCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaC5jLTI0OS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaC5jOjI1MDpcXHRwID0gYnBmX3JlZmNvdW50X2FjcXVpcmUocy1cXHUwMDNlc3Rhc2hlZCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYy0yNTEtXFx0aWYgKCFwKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYz01Mz1sb25nIHJidHJlZV9zZWFyY2godm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy02NC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jOjY1OlxcdFxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTY2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xMDgtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzoxMDk6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTEwLVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2Z2xvY2swKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9MTU2PWxvbmcgdGVzdF8jI29wIyNfc3BpbmxvY2tfIyNkb2xvY2sodm9pZCAqY3R4KVxcdFxcdFxcXFxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTY4LVxcdG4gPSByYl9lbnRyeShyYl9uLCBzdHJ1Y3Qgbm9kZV9kYXRhLCByMCk7XFx0XFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM6MTY5OlxcdG4gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXHRcXHRcXHRcXFxcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xNzAtXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZnbG9jazApO1xcdFxcdFxcdFxcXFxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYz0xNTU9bG9uZyByYnRyZWVfc2VhcmNoX2twdHJfcmVmKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYy0xODItXFx0XFx0LyogVW51c2VkIHJlZmVyZW5jZSAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYzoxODM6XFx0XFx0dG5vZGVfbSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHRub2RlX3IpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYy0xODQtXFx0XFx0aWYgKCF0bm9kZV9tKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTczPXN0YXRpYyBsb25nIF9faW5zZXJ0X2luX3RyZWVfYW5kX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODItXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgzOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODQtXFx0bS1cXHUwMDNla2V5ID0gMTIzO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwNj1zdGF0aWMgbG9uZyBfX3N0YXNoX21hcF9pbnNlcnRfdHJlZShpbnQgaWR4LCBpbnQgdmFsLCBzdHJ1Y3QgYnBmX3JiX3Jvb3QgKnJvb3QsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIwLVxcdG4tXFx1MDAzZWtleSA9IHZhbDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6MTIxOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIyLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTM5OT1zdGF0aWMgc3RydWN0IG5vZGVfZGF0YSAqX19hZGRfaW5fbGlzdChzdHJ1Y3QgYnBmX2xpc3RfaGVhZCAqaGVhZCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy00MDctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjQwODpcXHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtNDA5LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTc5Mz1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgwMi1cXHRicGZfcmJ0cmVlX2FkZChcXHUwMDI2YXJvb3QsIFxcdTAwMjZuLVxcdTAwM2Vub2RlLCBsZXNzX2EpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MDM6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDQtXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZhbG9jayk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9ODE1PWxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlc19vd25pbmdfaW5wdXQodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyMi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6ODIzOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODI0LVxcdG0tXFx1MDAzZWtleSA9IDI7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9ODUyPWxvbmcgcmJ0cmVlX3dyb25nX293bmVyX3JlbW92ZV9mYWlsX2ExKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NTgtXFx0XFx0cmV0dXJuIDE7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjg1OTpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg2MC1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDAyPXN0YXRpYyBpbnQgX19pbnNlcnRfaW5fbGlzdChzdHJ1Y3QgYnBmX2xpc3RfaGVhZCAqaGVhZCwgc3RydWN0IGJwZl9zcGluX2xvY2sgKmxvY2ssXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6MTAxMTpcXHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMi1cXHRub2RlX29sZCA9IGJwZl9rcHRyX3hjaGcobm9kZSwgbm9kZV9uZXcpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9NTc9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTY3LVxcdC8qIG0gYmVjb21lcyBhbiBvd25pbmcgcmVmIGJ1dCBpcyBuZXZlciBkcm9wJ2Qgb3IgYWRkZWQgdG8gYSB0cmVlICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6Njg6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTY5LVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2Z2xvY2spO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9Nzk9bG9uZyByZWZjb3VudF9hY3F1aXJlX21heWJlX251bGwodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtODYtXFx0ICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6ODc6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg4LVxcdGlmIChtKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9OTg9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMDYtXFx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AnZCBvciBhZGRlZCB0byBhIHRyZWUgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMDc6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEwOC1cXHRtLVxcdTAwM2VrZXkgPSAyO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9MTE5PWxvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEzNS1cXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6MTM2OlxcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTM3LVxcdGlmIChyZWYpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz0xNDU9bG9uZyByZWZjb3VudF9hY3F1aXJlX3JidHJlZV9ub2RlX29mZnNldCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xNjUtXFx0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6MTY2OlxcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHJiX25vZGUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTE2Ny1cXHRpZiAocmVmKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0ODowNS4xMzA4MjEyNThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTU0NzA5NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVzdHJpY3Rpb24gb24gYGJwZl9yZWZjb3VudF9hY3F1aXJlYCB3aXRoIFJlZmNvdW50ZWQgS1BUUnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRocm91Z2ggdGhlIGltcGxpY2F0aW9ucyBmb3IgYGJwZl9yZWZjb3VudF9hY3F1aXJlYC4gVGhlIGNvcmUgY2hhbmdlIGNlbnRlcnMgYXJvdW5kIHRoZSBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgIGFyZ3VtZW50IHR5cGUgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdmVyaWZpZXIuIEl0IHNlZW1zIHRoZSBjb21taXQgZXhwbGljaXRseSBtb2RpZmllcyBgY2hlY2tfa2Z1bmNfYXJnc2AgdG8gZW5zdXJlIGBidGZfaWRfZml4ZWRfb2ZmX29rYCBpcyBgZmFsc2VgIHdoZW4gZGVhbGluZyB3aXRoIGBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUmAuIFRoaXMgaXMgcHJldHR5IGNydWNpYWwuIFdoYXQgdGhpcyAqYWN0dWFsbHkqIG1lYW5zIGlzIHRoYXQgd2UncmUgcHJldmVudGluZyBgYnBmX3JlZmNvdW50X2FjcXVpcmVgIGZyb20gYmVpbmcgY2FsbGVkIHdpdGggYW55IG5vbi16ZXJvIGZpeGVkIG9mZnNldCwgd2hpY2ggaXMgYnkgZGVzaWduLCBvYnZpb3VzbHksIGZvciBzZWN1cml0eSByZWFzb25zLlxuXG5Ob3csIHRoZSBhZGRlZCB0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNgIGFyZSBhIG5pY2UgY29uZmlybWF0aW9uIG9mIHRoaXMgcmVzdHJpY3Rpb24uIFBhc3NpbmcgdGhpbmdzIGxpa2UgYGxpc3Rfbm9kZWAgb3IgYHJiX25vZGVgLCBib3RoIG9mIHdoaWNoIGhhdmUgdGhvc2UgZm9yYmlkZGVuIG9mZnNldHMgd2l0aGluIHRoZSBgc3RydWN0IG5vZGVfcmVmY291bnRlZGAgc3RydWN0dXJlLCB3aWxsIG5vdyBiZSBjb3JyZWN0bHkgcmVqZWN0ZWQgZHVyaW5nIHZlcmlmaWNhdGlvbi4gVGhpcyBpcyBhIGdvb2Qgc2FuaXR5IGNoZWNrIGFuZCBhbHNvIGdpdmVzIGV4YW1wbGVzIG9mIHRoZSBmb3JiaWRkZW4gb3BlcmF0aW9ucy5cblxuVGhlcmVmb3JlLCB0aGUga2V5IHBpZWNlcyBvZiBjb2RlIEkgbmVlZCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGlzIGFyZTogYGNoZWNrX2tmdW5jX2FyZ3NgLCBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCwgYW5kIG9idmlvdXNseSwgYGJwZl9yZWZjb3VudF9hY3F1aXJlYCBpdHNlbGYuIEkgbmVlZCB0byBzZWUgaG93IHRoZSB2ZXJpZmllciBtYWtlcyBzdXJlIHRoZSBvZmZzZXQgaXMgemVyby5cblxuSSBrbm93IHRoZSBjb2RlIGZvciB0aGVzZSBmdW5jdGlvbnMgaXMgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2hlbHBlcnMuY2AsIHNvIEknbGwgY2hlY2sgdGhlcmUuIEknbSBhc3N1bWluZyB0aGF0IHRoZSBCUEYgc3Vic3lzdGVtIGlzIGVuYWJsZWQgdmlhIGBDT05GSUdfQlBGX1NZU0NBTExgLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUga2VybmVsIGNvbmZpZyBmb3IgdGhhdCwgYW5kIHBlcmhhcHMgbG9vayBhcm91bmQgYGtlcm5lbC9icGYvS2NvbmZpZ2Agb3IgZXZlbiBgaW5pdC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBvciBmbGFncyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eS4gSnVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI4OCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0ODoxMC42ODU1MzM5NjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0OTkzNDE1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0ODoxMi44MzU0NzgwNTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzgzNzczMjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBCUEYgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgQlBGIHN5c2NhbGxzLCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaW1tZWRpYXRlbHkgc3ByaW5ncyB0byBtaW5kIGFzIHRoZSBwaXZvdGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGJyb2FkZXIgY29udGV4dCBoZXJlLiBJJ20gd29uZGVyaW5nIGlmIGBicGZfcmVmY291bnRfYWNxdWlyZWAgaXMgc29tZXRoaW5nIHRoYXQncyBhbHdheXMgYXZhaWxhYmxlLCBvciBpZiBpdCdzIGRlcGVuZGVudCBvbiB0aGUgcHJvZ3JhbSB0eXBlIG9yIHNvbWUgb3RoZXIgZmFjdG9yLiBUbyBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkgcmVhbGx5IG5lZWQgdG8gZHJpbGwgZG93biBhbmQgZXhhbWluZSB0aGUgaW1wbGVtZW50YXRpb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpbiBga2VybmVsL2JwZi9oZWxwZXJzLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGFuc3dlciBpcyBnb2luZyB0byBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxNjksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0ODoxNi42MTkyNTQ5NjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjA3Mzk1MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3JlZmNvdW50X2FjcXVpcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xNDQxPXN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjMtXFx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIGRyb3AnZFxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg6MTQ2NDpcXHQgKiAgIGJwZl9yZWZjb3VudF9hY3F1aXJlICh2aWEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJnIHR5cGUpXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDY1LVxcdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSByZWZjb3VudF9pbmNyJ2QgYW5kIHVzZVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9MjQ0OT1fX2JwZl9rZnVuYyB2b2lkIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCh2b2lkICpwX19hbGxvYywgdm9pZCAqbWV0YV9faWduKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ1NC0vKipcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDU1OiAqIGJwZl9yZWZjb3VudF9hY3F1aXJlKCkgLSB0dXJuIGEgbG9jYWwga3B0ciBpbnRvIGFuIG93bmluZyByZWZlcmVuY2VcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU2LSAqIEBwX19yZWZjb3VudGVkX2twdHI6IG5vbi1vd25pbmcgbG9jYWwga3B0clxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ2My0gKi9cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDY0Ol9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDY1LXtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODAtXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ4MTpfX2JwZl9rZnVuYyB2b2lkICpicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgdm9pZCAqbWV0YV9faWduKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODIte1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODM6XFx0cmV0dXJuIGJwZl9yZWZjb3VudF9hY3F1aXJlKHBfX3JlZmNvdW50ZWRfa3B0ciwgbWV0YV9faWduKTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDg0LX1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MTM9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxNi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDk4OT1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTMtXFx0S0ZfYnBmX29ial9kcm9wLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NDpcXHRLRl9icGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NTpcXHRLRl9icGZfcmVmY291bnRfYWNxdWlyZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTYtXFx0S0ZfYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMDY2PUJURl9JRChmdW5jLCBicGZfb2JqX2Ryb3ApXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY3OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTA2ODpCVEZfSUQoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDY5LUJURl9JRChmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTExNzY9c3RhdGljIGJvb2wgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyh1MzIgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4MS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODI6c3RhdGljIGJvb2wgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmModTMyIGZ1bmNfaWQpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTgzLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODQ6XFx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4NTpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTg2LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19rZnVuY19yZXRfbnVsbChzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjEwLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTE6XFx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXFx1MDAzZWZ1bmNfaWQpIFxcdTAwMjZcXHUwMDI2IG1ldGEtXFx1MDAzZWFyZ19vd25pbmdfcmVmKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2MTc9c3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjIwLVxcdCAgICAgICBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyhidGZfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNjIxOlxcdCAgICAgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhidGZfaWQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMi19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3Mjc9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjgxNS1cXHRcXHRpbnNuX2F1eC1cXHUwMDNla3B0cl9zdHJ1Y3RfbWV0YSA9IHN0cnVjdF9tZXRhO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjgxNjpcXHR9IGVsc2UgaWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXFx1MDAzZWZ1bmNfaWQpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODE3LVxcdFxcdG1hcmtfcmVnX2tub3duX3plcm8oZW52LCByZWdzLCBCUEZfUkVHXzApO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMTgtXFx0XFx0ICAgICAhaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKG1ldGEuZnVuY19pZCkgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMTk6XFx0XFx0ICAgICAhaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS5mdW5jX2lkKSkpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMjAtXFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJhY3F1aXJlIGtlcm5lbCBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gUFRSX1RPX0JURl9JRFxcXFxuXFxcIik7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1NzQ9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMi1cXHRcXHQgICBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjIzOlxcdFxcdCAgIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjI0LVxcdFxcdHN0cnVjdCBidGZfc3RydWN0X21ldGEgKmtwdHJfc3RydWN0X21ldGEgPSBlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLmtwdHJfc3RydWN0X21ldGE7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjMzOlxcdFxcdGlmIChpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhkZXNjLVxcdTAwM2VmdW5jX2lkKSBcXHUwMDI2XFx1MDAyNiAha3B0cl9zdHJ1Y3RfbWV0YSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYzNC1cXHRcXHRcXHR2ZXJpZmllcl9idWcoZW52LCBcXFwia3B0cl9zdHJ1Y3RfbWV0YSBleHBlY3RlZCBhdCBpbnNuX2lkeCAlZFxcXCIsXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oPTM4ND1zdHJ1Y3QgYnBmX3JiX25vZGUgKmJwZl9yYnRyZWVfZmlyc3Qoc3RydWN0IGJwZl9yYl9yb290ICpyb290KSBfX2tzeW07XFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaC0zODUtXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODY6dm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCh2b2lkICprcHRyLCB2b2lkICptZXRhKSBfX2tzeW07XFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODc6I2RlZmluZSBicGZfcmVmY291bnRfYWNxdWlyZShrcHRyKSBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKGtwdHIsIE5VTEwpXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaC0zODgtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmM9MzAzPWludCBCUEZfUFJPRyhicGZfZnFfZW5xdWV1ZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ0LVxcdFxcdGlmIChmcV9mbG93X2lzX2RldGFjaGVkKGZsb3cpKSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jOjM0NTpcXHRcXHRcXHRmbG93X2NvcHkgPSBicGZfcmVmY291bnRfYWNxdWlyZShmbG93KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYz0yMzQ9bG9uZyByZWZjb3VudF9hY3F1aXJlX3dpdGhvdXRfdW5zdGFzaCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaC5jLTI0OS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaC5jOjI1MDpcXHRwID0gYnBmX3JlZmNvdW50X2FjcXVpcmUocy1cXHUwMDNlc3Rhc2hlZCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYy0yNTEtXFx0aWYgKCFwKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYz01Mz1sb25nIHJidHJlZV9zZWFyY2godm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy02NC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jOjY1OlxcdFxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTY2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xMDgtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzoxMDk6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTEwLVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2Z2xvY2swKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9MTU2PWxvbmcgdGVzdF8jI29wIyNfc3BpbmxvY2tfIyNkb2xvY2sodm9pZCAqY3R4KVxcdFxcdFxcXFxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTY4LVxcdG4gPSByYl9lbnRyeShyYl9uLCBzdHJ1Y3Qgbm9kZV9kYXRhLCByMCk7XFx0XFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM6MTY5OlxcdG4gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXHRcXHRcXHRcXFxcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xNzAtXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZnbG9jazApO1xcdFxcdFxcdFxcXFxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYz0xNTU9bG9uZyByYnRyZWVfc2VhcmNoX2twdHJfcmVmKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYy0xODItXFx0XFx0LyogVW51c2VkIHJlZmVyZW5jZSAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYzoxODM6XFx0XFx0dG5vZGVfbSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHRub2RlX3IpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYy0xODQtXFx0XFx0aWYgKCF0bm9kZV9tKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTczPXN0YXRpYyBsb25nIF9faW5zZXJ0X2luX3RyZWVfYW5kX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODItXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgzOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODQtXFx0bS1cXHUwMDNla2V5ID0gMTIzO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwNj1zdGF0aWMgbG9uZyBfX3N0YXNoX21hcF9pbnNlcnRfdHJlZShpbnQgaWR4LCBpbnQgdmFsLCBzdHJ1Y3QgYnBmX3JiX3Jvb3QgKnJvb3QsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIwLVxcdG4tXFx1MDAzZWtleSA9IHZhbDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6MTIxOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIyLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTM5OT1zdGF0aWMgc3RydWN0IG5vZGVfZGF0YSAqX19hZGRfaW5fbGlzdChzdHJ1Y3QgYnBmX2xpc3RfaGVhZCAqaGVhZCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy00MDctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjQwODpcXHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtNDA5LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTc5Mz1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgwMi1cXHRicGZfcmJ0cmVlX2FkZChcXHUwMDI2YXJvb3QsIFxcdTAwMjZuLVxcdTAwM2Vub2RlLCBsZXNzX2EpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MDM6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDQtXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZhbG9jayk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9ODE1PWxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlc19vd25pbmdfaW5wdXQodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyMi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6ODIzOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODI0LVxcdG0tXFx1MDAzZWtleSA9IDI7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9ODUyPWxvbmcgcmJ0cmVlX3dyb25nX293bmVyX3JlbW92ZV9mYWlsX2ExKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NTgtXFx0XFx0cmV0dXJuIDE7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjg1OTpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg2MC1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDAyPXN0YXRpYyBpbnQgX19pbnNlcnRfaW5fbGlzdChzdHJ1Y3QgYnBmX2xpc3RfaGVhZCAqaGVhZCwgc3RydWN0IGJwZl9zcGluX2xvY2sgKmxvY2ssXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6MTAxMTpcXHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMi1cXHRub2RlX29sZCA9IGJwZl9rcHRyX3hjaGcobm9kZSwgbm9kZV9uZXcpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9NTc9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTY3LVxcdC8qIG0gYmVjb21lcyBhbiBvd25pbmcgcmVmIGJ1dCBpcyBuZXZlciBkcm9wJ2Qgb3IgYWRkZWQgdG8gYSB0cmVlICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6Njg6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTY5LVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2Z2xvY2spO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9Nzk9bG9uZyByZWZjb3VudF9hY3F1aXJlX21heWJlX251bGwodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtODYtXFx0ICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6ODc6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg4LVxcdGlmIChtKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9OTg9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMDYtXFx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AnZCBvciBhZGRlZCB0byBhIHRyZWUgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMDc6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEwOC1cXHRtLVxcdTAwM2VrZXkgPSAyO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9MTE5PWxvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEzNS1cXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6MTM2OlxcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTM3LVxcdGlmIChyZWYpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz0xNDU9bG9uZyByZWZjb3VudF9hY3F1aXJlX3JidHJlZV9ub2RlX29mZnNldCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xNjUtXFx0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6MTY2OlxcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHJiX25vZGUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTE2Ny1cXHRpZiAocmVmKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0ODoxOC41NDAwMDE0MDVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYwOTIzNTQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb24gaGVyZSBib2lscyBkb3duIHRvIGBCUEZfU1lTQ0FMTGAuIEkgbmVlZCB0byBzeW50aGVzaXplIGEgc3VtbWFyeSBvZiB0aGUgYXBwcm9hY2ggZm9yIHRoZSBmdXp6aW5nLlxuXG5NeSB0aGlua2luZyBpcyB0aGlzOiBUaGUga2V5IGFzcGVjdHMgdG8gZnV6emluZyBhcmUgc3RyYWlnaHRmb3J3YXJkLCB3aGljaCBtYWtlcyBtZSB0aGluayBvZiB0aGUgb3ZlcmFsbCBhcHByb2FjaCB0byB0aGlzIHBhcnRpY3VsYXIgcGF0Y2guXG5cbiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlLCBkZWZpbml0ZWx5LiBUaGlzIGlzIGNyaXRpY2FsIEJQRiB2ZXJpZmllciBsb2dpYywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwuIENoYW5nZXMgYXQgdGhpcyBsZXZlbCBhcmUgYWx3YXlzIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBJJ2xsIGJlIHRhcmdldGluZyBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCwgYGNoZWNrX2tmdW5jX2FyZ3NgLCBhbmQgYGJwZl9yZWZjb3VudF9hY3F1aXJlYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhlIG9mZnNldCByZXN0cmljdGlvbiBmb3IgYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCBhcmd1bWVudHMuIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgdGVzdCB0aGUgYm91bmRhcnkgY29uZGl0aW9ucy5cbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogQ29uZmlybWVkOiBgQlBGX1NZU0NBTExgLiBUaGlzIGlzIGhvdyB1c2Vyc3BhY2UgaW50ZXJhY3RzIHdpdGggdGhlIHZlcmlmaWVyLCBzbyBpdCdzIHRoZSByaWdodCBmb2N1cy5cbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMgYWx0ZXJpbmcgdGhlIHZlcmlmaWVyJ3MgYmVoYXZpb3IgcmVnYXJkaW5nIG9mZnNldCByZXN0cmljdGlvbnMgZm9yIGEgc3BlY2lmaWMgdHlwZSBvZiBrZXJuZWwgZnVuY3Rpb24gYXJndW1lbnQuIFRoZSBhaW0gaXMgdG8gbWFrZSBzdXJlIGl0IGZ1bmN0aW9ucyBjb3JyZWN0bHksIHJlamVjdGluZyBpbmNvcnJlY3Qgb2Zmc2V0cyBhbmQgYWxsb3dpbmcgdmFsaWQgb2Zmc2V0cy4gSSBoYXZlIHRvIGZ1enogdG8gc2VlIHRoZSBwYXRjaCdzIGNoYW5nZXMgZG9uJ3QgaW50cm9kdWNlIGVycm9ycyBpbiB2YWxpZCBjYXNlcyBvciBtaXNzIGluY29ycmVjdCBjYXNlcy4gVGhpcyBjaGFuZ2UgaXMgc2VjdXJpdHktc2Vuc2l0aXZlLCBzbyB0aG9yb3VnaCB0ZXN0aW5nIGlzIGltcG9ydGFudC5cblxuSSdsbCBiZSB1c2luZyBgc2V0LXJlc3VsdHNgIHRvIHJlY29yZCBhbmQgcmV0dXJuIHRoZSBmdXp6aW5nIG91dGNvbWVzLiBUaGlzIHN1bW1hcml6ZXMgdGhlIGZ1enppbmcgc3RyYXRlZ3kgcHJldHR5IHdlbGwsIHNvIEknbSBub3cgcmVhZHkgdG8gc3RhcnQgc2V0dGluZyB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc1MzUsIk91dHB1dFRva2VucyI6MTQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDAyOjQ4OjI0LjE0OTIzOTk2MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNjIyODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fY2hlY2tfZnVuY19hcmdfcmVnX29mZlwiLFxuICAgIFwiY2hlY2tfa2Z1bmNfYXJnc1wiLFxuICAgIFwiYnBmX3JlZmNvdW50X2FjcXVpcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlc3RyaWN0IHRoZSBhbGxvd2VkIG9mZnNldCBmb3IgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJndW1lbnRzIHRvIDAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgcmVqZWN0cyBpbnZhbGlkIG9mZnNldHMgd2l0aG91dCBicmVha2luZyB2YWxpZCB1c2UgY2FzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZcIixcbiAgICBcImNoZWNrX2tmdW5jX2FyZ3NcIixcbiAgICBcImJwZl9yZWZjb3VudF9hY3F1aXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZXN0cmljdCB0aGUgYWxsb3dlZCBvZmZzZXQgZm9yIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZ3VtZW50cyB0byAwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IHJlamVjdHMgaW52YWxpZCBvZmZzZXRzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgdXNlIGNhc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxllqq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-22 02:41:52 +0000 UTC FinishedAt: 2026-06-22 02:48:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "4d4dc076-b84b-449c-a449-e782ee3629c7" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "__check_func_arg_reg_off", "check_kfunc_args", "bpf_refcount_acquire" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDAyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19jaGVja19mdW5jX2FyZ19yZWdfb2ZmJiMzNDssCiAgICAmIzM0O2NoZWNrX2tmdW5jX2FyZ3MmIzM0OywKICAgICYjMzQ7YnBmX3JlZmNvdW50X2FjcXVpcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZXN0cmljdCB0aGUgYWxsb3dlZCBvZmZzZXQgZm9yIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZ3VtZW50cyB0byAwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IHJlamVjdHMgaW52YWxpZCBvZmZzZXRzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgdXNlIGNhc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDAyOjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWNmMGFlODIzZGQzNzdhY2VlNzFlY2EwZTlkZmUzZjI0ZjFlODA0MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDAyOjQ3OjQ4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmY2NWVmZjI4ZWNkMjVlIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC03OTkwLDkgJiM0Mzs3OTkwLDEwIEBAIHJlZ19maW5kX2ZpZWxkX29mZnNldChjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBzMzIgb2ZmLCB1MzIgZmllbGRzKVxuIFx0cmV0dXJuIGZpZWxkO1xuIH1cbiBcbi1zdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbi1cdFx0XHRcdCAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUpXG4mIzQzO3N0YXRpYyBpbnQgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4mIzQzO1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4mIzQzO1x0XHRcdFx0ICAgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlLFxuJiM0MztcdFx0XHRcdCAgICBib29sIGJ0Zl9pZF9maXhlZF9vZmZfb2spXG4ge1xuIFx0dTMyIHR5cGUgPSByZWctXHUwMDNldHlwZTtcbiBcbkBAIC04MDQ5LDEyICYjNDM7ODA1MCwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdGNhc2UgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQyB8IE5PTl9PV05fUkVGIHwgTUVNX1JDVTpcbiBcdFx0LyogV2hlbiByZWZlcmVuY2VkIFBUUl9UT19CVEZfSUQgaXMgcGFzc2VkIHRvIHJlbGVhc2UgZnVuY3Rpb24sXG4gXHRcdCAqIGl0cyBmaXhlZCBvZmZzZXQgbXVzdCBiZSAwLiBJbiB0aGUgb3RoZXIgY2FzZXMsIGZpeGVkIG9mZnNldFxuLVx0XHQgKiBjYW4gYmUgbm9uLXplcm8uIFRoaXMgd2FzIGFscmVhZHkgY2hlY2tlZCBhYm92ZS4gU28gcGFzc1xuLVx0XHQgKiBmaXhlZF9vZmZfb2sgYXMgdHJ1ZSB0byBhbGxvdyBmaXhlZCBvZmZzZXQgZm9yIGFsbCBvdGhlclxuLVx0XHQgKiBjYXNlcy4gdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZVxuLVx0XHQgKiBzdGlsbCBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbiYjNDM7XHRcdCAqIGNhbiBiZSBub24temVybyB1bmxlc3MgdGhlIGNhbGxlciByZXF1aXJlcyBvdGhlcndpc2UuXG4mIzQzO1x0XHQgKiB2YXJfb2ZmIGFsd2F5cyBtdXN0IGJlIDAgZm9yIFBUUl9UT19CVEZfSUQsIGhlbmNlIHdlIHN0aWxsXG4mIzQzO1x0XHQgKiBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbiBcdFx0ICovXG4tXHRcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgdHJ1ZSk7XG4mIzQzO1x0XHRyZXR1cm4gX19jaGVja19wdHJfb2ZmX3JlZyhlbnYsIHJlZywgYXJnbm8sIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xuIFx0Y2FzZSBQVFJfVE9fQ1RYOlxuIFx0XHQvKlxuIFx0XHQgKiBBbGxvdyBmaXhlZCBhbmQgdmFyaWFibGUgb2Zmc2V0cyBmb3Igc3lzY2FsbCBjb250ZXh0LCBidXRcbkBAIC04MDcwLDYgJiM0Mzs4MDcwLDEzIEBAIHN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4mIzQzO1x0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuJiM0MztcdFx0XHRcdCAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsIHRydWUpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgY2hlY2tfYXJnX2NvbnN0X3N0cihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vKVxuIHtcbkBAIC0xMTk0MSw2ICYjNDM7MTE5NDgsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFx0XHRlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSA9IEFSR19ET05UQ0FSRTtcbiBcdFx0YXJnbm9fdCBhcmdubyA9IGFyZ25vX2Zyb21fYXJnKGkgJiM0MzsgMSk7XG4gXHRcdGludCByZWdubyA9IHJlZ19mcm9tX2FyZ25vKGFyZ25vKTtcbiYjNDM7XHRcdGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vayA9IHRydWU7XG4gXHRcdHUzMiByZWZfaWQsIHR5cGVfc2l6ZTtcbiBcdFx0Ym9vbCBpc19yZXRfYnVmX3N6ID0gZmFsc2U7XG4gXHRcdGludCBrZl9hcmdfdHlwZTtcbkBAIC0xMjExNCw3ICYjNDM7MTIxMjIsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fTUVNOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fTUVNX1NJWkU6XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19DQUxMQkFDSzpcbi1cdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NPTlNUX1NUUjpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1dPUktRVUVVRTpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1RJTUVSOlxuQEAgLTEyMTI4LDYgJiM0MzsxMjEzNSwxMCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fQ1RYOlxuIFx0XHRcdGFyZ190eXBlID0gQVJHX1BUUl9UT19DVFg7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxuJiM0MztcdFx0XHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQlRGX0lEO1xuJiM0MztcdFx0XHRidGZfaWRfZml4ZWRfb2ZmX29rID0gZmFsc2U7XG4mIzQzO1x0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHZlcmlmaWVyX2J1ZyhlbnYsIFwmIzM0O3Vua25vd24ga2Z1bmMgYXJnIHR5cGUgJWRcJiMzNDssIGtmX2FyZ190eXBlKTtcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbkBAIC0xMjEzNSw3ICYjNDM7MTIxNDYsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFxuIFx0XHRpZiAocmVnbm8gPT0gbWV0YS1cdTAwM2VyZWxlYXNlX3JlZ25vKVxuIFx0XHRcdGFyZ190eXBlIHw9IE9CSl9SRUxFQVNFO1xuLVx0XHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpO1xuJiM0MztcdFx0cmV0ID0gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgYnRmX2lkX2ZpeGVkX29mZl9vayk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jXG5pbmRleCA3MjQ3YTIwYzBhM2JmNS4uNzdjZGE1Y2EyMzYwMTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcbkBAIC0xMywxMiAmIzQzOzEzLDIyIEBAIHN0cnVjdCBub2RlX2FjcXVpcmUge1xuIFx0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcbiB9O1xuIFxuJiM0MztzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkIHtcbiYjNDM7XHRsb25nIGtleTtcbiYjNDM7XHRzdHJ1Y3QgYnBmX3JiX25vZGUgcmI7XG4mIzQzO1x0c3RydWN0IGJwZl9saXN0X25vZGUgbGlzdDtcbiYjNDM7XHRzdHJ1Y3QgYnBmX3JlZmNvdW50IHJlZmNvdW50O1xuJiM0Mzt9O1xuJiM0MztcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfbG9jayh2b2lkKSBfX2tzeW07XG4gZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07XG4gXG4gI2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcJiMzNDsuZGF0YS5cJiMzNDsgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9zcGluX2xvY2sgZ2xvY2s7XG4gcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3JiX3Jvb3QgZ3Jvb3QgX19jb250YWlucyhub2RlX2FjcXVpcmUsIG5vZGUpO1xuJiM0Mztwcml2YXRlKEIpIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7XG4mIzQzO3ByaXZhdGUoQikgc3RydWN0IGJwZl9yYl9yb290IHJvb3QgX19jb250YWlucyhub2RlX3JlZmNvdW50ZWQsIHJiKTtcbiYjNDM7cHJpdmF0ZShCKSBzdHJ1Y3QgYnBmX2xpc3RfaGVhZCBoZWFkIF9fY29udGFpbnMobm9kZV9yZWZjb3VudGVkLCBsaXN0KTtcbiBcbiBzdGF0aWMgYm9vbCBsZXNzKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxuIHtcbkBAIC0zMSw2ICYjNDM7NDEsMTcgQEAgc3RhdGljIGJvb2wgbGVzcyhzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYilcbiBcdHJldHVybiBub2RlX2EtXHUwMDNla2V5IFx1MDAzYyBub2RlX2ItXHUwMDNla2V5O1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgbGVzc19yZWZjb3VudGVkKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZV9hO1xuJiM0MztcdHN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGVfYjtcbiYjNDM7XG4mIzQzO1x0bm9kZV9hID0gY29udGFpbmVyX29mKGEsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIHJiKTtcbiYjNDM7XHRub2RlX2IgPSBjb250YWluZXJfb2YoYiwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgcmIpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbm9kZV9hLVx1MDAzZWtleSBcdTAwM2Mgbm9kZV9iLVx1MDAzZWtleTtcbiYjNDM7fVxuJiM0MztcbiBTRUMoXCYjMzQ7P3RjXCYjMzQ7KVxuIF9fZmFpbHVyZSBfX21zZyhcJiMzNDtVbnJlbGVhc2VkIHJlZmVyZW5jZSBpZD00IGFsbG9jX2luc249e3tbMC05XSYjNDM7fX1cJiMzNDspXG4gbG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcbkBAIC05Myw2ICYjNDM7MTE0LDYyIEBAIGxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlc19vd25pbmdfaW5wdXQodm9pZCAqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztTRUMoXCYjMzQ7P3RjXCYjMzQ7KVxuJiM0MztfX2ZhaWx1cmUgX19tc2coXCYjMzQ7ZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjFcJiMzNDspXG4mIzQzO2xvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGUsICpiYXNlLCAqcmVmO1xuJiM0MztcdHN0cnVjdCBicGZfbGlzdF9ub2RlICpsaXN0X25vZGU7XG4mIzQzO1xuJiM0MztcdG5vZGUgPSBicGZfb2JqX25ldyh0eXBlb2YoKm5vZGUpKTtcbiYjNDM7XHRpZiAoIW5vZGUpXG4mIzQzO1x0XHRyZXR1cm4gMTtcbiYjNDM7XG4mIzQzO1x0YnBmX3NwaW5fbG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XHRicGZfbGlzdF9wdXNoX2Zyb250KFx1MDAyNmhlYWQsIFx1MDAyNm5vZGUtXHUwMDNlbGlzdCk7XG4mIzQzO1x0bGlzdF9ub2RlID0gYnBmX2xpc3RfcG9wX2Zyb250KFx1MDAyNmhlYWQpO1xuJiM0MztcdGJwZl9zcGluX3VubG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XHRpZiAoIWxpc3Rfbm9kZSlcbiYjNDM7XHRcdHJldHVybiAyO1xuJiM0MztcbiYjNDM7XHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XG4mIzQzO1x0cmVmID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobGlzdF9ub2RlKTtcbiYjNDM7XHRpZiAocmVmKVxuJiM0MztcdFx0YnBmX29ial9kcm9wKHJlZik7XG4mIzQzO1x0YnBmX29ial9kcm9wKGJhc2UpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7P3RjXCYjMzQ7KVxuJiM0MztfX2ZhaWx1cmUgX19tc2coXCYjMzQ7ZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjFcJiMzNDspXG4mIzQzO2xvbmcgcmVmY291bnRfYWNxdWlyZV9yYnRyZWVfbm9kZV9vZmZzZXQodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7XG4mIzQzO1x0c3RydWN0IGJwZl9yYl9ub2RlICpyYl9ub2RlO1xuJiM0MztcbiYjNDM7XHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XG4mIzQzO1x0aWYgKCFub2RlKVxuJiM0MztcdFx0cmV0dXJuIDE7XG4mIzQzO1xuJiM0MztcdG5vZGUtXHUwMDNla2V5ID0gMTtcbiYjNDM7XG4mIzQzO1x0YnBmX3NwaW5fbG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XHRicGZfcmJ0cmVlX2FkZChcdTAwMjZyb290LCBcdTAwMjZub2RlLVx1MDAzZXJiLCBsZXNzX3JlZmNvdW50ZWQpO1xuJiM0MztcdHJiX25vZGUgPSBicGZfcmJ0cmVlX2ZpcnN0KFx1MDAyNnJvb3QpO1xuJiM0MztcdGlmIChyYl9ub2RlKVxuJiM0MztcdFx0cmJfbm9kZSA9IGJwZl9yYnRyZWVfcmVtb3ZlKFx1MDAyNnJvb3QsIHJiX25vZGUpO1xuJiM0MztcdGJwZl9zcGluX3VubG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XHRpZiAoIXJiX25vZGUpXG4mIzQzO1x0XHRyZXR1cm4gMjtcbiYjNDM7XG4mIzQzO1x0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XG4mIzQzO1x0cmVmID0gYnBmX3JlZmNvdW50X2FjcXVpcmUocmJfbm9kZSk7XG4mIzQzO1x0aWYgKHJlZilcbiYjNDM7XHRcdGJwZl9vYmpfZHJvcChyZWYpO1xuJiM0MztcdGJwZl9vYmpfZHJvcChiYXNlKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBTRUMoXCYjMzQ7P2ZlbnRyeS5zL1wmIzM0OyBTWVNfUFJFRklYIFwmIzM0O3N5c19nZXRwZ2lkXCYjMzQ7KVxuIF9fZmFpbHVyZSBfX21zZyhcJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcJiMzNDspXG4gaW50IEJQRl9QUk9HKHJidHJlZV9mYWlsX3NsZWVwYWJsZV9sb2NrX2Fjcm9zc19yY3UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYmIzM0OywKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfYXJncyYjMzQ7LAogICAgJiMzNDticGZfcmVmY291bnRfYWNxdWlyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlc3RyaWN0IHRoZSBhbGxvd2VkIG9mZnNldCBmb3IgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJndW1lbnRzIHRvIDAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgcmVqZWN0cyBpbnZhbGlkIG9mZnNldHMgd2l0aG91dCBicmVha2luZyB2YWxpZCB1c2UgY2FzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFjZjBhZTgyM2RkMzc3YWNlZTcxZWNhMGU5ZGZlM2YyNGYxZTgwNDEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyMiAwMjo0Nzo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCAyYWJjNzlkYmYyODFjMi4uZjY1ZWZmMjhlY2QyNWUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTc5OTAsOSAmIzQzOzc5OTAsMTAgQEAgcmVnX2ZpbmRfZmllbGRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIHMzMiBvZmYsIHUzMiBmaWVsZHMpCiAJcmV0dXJuIGZpZWxkOwogfQogCi1zdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKLQkJCQkgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sCi0JCQkJICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSkKJiM0MztzdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAomIzQzOwkJCQkgICAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywKJiM0MzsJCQkJICAgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlLAomIzQzOwkJCQkgICAgYm9vbCBidGZfaWRfZml4ZWRfb2ZmX29rKQogewogCXUzMiB0eXBlID0gcmVnLSZndDt0eXBlOwogCkBAIC04MDQ5LDEyICYjNDM7ODA1MCwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAljYXNlIFBUUl9UT19CVEZfSUQgfCBNRU1fQUxMT0MgfCBOT05fT1dOX1JFRiB8IE1FTV9SQ1U6CiAJCS8qIFdoZW4gcmVmZXJlbmNlZCBQVFJfVE9fQlRGX0lEIGlzIHBhc3NlZCB0byByZWxlYXNlIGZ1bmN0aW9uLAogCQkgKiBpdHMgZml4ZWQgb2Zmc2V0IG11c3QgYmUgMC4gSW4gdGhlIG90aGVyIGNhc2VzLCBmaXhlZCBvZmZzZXQKLQkJICogY2FuIGJlIG5vbi16ZXJvLiBUaGlzIHdhcyBhbHJlYWR5IGNoZWNrZWQgYWJvdmUuIFNvIHBhc3MKLQkJICogZml4ZWRfb2ZmX29rIGFzIHRydWUgdG8gYWxsb3cgZml4ZWQgb2Zmc2V0IGZvciBhbGwgb3RoZXIKLQkJICogY2FzZXMuIHZhcl9vZmYgYWx3YXlzIG11c3QgYmUgMCBmb3IgUFRSX1RPX0JURl9JRCwgaGVuY2Ugd2UKLQkJICogc3RpbGwgbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuCiYjNDM7CQkgKiBjYW4gYmUgbm9uLXplcm8gdW5sZXNzIHRoZSBjYWxsZXIgcmVxdWlyZXMgb3RoZXJ3aXNlLgomIzQzOwkJICogdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZSBzdGlsbAomIzQzOwkJICogbmVlZCB0byBkbyBjaGVja3MgaW5zdGVhZCBvZiByZXR1cm5pbmcuCiAJCSAqLwotCQlyZXR1cm4gX19jaGVja19wdHJfb2ZmX3JlZyhlbnYsIHJlZywgYXJnbm8sIHRydWUpOwomIzQzOwkJcmV0dXJuIF9fY2hlY2tfcHRyX29mZl9yZWcoZW52LCByZWcsIGFyZ25vLCBidGZfaWRfZml4ZWRfb2ZmX29rKTsKIAljYXNlIFBUUl9UT19DVFg6CiAJCS8qCiAJCSAqIEFsbG93IGZpeGVkIGFuZCB2YXJpYWJsZSBvZmZzZXRzIGZvciBzeXNjYWxsIGNvbnRleHQsIGJ1dApAQCAtODA3MCw2ICYjNDM7ODA3MCwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAl9CiB9CiAKJiM0MztzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKJiM0MzsJCQkJICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLAomIzQzOwkJCQkgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKQomIzQzO3sKJiM0MzsJcmV0dXJuIF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLCB0cnVlKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGNoZWNrX2FyZ19jb25zdF9zdHIoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCSAgICAgICBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vKQogewpAQCAtMTE5NDEsNiAmIzQzOzExOTQ4LDcgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF8KIAkJZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUgPSBBUkdfRE9OVENBUkU7CiAJCWFyZ25vX3QgYXJnbm8gPSBhcmdub19mcm9tX2FyZyhpICYjNDM7IDEpOwogCQlpbnQgcmVnbm8gPSByZWdfZnJvbV9hcmdubyhhcmdubyk7CiYjNDM7CQlib29sIGJ0Zl9pZF9maXhlZF9vZmZfb2sgPSB0cnVlOwogCQl1MzIgcmVmX2lkLCB0eXBlX3NpemU7CiAJCWJvb2wgaXNfcmV0X2J1Zl9zeiA9IGZhbHNlOwogCQlpbnQga2ZfYXJnX3R5cGU7CkBAIC0xMjExNCw3ICYjNDM7MTIxMjIsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsXwogCQljYXNlIEtGX0FSR19QVFJfVE9fTUVNOgogCQljYXNlIEtGX0FSR19QVFJfVE9fTUVNX1NJWkU6CiAJCWNhc2UgS0ZfQVJHX1BUUl9UT19DQUxMQkFDSzoKLQkJY2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjoKIAkJY2FzZSBLRl9BUkdfUFRSX1RPX0NPTlNUX1NUUjoKIAkJY2FzZSBLRl9BUkdfUFRSX1RPX1dPUktRVUVVRToKIAkJY2FzZSBLRl9BUkdfUFRSX1RPX1RJTUVSOgpAQCAtMTIxMjgsNiAmIzQzOzEyMTM1LDEwIEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfCiAJCWNhc2UgS0ZfQVJHX1BUUl9UT19DVFg6CiAJCQlhcmdfdHlwZSA9IEFSR19QVFJfVE9fQ1RYOwogCQkJYnJlYWs7CiYjNDM7CQljYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOgomIzQzOwkJCWFyZ190eXBlID0gQVJHX1BUUl9UT19CVEZfSUQ7CiYjNDM7CQkJYnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlOwomIzQzOwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJdmVyaWZpZXJfYnVnKGVudiwgJiMzNDt1bmtub3duIGtmdW5jIGFyZyB0eXBlICVkJiMzNDssIGtmX2FyZ190eXBlKTsKIAkJCXJldHVybiAtRUZBVUxUOwpAQCAtMTIxMzUsNyAmIzQzOzEyMTQ2LDggQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF8KIAogCQlpZiAocmVnbm8gPT0gbWV0YS0mZ3Q7cmVsZWFzZV9yZWdubykKIAkJCWFyZ190eXBlIHw9IE9CSl9SRUxFQVNFOwotCQlyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpOwomIzQzOwkJcmV0ID0gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsCiYjNDM7CQkJCQkgICAgICAgYnRmX2lkX2ZpeGVkX29mZl9vayk7CiAJCWlmIChyZXQgJmx0OyAwKQogCQkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYwppbmRleCA3MjQ3YTIwYzBhM2JmNS4uNzdjZGE1Y2EyMzYwMTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jCkBAIC0xMywxMiAmIzQzOzEzLDIyIEBAIHN0cnVjdCBub2RlX2FjcXVpcmUgewogCXN0cnVjdCBicGZfcmVmY291bnQgcmVmY291bnQ7CiB9OwogCiYjNDM7c3RydWN0IG5vZGVfcmVmY291bnRlZCB7CiYjNDM7CWxvbmcga2V5OwomIzQzOwlzdHJ1Y3QgYnBmX3JiX25vZGUgcmI7CiYjNDM7CXN0cnVjdCBicGZfbGlzdF9ub2RlIGxpc3Q7CiYjNDM7CXN0cnVjdCBicGZfcmVmY291bnQgcmVmY291bnQ7CiYjNDM7fTsKJiM0MzsKIGV4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF9sb2NrKHZvaWQpIF9fa3N5bTsKIGV4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF91bmxvY2sodm9pZCkgX19rc3ltOwogCiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKCYjMzQ7LmRhdGEuJiMzNDsgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQogcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3NwaW5fbG9jayBnbG9jazsKIHByaXZhdGUoQSkgc3RydWN0IGJwZl9yYl9yb290IGdyb290IF9fY29udGFpbnMobm9kZV9hY3F1aXJlLCBub2RlKTsKJiM0Mztwcml2YXRlKEIpIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7CiYjNDM7cHJpdmF0ZShCKSBzdHJ1Y3QgYnBmX3JiX3Jvb3Qgcm9vdCBfX2NvbnRhaW5zKG5vZGVfcmVmY291bnRlZCwgcmIpOwomIzQzO3ByaXZhdGUoQikgc3RydWN0IGJwZl9saXN0X2hlYWQgaGVhZCBfX2NvbnRhaW5zKG5vZGVfcmVmY291bnRlZCwgbGlzdCk7CiAKIHN0YXRpYyBib29sIGxlc3Moc3RydWN0IGJwZl9yYl9ub2RlICphLCBjb25zdCBzdHJ1Y3QgYnBmX3JiX25vZGUgKmIpCiB7CkBAIC0zMSw2ICYjNDM7NDEsMTcgQEAgc3RhdGljIGJvb2wgbGVzcyhzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYikKIAlyZXR1cm4gbm9kZV9hLSZndDtrZXkgJmx0OyBub2RlX2ItJmd0O2tleTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGxlc3NfcmVmY291bnRlZChzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGVfYTsKJiM0MzsJc3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZV9iOwomIzQzOwomIzQzOwlub2RlX2EgPSBjb250YWluZXJfb2YoYSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgcmIpOwomIzQzOwlub2RlX2IgPSBjb250YWluZXJfb2YoYiwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgcmIpOwomIzQzOwomIzQzOwlyZXR1cm4gbm9kZV9hLSZndDtrZXkgJmx0OyBub2RlX2ItJmd0O2tleTsKJiM0Mzt9CiYjNDM7CiBTRUMoJiMzNDs/dGMmIzM0OykKIF9fZmFpbHVyZSBfX21zZygmIzM0O1VucmVsZWFzZWQgcmVmZXJlbmNlIGlkPTQgYWxsb2NfaW5zbj17e1swLTldJiM0Mzt9fSYjMzQ7KQogbG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eCkKQEAgLTkzLDYgJiM0MzsxMTQsNjIgQEAgbG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztTRUMoJiMzNDs/dGMmIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtkZXJlZmVyZW5jZSBvZiBtb2RpZmllZCBwdHJfIHB0ciBSMSYjMzQ7KQomIzQzO2xvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGUsICpiYXNlLCAqcmVmOwomIzQzOwlzdHJ1Y3QgYnBmX2xpc3Rfbm9kZSAqbGlzdF9ub2RlOwomIzQzOwomIzQzOwlub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7CiYjNDM7CWlmICghbm9kZSkKJiM0MzsJCXJldHVybiAxOwomIzQzOwomIzQzOwlicGZfc3Bpbl9sb2NrKCZhbXA7bG9jayk7CiYjNDM7CWJwZl9saXN0X3B1c2hfZnJvbnQoJmFtcDtoZWFkLCAmYW1wO25vZGUtJmd0O2xpc3QpOwomIzQzOwlsaXN0X25vZGUgPSBicGZfbGlzdF9wb3BfZnJvbnQoJmFtcDtoZWFkKTsKJiM0MzsJYnBmX3NwaW5fdW5sb2NrKCZhbXA7bG9jayk7CiYjNDM7CWlmICghbGlzdF9ub2RlKQomIzQzOwkJcmV0dXJuIDI7CiYjNDM7CiYjNDM7CWJhc2UgPSBjb250YWluZXJfb2YobGlzdF9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCBsaXN0KTsKJiM0MzsJcmVmID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobGlzdF9ub2RlKTsKJiM0MzsJaWYgKHJlZikKJiM0MzsJCWJwZl9vYmpfZHJvcChyZWYpOwomIzQzOwlicGZfb2JqX2Ryb3AoYmFzZSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDs/dGMmIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtkZXJlZmVyZW5jZSBvZiBtb2RpZmllZCBwdHJfIHB0ciBSMSYjMzQ7KQomIzQzO2xvbmcgcmVmY291bnRfYWNxdWlyZV9yYnRyZWVfbm9kZV9vZmZzZXQodm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7CiYjNDM7CXN0cnVjdCBicGZfcmJfbm9kZSAqcmJfbm9kZTsKJiM0MzsKJiM0MzsJbm9kZSA9IGJwZl9vYmpfbmV3KHR5cGVvZigqbm9kZSkpOwomIzQzOwlpZiAoIW5vZGUpCiYjNDM7CQlyZXR1cm4gMTsKJiM0MzsKJiM0MzsJbm9kZS0mZ3Q7a2V5ID0gMTsKJiM0MzsKJiM0MzsJYnBmX3NwaW5fbG9jaygmYW1wO2xvY2spOwomIzQzOwlicGZfcmJ0cmVlX2FkZCgmYW1wO3Jvb3QsICZhbXA7bm9kZS0mZ3Q7cmIsIGxlc3NfcmVmY291bnRlZCk7CiYjNDM7CXJiX25vZGUgPSBicGZfcmJ0cmVlX2ZpcnN0KCZhbXA7cm9vdCk7CiYjNDM7CWlmIChyYl9ub2RlKQomIzQzOwkJcmJfbm9kZSA9IGJwZl9yYnRyZWVfcmVtb3ZlKCZhbXA7cm9vdCwgcmJfbm9kZSk7CiYjNDM7CWJwZl9zcGluX3VubG9jaygmYW1wO2xvY2spOwomIzQzOwlpZiAoIXJiX25vZGUpCiYjNDM7CQlyZXR1cm4gMjsKJiM0MzsKJiM0MzsJYmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7CiYjNDM7CXJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHJiX25vZGUpOwomIzQzOwlpZiAocmVmKQomIzQzOwkJYnBmX29ial9kcm9wKHJlZik7CiYjNDM7CWJwZl9vYmpfZHJvcChiYXNlKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogU0VDKCYjMzQ7P2ZlbnRyeS5zLyYjMzQ7IFNZU19QUkVGSVggJiMzNDtzeXNfZ2V0cGdpZCYjMzQ7KQogX19mYWlsdXJlIF9fbXNnKCYjMzQ7ZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrJiMzNDspCiBpbnQgQlBGX1BST0cocmJ0cmVlX2ZhaWxfc2xlZXBhYmxlX2xvY2tfYWNyb3NzX3JjdSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQyMgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhleSYjMzk7dmUgYWRkZWQgc29tZSB0ZXN0cywgdG9vLCB3aGljaCBpcyBhbHdheXMgZ29vZCDigJMgc3BlY2lmaWNhbGx5IGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gYSBmdW5jdGlvbiBjYWxsZWQgYGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmZgLiBJdCYjMzk7cyBiZWVuIHJlbmFtZWQgKG9yIG1heWJlIGp1c3QgZGVjbGFyZWQsIGFuZCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgc3RpbGwgdGhlcmU/KSB0byBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCwgYW5kIG5vdyBhY2NlcHRzIGFuIGV4dHJhIGJvb2xlYW4gYXJndW1lbnQsIGBidGZfaWRfZml4ZWRfb2ZmX29rYC4gVGhhdCYjMzk7cyB0aGUga2V5LgoKTm93LCBpbiBgY2hlY2tfa2Z1bmNfYXJnc2AsIHRoZXkmIzM5O3JlIGhhbmRsaW5nIGFyZ3VtZW50cyBvZiB0aGUgYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCB0eXBlLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcsIGFuZCBJIG5lZWQgdG8gZGl2ZSBpbiBhIGJpdCBkZWVwZXIuIFdoYXQgdGhleSYjMzk7cmUgZG9pbmcgaXMsIHdoZW4gdGhleSBlbmNvdW50ZXIgdGhpcyBhcmd1bWVudCB0eXBlLCB0aGV5IHNldCBgYXJnX3R5cGVgIHRvIGBBUkdfUFRSX1RPX0JURl9JRGAgYW5kIGNyaXRpY2FsbHksIHNldCBgYnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlYC4gVGhpcyBtZWFucyB0aGV5JiMzOTtyZSBleHBsaWNpdGx5ICpkaXNhbGxvd2luZyogYSBmaXhlZCBvZmZzZXQgZm9yIGBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUmAgYXJndW1lbnRzLiBFZmZlY3RpdmVseSwgdGhleSYjMzk7cmUgZW5mb3JjaW5nIHRoYXQgdGhlIG9mZnNldCBoYXMgdG8gYmUgemVybywgcmlnaHQ/IE5vIHdpZ2dsZSByb29tLgoKSSBuZWVkIHRvIHNlZSB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgY2hhbmdlLiBTbywgSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBxdWlja2x5IGZpbmQgdGhlIGBjaGVja19rZnVuY19hcmdzYCBmdW5jdGlvbiBhbmQgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIGBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUmAuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgaXMgY3J1Y2lhbCB0byBldmFsdWF0aW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZXN0cmljdGlvbi4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIHZlcmlmaWVyIHV0aWxpemVzIHRoYXQgYGFyZ190eXBlYCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBmb3JiaWRkaW5nIGEgZml4ZWQgb2Zmc2V0IGluIHRoaXMgc3BlY2lmaWMgc2NlbmFyaW8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xNDQxPXN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSB7XG4tLVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDYzLVx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIGRyb3AmIzM5O2RcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg6MTQ2NDpcdCAqICAgYnBmX3JlZmNvdW50X2FjcXVpcmUgKHZpYSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUiBhcmcgdHlwZSlcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgtMTQ2NS1cdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSByZWZjb3VudF9pbmNyJiMzOTtkIGFuZCB1c2Vcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5NjU9ZW51bSBrZnVuY19wdHJfYXJnX3R5cGUge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDk2Ny1cdEtGX0FSR19QVFJfVE9fQUxMT0NfQlRGX0lELCAgICAvKiBBbGxvY2F0ZWQgb2JqZWN0ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5Njg6XHRLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUiwgLyogUmVmY291bnRlZCBsb2NhbCBrcHRyICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5NjktXHRLRl9BUkdfUFRSX1RPX0RZTlBUUixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyNDM9Z2V0X2tmdW5jX3B0cl9hcmdfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKmNhbGxlcixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNzYtXHRpZiAoaXNfa2Z1bmNfYXJnX3JlZmNvdW50ZWRfa3B0cihtZXRhLVx1MDAzZWJ0ZiwgXHUwMDI2YXJnc1thcmddKSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTI3NzpcdFx0cmV0dXJuIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjc4LVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTkxMz1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjEzNy1cdFx0XHRicmVhaztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjEzODpcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjEzOS1cdFx0XHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQlRGX0lEO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjQwMC1cdFx0XHRicmVhaztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjQwMTpcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjQwMi1cdFx0XHRpZiAoIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctXHUwMDNldHlwZSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Nzg3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBCUEYgVmVyaWZpZXIgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgaG93IHRoZSBCUEYgdmVyaWZpZXIgZGVhbHMgd2l0aCBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgIGFyZ3VtZW50cyBwYXNzZWQgdG8ga2Z1bmNzLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaWYgdGhlcmUmIzM5O3MgYSBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJiMzOTtzIGxvZ2ljLCBlc3BlY2lhbGx5IGFyb3VuZCBob3cgaXQgdmFsaWRhdGVzIHRob3NlIGFyZ3VtZW50cywgaXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcsIGFuZCBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBgYnBmKClgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydC4KCk15IGZpcnN0IHRob3VnaHQgaXMsIHdoYXQga2Z1bmNzIGFyZSBldmVuICp1c2luZyogdGhpcyBhcmd1bWVudCB0eXBlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4gTHVja2lseSB0aGUgY29tbWVudCBtZW50aW9ucyB0aGF0IHRoaXMgYXJndW1lbnQgdHlwZSBpcyB1c2VkIHdpdGggYGJwZl9yZWZjb3VudF9hY3F1aXJlYC4gVGhhdCBnaXZlcyBtZSBhIGtleXdvcmQgdG8gZ3JlcCBmb3IuIExldCYjMzk7cyBzZWUgd2hhdCBwb3BzIHVwIHdoZW4gSSBzZWFyY2ggZm9yIHRoYXQuIEtub3dpbmcgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0JiMzOTtzIHBvdGVudGlhbGx5IGFmZmVjdGVkLiBUaW1lIHRvIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfcmVmY291bnRfYWNxdWlyZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oPTE0NDE9c3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjMtXHQgKiAgICAgUmVjb3JkIHRoZSBsb2NhbCBrcHRyIHR5cGUgdG8gYmUgZHJvcCYjMzk7ZFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxNDY0Olx0ICogICBicGZfcmVmY291bnRfYWNxdWlyZSAodmlhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZyB0eXBlKVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDY1LVx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIHJlZmNvdW50X2luY3ImIzM5O2QgYW5kIHVzZVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTI0NDk9X19icGZfa2Z1bmMgdm9pZCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwodm9pZCAqcF9fYWxsb2MsIHZvaWQgKm1ldGFfX2lnbilcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU0LS8qKlxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ1NTogKiBicGZfcmVmY291bnRfYWNxdWlyZSgpIC0gdHVybiBhIGxvY2FsIGtwdHIgaW50byBhbiBvd25pbmcgcmVmZXJlbmNlXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU2LSAqIEBwX19yZWZjb3VudGVkX2twdHI6IG5vbi1vd25pbmcgbG9jYWwga3B0clxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NjMtICovXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDY0Ol9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NjUte1xuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODAtXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDgxOl9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwodm9pZCAqcF9fcmVmY291bnRlZF9rcHRyLCB2b2lkICptZXRhX19pZ24pXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDgyLXtcbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODM6XHRyZXR1cm4gYnBmX3JlZmNvdW50X2FjcXVpcmUocF9fcmVmY291bnRlZF9rcHRyLCBtZXRhX19pZ24pO1xua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ4NC19XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgxMz1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODE2LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDk4OT1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTkzLVx0S0ZfYnBmX29ial9kcm9wLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTk0Olx0S0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NTpcdEtGX2JwZl9yZWZjb3VudF9hY3F1aXJlLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTk2LVx0S0ZfYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTA2Nj1CVEZfSUQoZnVuYywgYnBmX29ial9kcm9wKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY3OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY4OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA2OS1CVEZfSUQoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE3Nj1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4MS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4MjpzdGF0aWMgYm9vbCBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4My17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODQ6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODU6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExODYtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19rZnVuY19yZXRfbnVsbChzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTAte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjExOlx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXHUwMDNlZnVuY19pZCkgXHUwMDI2XHUwMDI2IG1ldGEtXHUwMDNlYXJnX293bmluZ19yZWYpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2MTc9c3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMC1cdCAgICAgICBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyhidGZfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2MjE6XHQgICAgICAgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoYnRmX2lkKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMi19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNzI3PXN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODE1LVx0XHRpbnNuX2F1eC1cdTAwM2VrcHRyX3N0cnVjdF9tZXRhID0gc3RydWN0X21ldGE7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4MTY6XHR9IGVsc2UgaWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXHUwMDNlZnVuY19pZCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjgxNy1cdFx0bWFya19yZWdfa25vd25femVybyhlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTE4LVx0XHQgICAgICFpc19icGZfcGVyY3B1X29ial9uZXdfa2Z1bmMobWV0YS5mdW5jX2lkKSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzExOTpcdFx0ICAgICAhaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS5mdW5jX2lkKSkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyMC1cdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7YWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSURcXG5cJiMzNDspO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTU3ND1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMi1cdFx0ICAgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyhkZXNjLVx1MDAzZWZ1bmNfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2MjM6XHRcdCAgIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXHUwMDNlZnVuY19pZCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyNC1cdFx0c3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqa3B0cl9zdHJ1Y3RfbWV0YSA9IGVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5rcHRyX3N0cnVjdF9tZXRhO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYzMi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYzMzpcdFx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXHUwMDNlZnVuY19pZCkgXHUwMDI2XHUwMDI2ICFrcHRyX3N0cnVjdF9tZXRhKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzQtXHRcdFx0dmVyaWZpZXJfYnVnKGVudiwgXCYjMzQ7a3B0cl9zdHJ1Y3RfbWV0YSBleHBlY3RlZCBhdCBpbnNuX2lkeCAlZFwmIzM0Oyxcbi0tXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oPTM4ND1zdHJ1Y3QgYnBmX3JiX25vZGUgKmJwZl9yYnRyZWVfZmlyc3Qoc3RydWN0IGJwZl9yYl9yb290ICpyb290KSBfX2tzeW07XG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oLTM4NS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmg6Mzg2OnZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwodm9pZCAqa3B0ciwgdm9pZCAqbWV0YSkgX19rc3ltO1xudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODc6I2RlZmluZSBicGZfcmVmY291bnRfYWNxdWlyZShrcHRyKSBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKGtwdHIsIE5VTEwpXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oLTM4OC1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmM9MzAzPWludCBCUEZfUFJPRyhicGZfZnFfZW5xdWV1ZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jLTM0NC1cdFx0aWYgKGZxX2Zsb3dfaXNfZGV0YWNoZWQoZmxvdykpIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfcWRpc2NfZnEuYzozNDU6XHRcdFx0Zmxvd19jb3B5ID0gYnBmX3JlZmNvdW50X2FjcXVpcmUoZmxvdyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ2LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmM9MjM0PWxvbmcgcmVmY291bnRfYWNxdWlyZV93aXRob3V0X3Vuc3Rhc2godm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmMtMjQ5LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYzoyNTA6XHRwID0gYnBmX3JlZmNvdW50X2FjcXVpcmUocy1cdTAwM2VzdGFzaGVkKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmMtMjUxLVx0aWYgKCFwKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9NTM9bG9uZyByYnRyZWVfc2VhcmNoKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTY0LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzo2NTpcdFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy02Ni1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTEwOC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM6MTA5Olx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xMTAtXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2Z2xvY2swKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jPTE1Nj1sb25nIHRlc3RfIyNvcCMjX3NwaW5sb2NrXyMjZG9sb2NrKHZvaWQgKmN0eClcdFx0XFxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTE2OC1cdG4gPSByYl9lbnRyeShyYl9uLCBzdHJ1Y3Qgbm9kZV9kYXRhLCByMCk7XHRcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzoxNjk6XHRuID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XHRcdFx0XFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTcwLVx0YnBmX3NwaW5fdW5sb2NrKFx1MDAyNmdsb2NrMCk7XHRcdFx0XFxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmM9MTU1PWxvbmcgcmJ0cmVlX3NlYXJjaF9rcHRyX3JlZih2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jLTE4Mi1cdFx0LyogVW51c2VkIHJlZmVyZW5jZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jOjE4MzpcdFx0dG5vZGVfbSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHRub2RlX3IpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jLTE4NC1cdFx0aWYgKCF0bm9kZV9tKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz03Mz1zdGF0aWMgbG9uZyBfX2luc2VydF9pbl90cmVlX2FuZF9saXN0KHN0cnVjdCBicGZfbGlzdF9oZWFkICpoZWFkLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04Mi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NC1cdG0tXHUwMDNla2V5ID0gMTIzO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDY9c3RhdGljIGxvbmcgX19zdGFzaF9tYXBfaW5zZXJ0X3RyZWUoaW50IGlkeCwgaW50IHZhbCwgc3RydWN0IGJwZl9yYl9yb290ICpyb290LFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMjAtXHRuLVx1MDAzZWtleSA9IHZhbDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMjE6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIyLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0zOTk9c3RhdGljIHN0cnVjdCBub2RlX2RhdGEgKl9fYWRkX2luX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTQwNy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo0MDg6XHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy00MDktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTc5Mz1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDItXHRicGZfcmJ0cmVlX2FkZChcdTAwMjZhcm9vdCwgXHUwMDI2bi1cdTAwM2Vub2RlLCBsZXNzX2EpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgwMzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDQtXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2YWxvY2spO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz04MTU9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyMi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MjM6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODI0LVx0bS1cdTAwM2VrZXkgPSAyO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz04NTI9bG9uZyByYnRyZWVfd3Jvbmdfb3duZXJfcmVtb3ZlX2ZhaWxfYTEodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NTgtXHRcdHJldHVybiAxO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjg1OTpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NjAtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwMDI9c3RhdGljIGludCBfX2luc2VydF9pbl9saXN0KHN0cnVjdCBicGZfbGlzdF9oZWFkICpoZWFkLCBzdHJ1Y3QgYnBmX3NwaW5fbG9jayAqbG9jayxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMDExOlx0bm9kZV9yZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShub2RlX25ldyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMi1cdG5vZGVfb2xkID0gYnBmX2twdHJfeGNoZyhub2RlLCBub2RlX25ldyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9NTc9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy02Ny1cdC8qIG0gYmVjb21lcyBhbiBvd25pbmcgcmVmIGJ1dCBpcyBuZXZlciBkcm9wJiMzOTtkIG9yIGFkZGVkIHRvIGEgdHJlZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6Njg6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy02OS1cdGJwZl9zcGluX3VubG9jayhcdTAwMjZnbG9jayk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9Nzk9bG9uZyByZWZjb3VudF9hY3F1aXJlX21heWJlX251bGwodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg2LVx0ICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzo4NzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg4LVx0aWYgKG0pXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9OTg9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTA2LVx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AmIzM5O2Qgb3IgYWRkZWQgdG8gYSB0cmVlICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMDc6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMDgtXHRtLVx1MDAzZWtleSA9IDI7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9MTE5PWxvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMzUtXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMzY6XHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShsaXN0X25vZGUpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTM3LVx0aWYgKHJlZilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz0xNDU9bG9uZyByZWZjb3VudF9hY3F1aXJlX3JidHJlZV9ub2RlX29mZnNldCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTY1LVx0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxNjY6XHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShyYl9ub2RlKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTE2Ny1cdGlmIChyZWYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyODgKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZXN0cmljdGlvbiBvbiBgYnBmX3JlZmNvdW50X2FjcXVpcmVgIHdpdGggUmVmY291bnRlZCBLUFRScyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGBicGZfcmVmY291bnRfYWNxdWlyZWAuIFRoZSBjb3JlIGNoYW5nZSBjZW50ZXJzIGFyb3VuZCB0aGUgYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCBhcmd1bWVudCB0eXBlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHZlcmlmaWVyLiBJdCBzZWVtcyB0aGUgY29tbWl0IGV4cGxpY2l0bHkgbW9kaWZpZXMgYGNoZWNrX2tmdW5jX2FyZ3NgIHRvIGVuc3VyZSBgYnRmX2lkX2ZpeGVkX29mZl9va2AgaXMgYGZhbHNlYCB3aGVuIGRlYWxpbmcgd2l0aCBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgLiBUaGlzIGlzIHByZXR0eSBjcnVjaWFsLiBXaGF0IHRoaXMgKmFjdHVhbGx5KiBtZWFucyBpcyB0aGF0IHdlJiMzOTtyZSBwcmV2ZW50aW5nIGBicGZfcmVmY291bnRfYWNxdWlyZWAgZnJvbSBiZWluZyBjYWxsZWQgd2l0aCBhbnkgbm9uLXplcm8gZml4ZWQgb2Zmc2V0LCB3aGljaCBpcyBieSBkZXNpZ24sIG9idmlvdXNseSwgZm9yIHNlY3VyaXR5IHJlYXNvbnMuCgpOb3csIHRoZSBhZGRlZCB0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNgIGFyZSBhIG5pY2UgY29uZmlybWF0aW9uIG9mIHRoaXMgcmVzdHJpY3Rpb24uIFBhc3NpbmcgdGhpbmdzIGxpa2UgYGxpc3Rfbm9kZWAgb3IgYHJiX25vZGVgLCBib3RoIG9mIHdoaWNoIGhhdmUgdGhvc2UgZm9yYmlkZGVuIG9mZnNldHMgd2l0aGluIHRoZSBgc3RydWN0IG5vZGVfcmVmY291bnRlZGAgc3RydWN0dXJlLCB3aWxsIG5vdyBiZSBjb3JyZWN0bHkgcmVqZWN0ZWQgZHVyaW5nIHZlcmlmaWNhdGlvbi4gVGhpcyBpcyBhIGdvb2Qgc2FuaXR5IGNoZWNrIGFuZCBhbHNvIGdpdmVzIGV4YW1wbGVzIG9mIHRoZSBmb3JiaWRkZW4gb3BlcmF0aW9ucy4KClRoZXJlZm9yZSwgdGhlIGtleSBwaWVjZXMgb2YgY29kZSBJIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhpcyBhcmU6IGBjaGVja19rZnVuY19hcmdzYCwgYF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZmAsIGFuZCBvYnZpb3VzbHksIGBicGZfcmVmY291bnRfYWNxdWlyZWAgaXRzZWxmLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgdmVyaWZpZXIgbWFrZXMgc3VyZSB0aGUgb2Zmc2V0IGlzIHplcm8uCgpJIGtub3cgdGhlIGNvZGUgZm9yIHRoZXNlIGZ1bmN0aW9ucyBpcyBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYGtlcm5lbC9icGYvaGVscGVycy5jYCwgc28gSSYjMzk7bGwgY2hlY2sgdGhlcmUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGUgQlBGIHN1YnN5c3RlbSBpcyBlbmFibGVkIHZpYSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIGZvciB0aGF0LCBhbmQgcGVyaGFwcyBsb29rIGFyb3VuZCBga2VybmVsL2JwZi9LY29uZmlnYCBvciBldmVuIGBpbml0L0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIG9yIGZsYWdzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhpcyBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5LiBKdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxNjkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQlBGIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgQlBGIHN5c2NhbGxzLCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaW1tZWRpYXRlbHkgc3ByaW5ncyB0byBtaW5kIGFzIHRoZSBwaXZvdGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGJyb2FkZXIgY29udGV4dCBoZXJlLiBJJiMzOTttIHdvbmRlcmluZyBpZiBgYnBmX3JlZmNvdW50X2FjcXVpcmVgIGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIGFsd2F5cyBhdmFpbGFibGUsIG9yIGlmIGl0JiMzOTtzIGRlcGVuZGVudCBvbiB0aGUgcHJvZ3JhbSB0eXBlIG9yIHNvbWUgb3RoZXIgZmFjdG9yLiBUbyBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkgcmVhbGx5IG5lZWQgdG8gZHJpbGwgZG93biBhbmQgZXhhbWluZSB0aGUgaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaW4gYGtlcm5lbC9icGYvaGVscGVycy5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYW5zd2VyIGlzIGdvaW5nIHRvIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfcmVmY291bnRfYWNxdWlyZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oPTE0NDE9c3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjMtXHQgKiAgICAgUmVjb3JkIHRoZSBsb2NhbCBrcHRyIHR5cGUgdG8gYmUgZHJvcCYjMzk7ZFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxNDY0Olx0ICogICBicGZfcmVmY291bnRfYWNxdWlyZSAodmlhIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZyB0eXBlKVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDY1LVx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIHJlZmNvdW50X2luY3ImIzM5O2QgYW5kIHVzZVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTI0NDk9X19icGZfa2Z1bmMgdm9pZCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwodm9pZCAqcF9fYWxsb2MsIHZvaWQgKm1ldGFfX2lnbilcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU0LS8qKlxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ1NTogKiBicGZfcmVmY291bnRfYWNxdWlyZSgpIC0gdHVybiBhIGxvY2FsIGtwdHIgaW50byBhbiBvd25pbmcgcmVmZXJlbmNlXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU2LSAqIEBwX19yZWZjb3VudGVkX2twdHI6IG5vbi1vd25pbmcgbG9jYWwga3B0clxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NjMtICovXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDY0Ol9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0NjUte1xuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODAtXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDgxOl9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwodm9pZCAqcF9fcmVmY291bnRlZF9rcHRyLCB2b2lkICptZXRhX19pZ24pXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDgyLXtcbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODM6XHRyZXR1cm4gYnBmX3JlZmNvdW50X2FjcXVpcmUocF9fcmVmY291bnRlZF9rcHRyLCBtZXRhX19pZ24pO1xua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ4NC19XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgxMz1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODE2LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDk4OT1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTkzLVx0S0ZfYnBmX29ial9kcm9wLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTk0Olx0S0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NTpcdEtGX2JwZl9yZWZjb3VudF9hY3F1aXJlLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTk2LVx0S0ZfYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTA2Nj1CVEZfSUQoZnVuYywgYnBmX29ial9kcm9wKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY3OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY4OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA2OS1CVEZfSUQoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE3Nj1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4MS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4MjpzdGF0aWMgYm9vbCBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4My17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODQ6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODU6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExODYtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19rZnVuY19yZXRfbnVsbChzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTAte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjExOlx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXHUwMDNlZnVuY19pZCkgXHUwMDI2XHUwMDI2IG1ldGEtXHUwMDNlYXJnX293bmluZ19yZWYpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2MTc9c3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMC1cdCAgICAgICBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyhidGZfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2MjE6XHQgICAgICAgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoYnRmX2lkKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMi19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNzI3PXN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODE1LVx0XHRpbnNuX2F1eC1cdTAwM2VrcHRyX3N0cnVjdF9tZXRhID0gc3RydWN0X21ldGE7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4MTY6XHR9IGVsc2UgaWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXHUwMDNlZnVuY19pZCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjgxNy1cdFx0bWFya19yZWdfa25vd25femVybyhlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTE4LVx0XHQgICAgICFpc19icGZfcGVyY3B1X29ial9uZXdfa2Z1bmMobWV0YS5mdW5jX2lkKSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzExOTpcdFx0ICAgICAhaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS5mdW5jX2lkKSkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyMC1cdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7YWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSURcXG5cJiMzNDspO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTU3ND1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMi1cdFx0ICAgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyhkZXNjLVx1MDAzZWZ1bmNfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2MjM6XHRcdCAgIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXHUwMDNlZnVuY19pZCkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyNC1cdFx0c3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqa3B0cl9zdHJ1Y3RfbWV0YSA9IGVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5rcHRyX3N0cnVjdF9tZXRhO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYzMi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYzMzpcdFx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXHUwMDNlZnVuY19pZCkgXHUwMDI2XHUwMDI2ICFrcHRyX3N0cnVjdF9tZXRhKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzQtXHRcdFx0dmVyaWZpZXJfYnVnKGVudiwgXCYjMzQ7a3B0cl9zdHJ1Y3RfbWV0YSBleHBlY3RlZCBhdCBpbnNuX2lkeCAlZFwmIzM0Oyxcbi0tXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oPTM4ND1zdHJ1Y3QgYnBmX3JiX25vZGUgKmJwZl9yYnRyZWVfZmlyc3Qoc3RydWN0IGJwZl9yYl9yb290ICpyb290KSBfX2tzeW07XG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oLTM4NS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmg6Mzg2OnZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwodm9pZCAqa3B0ciwgdm9pZCAqbWV0YSkgX19rc3ltO1xudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODc6I2RlZmluZSBicGZfcmVmY291bnRfYWNxdWlyZShrcHRyKSBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKGtwdHIsIE5VTEwpXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oLTM4OC1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmM9MzAzPWludCBCUEZfUFJPRyhicGZfZnFfZW5xdWV1ZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jLTM0NC1cdFx0aWYgKGZxX2Zsb3dfaXNfZGV0YWNoZWQoZmxvdykpIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfcWRpc2NfZnEuYzozNDU6XHRcdFx0Zmxvd19jb3B5ID0gYnBmX3JlZmNvdW50X2FjcXVpcmUoZmxvdyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ2LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmM9MjM0PWxvbmcgcmVmY291bnRfYWNxdWlyZV93aXRob3V0X3Vuc3Rhc2godm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmMtMjQ5LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYzoyNTA6XHRwID0gYnBmX3JlZmNvdW50X2FjcXVpcmUocy1cdTAwM2VzdGFzaGVkKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoLmMtMjUxLVx0aWYgKCFwKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9NTM9bG9uZyByYnRyZWVfc2VhcmNoKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTY0LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzo2NTpcdFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy02Ni1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTEwOC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM6MTA5Olx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xMTAtXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2Z2xvY2swKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jPTE1Nj1sb25nIHRlc3RfIyNvcCMjX3NwaW5sb2NrXyMjZG9sb2NrKHZvaWQgKmN0eClcdFx0XFxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTE2OC1cdG4gPSByYl9lbnRyeShyYl9uLCBzdHJ1Y3Qgbm9kZV9kYXRhLCByMCk7XHRcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzoxNjk6XHRuID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XHRcdFx0XFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTcwLVx0YnBmX3NwaW5fdW5sb2NrKFx1MDAyNmdsb2NrMCk7XHRcdFx0XFxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaF9rcHRyLmM9MTU1PWxvbmcgcmJ0cmVlX3NlYXJjaF9rcHRyX3JlZih2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jLTE4Mi1cdFx0LyogVW51c2VkIHJlZmVyZW5jZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jOjE4MzpcdFx0dG5vZGVfbSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHRub2RlX3IpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2hfa3B0ci5jLTE4NC1cdFx0aWYgKCF0bm9kZV9tKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz03Mz1zdGF0aWMgbG9uZyBfX2luc2VydF9pbl90cmVlX2FuZF9saXN0KHN0cnVjdCBicGZfbGlzdF9oZWFkICpoZWFkLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04Mi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NC1cdG0tXHUwMDNla2V5ID0gMTIzO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDY9c3RhdGljIGxvbmcgX19zdGFzaF9tYXBfaW5zZXJ0X3RyZWUoaW50IGlkeCwgaW50IHZhbCwgc3RydWN0IGJwZl9yYl9yb290ICpyb290LFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMjAtXHRuLVx1MDAzZWtleSA9IHZhbDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMjE6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIyLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0zOTk9c3RhdGljIHN0cnVjdCBub2RlX2RhdGEgKl9fYWRkX2luX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTQwNy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo0MDg6XHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy00MDktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTc5Mz1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDItXHRicGZfcmJ0cmVlX2FkZChcdTAwMjZhcm9vdCwgXHUwMDI2bi1cdTAwM2Vub2RlLCBsZXNzX2EpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgwMzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDQtXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2YWxvY2spO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz04MTU9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyMi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MjM6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODI0LVx0bS1cdTAwM2VrZXkgPSAyO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz04NTI9bG9uZyByYnRyZWVfd3Jvbmdfb3duZXJfcmVtb3ZlX2ZhaWxfYTEodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NTgtXHRcdHJldHVybiAxO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjg1OTpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NjAtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwMDI9c3RhdGljIGludCBfX2luc2VydF9pbl9saXN0KHN0cnVjdCBicGZfbGlzdF9oZWFkICpoZWFkLCBzdHJ1Y3QgYnBmX3NwaW5fbG9jayAqbG9jayxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMDExOlx0bm9kZV9yZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShub2RlX25ldyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMi1cdG5vZGVfb2xkID0gYnBmX2twdHJfeGNoZyhub2RlLCBub2RlX25ldyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9NTc9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy02Ny1cdC8qIG0gYmVjb21lcyBhbiBvd25pbmcgcmVmIGJ1dCBpcyBuZXZlciBkcm9wJiMzOTtkIG9yIGFkZGVkIHRvIGEgdHJlZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6Njg6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy02OS1cdGJwZl9zcGluX3VubG9jayhcdTAwMjZnbG9jayk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9Nzk9bG9uZyByZWZjb3VudF9hY3F1aXJlX21heWJlX251bGwodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg2LVx0ICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzo4NzpcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg4LVx0aWYgKG0pXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9OTg9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTA2LVx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AmIzM5O2Qgb3IgYWRkZWQgdG8gYSB0cmVlICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMDc6XHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMDgtXHRtLVx1MDAzZWtleSA9IDI7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9MTE5PWxvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMzUtXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMzY6XHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShsaXN0X25vZGUpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTM3LVx0aWYgKHJlZilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz0xNDU9bG9uZyByZWZjb3VudF9hY3F1aXJlX3JidHJlZV9ub2RlX29mZnNldCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTY1LVx0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxNjY6XHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShyYl9ub2RlKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTE2Ny1cdGlmIChyZWYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDAyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTM1CgkJCQkJCQlvdXRwdXQ6IDE0NwoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9uIGhlcmUgYm9pbHMgZG93biB0byBgQlBGX1NZU0NBTExgLiBJIG5lZWQgdG8gc3ludGhlc2l6ZSBhIHN1bW1hcnkgb2YgdGhlIGFwcHJvYWNoIGZvciB0aGUgZnV6emluZy4KCk15IHRoaW5raW5nIGlzIHRoaXM6IFRoZSBrZXkgYXNwZWN0cyB0byBmdXp6aW5nIGFyZSBzdHJhaWdodGZvcndhcmQsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIG9mIHRoZSBvdmVyYWxsIGFwcHJvYWNoIHRvIHRoaXMgcGFydGljdWxhciBwYXRjaC4KCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlLCBkZWZpbml0ZWx5LiBUaGlzIGlzIGNyaXRpY2FsIEJQRiB2ZXJpZmllciBsb2dpYywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwuIENoYW5nZXMgYXQgdGhpcyBsZXZlbCBhcmUgYWx3YXlzIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4KKiAgICoqRm9jdXNTeW1ib2xzOioqIEkmIzM5O2xsIGJlIHRhcmdldGluZyBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCwgYGNoZWNrX2tmdW5jX2FyZ3NgLCBhbmQgYGJwZl9yZWZjb3VudF9hY3F1aXJlYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhlIG9mZnNldCByZXN0cmljdGlvbiBmb3IgYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCBhcmd1bWVudHMuIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgdGVzdCB0aGUgYm91bmRhcnkgY29uZGl0aW9ucy4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBDb25maXJtZWQ6IGBCUEZfU1lTQ0FMTGAuIFRoaXMgaXMgaG93IHVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCB0aGUgdmVyaWZpZXIsIHNvIGl0JiMzOTtzIHRoZSByaWdodCBmb2N1cy4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpcyBhbHRlcmluZyB0aGUgdmVyaWZpZXImIzM5O3MgYmVoYXZpb3IgcmVnYXJkaW5nIG9mZnNldCByZXN0cmljdGlvbnMgZm9yIGEgc3BlY2lmaWMgdHlwZSBvZiBrZXJuZWwgZnVuY3Rpb24gYXJndW1lbnQuIFRoZSBhaW0gaXMgdG8gbWFrZSBzdXJlIGl0IGZ1bmN0aW9ucyBjb3JyZWN0bHksIHJlamVjdGluZyBpbmNvcnJlY3Qgb2Zmc2V0cyBhbmQgYWxsb3dpbmcgdmFsaWQgb2Zmc2V0cy4gSSBoYXZlIHRvIGZ1enogdG8gc2VlIHRoZSBwYXRjaCYjMzk7cyBjaGFuZ2VzIGRvbiYjMzk7dCBpbnRyb2R1Y2UgZXJyb3JzIGluIHZhbGlkIGNhc2VzIG9yIG1pc3MgaW5jb3JyZWN0IGNhc2VzLiBUaGlzIGNoYW5nZSBpcyBzZWN1cml0eS1zZW5zaXRpdmUsIHNvIHRob3JvdWdoIHRlc3RpbmcgaXMgaW1wb3J0YW50LgoKSSYjMzk7bGwgYmUgdXNpbmcgYHNldC1yZXN1bHRzYCB0byByZWNvcmQgYW5kIHJldHVybiB0aGUgZnV6emluZyBvdXRjb21lcy4gVGhpcyBzdW1tYXJpemVzIHRoZSBmdXp6aW5nIHN0cmF0ZWd5IHByZXR0eSB3ZWxsLCBzbyBJJiMzOTttIG5vdyByZWFkeSB0byBzdGFydCBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYmIzM0OywKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfYXJncyYjMzQ7LAogICAgJiMzNDticGZfcmVmY291bnRfYWNxdWlyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlc3RyaWN0IHRoZSBhbGxvd2VkIG9mZnNldCBmb3IgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJndW1lbnRzIHRvIDAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgcmVqZWN0cyBpbnZhbGlkIG9mZnNldHMgd2l0aG91dCBicmVha2luZyB2YWxpZCB1c2UgY2FzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19jaGVja19mdW5jX2FyZ19yZWdfb2ZmJiMzNDssCiAgICAmIzM0O2NoZWNrX2tmdW5jX2FyZ3MmIzM0OywKICAgICYjMzQ7YnBmX3JlZmNvdW50X2FjcXVpcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZXN0cmljdCB0aGUgYWxsb3dlZCBvZmZzZXQgZm9yIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZ3VtZW50cyB0byAwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IHJlamVjdHMgaW52YWxpZCBvZmZzZXRzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgdXNlIGNhc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDI6NDc6NTAuMTIwNDg5NTgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQxMDkzOTIyMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZcIixcbiAgICBcImNoZWNrX2tmdW5jX2FyZ3NcIixcbiAgICBcImJwZl9yZWZjb3VudF9hY3F1aXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZXN0cmljdCB0aGUgYWxsb3dlZCBvZmZzZXQgZm9yIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZ3VtZW50cyB0byAwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IHJlamVjdHMgaW52YWxpZCBvZmZzZXRzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgdXNlIGNhc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0Nzo1MC4xMjA0OTgzNTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDg3MTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFjZjBhZTgyM2RkMzc3YWNlZTcxZWNhMGU5ZGZlM2YyNGYxZTgwNDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDI6NDc6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmY2NWVmZjI4ZWNkMjVlIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC03OTkwLDkgKzc5OTAsMTAgQEAgcmVnX2ZpbmRfZmllbGRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIHMzMiBvZmYsIHUzMiBmaWVsZHMpXFxuIFxcdHJldHVybiBmaWVsZDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tXFx0XFx0XFx0XFx0ICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSlcXG4rc3RhdGljIGludCBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4rXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuK1xcdFxcdFxcdFxcdCAgICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSxcXG4rXFx0XFx0XFx0XFx0ICAgIGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vaylcXG4ge1xcbiBcXHR1MzIgdHlwZSA9IHJlZy1cXHUwMDNldHlwZTtcXG4gXFxuQEAgLTgwNDksMTIgKzgwNTAsMTEgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdGNhc2UgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQyB8IE5PTl9PV05fUkVGIHwgTUVNX1JDVTpcXG4gXFx0XFx0LyogV2hlbiByZWZlcmVuY2VkIFBUUl9UT19CVEZfSUQgaXMgcGFzc2VkIHRvIHJlbGVhc2UgZnVuY3Rpb24sXFxuIFxcdFxcdCAqIGl0cyBmaXhlZCBvZmZzZXQgbXVzdCBiZSAwLiBJbiB0aGUgb3RoZXIgY2FzZXMsIGZpeGVkIG9mZnNldFxcbi1cXHRcXHQgKiBjYW4gYmUgbm9uLXplcm8uIFRoaXMgd2FzIGFscmVhZHkgY2hlY2tlZCBhYm92ZS4gU28gcGFzc1xcbi1cXHRcXHQgKiBmaXhlZF9vZmZfb2sgYXMgdHJ1ZSB0byBhbGxvdyBmaXhlZCBvZmZzZXQgZm9yIGFsbCBvdGhlclxcbi1cXHRcXHQgKiBjYXNlcy4gdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZVxcbi1cXHRcXHQgKiBzdGlsbCBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cXG4rXFx0XFx0ICogY2FuIGJlIG5vbi16ZXJvIHVubGVzcyB0aGUgY2FsbGVyIHJlcXVpcmVzIG90aGVyd2lzZS5cXG4rXFx0XFx0ICogdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZSBzdGlsbFxcbitcXHRcXHQgKiBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgdHJ1ZSk7XFxuK1xcdFxcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgYnRmX2lkX2ZpeGVkX29mZl9vayk7XFxuIFxcdGNhc2UgUFRSX1RPX0NUWDpcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogQWxsb3cgZml4ZWQgYW5kIHZhcmlhYmxlIG9mZnNldHMgZm9yIHN5c2NhbGwgY29udGV4dCwgYnV0XFxuQEAgLTgwNzAsNiArODA3MCwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0fVxcbiB9XFxuIFxcbitzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4rXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbitcXHRcXHRcXHRcXHQgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKVxcbit7XFxuK1xcdHJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgY2hlY2tfYXJnX2NvbnN0X3N0cihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRcXHQgICAgICAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubylcXG4ge1xcbkBAIC0xMTk0MSw2ICsxMTk0OCw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXFxuIFxcdFxcdGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlID0gQVJHX0RPTlRDQVJFO1xcbiBcXHRcXHRhcmdub190IGFyZ25vID0gYXJnbm9fZnJvbV9hcmcoaSArIDEpO1xcbiBcXHRcXHRpbnQgcmVnbm8gPSByZWdfZnJvbV9hcmdubyhhcmdubyk7XFxuK1xcdFxcdGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vayA9IHRydWU7XFxuIFxcdFxcdHUzMiByZWZfaWQsIHR5cGVfc2l6ZTtcXG4gXFx0XFx0Ym9vbCBpc19yZXRfYnVmX3N6ID0gZmFsc2U7XFxuIFxcdFxcdGludCBrZl9hcmdfdHlwZTtcXG5AQCAtMTIxMTQsNyArMTIxMjIsNiBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xcbiBcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fTUVNOlxcbiBcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fTUVNX1NJWkU6XFxuIFxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19DQUxMQkFDSzpcXG4tXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NPTlNUX1NUUjpcXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1dPUktRVUVVRTpcXG4gXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1RJTUVSOlxcbkBAIC0xMjEyOCw2ICsxMjEzNSwxMCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xcbiBcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fQ1RYOlxcbiBcXHRcXHRcXHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQ1RYO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUjpcXG4rXFx0XFx0XFx0YXJnX3R5cGUgPSBBUkdfUFRSX1RPX0JURl9JRDtcXG4rXFx0XFx0XFx0YnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlO1xcbitcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG4gXFx0XFx0XFx0dmVyaWZpZXJfYnVnKGVudiwgXFxcInVua25vd24ga2Z1bmMgYXJnIHR5cGUgJWRcXFwiLCBrZl9hcmdfdHlwZSk7XFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbkBAIC0xMjEzNSw3ICsxMjE0Niw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXFxuIFxcbiBcXHRcXHRpZiAocmVnbm8gPT0gbWV0YS1cXHUwMDNlcmVsZWFzZV9yZWdubylcXG4gXFx0XFx0XFx0YXJnX3R5cGUgfD0gT0JKX1JFTEVBU0U7XFxuLVxcdFxcdHJldCA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSk7XFxuK1xcdFxcdHJldCA9IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgYnRmX2lkX2ZpeGVkX29mZl9vayk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xcbmluZGV4IDcyNDdhMjBjMGEzYmY1Li43N2NkYTVjYTIzNjAxMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jXFxuQEAgLTEzLDEyICsxMywyMiBAQCBzdHJ1Y3Qgbm9kZV9hY3F1aXJlIHtcXG4gXFx0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcXG4gfTtcXG4gXFxuK3N0cnVjdCBub2RlX3JlZmNvdW50ZWQge1xcbitcXHRsb25nIGtleTtcXG4rXFx0c3RydWN0IGJwZl9yYl9ub2RlIHJiO1xcbitcXHRzdHJ1Y3QgYnBmX2xpc3Rfbm9kZSBsaXN0O1xcbitcXHRzdHJ1Y3QgYnBmX3JlZmNvdW50IHJlZmNvdW50O1xcbit9O1xcbitcXG4gZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX2xvY2sodm9pZCkgX19rc3ltO1xcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfdW5sb2NrKHZvaWQpIF9fa3N5bTtcXG4gXFxuICNkZWZpbmUgcHJpdmF0ZShuYW1lKSBTRUMoXFxcIi5kYXRhLlxcXCIgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxcbiBwcml2YXRlKEEpIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGdsb2NrO1xcbiBwcml2YXRlKEEpIHN0cnVjdCBicGZfcmJfcm9vdCBncm9vdCBfX2NvbnRhaW5zKG5vZGVfYWNxdWlyZSwgbm9kZSk7XFxuK3ByaXZhdGUoQikgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jaztcXG4rcHJpdmF0ZShCKSBzdHJ1Y3QgYnBmX3JiX3Jvb3Qgcm9vdCBfX2NvbnRhaW5zKG5vZGVfcmVmY291bnRlZCwgcmIpO1xcbitwcml2YXRlKEIpIHN0cnVjdCBicGZfbGlzdF9oZWFkIGhlYWQgX19jb250YWlucyhub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xcbiBcXG4gc3RhdGljIGJvb2wgbGVzcyhzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYilcXG4ge1xcbkBAIC0zMSw2ICs0MSwxNyBAQCBzdGF0aWMgYm9vbCBsZXNzKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxcbiBcXHRyZXR1cm4gbm9kZV9hLVxcdTAwM2VrZXkgXFx1MDAzYyBub2RlX2ItXFx1MDAzZWtleTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgbGVzc19yZWZjb3VudGVkKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxcbit7XFxuK1xcdHN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGVfYTtcXG4rXFx0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZV9iO1xcbitcXG4rXFx0bm9kZV9hID0gY29udGFpbmVyX29mKGEsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIHJiKTtcXG4rXFx0bm9kZV9iID0gY29udGFpbmVyX29mKGIsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIHJiKTtcXG4rXFxuK1xcdHJldHVybiBub2RlX2EtXFx1MDAzZWtleSBcXHUwMDNjIG5vZGVfYi1cXHUwMDNla2V5O1xcbit9XFxuK1xcbiBTRUMoXFxcIj90Y1xcXCIpXFxuIF9fZmFpbHVyZSBfX21zZyhcXFwiVW5yZWxlYXNlZCByZWZlcmVuY2UgaWQ9NCBhbGxvY19pbnNuPXt7WzAtOV0rfX1cXFwiKVxcbiBsb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxcbkBAIC05Myw2ICsxMTQsNjIgQEAgbG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitTRUMoXFxcIj90Y1xcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjFcXFwiKVxcbitsb25nIHJlZmNvdW50X2FjcXVpcmVfbGlzdF9ub2RlX29mZnNldCh2b2lkICpjdHgpXFxuK3tcXG4rXFx0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7XFxuK1xcdHN0cnVjdCBicGZfbGlzdF9ub2RlICpsaXN0X25vZGU7XFxuK1xcbitcXHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XFxuK1xcdGlmICghbm9kZSlcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcbitcXHRicGZfc3Bpbl9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0YnBmX2xpc3RfcHVzaF9mcm9udChcXHUwMDI2aGVhZCwgXFx1MDAyNm5vZGUtXFx1MDAzZWxpc3QpO1xcbitcXHRsaXN0X25vZGUgPSBicGZfbGlzdF9wb3BfZnJvbnQoXFx1MDAyNmhlYWQpO1xcbitcXHRicGZfc3Bpbl91bmxvY2soXFx1MDAyNmxvY2spO1xcbitcXHRpZiAoIWxpc3Rfbm9kZSlcXG4rXFx0XFx0cmV0dXJuIDI7XFxuK1xcbitcXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XFxuK1xcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XFxuK1xcdGlmIChyZWYpXFxuK1xcdFxcdGJwZl9vYmpfZHJvcChyZWYpO1xcbitcXHRicGZfb2JqX2Ryb3AoYmFzZSk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcIj90Y1xcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiZGVyZWZlcmVuY2Ugb2YgbW9kaWZpZWQgcHRyXyBwdHIgUjFcXFwiKVxcbitsb25nIHJlZmNvdW50X2FjcXVpcmVfcmJ0cmVlX25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcXG4re1xcbitcXHRzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkICpub2RlLCAqYmFzZSwgKnJlZjtcXG4rXFx0c3RydWN0IGJwZl9yYl9ub2RlICpyYl9ub2RlO1xcbitcXG4rXFx0bm9kZSA9IGJwZl9vYmpfbmV3KHR5cGVvZigqbm9kZSkpO1xcbitcXHRpZiAoIW5vZGUpXFxuK1xcdFxcdHJldHVybiAxO1xcbitcXG4rXFx0bm9kZS1cXHUwMDNla2V5ID0gMTtcXG4rXFxuK1xcdGJwZl9zcGluX2xvY2soXFx1MDAyNmxvY2spO1xcbitcXHRicGZfcmJ0cmVlX2FkZChcXHUwMDI2cm9vdCwgXFx1MDAyNm5vZGUtXFx1MDAzZXJiLCBsZXNzX3JlZmNvdW50ZWQpO1xcbitcXHRyYl9ub2RlID0gYnBmX3JidHJlZV9maXJzdChcXHUwMDI2cm9vdCk7XFxuK1xcdGlmIChyYl9ub2RlKVxcbitcXHRcXHRyYl9ub2RlID0gYnBmX3JidHJlZV9yZW1vdmUoXFx1MDAyNnJvb3QsIHJiX25vZGUpO1xcbitcXHRicGZfc3Bpbl91bmxvY2soXFx1MDAyNmxvY2spO1xcbitcXHRpZiAoIXJiX25vZGUpXFxuK1xcdFxcdHJldHVybiAyO1xcbitcXG4rXFx0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XFxuK1xcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHJiX25vZGUpO1xcbitcXHRpZiAocmVmKVxcbitcXHRcXHRicGZfb2JqX2Ryb3AocmVmKTtcXG4rXFx0YnBmX29ial9kcm9wKGJhc2UpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gU0VDKFxcXCI/ZmVudHJ5LnMvXFxcIiBTWVNfUFJFRklYIFxcXCJzeXNfZ2V0cGdpZFxcXCIpXFxuIF9fZmFpbHVyZSBfX21zZyhcXFwiZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrXFxcIilcXG4gaW50IEJQRl9QUk9HKHJidHJlZV9mYWlsX3NsZWVwYWJsZV9sb2NrX2Fjcm9zc19yY3UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDAyOjQ3OjUwLjczMjU3NDQ1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0OTcyOTU2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZcIixcbiAgICBcImNoZWNrX2tmdW5jX2FyZ3NcIixcbiAgICBcImJwZl9yZWZjb3VudF9hY3F1aXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZXN0cmljdCB0aGUgYWxsb3dlZCBvZmZzZXQgZm9yIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZ3VtZW50cyB0byAwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IHJlamVjdHMgaW52YWxpZCBvZmZzZXRzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgdXNlIGNhc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFjZjBhZTgyM2RkMzc3YWNlZTcxZWNhMGU5ZGZlM2YyNGYxZTgwNDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAwMjo0Nzo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmY2NWVmZjI4ZWNkMjVlIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC03OTkwLDkgKzc5OTAsMTAgQEAgcmVnX2ZpbmRfZmllbGRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIHMzMiBvZmYsIHUzMiBmaWVsZHMpXG4gXHRyZXR1cm4gZmllbGQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLVx0XHRcdFx0ICBlbnVtIGJwZl9hcmdfdHlwZSBhcmdfdHlwZSlcbitzdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuK1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4rXHRcdFx0XHQgICAgZW51bSBicGZfYXJnX3R5cGUgYXJnX3R5cGUsXG4rXHRcdFx0XHQgICAgYm9vbCBidGZfaWRfZml4ZWRfb2ZmX29rKVxuIHtcbiBcdHUzMiB0eXBlID0gcmVnLVx1MDAzZXR5cGU7XG4gXG5AQCAtODA0OSwxMiArODA1MCwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdGNhc2UgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQyB8IE5PTl9PV05fUkVGIHwgTUVNX1JDVTpcbiBcdFx0LyogV2hlbiByZWZlcmVuY2VkIFBUUl9UT19CVEZfSUQgaXMgcGFzc2VkIHRvIHJlbGVhc2UgZnVuY3Rpb24sXG4gXHRcdCAqIGl0cyBmaXhlZCBvZmZzZXQgbXVzdCBiZSAwLiBJbiB0aGUgb3RoZXIgY2FzZXMsIGZpeGVkIG9mZnNldFxuLVx0XHQgKiBjYW4gYmUgbm9uLXplcm8uIFRoaXMgd2FzIGFscmVhZHkgY2hlY2tlZCBhYm92ZS4gU28gcGFzc1xuLVx0XHQgKiBmaXhlZF9vZmZfb2sgYXMgdHJ1ZSB0byBhbGxvdyBmaXhlZCBvZmZzZXQgZm9yIGFsbCBvdGhlclxuLVx0XHQgKiBjYXNlcy4gdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZVxuLVx0XHQgKiBzdGlsbCBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbitcdFx0ICogY2FuIGJlIG5vbi16ZXJvIHVubGVzcyB0aGUgY2FsbGVyIHJlcXVpcmVzIG90aGVyd2lzZS5cbitcdFx0ICogdmFyX29mZiBhbHdheXMgbXVzdCBiZSAwIGZvciBQVFJfVE9fQlRGX0lELCBoZW5jZSB3ZSBzdGlsbFxuK1x0XHQgKiBuZWVkIHRvIGRvIGNoZWNrcyBpbnN0ZWFkIG9mIHJldHVybmluZy5cbiBcdFx0ICovXG4tXHRcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgdHJ1ZSk7XG4rXHRcdHJldHVybiBfX2NoZWNrX3B0cl9vZmZfcmVnKGVudiwgcmVnLCBhcmdubywgYnRmX2lkX2ZpeGVkX29mZl9vayk7XG4gXHRjYXNlIFBUUl9UT19DVFg6XG4gXHRcdC8qXG4gXHRcdCAqIEFsbG93IGZpeGVkIGFuZCB2YXJpYWJsZSBvZmZzZXRzIGZvciBzeXNjYWxsIGNvbnRleHQsIGJ1dFxuQEAgLTgwNzAsNiArODA3MCwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdH1cbiB9XG4gXG4rc3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4rXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4rXHRcdFx0XHQgIGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlKVxuK3tcbitcdHJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgY2hlY2tfYXJnX2NvbnN0X3N0cihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vKVxuIHtcbkBAIC0xMTk0MSw2ICsxMTk0OCw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXG4gXHRcdGVudW0gYnBmX2FyZ190eXBlIGFyZ190eXBlID0gQVJHX0RPTlRDQVJFO1xuIFx0XHRhcmdub190IGFyZ25vID0gYXJnbm9fZnJvbV9hcmcoaSArIDEpO1xuIFx0XHRpbnQgcmVnbm8gPSByZWdfZnJvbV9hcmdubyhhcmdubyk7XG4rXHRcdGJvb2wgYnRmX2lkX2ZpeGVkX29mZl9vayA9IHRydWU7XG4gXHRcdHUzMiByZWZfaWQsIHR5cGVfc2l6ZTtcbiBcdFx0Ym9vbCBpc19yZXRfYnVmX3N6ID0gZmFsc2U7XG4gXHRcdGludCBrZl9hcmdfdHlwZTtcbkBAIC0xMjExNCw3ICsxMjEyMiw2IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfXG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19NRU06XG4gXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19NRU1fU0laRTpcbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NBTExCQUNLOlxuLVx0XHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fQ09OU1RfU1RSOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fV09SS1FVRVVFOlxuIFx0XHRjYXNlIEtGX0FSR19QVFJfVE9fVElNRVI6XG5AQCAtMTIxMjgsNiArMTIxMzUsMTAgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9cbiBcdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0NUWDpcbiBcdFx0XHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQ1RYO1xuIFx0XHRcdGJyZWFrO1xuK1x0XHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxuK1x0XHRcdGFyZ190eXBlID0gQVJHX1BUUl9UT19CVEZfSUQ7XG4rXHRcdFx0YnRmX2lkX2ZpeGVkX29mZl9vayA9IGZhbHNlO1xuK1x0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHZlcmlmaWVyX2J1ZyhlbnYsIFwidW5rbm93biBrZnVuYyBhcmcgdHlwZSAlZFwiLCBrZl9hcmdfdHlwZSk7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG5AQCAtMTIxMzUsNyArMTIxNDYsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX1xuIFxuIFx0XHRpZiAocmVnbm8gPT0gbWV0YS1cdTAwM2VyZWxlYXNlX3JlZ25vKVxuIFx0XHRcdGFyZ190eXBlIHw9IE9CSl9SRUxFQVNFO1xuLVx0XHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpO1xuK1x0XHRyZXQgPSBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSxcbitcdFx0XHRcdFx0ICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuY1xuaW5kZXggNzI0N2EyMGMwYTNiZjUuLjc3Y2RhNWNhMjM2MDEyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jXG5AQCAtMTMsMTIgKzEzLDIyIEBAIHN0cnVjdCBub2RlX2FjcXVpcmUge1xuIFx0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcbiB9O1xuIFxuK3N0cnVjdCBub2RlX3JlZmNvdW50ZWQge1xuK1x0bG9uZyBrZXk7XG4rXHRzdHJ1Y3QgYnBmX3JiX25vZGUgcmI7XG4rXHRzdHJ1Y3QgYnBmX2xpc3Rfbm9kZSBsaXN0O1xuK1x0c3RydWN0IGJwZl9yZWZjb3VudCByZWZjb3VudDtcbit9O1xuK1xuIGV4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF9sb2NrKHZvaWQpIF9fa3N5bTtcbiBleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfdW5sb2NrKHZvaWQpIF9fa3N5bTtcbiBcbiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKFwiLmRhdGEuXCIgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxuIHByaXZhdGUoQSkgc3RydWN0IGJwZl9zcGluX2xvY2sgZ2xvY2s7XG4gcHJpdmF0ZShBKSBzdHJ1Y3QgYnBmX3JiX3Jvb3QgZ3Jvb3QgX19jb250YWlucyhub2RlX2FjcXVpcmUsIG5vZGUpO1xuK3ByaXZhdGUoQikgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jaztcbitwcml2YXRlKEIpIHN0cnVjdCBicGZfcmJfcm9vdCByb290IF9fY29udGFpbnMobm9kZV9yZWZjb3VudGVkLCByYik7XG4rcHJpdmF0ZShCKSBzdHJ1Y3QgYnBmX2xpc3RfaGVhZCBoZWFkIF9fY29udGFpbnMobm9kZV9yZWZjb3VudGVkLCBsaXN0KTtcbiBcbiBzdGF0aWMgYm9vbCBsZXNzKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxuIHtcbkBAIC0zMSw2ICs0MSwxNyBAQCBzdGF0aWMgYm9vbCBsZXNzKHN0cnVjdCBicGZfcmJfbm9kZSAqYSwgY29uc3Qgc3RydWN0IGJwZl9yYl9ub2RlICpiKVxuIFx0cmV0dXJuIG5vZGVfYS1cdTAwM2VrZXkgXHUwMDNjIG5vZGVfYi1cdTAwM2VrZXk7XG4gfVxuIFxuK3N0YXRpYyBib29sIGxlc3NfcmVmY291bnRlZChzdHJ1Y3QgYnBmX3JiX25vZGUgKmEsIGNvbnN0IHN0cnVjdCBicGZfcmJfbm9kZSAqYilcbit7XG4rXHRzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkICpub2RlX2E7XG4rXHRzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkICpub2RlX2I7XG4rXG4rXHRub2RlX2EgPSBjb250YWluZXJfb2YoYSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgcmIpO1xuK1x0bm9kZV9iID0gY29udGFpbmVyX29mKGIsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIHJiKTtcbitcbitcdHJldHVybiBub2RlX2EtXHUwMDNla2V5IFx1MDAzYyBub2RlX2ItXHUwMDNla2V5O1xuK31cbitcbiBTRUMoXCI/dGNcIilcbiBfX2ZhaWx1cmUgX19tc2coXCJVbnJlbGVhc2VkIHJlZmVyZW5jZSBpZD00IGFsbG9jX2luc249e3tbMC05XSt9fVwiKVxuIGxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlcyh2b2lkICpjdHgpXG5AQCAtOTMsNiArMTE0LDYyIEBAIGxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlc19vd25pbmdfaW5wdXQodm9pZCAqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK1NFQyhcIj90Y1wiKVxuK19fZmFpbHVyZSBfX21zZyhcImRlcmVmZXJlbmNlIG9mIG1vZGlmaWVkIHB0cl8gcHRyIFIxXCIpXG4rbG9uZyByZWZjb3VudF9hY3F1aXJlX2xpc3Rfbm9kZV9vZmZzZXQodm9pZCAqY3R4KVxuK3tcbitcdHN0cnVjdCBub2RlX3JlZmNvdW50ZWQgKm5vZGUsICpiYXNlLCAqcmVmO1xuK1x0c3RydWN0IGJwZl9saXN0X25vZGUgKmxpc3Rfbm9kZTtcbitcbitcdG5vZGUgPSBicGZfb2JqX25ldyh0eXBlb2YoKm5vZGUpKTtcbitcdGlmICghbm9kZSlcbitcdFx0cmV0dXJuIDE7XG4rXG4rXHRicGZfc3Bpbl9sb2NrKFx1MDAyNmxvY2spO1xuK1x0YnBmX2xpc3RfcHVzaF9mcm9udChcdTAwMjZoZWFkLCBcdTAwMjZub2RlLVx1MDAzZWxpc3QpO1xuK1x0bGlzdF9ub2RlID0gYnBmX2xpc3RfcG9wX2Zyb250KFx1MDAyNmhlYWQpO1xuK1x0YnBmX3NwaW5fdW5sb2NrKFx1MDAyNmxvY2spO1xuK1x0aWYgKCFsaXN0X25vZGUpXG4rXHRcdHJldHVybiAyO1xuK1xuK1x0YmFzZSA9IGNvbnRhaW5lcl9vZihsaXN0X25vZGUsIHN0cnVjdCBub2RlX3JlZmNvdW50ZWQsIGxpc3QpO1xuK1x0cmVmID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobGlzdF9ub2RlKTtcbitcdGlmIChyZWYpXG4rXHRcdGJwZl9vYmpfZHJvcChyZWYpO1xuK1x0YnBmX29ial9kcm9wKGJhc2UpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcIj90Y1wiKVxuK19fZmFpbHVyZSBfX21zZyhcImRlcmVmZXJlbmNlIG9mIG1vZGlmaWVkIHB0cl8gcHRyIFIxXCIpXG4rbG9uZyByZWZjb3VudF9hY3F1aXJlX3JidHJlZV9ub2RlX29mZnNldCh2b2lkICpjdHgpXG4re1xuK1x0c3RydWN0IG5vZGVfcmVmY291bnRlZCAqbm9kZSwgKmJhc2UsICpyZWY7XG4rXHRzdHJ1Y3QgYnBmX3JiX25vZGUgKnJiX25vZGU7XG4rXG4rXHRub2RlID0gYnBmX29ial9uZXcodHlwZW9mKCpub2RlKSk7XG4rXHRpZiAoIW5vZGUpXG4rXHRcdHJldHVybiAxO1xuK1xuK1x0bm9kZS1cdTAwM2VrZXkgPSAxO1xuK1xuK1x0YnBmX3NwaW5fbG9jayhcdTAwMjZsb2NrKTtcbitcdGJwZl9yYnRyZWVfYWRkKFx1MDAyNnJvb3QsIFx1MDAyNm5vZGUtXHUwMDNlcmIsIGxlc3NfcmVmY291bnRlZCk7XG4rXHRyYl9ub2RlID0gYnBmX3JidHJlZV9maXJzdChcdTAwMjZyb290KTtcbitcdGlmIChyYl9ub2RlKVxuK1x0XHRyYl9ub2RlID0gYnBmX3JidHJlZV9yZW1vdmUoXHUwMDI2cm9vdCwgcmJfbm9kZSk7XG4rXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2bG9jayk7XG4rXHRpZiAoIXJiX25vZGUpXG4rXHRcdHJldHVybiAyO1xuK1xuK1x0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XG4rXHRyZWYgPSBicGZfcmVmY291bnRfYWNxdWlyZShyYl9ub2RlKTtcbitcdGlmIChyZWYpXG4rXHRcdGJwZl9vYmpfZHJvcChyZWYpO1xuK1x0YnBmX29ial9kcm9wKGJhc2UpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIFNFQyhcIj9mZW50cnkucy9cIiBTWVNfUFJFRklYIFwic3lzX2dldHBnaWRcIilcbiBfX2ZhaWx1cmUgX19tc2coXCJmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcIilcbiBpbnQgQlBGX1BST0cocmJ0cmVlX2ZhaWxfc2xlZXBhYmxlX2xvY2tfYWNyb3NzX3JjdSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDAyOjQ3OjUwLjczMjU3Nzg1N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MzUxMzQ2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGV5J3ZlIGFkZGVkIHNvbWUgdGVzdHMsIHRvbywgd2hpY2ggaXMgYWx3YXlzIGdvb2Qg4oCTIHNwZWNpZmljYWxseSBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGEgZnVuY3Rpb24gY2FsbGVkIGBjaGVja19mdW5jX2FyZ19yZWdfb2ZmYC4gSXQncyBiZWVuIHJlbmFtZWQgKG9yIG1heWJlIGp1c3QgZGVjbGFyZWQsIGFuZCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgc3RpbGwgdGhlcmU/KSB0byBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCwgYW5kIG5vdyBhY2NlcHRzIGFuIGV4dHJhIGJvb2xlYW4gYXJndW1lbnQsIGBidGZfaWRfZml4ZWRfb2ZmX29rYC4gVGhhdCdzIHRoZSBrZXkuXG5cbk5vdywgaW4gYGNoZWNrX2tmdW5jX2FyZ3NgLCB0aGV5J3JlIGhhbmRsaW5nIGFyZ3VtZW50cyBvZiB0aGUgYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCB0eXBlLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcsIGFuZCBJIG5lZWQgdG8gZGl2ZSBpbiBhIGJpdCBkZWVwZXIuIFdoYXQgdGhleSdyZSBkb2luZyBpcywgd2hlbiB0aGV5IGVuY291bnRlciB0aGlzIGFyZ3VtZW50IHR5cGUsIHRoZXkgc2V0IGBhcmdfdHlwZWAgdG8gYEFSR19QVFJfVE9fQlRGX0lEYCBhbmQgY3JpdGljYWxseSwgc2V0IGBidGZfaWRfZml4ZWRfb2ZmX29rID0gZmFsc2VgLiBUaGlzIG1lYW5zIHRoZXkncmUgZXhwbGljaXRseSAqZGlzYWxsb3dpbmcqIGEgZml4ZWQgb2Zmc2V0IGZvciBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgIGFyZ3VtZW50cy4gRWZmZWN0aXZlbHksIHRoZXkncmUgZW5mb3JjaW5nIHRoYXQgdGhlIG9mZnNldCBoYXMgdG8gYmUgemVybywgcmlnaHQ/IE5vIHdpZ2dsZSByb29tLlxuXG5JIG5lZWQgdG8gc2VlIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBjaGFuZ2UuIFNvLCBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSBmaW5kIHRoZSBgY2hlY2tfa2Z1bmNfYXJnc2AgZnVuY3Rpb24gYW5kIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IGlzIGNydWNpYWwgdG8gZXZhbHVhdGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcmVzdHJpY3Rpb24uIEkgbmVlZCB0byBzZWUgaG93IHRoZSB2ZXJpZmllciB1dGlsaXplcyB0aGF0IGBhcmdfdHlwZWAgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZm9yYmlkZGluZyBhIGZpeGVkIG9mZnNldCBpbiB0aGlzIHNwZWNpZmljIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDIyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDI6NDc6NTYuMzY3NzE1NjcyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NTAwNzExNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xNDQxPXN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjMtXFx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIGRyb3AnZFxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg6MTQ2NDpcXHQgKiAgIGJwZl9yZWZjb3VudF9hY3F1aXJlICh2aWEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJnIHR5cGUpXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDY1LVxcdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSByZWZjb3VudF9pbmNyJ2QgYW5kIHVzZVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwOTY1PWVudW0ga2Z1bmNfcHRyX2FyZ190eXBlIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDk2Ny1cXHRLRl9BUkdfUFRSX1RPX0FMTE9DX0JURl9JRCwgICAgLyogQWxsb2NhdGVkIG9iamVjdCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk2ODpcXHRLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUiwgLyogUmVmY291bnRlZCBsb2NhbCBrcHRyICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTY5LVxcdEtGX0FSR19QVFJfVE9fRFlOUFRSLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjQzPWdldF9rZnVuY19wdHJfYXJnX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9mdW5jX3N0YXRlICpjYWxsZXIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNzYtXFx0aWYgKGlzX2tmdW5jX2FyZ19yZWZjb3VudGVkX2twdHIobWV0YS1cXHUwMDNlYnRmLCBcXHUwMDI2YXJnc1thcmddKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNzc6XFx0XFx0cmV0dXJuIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI3OC1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTkxMz1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMTM3LVxcdFxcdFxcdGJyZWFrO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjEzODpcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjEzOS1cXHRcXHRcXHRhcmdfdHlwZSA9IEFSR19QVFJfVE9fQlRGX0lEO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNDAwLVxcdFxcdFxcdGJyZWFrO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjQwMTpcXHRcXHRjYXNlIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjQwMi1cXHRcXHRcXHRpZiAoIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctXFx1MDAzZXR5cGUpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDAyOjQ3OjU5LjExNzc5NTQzMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NjA5MDQ1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IEJQRiBWZXJpZmllciBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHR3ZWFraW5nIGhvdyB0aGUgQlBGIHZlcmlmaWVyIGRlYWxzIHdpdGggYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCBhcmd1bWVudHMgcGFzc2VkIHRvIGtmdW5jcy4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaWYgdGhlcmUncyBhIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXIncyBsb2dpYywgZXNwZWNpYWxseSBhcm91bmQgaG93IGl0IHZhbGlkYXRlcyB0aG9zZSBhcmd1bWVudHMsIGl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcsIGFuZCBpdCdzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIGBicGYoKWAuIFRoYXQncyBhIGdvb2Qgc3RhcnQuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIHdoYXQga2Z1bmNzIGFyZSBldmVuICp1c2luZyogdGhpcyBhcmd1bWVudCB0eXBlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4gTHVja2lseSB0aGUgY29tbWVudCBtZW50aW9ucyB0aGF0IHRoaXMgYXJndW1lbnQgdHlwZSBpcyB1c2VkIHdpdGggYGJwZl9yZWZjb3VudF9hY3F1aXJlYC4gVGhhdCBnaXZlcyBtZSBhIGtleXdvcmQgdG8gZ3JlcCBmb3IuIExldCdzIHNlZSB3aGF0IHBvcHMgdXAgd2hlbiBJIHNlYXJjaCBmb3IgdGhhdC4gS25vd2luZyB0aGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQncyBwb3RlbnRpYWxseSBhZmZlY3RlZC4gVGltZSB0byBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3ODcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDI6NDg6MDIuOTc4NzAyNzIzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTIxMTExMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3JlZmNvdW50X2FjcXVpcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xNDQxPXN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjMtXFx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIGRyb3AnZFxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg6MTQ2NDpcXHQgKiAgIGJwZl9yZWZjb3VudF9hY3F1aXJlICh2aWEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJnIHR5cGUpXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDY1LVxcdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSByZWZjb3VudF9pbmNyJ2QgYW5kIHVzZVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9MjQ0OT1fX2JwZl9rZnVuYyB2b2lkIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCh2b2lkICpwX19hbGxvYywgdm9pZCAqbWV0YV9faWduKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ1NC0vKipcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDU1OiAqIGJwZl9yZWZjb3VudF9hY3F1aXJlKCkgLSB0dXJuIGEgbG9jYWwga3B0ciBpbnRvIGFuIG93bmluZyByZWZlcmVuY2VcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU2LSAqIEBwX19yZWZjb3VudGVkX2twdHI6IG5vbi1vd25pbmcgbG9jYWwga3B0clxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ2My0gKi9cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDY0Ol9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDY1LXtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODAtXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ4MTpfX2JwZl9rZnVuYyB2b2lkICpicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgdm9pZCAqbWV0YV9faWduKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODIte1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODM6XFx0cmV0dXJuIGJwZl9yZWZjb3VudF9hY3F1aXJlKHBfX3JlZmNvdW50ZWRfa3B0ciwgbWV0YV9faWduKTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDg0LX1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MTM9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxNi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDk4OT1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTMtXFx0S0ZfYnBmX29ial9kcm9wLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NDpcXHRLRl9icGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NTpcXHRLRl9icGZfcmVmY291bnRfYWNxdWlyZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTYtXFx0S0ZfYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMDY2PUJURl9JRChmdW5jLCBicGZfb2JqX2Ryb3ApXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY3OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTA2ODpCVEZfSUQoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDY5LUJURl9JRChmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTExNzY9c3RhdGljIGJvb2wgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyh1MzIgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4MS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODI6c3RhdGljIGJvb2wgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmModTMyIGZ1bmNfaWQpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTgzLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODQ6XFx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4NTpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTg2LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19rZnVuY19yZXRfbnVsbChzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjEwLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTE6XFx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXFx1MDAzZWZ1bmNfaWQpIFxcdTAwMjZcXHUwMDI2IG1ldGEtXFx1MDAzZWFyZ19vd25pbmdfcmVmKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2MTc9c3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjIwLVxcdCAgICAgICBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyhidGZfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNjIxOlxcdCAgICAgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhidGZfaWQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMi19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3Mjc9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjgxNS1cXHRcXHRpbnNuX2F1eC1cXHUwMDNla3B0cl9zdHJ1Y3RfbWV0YSA9IHN0cnVjdF9tZXRhO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjgxNjpcXHR9IGVsc2UgaWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXFx1MDAzZWZ1bmNfaWQpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODE3LVxcdFxcdG1hcmtfcmVnX2tub3duX3plcm8oZW52LCByZWdzLCBCUEZfUkVHXzApO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMTgtXFx0XFx0ICAgICAhaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKG1ldGEuZnVuY19pZCkgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMTk6XFx0XFx0ICAgICAhaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS5mdW5jX2lkKSkpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMjAtXFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJhY3F1aXJlIGtlcm5lbCBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gUFRSX1RPX0JURl9JRFxcXFxuXFxcIik7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1NzQ9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMi1cXHRcXHQgICBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjIzOlxcdFxcdCAgIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjI0LVxcdFxcdHN0cnVjdCBidGZfc3RydWN0X21ldGEgKmtwdHJfc3RydWN0X21ldGEgPSBlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLmtwdHJfc3RydWN0X21ldGE7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjMzOlxcdFxcdGlmIChpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhkZXNjLVxcdTAwM2VmdW5jX2lkKSBcXHUwMDI2XFx1MDAyNiAha3B0cl9zdHJ1Y3RfbWV0YSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYzNC1cXHRcXHRcXHR2ZXJpZmllcl9idWcoZW52LCBcXFwia3B0cl9zdHJ1Y3RfbWV0YSBleHBlY3RlZCBhdCBpbnNuX2lkeCAlZFxcXCIsXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oPTM4ND1zdHJ1Y3QgYnBmX3JiX25vZGUgKmJwZl9yYnRyZWVfZmlyc3Qoc3RydWN0IGJwZl9yYl9yb290ICpyb290KSBfX2tzeW07XFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaC0zODUtXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODY6dm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCh2b2lkICprcHRyLCB2b2lkICptZXRhKSBfX2tzeW07XFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODc6I2RlZmluZSBicGZfcmVmY291bnRfYWNxdWlyZShrcHRyKSBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKGtwdHIsIE5VTEwpXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaC0zODgtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmM9MzAzPWludCBCUEZfUFJPRyhicGZfZnFfZW5xdWV1ZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ0LVxcdFxcdGlmIChmcV9mbG93X2lzX2RldGFjaGVkKGZsb3cpKSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jOjM0NTpcXHRcXHRcXHRmbG93X2NvcHkgPSBicGZfcmVmY291bnRfYWNxdWlyZShmbG93KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYz0yMzQ9bG9uZyByZWZjb3VudF9hY3F1aXJlX3dpdGhvdXRfdW5zdGFzaCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaC5jLTI0OS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaC5jOjI1MDpcXHRwID0gYnBmX3JlZmNvdW50X2FjcXVpcmUocy1cXHUwMDNlc3Rhc2hlZCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYy0yNTEtXFx0aWYgKCFwKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYz01Mz1sb25nIHJidHJlZV9zZWFyY2godm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy02NC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jOjY1OlxcdFxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTY2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xMDgtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzoxMDk6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTEwLVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2Z2xvY2swKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9MTU2PWxvbmcgdGVzdF8jI29wIyNfc3BpbmxvY2tfIyNkb2xvY2sodm9pZCAqY3R4KVxcdFxcdFxcXFxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTY4LVxcdG4gPSByYl9lbnRyeShyYl9uLCBzdHJ1Y3Qgbm9kZV9kYXRhLCByMCk7XFx0XFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM6MTY5OlxcdG4gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXHRcXHRcXHRcXFxcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xNzAtXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZnbG9jazApO1xcdFxcdFxcdFxcXFxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYz0xNTU9bG9uZyByYnRyZWVfc2VhcmNoX2twdHJfcmVmKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYy0xODItXFx0XFx0LyogVW51c2VkIHJlZmVyZW5jZSAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYzoxODM6XFx0XFx0dG5vZGVfbSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHRub2RlX3IpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYy0xODQtXFx0XFx0aWYgKCF0bm9kZV9tKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTczPXN0YXRpYyBsb25nIF9faW5zZXJ0X2luX3RyZWVfYW5kX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODItXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgzOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODQtXFx0bS1cXHUwMDNla2V5ID0gMTIzO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwNj1zdGF0aWMgbG9uZyBfX3N0YXNoX21hcF9pbnNlcnRfdHJlZShpbnQgaWR4LCBpbnQgdmFsLCBzdHJ1Y3QgYnBmX3JiX3Jvb3QgKnJvb3QsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIwLVxcdG4tXFx1MDAzZWtleSA9IHZhbDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6MTIxOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIyLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTM5OT1zdGF0aWMgc3RydWN0IG5vZGVfZGF0YSAqX19hZGRfaW5fbGlzdChzdHJ1Y3QgYnBmX2xpc3RfaGVhZCAqaGVhZCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy00MDctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjQwODpcXHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtNDA5LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTc5Mz1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgwMi1cXHRicGZfcmJ0cmVlX2FkZChcXHUwMDI2YXJvb3QsIFxcdTAwMjZuLVxcdTAwM2Vub2RlLCBsZXNzX2EpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MDM6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDQtXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZhbG9jayk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9ODE1PWxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlc19vd25pbmdfaW5wdXQodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyMi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6ODIzOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODI0LVxcdG0tXFx1MDAzZWtleSA9IDI7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9ODUyPWxvbmcgcmJ0cmVlX3dyb25nX293bmVyX3JlbW92ZV9mYWlsX2ExKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NTgtXFx0XFx0cmV0dXJuIDE7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjg1OTpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg2MC1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDAyPXN0YXRpYyBpbnQgX19pbnNlcnRfaW5fbGlzdChzdHJ1Y3QgYnBmX2xpc3RfaGVhZCAqaGVhZCwgc3RydWN0IGJwZl9zcGluX2xvY2sgKmxvY2ssXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6MTAxMTpcXHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMi1cXHRub2RlX29sZCA9IGJwZl9rcHRyX3hjaGcobm9kZSwgbm9kZV9uZXcpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9NTc9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTY3LVxcdC8qIG0gYmVjb21lcyBhbiBvd25pbmcgcmVmIGJ1dCBpcyBuZXZlciBkcm9wJ2Qgb3IgYWRkZWQgdG8gYSB0cmVlICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6Njg6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTY5LVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2Z2xvY2spO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9Nzk9bG9uZyByZWZjb3VudF9hY3F1aXJlX21heWJlX251bGwodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtODYtXFx0ICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6ODc6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg4LVxcdGlmIChtKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9OTg9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMDYtXFx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AnZCBvciBhZGRlZCB0byBhIHRyZWUgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMDc6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEwOC1cXHRtLVxcdTAwM2VrZXkgPSAyO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9MTE5PWxvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEzNS1cXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6MTM2OlxcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTM3LVxcdGlmIChyZWYpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz0xNDU9bG9uZyByZWZjb3VudF9hY3F1aXJlX3JidHJlZV9ub2RlX29mZnNldCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xNjUtXFx0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6MTY2OlxcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHJiX25vZGUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTE2Ny1cXHRpZiAocmVmKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0ODowNS4xMzA4MjEyNThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTU0NzA5NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVzdHJpY3Rpb24gb24gYGJwZl9yZWZjb3VudF9hY3F1aXJlYCB3aXRoIFJlZmNvdW50ZWQgS1BUUnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRocm91Z2ggdGhlIGltcGxpY2F0aW9ucyBmb3IgYGJwZl9yZWZjb3VudF9hY3F1aXJlYC4gVGhlIGNvcmUgY2hhbmdlIGNlbnRlcnMgYXJvdW5kIHRoZSBgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFJgIGFyZ3VtZW50IHR5cGUgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdmVyaWZpZXIuIEl0IHNlZW1zIHRoZSBjb21taXQgZXhwbGljaXRseSBtb2RpZmllcyBgY2hlY2tfa2Z1bmNfYXJnc2AgdG8gZW5zdXJlIGBidGZfaWRfZml4ZWRfb2ZmX29rYCBpcyBgZmFsc2VgIHdoZW4gZGVhbGluZyB3aXRoIGBLRl9BUkdfUFRSX1RPX1JFRkNPVU5URURfS1BUUmAuIFRoaXMgaXMgcHJldHR5IGNydWNpYWwuIFdoYXQgdGhpcyAqYWN0dWFsbHkqIG1lYW5zIGlzIHRoYXQgd2UncmUgcHJldmVudGluZyBgYnBmX3JlZmNvdW50X2FjcXVpcmVgIGZyb20gYmVpbmcgY2FsbGVkIHdpdGggYW55IG5vbi16ZXJvIGZpeGVkIG9mZnNldCwgd2hpY2ggaXMgYnkgZGVzaWduLCBvYnZpb3VzbHksIGZvciBzZWN1cml0eSByZWFzb25zLlxuXG5Ob3csIHRoZSBhZGRlZCB0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmNgIGFyZSBhIG5pY2UgY29uZmlybWF0aW9uIG9mIHRoaXMgcmVzdHJpY3Rpb24uIFBhc3NpbmcgdGhpbmdzIGxpa2UgYGxpc3Rfbm9kZWAgb3IgYHJiX25vZGVgLCBib3RoIG9mIHdoaWNoIGhhdmUgdGhvc2UgZm9yYmlkZGVuIG9mZnNldHMgd2l0aGluIHRoZSBgc3RydWN0IG5vZGVfcmVmY291bnRlZGAgc3RydWN0dXJlLCB3aWxsIG5vdyBiZSBjb3JyZWN0bHkgcmVqZWN0ZWQgZHVyaW5nIHZlcmlmaWNhdGlvbi4gVGhpcyBpcyBhIGdvb2Qgc2FuaXR5IGNoZWNrIGFuZCBhbHNvIGdpdmVzIGV4YW1wbGVzIG9mIHRoZSBmb3JiaWRkZW4gb3BlcmF0aW9ucy5cblxuVGhlcmVmb3JlLCB0aGUga2V5IHBpZWNlcyBvZiBjb2RlIEkgbmVlZCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGlzIGFyZTogYGNoZWNrX2tmdW5jX2FyZ3NgLCBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCwgYW5kIG9idmlvdXNseSwgYGJwZl9yZWZjb3VudF9hY3F1aXJlYCBpdHNlbGYuIEkgbmVlZCB0byBzZWUgaG93IHRoZSB2ZXJpZmllciBtYWtlcyBzdXJlIHRoZSBvZmZzZXQgaXMgemVyby5cblxuSSBrbm93IHRoZSBjb2RlIGZvciB0aGVzZSBmdW5jdGlvbnMgaXMgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2hlbHBlcnMuY2AsIHNvIEknbGwgY2hlY2sgdGhlcmUuIEknbSBhc3N1bWluZyB0aGF0IHRoZSBCUEYgc3Vic3lzdGVtIGlzIGVuYWJsZWQgdmlhIGBDT05GSUdfQlBGX1NZU0NBTExgLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUga2VybmVsIGNvbmZpZyBmb3IgdGhhdCwgYW5kIHBlcmhhcHMgbG9vayBhcm91bmQgYGtlcm5lbC9icGYvS2NvbmZpZ2Agb3IgZXZlbiBgaW5pdC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBvciBmbGFncyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eS4gSnVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI4OCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0ODoxMC42ODU1MzM5NjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0OTkzNDE1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0ODoxMi44MzU0NzgwNTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzgzNzczMjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBCUEYgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgQlBGIHN5c2NhbGxzLCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaW1tZWRpYXRlbHkgc3ByaW5ncyB0byBtaW5kIGFzIHRoZSBwaXZvdGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGJyb2FkZXIgY29udGV4dCBoZXJlLiBJJ20gd29uZGVyaW5nIGlmIGBicGZfcmVmY291bnRfYWNxdWlyZWAgaXMgc29tZXRoaW5nIHRoYXQncyBhbHdheXMgYXZhaWxhYmxlLCBvciBpZiBpdCdzIGRlcGVuZGVudCBvbiB0aGUgcHJvZ3JhbSB0eXBlIG9yIHNvbWUgb3RoZXIgZmFjdG9yLiBUbyBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkgcmVhbGx5IG5lZWQgdG8gZHJpbGwgZG93biBhbmQgZXhhbWluZSB0aGUgaW1wbGVtZW50YXRpb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpbiBga2VybmVsL2JwZi9oZWxwZXJzLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGFuc3dlciBpcyBnb2luZyB0byBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxNjksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0ODoxNi42MTkyNTQ5NjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjA3Mzk1MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3JlZmNvdW50X2FjcXVpcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xNDQxPXN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE0NjMtXFx0ICogICAgIFJlY29yZCB0aGUgbG9jYWwga3B0ciB0eXBlIHRvIGJlIGRyb3AnZFxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg6MTQ2NDpcXHQgKiAgIGJwZl9yZWZjb3VudF9hY3F1aXJlICh2aWEgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJnIHR5cGUpXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNDY1LVxcdCAqICAgICBSZWNvcmQgdGhlIGxvY2FsIGtwdHIgdHlwZSB0byBiZSByZWZjb3VudF9pbmNyJ2QgYW5kIHVzZVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9MjQ0OT1fX2JwZl9rZnVuYyB2b2lkIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCh2b2lkICpwX19hbGxvYywgdm9pZCAqbWV0YV9faWduKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ1NC0vKipcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDU1OiAqIGJwZl9yZWZjb3VudF9hY3F1aXJlKCkgLSB0dXJuIGEgbG9jYWwga3B0ciBpbnRvIGFuIG93bmluZyByZWZlcmVuY2VcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDU2LSAqIEBwX19yZWZjb3VudGVkX2twdHI6IG5vbi1vd25pbmcgbG9jYWwga3B0clxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjQ2My0gKi9cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyNDY0Ol9fYnBmX2tmdW5jIHZvaWQgKmJwZl9yZWZjb3VudF9hY3F1aXJlKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YSAqbWV0YSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDY1LXtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODAtXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjQ4MTpfX2JwZl9rZnVuYyB2b2lkICpicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKHZvaWQgKnBfX3JlZmNvdW50ZWRfa3B0ciwgdm9pZCAqbWV0YV9faWduKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI0ODIte1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjI0ODM6XFx0cmV0dXJuIGJwZl9yZWZjb3VudF9hY3F1aXJlKHBfX3JlZmNvdW50ZWRfa3B0ciwgbWV0YV9faWduKTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yNDg0LX1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MTM9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxNi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDk4OT1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTMtXFx0S0ZfYnBmX29ial9kcm9wLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NDpcXHRLRl9icGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDk5NTpcXHRLRl9icGZfcmVmY291bnRfYWNxdWlyZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5OTYtXFx0S0ZfYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMDY2PUJURl9JRChmdW5jLCBicGZfb2JqX2Ryb3ApXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDY3OkJURl9JRChmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTA2ODpCVEZfSUQoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDY5LUJURl9JRChmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTExNzY9c3RhdGljIGJvb2wgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyh1MzIgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4MS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODI6c3RhdGljIGJvb2wgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmModTMyIGZ1bmNfaWQpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTgzLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODQ6XFx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE4NTpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTg2LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19rZnVuY19yZXRfbnVsbChzdHJ1Y3QgYnBmX2tmdW5jX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjEwLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTE6XFx0aWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXFx1MDAzZWZ1bmNfaWQpIFxcdTAwMjZcXHUwMDI2IG1ldGEtXFx1MDAzZWFyZ19vd25pbmdfcmVmKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2MTc9c3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjIwLVxcdCAgICAgICBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyhidGZfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNjIxOlxcdCAgICAgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhidGZfaWQpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTYyMi19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3Mjc9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjgxNS1cXHRcXHRpbnNuX2F1eC1cXHUwMDNla3B0cl9zdHJ1Y3RfbWV0YSA9IHN0cnVjdF9tZXRhO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjgxNjpcXHR9IGVsc2UgaWYgKGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKG1ldGEtXFx1MDAzZWZ1bmNfaWQpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODE3LVxcdFxcdG1hcmtfcmVnX2tub3duX3plcm8oZW52LCByZWdzLCBCUEZfUkVHXzApO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyODk4PXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMTgtXFx0XFx0ICAgICAhaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKG1ldGEuZnVuY19pZCkgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMTk6XFx0XFx0ICAgICAhaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMobWV0YS5mdW5jX2lkKSkpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMjAtXFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJhY3F1aXJlIGtlcm5lbCBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gUFRSX1RPX0JURl9JRFxcXFxuXFxcIik7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1NzQ9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyMi1cXHRcXHQgICBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjIzOlxcdFxcdCAgIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjI0LVxcdFxcdHN0cnVjdCBidGZfc3RydWN0X21ldGEgKmtwdHJfc3RydWN0X21ldGEgPSBlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLmtwdHJfc3RydWN0X21ldGE7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjMzOlxcdFxcdGlmIChpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhkZXNjLVxcdTAwM2VmdW5jX2lkKSBcXHUwMDI2XFx1MDAyNiAha3B0cl9zdHJ1Y3RfbWV0YSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYzNC1cXHRcXHRcXHR2ZXJpZmllcl9idWcoZW52LCBcXFwia3B0cl9zdHJ1Y3RfbWV0YSBleHBlY3RlZCBhdCBpbnNuX2lkeCAlZFxcXCIsXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oPTM4ND1zdHJ1Y3QgYnBmX3JiX25vZGUgKmJwZl9yYnRyZWVfZmlyc3Qoc3RydWN0IGJwZl9yYl9yb290ICpyb290KSBfX2tzeW07XFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaC0zODUtXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODY6dm9pZCAqYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCh2b2lkICprcHRyLCB2b2lkICptZXRhKSBfX2tzeW07XFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaDozODc6I2RlZmluZSBicGZfcmVmY291bnRfYWNxdWlyZShrcHRyKSBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsKGtwdHIsIE5VTEwpXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaC0zODgtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmM9MzAzPWludCBCUEZfUFJPRyhicGZfZnFfZW5xdWV1ZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ0LVxcdFxcdGlmIChmcV9mbG93X2lzX2RldGFjaGVkKGZsb3cpKSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9xZGlzY19mcS5jOjM0NTpcXHRcXHRcXHRmbG93X2NvcHkgPSBicGZfcmVmY291bnRfYWNxdWlyZShmbG93KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX3FkaXNjX2ZxLmMtMzQ2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYz0yMzQ9bG9uZyByZWZjb3VudF9hY3F1aXJlX3dpdGhvdXRfdW5zdGFzaCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaC5jLTI0OS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaC5jOjI1MDpcXHRwID0gYnBmX3JlZmNvdW50X2FjcXVpcmUocy1cXHUwMDNlc3Rhc2hlZCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2guYy0yNTEtXFx0aWYgKCFwKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYz01Mz1sb25nIHJidHJlZV9zZWFyY2godm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy02NC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jOjY1OlxcdFxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmJ0cmVlX3NlYXJjaC5jLTY2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xMDgtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYzoxMDk6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTEwLVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2Z2xvY2swKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM9MTU2PWxvbmcgdGVzdF8jI29wIyNfc3BpbmxvY2tfIyNkb2xvY2sodm9pZCAqY3R4KVxcdFxcdFxcXFxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmMtMTY4LVxcdG4gPSByYl9lbnRyeShyYl9uLCBzdHJ1Y3Qgbm9kZV9kYXRhLCByMCk7XFx0XFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoLmM6MTY5OlxcdG4gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXHRcXHRcXHRcXFxcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JidHJlZV9zZWFyY2guYy0xNzAtXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZnbG9jazApO1xcdFxcdFxcdFxcXFxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYz0xNTU9bG9uZyByYnRyZWVfc2VhcmNoX2twdHJfcmVmKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYy0xODItXFx0XFx0LyogVW51c2VkIHJlZmVyZW5jZSAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYzoxODM6XFx0XFx0dG5vZGVfbSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHRub2RlX3IpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yYnRyZWVfc2VhcmNoX2twdHIuYy0xODQtXFx0XFx0aWYgKCF0bm9kZV9tKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTczPXN0YXRpYyBsb25nIF9faW5zZXJ0X2luX3RyZWVfYW5kX2xpc3Qoc3RydWN0IGJwZl9saXN0X2hlYWQgKmhlYWQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODItXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjgzOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODQtXFx0bS1cXHUwMDNla2V5ID0gMTIzO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwNj1zdGF0aWMgbG9uZyBfX3N0YXNoX21hcF9pbnNlcnRfdHJlZShpbnQgaWR4LCBpbnQgdmFsLCBzdHJ1Y3QgYnBmX3JiX3Jvb3QgKnJvb3QsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIwLVxcdG4tXFx1MDAzZWtleSA9IHZhbDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6MTIxOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTIyLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTM5OT1zdGF0aWMgc3RydWN0IG5vZGVfZGF0YSAqX19hZGRfaW5fbGlzdChzdHJ1Y3QgYnBmX2xpc3RfaGVhZCAqaGVhZCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy00MDctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjQwODpcXHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtNDA5LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTc5Mz1sb25nIHJidHJlZV9yZWZjb3VudGVkX25vZGVfcmVmX2VzY2FwZXModm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgwMi1cXHRicGZfcmJ0cmVlX2FkZChcXHUwMDI2YXJvb3QsIFxcdTAwMjZuLVxcdTAwM2Vub2RlLCBsZXNzX2EpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzo4MDM6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04MDQtXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZhbG9jayk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9ODE1PWxvbmcgcmJ0cmVlX3JlZmNvdW50ZWRfbm9kZV9yZWZfZXNjYXBlc19vd25pbmdfaW5wdXQodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTgyMi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6ODIzOlxcdG0gPSBicGZfcmVmY291bnRfYWNxdWlyZShuKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtODI0LVxcdG0tXFx1MDAzZWtleSA9IDI7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9ODUyPWxvbmcgcmJ0cmVlX3dyb25nX293bmVyX3JlbW92ZV9mYWlsX2ExKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy04NTgtXFx0XFx0cmV0dXJuIDE7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjg1OTpcXHRtID0gYnBmX3JlZmNvdW50X2FjcXVpcmUobik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTg2MC1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDAyPXN0YXRpYyBpbnQgX19pbnNlcnRfaW5fbGlzdChzdHJ1Y3QgYnBmX2xpc3RfaGVhZCAqaGVhZCwgc3RydWN0IGJwZl9zcGluX2xvY2sgKmxvY2ssXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6MTAxMTpcXHRub2RlX3JlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG5vZGVfbmV3KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTAxMi1cXHRub2RlX29sZCA9IGJwZl9rcHRyX3hjaGcobm9kZSwgbm9kZV9uZXcpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9NTc9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTY3LVxcdC8qIG0gYmVjb21lcyBhbiBvd25pbmcgcmVmIGJ1dCBpcyBuZXZlciBkcm9wJ2Qgb3IgYWRkZWQgdG8gYSB0cmVlICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6Njg6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTY5LVxcdGJwZl9zcGluX3VubG9jayhcXHUwMDI2Z2xvY2spO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9Nzk9bG9uZyByZWZjb3VudF9hY3F1aXJlX21heWJlX251bGwodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtODYtXFx0ICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6ODc6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTg4LVxcdGlmIChtKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9OTg9bG9uZyByYnRyZWVfcmVmY291bnRlZF9ub2RlX3JlZl9lc2NhcGVzX293bmluZ19pbnB1dCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xMDYtXFx0LyogbSBiZWNvbWVzIGFuIG93bmluZyByZWYgYnV0IGlzIG5ldmVyIGRyb3AnZCBvciBhZGRlZCB0byBhIHRyZWUgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYzoxMDc6XFx0bSA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKG4pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEwOC1cXHRtLVxcdTAwM2VrZXkgPSAyO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM9MTE5PWxvbmcgcmVmY291bnRfYWNxdWlyZV9saXN0X25vZGVfb2Zmc2V0KHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTEzNS1cXHRiYXNlID0gY29udGFpbmVyX29mKGxpc3Rfbm9kZSwgc3RydWN0IG5vZGVfcmVmY291bnRlZCwgbGlzdCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6MTM2OlxcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKGxpc3Rfbm9kZSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmMtMTM3LVxcdGlmIChyZWYpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYz0xNDU9bG9uZyByZWZjb3VudF9hY3F1aXJlX3JidHJlZV9ub2RlX29mZnNldCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyX2ZhaWwuYy0xNjUtXFx0YmFzZSA9IGNvbnRhaW5lcl9vZihyYl9ub2RlLCBzdHJ1Y3Qgbm9kZV9yZWZjb3VudGVkLCByYik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0cl9mYWlsLmM6MTY2OlxcdHJlZiA9IGJwZl9yZWZjb3VudF9hY3F1aXJlKHJiX25vZGUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHJfZmFpbC5jLTE2Ny1cXHRpZiAocmVmKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwMjo0ODoxOC41NDAwMDE0MDVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYwOTIzNTQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb24gaGVyZSBib2lscyBkb3duIHRvIGBCUEZfU1lTQ0FMTGAuIEkgbmVlZCB0byBzeW50aGVzaXplIGEgc3VtbWFyeSBvZiB0aGUgYXBwcm9hY2ggZm9yIHRoZSBmdXp6aW5nLlxuXG5NeSB0aGlua2luZyBpcyB0aGlzOiBUaGUga2V5IGFzcGVjdHMgdG8gZnV6emluZyBhcmUgc3RyYWlnaHRmb3J3YXJkLCB3aGljaCBtYWtlcyBtZSB0aGluayBvZiB0aGUgb3ZlcmFsbCBhcHByb2FjaCB0byB0aGlzIHBhcnRpY3VsYXIgcGF0Y2guXG5cbiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlLCBkZWZpbml0ZWx5LiBUaGlzIGlzIGNyaXRpY2FsIEJQRiB2ZXJpZmllciBsb2dpYywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwuIENoYW5nZXMgYXQgdGhpcyBsZXZlbCBhcmUgYWx3YXlzIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBJJ2xsIGJlIHRhcmdldGluZyBgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmYCwgYGNoZWNrX2tmdW5jX2FyZ3NgLCBhbmQgYGJwZl9yZWZjb3VudF9hY3F1aXJlYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhlIG9mZnNldCByZXN0cmljdGlvbiBmb3IgYEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSYCBhcmd1bWVudHMuIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgdGVzdCB0aGUgYm91bmRhcnkgY29uZGl0aW9ucy5cbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogQ29uZmlybWVkOiBgQlBGX1NZU0NBTExgLiBUaGlzIGlzIGhvdyB1c2Vyc3BhY2UgaW50ZXJhY3RzIHdpdGggdGhlIHZlcmlmaWVyLCBzbyBpdCdzIHRoZSByaWdodCBmb2N1cy5cbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMgYWx0ZXJpbmcgdGhlIHZlcmlmaWVyJ3MgYmVoYXZpb3IgcmVnYXJkaW5nIG9mZnNldCByZXN0cmljdGlvbnMgZm9yIGEgc3BlY2lmaWMgdHlwZSBvZiBrZXJuZWwgZnVuY3Rpb24gYXJndW1lbnQuIFRoZSBhaW0gaXMgdG8gbWFrZSBzdXJlIGl0IGZ1bmN0aW9ucyBjb3JyZWN0bHksIHJlamVjdGluZyBpbmNvcnJlY3Qgb2Zmc2V0cyBhbmQgYWxsb3dpbmcgdmFsaWQgb2Zmc2V0cy4gSSBoYXZlIHRvIGZ1enogdG8gc2VlIHRoZSBwYXRjaCdzIGNoYW5nZXMgZG9uJ3QgaW50cm9kdWNlIGVycm9ycyBpbiB2YWxpZCBjYXNlcyBvciBtaXNzIGluY29ycmVjdCBjYXNlcy4gVGhpcyBjaGFuZ2UgaXMgc2VjdXJpdHktc2Vuc2l0aXZlLCBzbyB0aG9yb3VnaCB0ZXN0aW5nIGlzIGltcG9ydGFudC5cblxuSSdsbCBiZSB1c2luZyBgc2V0LXJlc3VsdHNgIHRvIHJlY29yZCBhbmQgcmV0dXJuIHRoZSBmdXp6aW5nIG91dGNvbWVzLiBUaGlzIHN1bW1hcml6ZXMgdGhlIGZ1enppbmcgc3RyYXRlZ3kgcHJldHR5IHdlbGwsIHNvIEknbSBub3cgcmVhZHkgdG8gc3RhcnQgc2V0dGluZyB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc1MzUsIk91dHB1dFRva2VucyI6MTQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDAyOjQ4OjI0LjE0OTIzOTk2MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNjIyODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fY2hlY2tfZnVuY19hcmdfcmVnX29mZlwiLFxuICAgIFwiY2hlY2tfa2Z1bmNfYXJnc1wiLFxuICAgIFwiYnBmX3JlZmNvdW50X2FjcXVpcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHJlc3RyaWN0IHRoZSBhbGxvd2VkIG9mZnNldCBmb3IgS0ZfQVJHX1BUUl9UT19SRUZDT1VOVEVEX0tQVFIgYXJndW1lbnRzIHRvIDAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBjb3JyZWN0bHkgcmVqZWN0cyBpbnZhbGlkIG9mZnNldHMgd2l0aG91dCBicmVha2luZyB2YWxpZCB1c2UgY2FzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmZcIixcbiAgICBcImNoZWNrX2tmdW5jX2FyZ3NcIixcbiAgICBcImJwZl9yZWZjb3VudF9hY3F1aXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byByZXN0cmljdCB0aGUgYWxsb3dlZCBvZmZzZXQgZm9yIEtGX0FSR19QVFJfVE9fUkVGQ09VTlRFRF9LUFRSIGFyZ3VtZW50cyB0byAwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgY29ycmVjdGx5IHJlamVjdHMgaW52YWxpZCBvZmZzZXRzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgdXNlIGNhc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxllqq[1] Phase: Succeeded StartedAt: 2026-06-22 02:49:21 +0000 UTC FinishedAt: 2026-06-22 02:49:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-22 02:49:21 +0000 UTC FinishedAt: 2026-06-22 02:49:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2] Phase: Succeeded StartedAt: 2026-06-22 02:49:21 +0000 UTC FinishedAt: 2026-06-22 06:43:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-22 02:49:21 +0000 UTC FinishedAt: 2026-06-22 06:43:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-22 02:49:21 +0000 UTC FinishedAt: 2026-06-22 02:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-22 02:49:21 +0000 UTC FinishedAt: 2026-06-22 02:49:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxllqq/series-workflowxllqq-convert-artifact-3516971542/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-22 02:49:42 +0000 UTC FinishedAt: 2026-06-22 03:11:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-22 02:49:42 +0000 UTC FinishedAt: 2026-06-22 03:11:09 +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:*d76656a2-5d7c-40d6-a8d0-a555c3d36a32,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-workflowxllqq/series-workflowxllqq-convert-artifact-3516971542/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": "f6473a7d-55ef-410a-bd6c-a5025557600c", "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-workflowxllqq/series-workflowxllqq-build-action-4202424748/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-22 02:49:42 +0000 UTC FinishedAt: 2026-06-22 03:10:59 +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:*d76656a2-5d7c-40d6-a8d0-a555c3d36a32,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-workflowxllqq/series-workflowxllqq-convert-artifact-3516971542/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": "f6473a7d-55ef-410a-bd6c-a5025557600c", "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-workflowxllqq/series-workflowxllqq-build-action-4202424748/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-22 03:11:09 +0000 UTC FinishedAt: 2026-06-22 03:11:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-22 03:11:09 +0000 UTC FinishedAt: 2026-06-22 03:11:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-22 03:11:09 +0000 UTC FinishedAt: 2026-06-22 03:11:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-22 03:11:09 +0000 UTC FinishedAt: 2026-06-22 03:11:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxllqq/series-workflowxllqq-convert-artifact-805700521/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-22 03:11:19 +0000 UTC FinishedAt: 2026-06-22 03:14:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-22 03:11:19 +0000 UTC FinishedAt: 2026-06-22 03:14:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f6473a7d-55ef-410a-bd6c-a5025557600c,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-workflowxllqq/series-workflowxllqq-build-action-4202424748/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-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-22 03:14:11 +0000 UTC FinishedAt: 2026-06-22 03:14:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-22 03:14:11 +0000 UTC FinishedAt: 2026-06-22 03:14:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-22 03:14:11 +0000 UTC FinishedAt: 2026-06-22 03:39:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-22 03:14:11 +0000 UTC FinishedAt: 2026-06-22 03:39:56 +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:*d76656a2-5d7c-40d6-a8d0-a555c3d36a32,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-workflowxllqq/series-workflowxllqq-convert-artifact-805700521/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": "f003f913-e051-407c-b414-63ac3cf9d765", "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-workflowxllqq/series-workflowxllqq-build-action-2662156421/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-22 03:14:11 +0000 UTC FinishedAt: 2026-06-22 03:39:46 +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:*d76656a2-5d7c-40d6-a8d0-a555c3d36a32,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-workflowxllqq/series-workflowxllqq-convert-artifact-805700521/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": "f003f913-e051-407c-b414-63ac3cf9d765", "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-workflowxllqq/series-workflowxllqq-build-action-2662156421/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-22 03:39:56 +0000 UTC FinishedAt: 2026-06-22 03:39:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-22 03:39:56 +0000 UTC FinishedAt: 2026-06-22 03:39:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-22 03:39:56 +0000 UTC FinishedAt: 2026-06-22 03:41:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-22 03:39:56 +0000 UTC FinishedAt: 2026-06-22 03:41:21 +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:*f003f913-e051-407c-b414-63ac3cf9d765,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-workflowxllqq/series-workflowxllqq-build-action-2662156421/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-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-22 03:41:31 +0000 UTC FinishedAt: 2026-06-22 06:43:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-22 03:41:31 +0000 UTC FinishedAt: 2026-06-22 06:43:14 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"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:*f6473a7d-55ef-410a-bd6c-a5025557600c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f003f913-e051-407c-b414-63ac3cf9d765,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-workflowxllqq/series-workflowxllqq-build-action-4202424748/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-workflowxllqq/series-workflowxllqq-build-action-2662156421/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-22 03:41:31 +0000 UTC FinishedAt: 2026-06-22 03:41:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-22 03:41:31 +0000 UTC FinishedAt: 2026-06-22 03:41:36 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"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-workflowxllqq/series-workflowxllqq-convert-artifact-3525695230/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-22 03:41:31 +0000 UTC FinishedAt: 2026-06-22 03:41:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-22 03:41:31 +0000 UTC FinishedAt: 2026-06-22 03:41:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-22 03:41:31 +0000 UTC FinishedAt: 2026-06-22 03:41:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-22 03:41:41 +0000 UTC FinishedAt: 2026-06-22 06:43:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxllqq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["__check_func_arg_reg_off","check_kfunc_args","bpf_refcount_acquire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"4d4dc076-b84b-449c-a449-e782ee3629c7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-22 03:41:41 +0000 UTC FinishedAt: 2026-06-22 06:43:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f6473a7d-55ef-410a-bd6c-a5025557600c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f003f913-e051-407c-b414-63ac3cf9d765,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-workflowxllqq/series-workflowxllqq-build-action-4202424748/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-workflowxllqq/series-workflowxllqq-build-action-2662156421/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-workflowxllqq/series-workflowxllqq-convert-artifact-3525695230/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,}