Name: series-workflowbx5ng Phase: Succeeded StartedAt: 2026-07-31 18:04:38 +0000 UTC FinishedAt: 2026-07-31 22:06:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[0] Phase: Succeeded StartedAt: 2026-07-31 18:04:38 +0000 UTC FinishedAt: 2026-07-31 18:21:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 18:04:38 +0000 UTC FinishedAt: 2026-07-31 18:21:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_NETLINK_QUEUE", "NF_TABLES", "NF_CONNTRACK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_NETLINK_QUEUE", "NF_TABLES", "NF_CONNTRACK" ], "series_id": "1891e4d3-62f2-49ab-97b3-f194e5d4870b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfqnl_recv_verdict", "nft_payload_set_eval" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-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+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBMNCBoZWFkZXIgdmFsaWRhdGlvbiB0byB0aGUgbmV0ZmlsdGVyIG5ldGxpbmsgcXVldWUgcGFja2V0IG1hbmdsaW5nIHBhdGggKG5mcW5sX3JlY3ZfdmVyZGljdCkgYW5kIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlIFRDUCBkYXRhIG9mZnNldCBmaWVsZCBpbiB0aGUgbmZ0YWJsZXMgcGF5bG9hZCBzZXQgZXhwcmVzc2lvbiAobmZ0X3BheWxvYWRfc2V0X2V2YWwpLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUgbmV0ZmlsdGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGIzNTVlNTAwZjI4ZDc0NzE0YWI5OTE0N2I4YjYyNWFjY2JkYTU1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDE4OjE5OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG5pbmRleCBiOGFhZjM5Y2I0ZDhlLi41NjJiN2JmNmM4Nzc3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xuQEAgLTI4LDEwICYjNDM7MjgsMTYgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ljbXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pY21wdjYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpc3QuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9zY3RwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jZ3JvdXAtZGVmcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmhhc2h0YWJsZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC90Y3AuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC91ZHAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NuZXQvZ3JlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZ3NvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc29jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFx1MDAzZVxuQEAgLTExOTIsNiAmIzQzOzExOTgsNDkgQEAgbmZxbmxfZW5xdWV1ZV9wYWNrZXQoc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplbnRyeSwgdW5zaWduZWQgaW50IHF1ZXVlbnVtKVxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2w0KGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4mIzQzO1x0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgdTggcHJvdG8pXG4mIzQzO3tcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcbiYjNDM7XHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbztcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3Q7XG4mIzQzO1xuJiM0MztcdGN0ID0gbmZfY3RfZ2V0KGUtXHUwMDNlc2tiLCBcdTAwMjZjdGluZm8pO1xuJiM0MztcdGlmIChjdCBcdTAwMjZcdTAwMjYgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSBcdTAwMjZcdTAwMjYgbmZfY3RfcHJvdG9udW0oY3QpICE9IHByb3RvKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChwcm90bykge1xuJiM0MztcdGNhc2UgSVBQUk9UT19UQ1A6IHtcbiYjNDM7XHRcdGNvbnN0IHN0cnVjdCB0Y3BoZHIgKnRoID0gKGNvbnN0IHN0cnVjdCB0Y3BoZHIgKilkYXRhO1xuJiM0MztcdFx0dW5zaWduZWQgaW50IHRobGVuO1xuJiM0MztcbiYjNDM7XHRcdGlmIChkYXRhX2xlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0XHR0aGxlbiA9IF9fdGNwX2hkcmxlbih0aCk7XG4mIzQzO1x0XHRpZiAodGhsZW4gXHUwMDNjIHNpemVvZigqdGgpIHx8IGRhdGFfbGVuIFx1MDAzYyB0aGxlbilcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdH1cbiYjNDM7XHRjYXNlIElQUFJPVE9fVURQOlxuJiM0MztcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xuJiM0MztcdGNhc2UgSVBQUk9UT19JQ01QOlxuJiM0MztcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpY21waGRyKTtcbiYjNDM7XHRjYXNlIElQUFJPVE9fSUNNUFY2OlxuJiM0MztcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpY21wNmhkcik7XG4mIzQzO1x0Y2FzZSBJUFBST1RPX1NDVFA6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpO1xuJiM0MztcdGNhc2UgSVBQUk9UT19HUkU6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGdyZV9iYXNlX2hkcik7XG4mIzQzO1x0Y2FzZSBJUFBST1RPX05PTkU6XG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBmYWxzZTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcG9wdHMoY29uc3Qgc3RydWN0IGlwaGRyICppcGhfbmV3LFxuIFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXG4ge1xuQEAgLTEyMjksNyAmIzQzOzEyNzgsOSBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDQoY29uc3Qgc3RydWN0IGlwaGRyICppcGgsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcbiBcdC8qIHN1cHBvcnQgZm9yIGlwb3B0cyBtYW5nbGluZyB3b3VsZCByZXF1aXJlXG4gXHQgKiByZWNvbXBpbGUgJiM0Mzsgc2tiIHRyYW5zcG9ydCBoZWFkZXIgdXBkYXRlLlxuIFx0ICovXG4tXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGlwaCwgZSk7XG4mIzQzO1x0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgICBuZnFubF92YWxpZGF0ZV9sNCgoY29uc3QgdTggKilpcGggJiM0MzsgaWhsLCBkYXRhX2xlbiAtIGlobCwgZSxcbiYjNDM7XHRcdFx0XHQgaXBoLVx1MDAzZXByb3RvY29sKTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfb25lX2V4dGhkcihjb25zdCB1OCAqZGF0YSxcbkBAIC0xMjg2LDcgJiM0MzsxMzM3LDggQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxuIFx0XHRpbnQgaGRybGVuO1xuIFxuIFx0XHRpZiAob3JpZ19uZXh0aGRyID09IE5FWFRIRFJfTk9ORSlcbi1cdFx0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRcdFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLFxuJiM0MztcdFx0XHRcdFx0XHQgbmV3X25leHRoZHIpO1xuIFxuIFx0XHRpZiAodW5saWtlbHkoZXh0aGRyX2NudCYjNDM7JiM0MzsgXHUwMDNlPSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEzMjMsNyAmIzQzOzEzNzUsNyBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsXG4gXHRcdGRhdGEgJiM0Mzs9IGhkcmxlbjtcbiBcdH1cbiBcbi1cdHJldHVybiB0cnVlO1xuJiM0MztcdHJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwgbmV3X25leHRoZHIpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xuaW5kZXggMzkxNTM5YTFjZWFhNy4uNjNjZjNiNGY3NDIwZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXG5AQCAtMTA3Nyw2ICYjNDM7MTA3NywxNyBAQCBzdGF0aWMgYm9vbCBuZnRfcGF5bG9hZF9jc3VtX3dyaXRlX29rKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgbmZ0X3RoX3dyaXRlX29rKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxuJiM0MztcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5mdF9wYXlsb2FkX3NldCAqcHJpdilcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGludCBkb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IHRjcGhkciwgYWNrX3NlcSkgJiM0Mzsgc2l6ZW9mKF9fYmUzMik7XG4mIzQzO1xuJiM0MztcdGlmIChwa3QtXHUwMDNldHByb3QgIT0gSVBQUk9UT19UQ1ApXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHByaXYtXHUwMDNlb2Zmc2V0IFx1MDAzZSBkb2ZmIHx8IHByaXYtXHUwMDNlb2Zmc2V0ICYjNDM7IHByaXYtXHUwMDNlbGVuIFx1MDAzYz0gZG9mZjtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4gXHRcdFx0XHQgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxuIFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxuQEAgLTExMTUsNiAmIzQzOzExMjYsOCBAQCBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4gXHRjYXNlIE5GVF9QQVlMT0FEX1RSQU5TUE9SVF9IRUFERVI6XG4gXHRcdGlmICghKHBrdC1cdTAwM2VmbGFncyBcdTAwMjYgTkZUX1BLVElORk9fTDRQUk9UTykgfHwgcGt0LVx1MDAzZWZyYWdvZmYpXG4gXHRcdFx0Z290byBlcnI7XG4mIzQzO1x0XHRpZiAoIW5mdF90aF93cml0ZV9vayhwa3QsIHByaXYpKVxuJiM0MztcdFx0XHRnb3RvIGVycjtcbiBcdFx0b2Zmc2V0ID0gbmZ0X3Rob2ZmKHBrdCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBORlRfUEFZTE9BRF9JTk5FUl9IRUFERVI6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBMNCBoZWFkZXIgdmFsaWRhdGlvbiB0byB0aGUgbmV0ZmlsdGVyIG5ldGxpbmsgcXVldWUgcGFja2V0IG1hbmdsaW5nIHBhdGggKG5mcW5sX3JlY3ZfdmVyZGljdCkgYW5kIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlIFRDUCBkYXRhIG9mZnNldCBmaWVsZCBpbiB0aGUgbmZ0YWJsZXMgcGF5bG9hZCBzZXQgZXhwcmVzc2lvbiAobmZ0X3BheWxvYWRfc2V0X2V2YWwpLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUgbmV0ZmlsdGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGIzNTVlNTAwZjI4ZDc0NzE0YWI5OTE0N2I4YjYyNWFjY2JkYTU1MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDE4OjE5OjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMKaW5kZXggYjhhYWYzOWNiNGQ4ZS4uNTYyYjdiZjZjODc3NyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jCkBAIC0yOCwxMCAmIzQzOzI4LDE2IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZmlsdGVyL25mbmV0bGluay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pY21wLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ljbXB2Ni5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2xpc3QuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2N0cC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Nncm91cC1kZWZzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcmhhc2h0YWJsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2poYXNoLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3RjcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC91ZHAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L2dyZS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9nc28uaCZndDsKICNpbmNsdWRlICZsdDtuZXQvc29jay5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC90Y3Bfc3RhdGVzLmgmZ3Q7CkBAIC0xMTkyLDYgJiM0MzsxMTk4LDQ5IEBAIG5mcW5sX2VucXVldWVfcGFja2V0KHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksIHVuc2lnbmVkIGludCBxdWV1ZW51bSkKIAlyZXR1cm4gZXJyOwogfQogCiYjNDM7c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfbDQoY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbiwKJiM0MzsJCQkgICAgICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIHU4IHByb3RvKQomIzQzO3sKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfQ09OTlRSQUNLKQomIzQzOwllbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbzsKJiM0MzsJY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0OwomIzQzOwomIzQzOwljdCA9IG5mX2N0X2dldChlLSZndDtza2IsICZhbXA7Y3RpbmZvKTsKJiM0MzsJaWYgKGN0ICZhbXA7JmFtcDsgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSAmYW1wOyZhbXA7IG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBwcm90bykKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsJc3dpdGNoIChwcm90bykgewomIzQzOwljYXNlIElQUFJPVE9fVENQOiB7CiYjNDM7CQljb25zdCBzdHJ1Y3QgdGNwaGRyICp0aCA9IChjb25zdCBzdHJ1Y3QgdGNwaGRyICopZGF0YTsKJiM0MzsJCXVuc2lnbmVkIGludCB0aGxlbjsKJiM0MzsKJiM0MzsJCWlmIChkYXRhX2xlbiAmbHQ7IHNpemVvZigqdGgpKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJCXRobGVuID0gX190Y3BfaGRybGVuKHRoKTsKJiM0MzsJCWlmICh0aGxlbiAmbHQ7IHNpemVvZigqdGgpIHx8IGRhdGFfbGVuICZsdDsgdGhsZW4pCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CX0KJiM0MzsJY2FzZSBJUFBST1RPX1VEUDoKJiM0MzsJCXJldHVybiBkYXRhX2xlbiAmZ3Q7PSBzaXplb2Yoc3RydWN0IHVkcGhkcik7CiYjNDM7CWNhc2UgSVBQUk9UT19JQ01QOgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3QgaWNtcGhkcik7CiYjNDM7CWNhc2UgSVBQUk9UT19JQ01QVjY6CiYjNDM7CQlyZXR1cm4gZGF0YV9sZW4gJmd0Oz0gc2l6ZW9mKHN0cnVjdCBpY21wNmhkcik7CiYjNDM7CWNhc2UgSVBQUk9UT19TQ1RQOgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3Qgc2N0cGhkcik7CiYjNDM7CWNhc2UgSVBQUk9UT19HUkU6CiYjNDM7CQlyZXR1cm4gZGF0YV9sZW4gJmd0Oz0gc2l6ZW9mKHN0cnVjdCBncmVfYmFzZV9oZHIpOwomIzQzOwljYXNlIElQUFJPVE9fTk9ORToKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBmYWxzZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcG9wdHMoY29uc3Qgc3RydWN0IGlwaGRyICppcGhfbmV3LAogCQkJCSAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplKQogewpAQCAtMTIyOSw3ICYjNDM7MTI3OCw5IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNChjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCwgdW5zaWduZWQgaW50IGRhdGFfbGVuLAogCS8qIHN1cHBvcnQgZm9yIGlwb3B0cyBtYW5nbGluZyB3b3VsZCByZXF1aXJlCiAJICogcmVjb21waWxlICYjNDM7IHNrYiB0cmFuc3BvcnQgaGVhZGVyIHVwZGF0ZS4KIAkgKi8KLQlyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGlwaCwgZSk7CiYjNDM7CXJldHVybiBuZnFubF92YWxpZGF0ZV9pcG9wdHMoaXBoLCBlKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAgICBuZnFubF92YWxpZGF0ZV9sNCgoY29uc3QgdTggKilpcGggJiM0MzsgaWhsLCBkYXRhX2xlbiAtIGlobCwgZSwKJiM0MzsJCQkJIGlwaC0mZ3Q7cHJvdG9jb2wpOwogfQogCiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9vbmVfZXh0aGRyKGNvbnN0IHU4ICpkYXRhLApAQCAtMTI4Niw3ICYjNDM7MTMzNyw4IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldywKIAkJaW50IGhkcmxlbjsKIAogCQlpZiAob3JpZ19uZXh0aGRyID09IE5FWFRIRFJfTk9ORSkKLQkJCXJldHVybiB0cnVlOwomIzQzOwkJCXJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwKJiM0MzsJCQkJCQkgbmV3X25leHRoZHIpOwogCiAJCWlmICh1bmxpa2VseShleHRoZHJfY250JiM0MzsmIzQzOyAmZ3Q7PSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpCiAJCQlyZXR1cm4gZmFsc2U7CkBAIC0xMzIzLDcgJiM0MzsxMzc1LDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LAogCQlkYXRhICYjNDM7PSBoZHJsZW47CiAJfQogCi0JcmV0dXJuIHRydWU7CiYjNDM7CXJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwgbmV3X25leHRoZHIpOwogfQogCiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jCmluZGV4IDM5MTUzOWExY2VhYTcuLjYzY2YzYjRmNzQyMGQgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMKQEAgLTEwNzcsNiAmIzQzOzEwNzcsMTcgQEAgc3RhdGljIGJvb2wgbmZ0X3BheWxvYWRfY3N1bV93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCwKIAlyZXR1cm4gZmFsc2U7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsCiYjNDM7CQkJICAgIGNvbnN0IHN0cnVjdCBuZnRfcGF5bG9hZF9zZXQgKnByaXYpCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBpbnQgZG9mZiA9IG9mZnNldG9mKHN0cnVjdCB0Y3BoZHIsIGFja19zZXEpICYjNDM7IHNpemVvZihfX2JlMzIpOwomIzQzOwomIzQzOwlpZiAocGt0LSZndDt0cHJvdCAhPSBJUFBST1RPX1RDUCkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlyZXR1cm4gcHJpdi0mZ3Q7b2Zmc2V0ICZndDsgZG9mZiB8fCBwcml2LSZndDtvZmZzZXQgJiM0MzsgcHJpdi0mZ3Q7bGVuICZsdDs9IGRvZmY7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLAogCQkJCSBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsCiAJCQkJIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KQpAQCAtMTExNSw2ICYjNDM7MTEyNiw4IEBAIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwciwKIAljYXNlIE5GVF9QQVlMT0FEX1RSQU5TUE9SVF9IRUFERVI6CiAJCWlmICghKHBrdC0mZ3Q7ZmxhZ3MgJmFtcDsgTkZUX1BLVElORk9fTDRQUk9UTykgfHwgcGt0LSZndDtmcmFnb2ZmKQogCQkJZ290byBlcnI7CiYjNDM7CQlpZiAoIW5mdF90aF93cml0ZV9vayhwa3QsIHByaXYpKQomIzQzOwkJCWdvdG8gZXJyOwogCQlvZmZzZXQgPSBuZnRfdGhvZmYocGt0KTsKIAkJYnJlYWs7CiAJY2FzZSBORlRfUEFZTE9BRF9JTk5FUl9IRUFERVI6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MDcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQbGFuIGZvciBOZXRmaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IHRvdWNoZXMgYG5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNgIGFuZCBgbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jYC4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiB0aHJ1c3Qgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgTDQgaGVhZGVycyBpbiBgbmZuZXRsaW5rX3F1ZXVlLmNgIHZpYSB0aGVzZSBuZXcgZnVuY3Rpb25zLCBgbmZxbmxfdmFsaWRhdGVfbDRgLCBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYW5kIGBuZnFubF92YWxpZGF0ZV9leHRoZHJgLiBBbmQgdGhlbiwgb3ZlciBpbiBgbmZ0X3BheWxvYWQuY2AsIHRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrIGBuZnRfdGhfd3JpdGVfb2tgIHRvIHByZXZlbnQgd3JpdGVzIHRvIHRoZSBUQ1AgYGRvZmZgIGZpZWxkLgoKRnVuY3Rpb25hbGx5LCB0aGlzIHNlZW1zIGxpa2UgaXQmIzM5O3MgZGlnZ2luZyBpbnRvIHNvbWUgY29yZSBuZXRmaWx0ZXIgYmVoYXZpb3IsIHdoaWNoIG1lYW5zLi4uIGl0JiMzOTtzIGZ1enppbmcgdGltZS4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzIOKAkyBhZGRpbmcgdmFsaWRhdGlvbiBhbmQgcmVzdHJpY3Rpbmcgd3JpdGVzIOKAkyB0aGlzIGlzICpleGFjdGx5KiB0aGUga2luZCBvZiB0aGluZyB0aGF0IGNvdWxkIHVuY292ZXIgc29tZSBuYXN0eSB2dWxuZXJhYmlsaXRpZXMuIEdvdHRhIG1ha2Ugc3VyZSB3ZSBjb3ZlciBhbGwgYmFzZXMuCgpGaXJzdCwgdGhvdWdoLCBJIHNob3VsZCBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMgdG8gbWFrZSBzdXJlIHRoZXNlIGZpbGVzIGFyZSBhY3R1YWxseSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwuIFJpZ2h0LCBgbmZuZXRsaW5rX3F1ZXVlLmNgIGlzIGRyaXZlbiBieSBgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYCwgYW5kIGBuZnRfcGF5bG9hZC5jYCBoaW5nZXMgb24gYENPTkZJR19ORl9UQUJMRVNgLiBUaW1lIHRvIGhlYWQgb3ZlciB0byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdHJhY2sgZG93biB0aG9zZSBzcGVjaWZpYyBjb25maWdzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NlbmFyaW9zIGluIHdoaWNoIHRoaXMgY29kZSBpcyBhY3RpdmUgc28gSSBjYW4gYmV0dGVyIHRhaWxvciB0aGUgZnV6emluZyBlZmZvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVURklMVEVSX05FVExJTktfUVVFVUUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQ2PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19BQ0NUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTUzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIE5GUVVFVUUgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTM4NT1jb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVJcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg4LVx0ZGVwZW5kcyBvbiBORl9DVF9ORVRMSU5LXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzg5Olx0ZGVwZW5kcyBvbiBORVRGSUxURVJfTkVUTElOS19RVUVVRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM5MC1cdGRlcGVuZHMgb24gTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zOTg9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1Rcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDAwLVx0ZGVmYXVsdCBuXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDAxOlx0ZGVwZW5kcyBvbiAoTkVURklMVEVSX05FVExJTktfUVVFVUUgfHwgTkVURklMVEVSX05FVExJTktfTE9HKSBcdTAwMjZcdTAwMjYgTkZfQ1RfTkVUTElOS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTQwMi1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NTY1PWNvbmZpZyBORlRfUVVFVUVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1NjY6XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTY3LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBxdWV1ZSBtb2R1bGVcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTAwMj1jb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMDQtXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMDU6XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktfUVVFVUVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDA2LVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MzIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHJlZ2FyZGluZyB0aGF0IHByb21wdDoKCioqSW5zcGVjdGluZyBOZXRmaWx0ZXImIzM5O3MgTkZUIFBheWxvYWQgSGFuZGxpbmcqKgoKQWxyaWdodCwgdGhlIGluc3RydWN0aW9uIHdhbnRzIG1lIHRvIHN1bW1hcml6ZSBteSB0aG91Z2h0cyBhYm91dCBzb21ldGhpbmcuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYXNraW5nIG1lIHRvIGxvb2sgYXQgYG5mdF9wYXlsb2FkLmNgIHdpdGhpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvYCBkaXJlY3RvcnksIGFuZCBpdCBzZWVtcyByZWxhdGVkIHRvIGEgYE1ha2VmaWxlYC4gSW1tZWRpYXRlbHksIG15IGJyYWluIGdlYXJzIHVwLiBUaGlzIG1lYW5zIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBhdCB0aGUgc291cmNlIGNvZGUgZm9yIGEgc3BlY2lmaWMgbmV0ZmlsdGVyIG1vZHVsZSBvciBmZWF0dXJlIHJlbGF0ZWQgdG8gaGFuZGxpbmcgbmV0d29yayB0cmFmZmljIGF0IGEgbG93IGxldmVsLCBsaWtlbHkgdGhlIHBheWxvYWQgZGF0YSBvZiBwYWNrZXRzLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyBjb2RlIGZvciBuZnRhYmxlcy4KClRoZSByZXF1ZXN0IHRvIGV4YW1pbmUgYG5mdF9wYXlsb2FkLmNgIGlzIHRoZSBrZXkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHdoeSB0aGlzIHNwZWNpZmljIGZpbGU/JiMzNDsgSXMgaXQgcmVsYXRlZCB0byBhIGJ1ZyByZXBvcnQ/IE1heWJlIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRhc2s/IE9yIGlzIGl0IHBhcnQgb2YgYSBiaWdnZXIgaW52ZXN0aWdhdGlvbiBpbnRvIHRoZSBoYW5kbGluZyBvZiBuZXR3b3JrIGRhdGEgYnkgYSBzcGVjaWZpYyBydWxlPyBVbmRlcnN0YW5kaW5nIHdoeSBJJiMzOTttIGJlaW5nIGRpcmVjdGVkIGhlcmUgaXMgaW1wb3J0YW50IHRvIGdpdmUgY29udGV4dCB0byBteSBpbnZlc3RpZ2F0aW9uLgoKSSYjMzk7bSBtZW50YWxseSBwcmVwYXJpbmcgdG8gbmF2aWdhdGUgdGhlIGNvZGUuIEkmIzM5O2xsIGxpa2VseSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgcGF5bG9hZCwgaG93IGl0JiMzOTtzIGFjY2Vzc2VkLCBtYW5pcHVsYXRlZCwgYW5kIGhvdyBpdCBpcyB1c2VkLiBJJiMzOTtsbCBwcm9iYWJseSBiZSBsb29raW5nIGF0IGZ1bmN0aW9uIGNhbGxzIHRoYXQgaW52b2x2ZSB0aGluZ3MgbGlrZSBgc2tiX3B1bGxgLCBgc2tiX2NvcHlfYml0c2AsIG9yIG90aGVyIFNLQiAoc29ja2V0IGJ1ZmZlcikgcmVsYXRlZCBmdW5jdGlvbnMgYW5kIGRhdGEgYWNjZXNzIHBhdHRlcm5zLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGBuZnRfcGF5bG9hZC5jYCBjb2RlIGFuZCBvdGhlciBwYXJ0cyBvZiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yaywgcGFydGljdWxhcmx5IGFueSBvdGhlciBjb2RlIHRoYXQgaW1wbGVtZW50cyBORlQgaG9va3Mgb3IgbWF0Y2hlcnMuIEFuZCBvZiBjb3Vyc2UsIHRoZSBgTWFrZWZpbGVgIHdpbGwgYmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNvdXJjZSBjb2RlIGlzIGNvbXBpbGVkIGFuZCBpbnRlZ3JhdGVkIGludG8gdGhlIE5ldGZpbHRlciBlY29zeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X3BheWxvYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODc9bmZfdGFibGVzLW9ianMgOj0gbmZfdGFibGVzX2NvcmUubyBuZl90YWJsZXNfYXBpLm8gbmZ0X2NoYWluX2ZpbHRlci5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg4LVx0XHQgIG5mX3RhYmxlc190cmFjZS5vIG5mdF9pbW1lZGlhdGUubyBuZnRfY21wLm8gbmZ0X3JhbmdlLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODk6XHRcdCAgbmZ0X2JpdHdpc2UubyBuZnRfYnl0ZW9yZGVyLm8gbmZ0X3BheWxvYWQubyBuZnRfbG9va3VwLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTAtXHRcdCAgbmZ0X2R5bnNldC5vIG5mdF9tZXRhLm8gbmZ0X3J0Lm8gbmZ0X2V4dGhkci5vIG5mdF9sYXN0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTEwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgbmZ0X3BheWxvYWQuY2AgTW9kdWxlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gYG5mdF9wYXlsb2FkLmNgLiBSaWdodCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgcGFydCBvZiB0aGUgYG5mX3RhYmxlc2Agc3Vic3lzdGVtLiBNeSBtZW50YWwgY2hlY2tsaXN0IGtpY2tzIGluIGF1dG9tYXRpY2FsbHkuIFRpbWUgdG8gY29uZmlybSB0aGF0IGRlcGVuZGVuY3kgZXhwbGljaXRseS4gV2hlcmUmIzM5O3MgdGhlIGF1dGhvcml0YXRpdmUgc291cmNlPyBJIHNob3VsZCBjaGVjayBgbmZfdGFibGVzYCBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgY2FuIGZpbmQgdGhlIGJ1aWxkIHByb2Nlc3MgZGVmaW5lZCBhbmQgY29uZmlybSB0aGUgbGlua2FnZSBmb3IgYW55IHNwZWNpZmljIHRhcmdldHMuIFNob3VsZCBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBwcm9jZXNzIHRvIHZlcmlmeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl90YWJsZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODQ9b2JqLSQoQ09ORklHX05GX0RVUF9ORVRERVYpXHQmIzQzOz0gbmZfZHVwX25ldGRldi5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg1LVxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4NjojIG5mX3RhYmxlc1xubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4NzpuZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODg6XHRcdCAgbmZfdGFibGVzX3RyYWNlLm8gbmZ0X2ltbWVkaWF0ZS5vIG5mdF9jbXAubyBuZnRfcmFuZ2UubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04OS1cdFx0ICBuZnRfYml0d2lzZS5vIG5mdF9ieXRlb3JkZXIubyBuZnRfcGF5bG9hZC5vIG5mdF9sb29rdXAubyBcXFxuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTEtXHRcdCAgbmZ0X2NvdW50ZXIubyBuZnRfb2JqcmVmLm8gbmZ0X2lubmVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6OTI6XHRcdCAgbmZ0X2NoYWluX3JvdXRlLm8gbmZfdGFibGVzX29mZmxvYWQubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05My1cdFx0ICBuZnRfc2V0X2hhc2gubyBuZnRfc2V0X2JpdG1hcC5vIG5mdF9zZXRfcmJ0cmVlLm8gXFxcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTk3PWlmbmRlZiBDT05GSUdfVU1MXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjk4Om5mX3RhYmxlcy1vYmpzICYjNDM7PSBuZnRfc2V0X3BpcGFwb19hdngyLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTktZW5kaWZcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwMz1pZmRlZiBDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkVcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA0Om5mX3RhYmxlcy1vYmpzICYjNDM7PSBuZnRfY3RfZmFzdC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwNS1lbmRpZlxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMDY9ZW5kaWZcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTA3LVxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX05GX1RBQkxFUylcdFx0JiM0Mzs9IG5mX3RhYmxlcy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwOS1vYmotJChDT05GSUdfTkZUX0NPTVBBVClcdCYjNDM7PSBuZnRfY29tcGF0Lm9cbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEzNT1vYmotJChDT05GSUdfTkZUX05BVClcdFx0JiM0Mzs9IG5mdF9jaGFpbl9uYXQub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMzYtXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEzNzojIG5mX3RhYmxlcyBuZXRkZXZcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTM4LW9iai0kKENPTkZJR19ORlRfRFVQX05FVERFVilcdCYjNDM7PSBuZnRfZHVwX25ldGRldi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg4MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKk5GX1RBQkxFUyBDb25maWd1cmF0aW9uIERpdmUqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgQ09ORklHX05GX1RBQkxFU2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoZXRoZXIgdGhhdCYjMzk7cyBhY3R1YWxseSBlbmFibGVkIGFuZCBtb3JlIGltcG9ydGFudGx5LCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgKmhvdyogaXQmIzM5O3MgY29uZmlndXJlZC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSBrbm93IHRoaXMgd2lsbCBkaWN0YXRlIHRoZSBhdmFpbGFiaWxpdHkgb2YsIHdlbGwsIHRoZSBlbnRpcmUgYG5mdGFibGVzYCBmcmFtZXdvcmsuIEl0JiMzOTtzIHRoZSBseW5jaHBpbi4gVGhlcmVmb3JlLCBJIG5lZWQgdG8ga25vdyB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGVpciBzdGF0dXNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgbm90IGp1c3Qgd2hldGhlciBgQ09ORklHX05GX1RBQkxFU2AgaXMgc2V0IHRvIGB5YCBvciBgbWAsIGJ1dCBhbHNvIGlmIG90aGVyIGNydWNpYWwgY29tcG9uZW50cyBhcmUgZHJhZ2dlZCBhbG9uZyB3aXRoIGl0LCBvciBwb3RlbnRpYWxseSBnZXR0aW5nIGxlZnQgYmVoaW5kLiBJJiMzOTtsbCBuZWVkIHRvIHJhcGlkbHkgZGV0ZXJtaW5lIHdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCBhcmUgZGVwZW5kZW50IG9uIHRoaXMgc2V0dGluZy4gV2hhdCBtb2R1bGVzIGFyZSB3ZSB0YWxraW5nIGFib3V0IGhlcmU/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGJvb3QgdGltZSwgbWVtb3J5IGZvb3RwcmludCwgYW5kIG92ZXJhbGwgc3lzdGVtIGZ1bmN0aW9uYWxpdHkgaWYgdGhpcyBpcyBjb25maWd1cmVkIGluY29ycmVjdGx5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgcGVyaGFwcyB3aXRoIG9sZGVyIGBpcHRhYmxlc2AgY29uZmlndXJhdGlvbnMsIG9yIGFueSBjdXN0b20gcnVsZXNldHM/IFRoaXMgaXMgYSBjcml0aWNhbCBidWlsZGluZyBibG9jayBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0gbmV0d29ya2luZyBiZWhhdmlvciwgc28gSSBuZWVkIHRvIGV4cGxvcmUgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyB3YXJyYW50cyBhIGRlZXAgZGl2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX1RBQkxFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDUzPWVuZGlmICMgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU2LVx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTQ3MT1pZiBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVx0ZGVwZW5kcyBvbiBJUFY2XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0ODA6Y29uZmlnIE5GX1RBQkxFU19ORVRERVZcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXHRib29sIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgbmV0ZGV2IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MTEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldGZpbHRlciBDb25maWd1cmF0aW9uIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgTkZfVEFCTEVTYCBhbmQgYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBiZWVuIGFsdGVyZWQgaW4gdGhlIGNvZGUuIExldCBtZSBkaXZlIGludG8gdGhlIGZ1bmN0aW9uIGNoYW5nZXMuCgpIbW0sIGZvY3VzaW5nIG9uIGBuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jYC4uLiBJdCBsb29rcyBsaWtlIGBuZnFubF9lbnF1ZXVlX3BhY2tldGAgaXMgdGhlcmUsIGJ1dCBpdCYjMzk7cyBqdXN0IGNvbnRleHQuIFJpZ2h0LCBpdCYjMzk7cyB0aGUgb3RoZXIgdmFsaWRhdGlvbiByb3V0aW5lcyBJIG5lZWQgdG8gZHJpbGwgaW50by4gSSBzZWUgYG5mcW5sX3ZhbGlkYXRlX2w0YCwgYSBuZXcgc3RhdGljIGZ1bmN0aW9uLCBhbmQgbW9kaWZpY2F0aW9ucyB0byBgbmZxbmxfdmFsaWRhdGVfaXBvcHRzYC4gVGhlbiB0aGVyZSBhcmUgY2hhbmdlcyBpbiBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYG5mcW5sX3ZhbGlkYXRlX29uZV9leHRoZHJgLCBgbmZxbmxfdmFsaWRhdGVfZXh0aGRyYCwgYW5kIGBuZnFubF92YWxpZGF0ZV9pcDZgLiBIb2xkIG9uLCBsb29rcyBsaWtlIGBuZnFubF9lbnF1ZXVlX3BhY2tldGAgd2FzbiYjMzk7dCBhY3R1YWxseSBtb2RpZmllZCwgc28gdGhhdCYjMzk7cyBqdXN0IGEgYml0IG9mIGRpc3RyYWN0aW9uLiBUaGUgY2hhbmdlcyBhcmUgc3BlY2lmaWNhbGx5IGluIHRob3NlIGB2YWxpZGF0ZWAgZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCBJUCBhbmQgZXh0ZW5zaW9uIGhlYWRlcnMuIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHdoZXJlIGFuZCBob3cgdGhvc2UgYXJlIGNhbGxlZCwgdG8gZ3Jhc3AgdGhlIGltcGFjdCBvZiB0aGVzZSBhZGp1c3RtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZxbmxfdmFsaWRhdGVfaXA0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTEyNDQ9c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoX25ldyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEyNTctXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjEyNTg6c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEyNTktXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTEzOTc9c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfd3JpdGUoY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQwMS1cdGNhc2UgTkZQUk9UT19JUFY0OlxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNDAyOlx0XHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXA0KGRhdGEsIGRhdGFfbGVuLCBlKTtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQwMy1cdGNhc2UgTkZQUk9UT19JUFY2OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjIzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byBOZXRmaWx0ZXIvbmZxdWV1ZSBXcml0ZSBWYWxpZGF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBOZXRmaWx0ZXIgbmZxdWV1ZSBzZXR1cCBhbmQgaG93IHRoZSBwYWNrZXQgZGF0YSBnZXRzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0cmFjaW5nIHRoZSBmbG93IGZyb20gd2hlbiB3ZSByZWNlaXZlIGEgdmVyZGljdCAobGlrZSBBQ0NFUFQsIERST1AsIGV0Yy4pIGJhY2sgdG8gYWN0dWFsbHkgd3JpdGluZyB0aGUgZGF0YS4KCk15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYG5mcW5sX3ZhbGlkYXRlX3dyaXRlYC4gSXQmIzM5O3MgY2xlYXIgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzICpjcml0aWNhbCouIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBuZnFubF9yZWN2X3ZlcmRpY3RgLCB3aGljaCBtZWFucyBpdCYjMzk7cyByaWdodCBpbiB0aGUgcGF0aCB3aGVyZSB3ZSYjMzk7cmUgcHJvY2Vzc2luZyBkZWNpc2lvbnMgbWFkZSBvbiBxdWV1ZWQgcGFja2V0cy4gSXQmIzM5O3MgdGhlIHBvaW50IHdoZXJlIHdlJiMzOTtyZSBhYm91dCB0byAqZG8qIHNvbWV0aGluZyB3aXRoIHRoZSBwYWNrZXQgZGF0YSBiYXNlZCBvbiB0aGUgdmVyZGljdCwgc28gdmFsaWRhdGluZyB0aGlzIHJpZ2h0IGJlZm9yZSB3cml0aW5nIGlzIGVzc2VudGlhbC4KCkkgaW1hZ2luZSBpdCYjMzk7cyBoZXJlIHdoZXJlIHdlJiMzOTtyZSBjaGVja2luZyB0aGluZ3MgbGlrZSBidWZmZXIgc2l6ZXMsIHBlcm1pc3Npb25zLCBhbmQgcGVyaGFwcyBldmVuIGNvbnNpc3RlbmN5IG9mIHRoZSBwYWNrZXQgbWV0YWRhdGEgYWdhaW5zdCB3aGF0JiMzOTtzIGV4cGVjdGVkLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGNyaXRpY2FsIGtlcm5lbC1sZXZlbCBwYXRoIGhlcmUg4oCTIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciB1bmV4cGVjdGVkIGRhdGEgY2FuIGNhdXNlIGJpZyBwcm9ibGVtcy4gYG5mcW5sX3ZhbGlkYXRlX3dyaXRlYCBpcyBwcm9iYWJseSB0aGUgbGFzdCBsaW5lIG9mIGRlZmVuc2UgYmVmb3JlIGEgcGFja2V0IGlzIGFsdGVyZWQgb3IgcG90ZW50aWFsbHkgbGVha2VkLiBUaGUgbmFtZSBpdHNlbGYgc2hvdXRzICYjMzQ7dmVyaWZ5IGJlZm9yZSBjb21taXQmIzM0OyEKCkkmIzM5O2xsIGhhdmUgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB3aGF0IHZhbGlkYXRpb24gYXNwZWN0cyB0aGUgZGV2ZWxvcGVycyBkZWNpZGVkIHdlcmUgbmVjZXNzYXJ5LiBJJiMzOTtsbCBiZXQgaXQmIzM5O3MgYSB0aWdodCBsb29wIG9mIGNoZWNraW5nIGFuZCBlcnJvciBoYW5kbGluZywgbWFraW5nIHN1cmUgbm90aGluZyBzbGlwcyB0aHJvdWdoIHRoYXQgY291bGQgamVvcGFyZGl6ZSB0aGUgaW50ZWdyaXR5IG9yIHNlY3VyaXR5IG9mIHRoZSBuZXR3b3JrIHRyYWZmaWMuIEkgc2hvdWxkIHRha2UgYSBtb21lbnQgYW5kIHJlZnJlc2ggbXlzZWxmIG9uIHRoZSBgbmZxbmxfcmVjdl92ZXJkaWN0YCBmbG93IHRvIHNlZSB3aGVyZSBpdCBzaXRzIGluIHRoZSBsYXJnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZxbmxfdmFsaWRhdGVfd3JpdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTM4MT1zdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTM5Ni1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTM5NzpzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV93cml0ZShjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEzOTgtXHRcdFx0XHQgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTQxNT1uZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQyMS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQyMjpcdGlmICghbmZxbmxfdmFsaWRhdGVfd3JpdGUoZGF0YSwgZGF0YV9sZW4sIGUpKVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDIzLVx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkyMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBuZXR3b3JrIGZpbHRlcmluZyBvciBuZXRmaWx0ZXI6CgoqKkFuYWx5emluZyB0aGUgQ2FsbCBTdGFjazogYG5mcW5sX21hbmdsZWAgYW5kIGBuZnFubF9yZWN2X3ZlcmRpY3RgKioKCkFscmlnaHQsIG15IG1pbmQmIzM5O3Mgb24gdGhpcyBuZXRmaWx0ZXIgY29ubmVjdGlvbiwgYW5kIEkmIzM5O20gemVyb2luZyBpbiBvbiBhIGNyaXRpY2FsIGxpbms6IGBuZnFubF9tYW5nbGVgIGlzIGNhbGxlZCAqZGlyZWN0bHkqIGZyb20gYG5mcW5sX3JlY3ZfdmVyZGljdGAuIFRoaXMgaXMgc2lnbmlmaWNhbnQuIEl0IHRlbGxzIG1lIHRoYXQgdGhlIHZlcmRpY3QgcHJvY2VzcyDigJMgdGhlIHBvaW50IHdoZXJlIHRoZSBrZXJuZWwgZGVjaWRlcyB3aGF0IHRvIGRvIHdpdGggYSBwYWNrZXQgYWZ0ZXIgaXQmIzM5O3MgYmVlbiBoYW5kbGVkIGJ5IGEgTmV0ZmlsdGVyIFF1ZXVlIChORlFVRVVFKSDigJMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBwYWNrZXQgbWFuZ2xpbmcuIFRoYXQmIzM5O3Mgbm90IGFsd2F5cyBvYnZpb3VzLCBhbmQgaXQgaW5kaWNhdGVzIHRoZSBwYWNrZXQgbW9kaWZpY2F0aW9uIGhhcHBlbnMgcmlnaHQgYmVmb3JlIHRoZSB2ZXJkaWN0IGlzIG1hZGUgb3IgYWN0aW9uIHBlcmZvcm1lZC4gSSYjMzk7bSBub3RpbmcgdGhpcyBpcyBoYXBwZW5pbmcgaW4gYG5mcW5sX3JlY3ZfdmVyZGljdGAsIHdoaWNoIG1lYW5zIHRoaXMgaXMgYWxsIGhhcHBlbmluZyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgcmVjZWl2aW5nIHZlcmRpY3RzIGZyb20gdXNlcmxhbmQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZGF0YSBmbG93IGFuZCBob3cgbW9kaWZpY2F0aW9ucyBhcmUgaW5qZWN0ZWQgaW50byB0aGUgcGFja2V0IHByb2Nlc3NpbmcgcGlwZWxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mcW5sX21hbmdsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNDE0PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQxNTpuZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDE2LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE3NzE9c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE4MjAtXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE4MjE6XHRcdGlmIChuZnFubF9tYW5nbGUobmxhX2RhdGEobmZxYVtORlFBX1BBWUxPQURdKSxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTgyMi1cdFx0XHRcdCBwYXlsb2FkX2xlbiwgZW50cnksIGRpZmYpIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDQ4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIE5ldGZpbHRlciYjMzk7cyBOZXRsaW5rIFF1ZXVlIFZlcmRpY3RzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyBuZXRsaW5rIHF1ZXVlIGhhbmRsaW5nIGlzIGV2b2x2aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyB0aGUga2V5IGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbi4gVGhhdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCwgdGhlIGNlbnRyYWwgaHViIGZvciB0aGUgdmVyZGljdC1zZXR0aW5nIG9wZXJhdGlvbnMgaW4gdGhlIG5ldGxpbmsgcXVldWUuIEdvdCBpdC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBhY2tldHMgYXJlIGhhbmRsZWQgYW5kIG1vZGlmaWVkIGFuZCBob3cgdmVyZGljdHMgYXJlIGltcG9zZWQuCgpOb3cgSSBzZWUgaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY2AsIEkmIzM5O20gZ29pbmcgdG8gZm9sbG93IHRoZSB0cmFjZSBpbnRvIHRoaXMgZmlsZSwgYW5kIGhlcmUgaXQgbG9va3MgbGlrZSBgbmZ0X3RoX3dyaXRlX29rYCBpcyBjYWxsZWQgYnkgYG5mdF9wYXlsb2FkX3NldF9ldmFsYC4gVGhpcyB3aWxsIGxpa2VseSByZXZlYWwgaG93IHBheWxvYWQgdXBkYXRlcyBhcmUgZXZhbHVhdGVkLiBUaGlzIGhlbHBzIHRoZSBsYXJnZXIgcGljdHVyZSBvZiBob3cgcGFja2V0cyBhcmUgZXZhbHVhdGVkIGJ5IHRoZSBuZnRhYmxlcyBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGhhcHBlbnMgYmVmb3JlIGFuZCBhZnRlciB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jPTEwODA9c3RhdGljIGJvb2wgbmZ0X3RoX3dyaXRlX29rKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYy0xMDkwLVxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jOjEwOTE6c3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jLTEwOTItXHRcdFx0XHQgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYz0xMjg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9wYXlsb2FkX3NldF9vcHMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jLTEyODYtXHQuc2l6ZVx0XHQ9IE5GVF9FWFBSX1NJWkUoc2l6ZW9mKHN0cnVjdCBuZnRfcGF5bG9hZF9zZXQpKSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYzoxMjg3Olx0LmV2YWxcdFx0PSBuZnRfcGF5bG9hZF9zZXRfZXZhbCxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYy0xMjg4LVx0LmluaXRcdFx0PSBuZnRfcGF5bG9hZF9zZXRfaW5pdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAyNgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipGb2N1c2luZyBvbiBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGZvciBORlRhYmxlcyBFeHByZXNzaW9uIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UgY2FuIGFuYWx5emUgdGhlIGBuZnRhYmxlc2AgZXhwcmVzc2lvbiwgYW5kIEkmIzM5O3ZlIGlkZW50aWZpZWQgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCBhcyBhbiBldmFsdWF0aW9uIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGFkZCB0aGlzIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZS4gVGhlIGlzc3VlIGlzIHRoYXQgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIGFuZCB1c3VhbGx5LCB3ZSBkb24mIzM5O3QgZm9jdXMgb24gdGhvc2UgZGlyZWN0bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcgaGVyZS4KCkxldCBtZSB2ZXJpZnk6IHllcywgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCAqaXMqIGluZGVlZCBkZWNsYXJlZCBhcyBgc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLiBIbW0sIGJ1dCBpdOKAmXMgYW4gQVBJIGVudHJ5IHBvaW50IGZvciB0aGUgZXhwcmVzc2lvbi4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBzdGF0aWMgaXMgYSBwb3RlbnRpYWwgaHVyZGxlLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGlzIGFub3RoZXIgZW50cnktcG9pbnQsIHBlcmhhcHMgYSBub24tc3RhdGljIG9uZSwgZm9yIGNvbXBhcmlzb24uIFRoZSByZWxhdGVkIGZ1bmN0aW9uIGBuZnRfcGF5bG9hZF9zZXRfb3BzYCBzZWVtcyB0byBhbHNvIGJlIHN0YXRpYy4KCkhvd2V2ZXIsIGRlc3BpdGUgYmVpbmcgc3RhdGljLCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGlzIHN0aWxsIGEgZ29vZCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24gYmVjYXVzZSBpdCYjMzk7cyBjYWxsZWQgaW5kaXJlY3RseSB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlci4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhpcyBpcyBldmVuIHJlbGV2YW50IGZvciBzeXprYWxsZXIuCgpBaGEhIFN5emthbGxlciAqY2FuKiBmb2N1cyBvbiBzdGF0aWMgZnVuY3Rpb25zLCBwcm92aWRlZCB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZC4gVGhhdCYjMzk7cyB0aGUga2V5LiBJIG5lZWQgdG8gY29uZmlybSBpZiBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGlzIGlubGluZWQuIEJhc2VkIG9uIGl0cyBhc3NpZ25tZW50IHRvIGEgZnVuY3Rpb24gcG9pbnRlciDigJMgc3BlY2lmaWNhbGx5IGAuZXZhbCA9IG5mdF9wYXlsb2FkX3NldF9ldmFsYCDigJMgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyAqbm90KiBpbmxpbmVkLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGEgdmFsaWQgdGFyZ2V0LiBUaGUgc2FtZSBsb2dpYyBzaG91bGQgYWxzbyBhcHBseSB0byBgbmZxbmxfcmVjdl92ZXJkaWN0YC4gTm93IHRoYXQgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQsIGl0JiMzOTtzIHNhZmUgdG8gYWRkIGl0IHRvIHRoZSBmb2N1cyBsaXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTY1NT1zdGF0aWMgaW50IG5mcV9pZF9hZnRlcih1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBtYXgpXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNjU5LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNjYwOnN0YXRpYyBpbnQgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE2NjEtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE3MzY9c3RhdGljIGludCBuZnFhX3BhcnNlX2JyaWRnZShzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmVudHJ5LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTc3MC1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTc3MTpzdGF0aWMgaW50IG5mcW5sX3JlY3ZfdmVyZGljdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNzcyLVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBuZnFhW10pXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xOTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZnFubF9jYltORlFOTF9NU0dfTUFYXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE5ODMtXHRbTkZRTkxfTVNHX1ZFUkRJQ1RdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTk4NDpcdFx0LmNhbGxcdFx0PSBuZnFubF9yZWN2X3ZlcmRpY3QsXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE5ODUtXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9SQ1UsXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xOTk1LVx0W05GUU5MX01TR19WRVJESUNUX0JBVENIXSA9IHtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTk5NjpcdFx0LmNhbGxcdFx0PSBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2gsXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE5OTctXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9SQ1UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjAyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIFF1ZXVlIGFuZCBQYXlsb2FkIE1vZGlmaWNhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW5pdGlhbGx5LCBgbmZxbmxfcmVjdl92ZXJkaWN0YCBhbmQgYG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaGAgc2VlbSBsaWtlIGdvb2QgY2FuZGlkYXRlcyBmb3IgZm9jdXNlZCBhbmFseXNpcy4gSSYjMzk7bGwgYWRkIHRob3NlIHRvIGBGb2N1c1N5bWJvbHNgLCBhbG9uZyB3aXRoIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludC4KCkJ1dCB0aGVuIEkgc2VlIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYG5mcW5sX3ZhbGlkYXRlX2w0YC4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nIGJlY2F1c2UgYG5mcW5sX3ZhbGlkYXRlX2w0YCBpcyBjYWxsZWQgYnkgc2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgbGlrZSBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYG5mcW5sX3ZhbGlkYXRlX2V4dGhkcmAsIGFuZCBgbmZxbmxfdmFsaWRhdGVfaXA2YC4gVGhlc2UgaW4gdHVybiBhcmUgY2FsbGVkIGJ5IGBuZnFubF92YWxpZGF0ZV93cml0ZWAsIHdoaWNoIGZlZWRzIGludG8gYG5mcW5sX21hbmdsZWAsIGFuZCBmaW5hbGx5IHRoYXQgaXMgY2FsbGVkIGJ5IGBuZnFubF9yZWN2X3ZlcmRpY3RgLiBSaWdodCwgaXQgbG9va3MgbGlrZSBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBwbGFjZSB0byBmb2N1cy4gSXQmIzM5O3MgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgdG8gdHJhY2UgYmFjayBmcm9tLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgbHVya2luZyBoZXJlLiBBIHF1aWNrIGNoZWNrIHJldmVhbHMgdGhhdCBgQ09ORklHX05GX0NPTk5UUkFDS2AgaXMgdXNlZCBpbiBgbmZxbmxfdmFsaWRhdGVfbDRgLiBPa2F5LCBJJiMzOTtsbCBhZGQgYE5GX0NPTk5UUkFDS2AgdG8gdGhlIHdhdGNoIGxpc3QgdG9vLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gaW5jbHVkZSBhbGwgdGhlIHJlbGV2YW50IGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExNS1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiBtYXJrIHRyYWNraW5nIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBzZWN1cml0eSBtYXJrIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzctXHRib29sICAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgem9uZXMmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVx0Ym9vbCBcJiMzNDtTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTk2LVx0Ym9vbFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O0FtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNTg6Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtJUkMgRENDIHByb3RvY29sIHN1cHBvcnQgKG9ic29sZXRlKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVx0dHJpc3RhdGVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O05ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI5Njpjb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXHR0cmlzdGF0ZSBcJiMzNDtTTk1QIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cdHRyaXN0YXRlIFwmIzM0O1BQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMzEtXHR0cmlzdGF0ZSBcJiMzNDtTQU5FIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM0Mzpjb25maWcgTkZfQ09OTlRSQUNLX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cdHRyaXN0YXRlIFwmIzM0O1NJUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVx0dHJpc3RhdGUgXCYjMzQ7VEZUUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDU1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE5ldGZpbHRlciBDb25maWd1cmF0aW9ucyBhbmQgS2V5IEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgYE5GX0NPTk5UUkFDS2AgaXMgYSB2YWxpZCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR29vZC4gTm93LCBsZXQmIzM5O3MgcXVpY2tseSByZXZpZXcgdGhlIG90aGVyIHNpZ25pZmljYW50IE5ldGZpbHRlciBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgYXJlYS4gSXQgc2VlbXMgYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYCBhbmQgYE5GX1RBQkxFU2AgYXJlIHRoZSBwcmltYXJ5IG9uZXMgdG8ga2VlcCBpbiBtaW5kLCBhbmQgeWVzLCB3ZSBzaG91bGQgZGVmaW5pdGVseSBpbmNsdWRlIGBORl9DT05OVFJBQ0tgIGdpdmVuIHRoZSBmb2N1cy4KClRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgcmVhbGx5IGp1bXBpbmcgb3V0IGF0IG1lIGFzIGNydWNpYWwgaW4gdGhpcyBzcGFjZSBhcmU6IGBuZnFubF9yZWN2X3ZlcmRpY3RgIGFuZCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLiBJIG5lZWQgdG8gYmUgY29tcGxldGVseSBzdXJlLCB0aG91Z2gsIHNvIGxldCYjMzk7cyBjaGVjayBteSBsb2dpYyBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nLgoKSSYjMzk7bSB0aGlua2luZyB0aGF0IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgaXMgdGhlIGtleS4gUmlnaHQsIGl0JiMzOTtzIHRoZSBvbmUgdGhhdCBldmFsdWF0ZXMgdGhlIGBORlRfUEFZTE9BRF9UUkFOU1BPUlRfSEVBREVSYCBhbmQgc3Vic2VxdWVudGx5IGNoZWNrcyBgbmZ0X3RoX3dyaXRlX29rYC4gWXVwLCB0aGF0JiMzOTtzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdGVkLCBpdOKAmXMgdGhlIHJpZ2h0IGZ1bmN0aW9uLgoKTm93LCBsZXQmIzM5O3MgdmFsaWRhdGUgbXkgYXNzdW1wdGlvbiBhYm91dCBgbmZxbmxfcmVjdl92ZXJkaWN0YC4gSXQmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgd2hlcmUgdGhlIGFjdGlvbiBpcy4gT2theSwgaXQgY2FsbHMgYG5mcW5sX21hbmdsZWAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG5mcW5sX3ZhbGlkYXRlX3dyaXRlYCwgYW5kIGZyb20gdGhlcmUgd2UgYnJhbmNoIGludG8gYG5mcW5sX3ZhbGlkYXRlX2lwNGAsIGBuZnFubF92YWxpZGF0ZV9pcDZgLCBhbmQgZmluYWxseSB0aGUgYG5mcW5sX3ZhbGlkYXRlX2w0YCBjaGVja3MuIFBlcmZlY3QuIFllcCwgZGVmaW5pdGVseSB0aGUgcmlnaHQgZnVuY3Rpb24uCgpIb2xkIG9uLCBJIG5lZWQgdG8gY29uc2lkZXIgYG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaGAuIEkgaW5pdGlhbGx5IHRob3VnaHQgaXQgZGlkbiYjMzk7dCBjYWxsIGBuZnFubF9tYW5nbGVgIGFuZCBvbmx5IGRlYWx0IHdpdGggdmVyZGljdHMgd2hlcmUgbm8gcGF5bG9hZCBtb2RpZmljYXRpb25zIGFyZSBwZXJmb3JtZWQuIEhtbSwgaXQgc2VlbXMgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgYXNzdW1wdGlvbi4gSSYjMzk7bSBnb2luZyB0byByZXZpc2l0IHRoYXQgZnVuY3Rpb24gdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE2NTU9c3RhdGljIGludCBuZnFfaWRfYWZ0ZXIodW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBpbnQgbWF4KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTY1OS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTY2MDpzdGF0aWMgaW50IG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNjYxLVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xOTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZnFubF9jYltORlFOTF9NU0dfTUFYXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE5OTUtXHRbTkZRTkxfTVNHX1ZFUkRJQ1RfQkFUQ0hdID0ge1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxOTk2Olx0XHQuY2FsbFx0XHQ9IG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaCxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5Ny1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX1JDVSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMDgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIGBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2hgKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoYC4gVGhhdCBuYW1lIGFsb25lIHRlbGxzIG1lIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciByZWNlaXZpbmcgYW5kIHByb2Nlc3NpbmcgdmVyZGljdHMgaW4gdGhlIE5ldGZpbHRlciBxdWV1ZSBmcmFtZXdvcmssIGxpa2VseSBpbiBiYXRjaCBmb3JtIGZvciBlZmZpY2llbmN5LiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgb2YgdGhlIGtleSBhcmVhcyBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uOiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkIChwcm9iYWJseSBza19idWZmcywgbmV0bGluayBtZXNzYWdlcywgYW5kIHNvbWUga2luZCBvZiB2ZXJkaWN0IGRhdGEpLCB0aGUgZXJyb3IgaGFuZGxpbmcsIGFuZCB0aGUgY29uY3VycmVuY3kgY29uc2lkZXJhdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhpcyBmdW5jdGlvbiBpcyBkZWFsaW5nIHdpdGggbXVsdGlwbGUgTmV0ZmlsdGVyIHF1ZXVlIGNvbm5lY3Rpb25zIG9yIHRocmVhZHMuIFRoaXMgaXMgbGlrZWx5IHRoZSB3b3JraG9yc2UgZnVuY3Rpb24gaW4gdGhlIGtlcm5lbCBtb2R1bGUsIHJpZ2h0IGF0IHRoZSBoZWFydCBvZiB0aGUgcGFja2V0IHByb2Nlc3NpbmcgcGlwZWxpbmUgYXMgdGhlIHZlcmRpY3QgZnJvbSB1c2Vyc3BhY2UgaXMgcmVjZWl2ZWQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSBob3cgaXQgaGFuZGxlcyB0aGluZ3MuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjYwOlx0c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYixcbjE2NjE6XHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxuMTY2MjpcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBuZnFhW10pXG4xNjYzOlx0e1xuMTY2NDpcdFx0c3RydWN0IG5mbmxfcXVldWVfbmV0ICpxID0gbmZubF9xdWV1ZV9wZXJuZXQoaW5mby1cdTAwM2VuZXQpO1xuMTY2NTpcdFx0dTE2IHF1ZXVlX251bSA9IG50b2hzKGluZm8tXHUwMDNlbmZtc2ctXHUwMDNlcmVzX2lkKTtcbjE2NjY6XHRcdHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksICp0bXA7XG4xNjY3Olx0XHRzdHJ1Y3QgbmZxbmxfbXNnX3ZlcmRpY3RfaGRyICp2aGRyO1xuMTY2ODpcdFx0c3RydWN0IG5mcW5sX2luc3RhbmNlICpxdWV1ZTtcbjE2Njk6XHRcdHVuc2lnbmVkIGludCB2ZXJkaWN0LCBtYXhpZDtcbjE2NzA6XHRcdExJU1RfSEVBRChiYXRjaF9saXN0KTtcbjE2NzE6XHRcbjE2NzI6XHRcdHF1ZXVlID0gdmVyZGljdF9pbnN0YW5jZV9sb29rdXAocSwgcXVldWVfbnVtLFxuMTY3MzpcdFx0XHRcdFx0XHRORVRMSU5LX0NCKHNrYikucG9ydGlkKTtcbjE2NzQ6XHRcdGlmIChJU19FUlIocXVldWUpKVxuMTY3NTpcdFx0XHRyZXR1cm4gUFRSX0VSUihxdWV1ZSk7XG4xNjc2Olx0XG4xNjc3Olx0XHR2aGRyID0gdmVyZGljdGhkcl9nZXQobmZxYSk7XG4xNjc4Olx0XHRpZiAoIXZoZHIpXG4xNjc5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTY4MDpcdFxuMTY4MTpcdFx0dmVyZGljdCA9IG50b2hsKHZoZHItXHUwMDNldmVyZGljdCk7XG4xNjgyOlx0XHRtYXhpZCA9IG50b2hsKHZoZHItXHUwMDNlaWQpO1xuMTY4MzpcdFxuMTY4NDpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnF1ZXVlLVx1MDAzZWxvY2spO1xuMTY4NTpcdFxuMTY4NjpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudHJ5LCB0bXAsIFx1MDAyNnF1ZXVlLVx1MDAzZXF1ZXVlX2xpc3QsIGxpc3QpIHtcbjE2ODc6XHRcdFx0aWYgKG5mcV9pZF9hZnRlcihlbnRyeS1cdTAwM2VpZCwgbWF4aWQpKVxuMTY4ODpcdFx0XHRcdGJyZWFrO1xuMTY4OTpcdFx0XHRfX2RlcXVldWVfZW50cnkocXVldWUsIGVudHJ5KTtcbjE2OTA6XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlbnRyeS1cdTAwM2VsaXN0LCBcdTAwMjZiYXRjaF9saXN0KTtcbjE2OTE6XHRcdH1cbjE2OTI6XHRcbjE2OTM6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnF1ZXVlLVx1MDAzZWxvY2spO1xuMTY5NDpcdFxuMTY5NTpcdFx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2YmF0Y2hfbGlzdCkpXG4xNjk2Olx0XHRcdHJldHVybiAtRU5PRU5UO1xuMTY5NzpcdFxuMTY5ODpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudHJ5LCB0bXAsIFx1MDAyNmJhdGNoX2xpc3QsIGxpc3QpIHtcbjE2OTk6XHRcdFx0aWYgKG5mcWFbTkZRQV9NQVJLXSlcbjE3MDA6XHRcdFx0XHRlbnRyeS1cdTAwM2Vza2ItXHUwMDNlbWFyayA9IG50b2hsKG5sYV9nZXRfYmUzMihuZnFhW05GUUFfTUFSS10pKTtcbjE3MDE6XHRcbjE3MDI6XHRcdFx0aWYgKG5mcWFbTkZRQV9QUklPUklUWV0pXG4xNzAzOlx0XHRcdFx0ZW50cnktXHUwMDNlc2tiLVx1MDAzZXByaW9yaXR5ID0gbnRvaGwobmxhX2dldF9iZTMyKG5mcWFbTkZRQV9QUklPUklUWV0pKTtcbjE3MDQ6XHRcbjE3MDU6XHRcdFx0bmZxbmxfcmVpbmplY3QoZW50cnksIHZlcmRpY3QpO1xuMTcwNjpcdFx0fVxuMTcwNzpcdFx0cmV0dXJuIDA7XG4xNzA4Olx0fVxuMTcwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDE2NQoJCQkJCQkJb3V0cHV0OiAxNTMKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE5ldGZpbHRlciBDb2RlIFBhdGgqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcywgYW5kIGl0IGxvb2tzIGxpa2UgYG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaGAgKmRvZXNuJiMzOTt0KiBjYWxsIGBuZnFubF9tYW5nbGVgLiBUaGF0IG1lYW5zIHRoZSBtb2RpZmllZCBjb2RlIGlzbiYjMzk7dCBiZWluZyB0cmlnZ2VyZWQgdGhlcmUsIHdoaWNoIGlzIGhlbHBmdWwgdG8gZWxpbWluYXRlIGEgcG90ZW50aWFsIGF2ZW51ZSBvZiBpbnZlc3RpZ2F0aW9uLiBJdCYjMzk7cyBvbmx5IGBuZnFubF9yZWN2X3ZlcmRpY3RgIHRoYXQgY2FsbHMgYG5mcW5sX21hbmdsZWAsIHRoYXQmIzM5O3MgdGhlIGtleS4KClRoaXMgbWVhbnMgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG15IGFuYWx5c2lzIG9uIGBuZnFubF9yZWN2X3ZlcmRpY3RgIGFuZCwgc3BlY2lmaWNhbGx5LCBvbiBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLiBJdCBzZWVtcyB0aG9zZSBhcmUgdGhlIGNyaXRpY2FsIHN5bWJvbHMgaGVyZS4KCkkmIzM5O3ZlIGFsc28gZ290IHNvbWUgY29uZmlndXJhdGlvbiBkZXRhaWxzIHRvIGNvbnNpZGVyOiBgTkVURklMVEVSX05FVExJTktfUVVFVUVgLCBgTkZfVEFCTEVTYCwgYW5kIGBORl9DT05OVFJBQ0tgIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBjb25maXJtIHRoYXQgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCAqaXMqIGluZGVlZCB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgYG5mdF9wYXlsb2FkX3NldF9vcHNgIGFuZCB0aGF0IGBuZnFubF9yZWN2X3ZlcmRpY3RgIGlzIHRoZSBjYWxsYmFjayBmb3IgYE5GUU5MX01TR19WRVJESUNUYC4gWWVwLCB0aGF0IGFsbCBjaGVja3Mgb3V0LgoKT2theSwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMuIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgZGVwZW5kcyBvbiBgTkVURklMVEVSX05FVExJTktgLCBhbmQgYE5GX1RBQkxFU2Agc2VsZWN0cyBgTkVURklMVEVSX05FVExJTktgLiBPa2F5LCB0aGF0IG1lYW5zIGBORVRGSUxURVJfTkVUTElOS2AgaXMgaW1wbGljaXRseSBlbmFibGVkLiBHb29kIHRvIGtub3cuCgpBbHJpZ2h0LCBJIHRoaW5rIEkgaGF2ZSBhIGNsZWFyIHBpY3R1cmUuIFRpbWUgdG8gdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIHRha2UgYSBjbG9zZXIgbG9vayEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBMNCBoZWFkZXIgdmFsaWRhdGlvbiB0byB0aGUgbmV0ZmlsdGVyIG5ldGxpbmsgcXVldWUgcGFja2V0IG1hbmdsaW5nIHBhdGggKG5mcW5sX3JlY3ZfdmVyZGljdCkgYW5kIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlIFRDUCBkYXRhIG9mZnNldCBmaWVsZCBpbiB0aGUgbmZ0YWJsZXMgcGF5bG9hZCBzZXQgZXhwcmVzc2lvbiAobmZ0X3BheWxvYWRfc2V0X2V2YWwpLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUgbmV0ZmlsdGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRGSUxURVJfTkVUTElOS19RVUVVRSYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZxbmxfcmVjdl92ZXJkaWN0JiMzNDssCiAgICAmIzM0O25mdF9wYXlsb2FkX3NldF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgTDQgaGVhZGVyIHZhbGlkYXRpb24gdG8gdGhlIG5ldGZpbHRlciBuZXRsaW5rIHF1ZXVlIHBhY2tldCBtYW5nbGluZyBwYXRoIChuZnFubF9yZWN2X3ZlcmRpY3QpIGFuZCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSBUQ1AgZGF0YSBvZmZzZXQgZmllbGQgaW4gdGhlIG5mdGFibGVzIHBheWxvYWQgc2V0IGV4cHJlc3Npb24gKG5mdF9wYXlsb2FkX3NldF9ldmFsKS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjE5OjMxLjkwODkyMzUwNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NTg5MzcwOTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXCIsXG4gICAgXCJORl9UQUJMRVNcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mcW5sX3JlY3ZfdmVyZGljdFwiLFxuICAgIFwibmZ0X3BheWxvYWRfc2V0X2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIEw0IGhlYWRlciB2YWxpZGF0aW9uIHRvIHRoZSBuZXRmaWx0ZXIgbmV0bGluayBxdWV1ZSBwYWNrZXQgbWFuZ2xpbmcgcGF0aCAobmZxbmxfcmVjdl92ZXJkaWN0KSBhbmQgYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgd3JpdGluZyB0byB0aGUgVENQIGRhdGEgb2Zmc2V0IGZpZWxkIGluIHRoZSBuZnRhYmxlcyBwYXlsb2FkIHNldCBleHByZXNzaW9uIChuZnRfcGF5bG9hZF9zZXRfZXZhbCkuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBuZXRmaWx0ZXIgY29tcG9uZW50cyB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjE5OjMxLjkwODkyODkxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAxNTc3MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGIzNTVlNTAwZjI4ZDc0NzE0YWI5OTE0N2I4YjYyNWFjY2JkYTU1MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAxODoxOTozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xcbmluZGV4IGI4YWFmMzljYjRkOGUuLjU2MmI3YmY2Yzg3NzcgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcXG5AQCAtMjgsMTAgKzI4LDE2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaWNtcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaWNtcHY2LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saXN0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zY3RwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZ3JvdXAtZGVmcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmhhc2h0YWJsZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvamhhc2guaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RjcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdWRwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvZ3JlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvZ3NvLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvc29jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFxcdTAwM2VcXG5AQCAtMTE5Miw2ICsxMTk4LDQ5IEBAIG5mcW5sX2VucXVldWVfcGFja2V0KHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksIHVuc2lnbmVkIGludCBxdWV1ZW51bSlcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfbDQoY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcXG4rXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplLCB1OCBwcm90bylcXG4re1xcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfQ09OTlRSQUNLKVxcbitcXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbztcXG4rXFx0Y29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0O1xcbitcXG4rXFx0Y3QgPSBuZl9jdF9nZXQoZS1cXHUwMDNlc2tiLCBcXHUwMDI2Y3RpbmZvKTtcXG4rXFx0aWYgKGN0IFxcdTAwMjZcXHUwMDI2ICFuZl9jdF9pc190ZW1wbGF0ZShjdCkgXFx1MDAyNlxcdTAwMjYgbmZfY3RfcHJvdG9udW0oY3QpICE9IHByb3RvKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuKyNlbmRpZlxcbitcXG4rXFx0c3dpdGNoIChwcm90bykge1xcbitcXHRjYXNlIElQUFJPVE9fVENQOiB7XFxuK1xcdFxcdGNvbnN0IHN0cnVjdCB0Y3BoZHIgKnRoID0gKGNvbnN0IHN0cnVjdCB0Y3BoZHIgKilkYXRhO1xcbitcXHRcXHR1bnNpZ25lZCBpbnQgdGhsZW47XFxuK1xcbitcXHRcXHRpZiAoZGF0YV9sZW4gXFx1MDAzYyBzaXplb2YoKnRoKSlcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0XFx0dGhsZW4gPSBfX3RjcF9oZHJsZW4odGgpO1xcbitcXHRcXHRpZiAodGhsZW4gXFx1MDAzYyBzaXplb2YoKnRoKSB8fCBkYXRhX2xlbiBcXHUwMDNjIHRobGVuKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFx0fVxcbitcXHRjYXNlIElQUFJPVE9fVURQOlxcbitcXHRcXHRyZXR1cm4gZGF0YV9sZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xcbitcXHRjYXNlIElQUFJPVE9fSUNNUDpcXG4rXFx0XFx0cmV0dXJuIGRhdGFfbGVuIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWNtcGhkcik7XFxuK1xcdGNhc2UgSVBQUk9UT19JQ01QVjY6XFxuK1xcdFxcdHJldHVybiBkYXRhX2xlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IGljbXA2aGRyKTtcXG4rXFx0Y2FzZSBJUFBST1RPX1NDVFA6XFxuK1xcdFxcdHJldHVybiBkYXRhX2xlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpO1xcbitcXHRjYXNlIElQUFJPVE9fR1JFOlxcbitcXHRcXHRyZXR1cm4gZGF0YV9sZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBncmVfYmFzZV9oZHIpO1xcbitcXHRjYXNlIElQUFJPVE9fTk9ORTpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbitcXG4gc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoX25ldyxcXG4gXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXFxuIHtcXG5AQCAtMTIyOSw3ICsxMjc4LDkgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuIFxcdC8qIHN1cHBvcnQgZm9yIGlwb3B0cyBtYW5nbGluZyB3b3VsZCByZXF1aXJlXFxuIFxcdCAqIHJlY29tcGlsZSArIHNrYiB0cmFuc3BvcnQgaGVhZGVyIHVwZGF0ZS5cXG4gXFx0ICovXFxuLVxcdHJldHVybiBuZnFubF92YWxpZGF0ZV9pcG9wdHMoaXBoLCBlKTtcXG4rXFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgICBuZnFubF92YWxpZGF0ZV9sNCgoY29uc3QgdTggKilpcGggKyBpaGwsIGRhdGFfbGVuIC0gaWhsLCBlLFxcbitcXHRcXHRcXHRcXHQgaXBoLVxcdTAwM2Vwcm90b2NvbCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX29uZV9leHRoZHIoY29uc3QgdTggKmRhdGEsXFxuQEAgLTEyODYsNyArMTMzNyw4IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcXG4gXFx0XFx0aW50IGhkcmxlbjtcXG4gXFxuIFxcdFxcdGlmIChvcmlnX25leHRoZHIgPT0gTkVYVEhEUl9OT05FKVxcbi1cXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFx0XFx0XFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgbmV3X25leHRoZHIpO1xcbiBcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGV4dGhkcl9jbnQrKyBcXHUwMDNlPSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpXFxuIFxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG5AQCAtMTMyMyw3ICsxMzc1LDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxcbiBcXHRcXHRkYXRhICs9IGhkcmxlbjtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0dXJuIHRydWU7XFxuK1xcdHJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwgbmV3X25leHRoZHIpO1xcbiB9XFxuIFxcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNcXG5pbmRleCAzOTE1MzlhMWNlYWE3Li42M2NmM2I0Zjc0MjBkIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xcbkBAIC0xMDc3LDYgKzEwNzcsMTcgQEAgc3RhdGljIGJvb2wgbmZ0X3BheWxvYWRfY3N1bV93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuK1xcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbmZ0X3BheWxvYWRfc2V0ICpwcml2KVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCBkb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IHRjcGhkciwgYWNrX3NlcSkgKyBzaXplb2YoX19iZTMyKTtcXG4rXFxuK1xcdGlmIChwa3QtXFx1MDAzZXRwcm90ICE9IElQUFJPVE9fVENQKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK1xcdHJldHVybiBwcml2LVxcdTAwM2VvZmZzZXQgXFx1MDAzZSBkb2ZmIHx8IHByaXYtXFx1MDAzZW9mZnNldCArIHByaXYtXFx1MDAzZWxlbiBcXHUwMDNjPSBkb2ZmO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuIFxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuIFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcXG5AQCAtMTExNSw2ICsxMTI2LDggQEAgc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbiBcXHRjYXNlIE5GVF9QQVlMT0FEX1RSQU5TUE9SVF9IRUFERVI6XFxuIFxcdFxcdGlmICghKHBrdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBORlRfUEtUSU5GT19MNFBST1RPKSB8fCBwa3QtXFx1MDAzZWZyYWdvZmYpXFxuIFxcdFxcdFxcdGdvdG8gZXJyO1xcbitcXHRcXHRpZiAoIW5mdF90aF93cml0ZV9vayhwa3QsIHByaXYpKVxcbitcXHRcXHRcXHRnb3RvIGVycjtcXG4gXFx0XFx0b2Zmc2V0ID0gbmZ0X3Rob2ZmKHBrdCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIE5GVF9QQVlMT0FEX0lOTkVSX0hFQURFUjpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6MzIuNDExMzI5MTc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzcwODY5NTU5NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSX05FVExJTktfUVVFVUVcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZxbmxfcmVjdl92ZXJkaWN0XCIsXG4gICAgXCJuZnRfcGF5bG9hZF9zZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgTDQgaGVhZGVyIHZhbGlkYXRpb24gdG8gdGhlIG5ldGZpbHRlciBuZXRsaW5rIHF1ZXVlIHBhY2tldCBtYW5nbGluZyBwYXRoIChuZnFubF9yZWN2X3ZlcmRpY3QpIGFuZCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSBUQ1AgZGF0YSBvZmZzZXQgZmllbGQgaW4gdGhlIG5mdGFibGVzIHBheWxvYWQgc2V0IGV4cHJlc3Npb24gKG5mdF9wYXlsb2FkX3NldF9ldmFsKS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGIzNTVlNTAwZjI4ZDc0NzE0YWI5OTE0N2I4YjYyNWFjY2JkYTU1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDE4OjE5OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcbmluZGV4IGI4YWFmMzljYjRkOGUuLjU2MmI3YmY2Yzg3NzcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG5AQCAtMjgsMTAgKzI4LDE2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mbmV0bGluay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ljbXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ljbXB2Ni5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGlzdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc2N0cC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY2dyb3VwLWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JoYXNodGFibGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2poYXNoLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90Y3AuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3VkcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbmV0L2dyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2dzby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3NvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC90Y3Bfc3RhdGVzLmhcdTAwM2VcbkBAIC0xMTkyLDYgKzExOTgsNDkgQEAgbmZxbmxfZW5xdWV1ZV9wYWNrZXQoc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplbnRyeSwgdW5zaWduZWQgaW50IHF1ZXVlbnVtKVxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4rc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfbDQoY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcbitcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIHU4IHByb3RvKVxuK3tcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfQ09OTlRSQUNLKVxuK1x0ZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm87XG4rXHRjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3Q7XG4rXG4rXHRjdCA9IG5mX2N0X2dldChlLVx1MDAzZXNrYiwgXHUwMDI2Y3RpbmZvKTtcbitcdGlmIChjdCBcdTAwMjZcdTAwMjYgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSBcdTAwMjZcdTAwMjYgbmZfY3RfcHJvdG9udW0oY3QpICE9IHByb3RvKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rI2VuZGlmXG4rXG4rXHRzd2l0Y2ggKHByb3RvKSB7XG4rXHRjYXNlIElQUFJPVE9fVENQOiB7XG4rXHRcdGNvbnN0IHN0cnVjdCB0Y3BoZHIgKnRoID0gKGNvbnN0IHN0cnVjdCB0Y3BoZHIgKilkYXRhO1xuK1x0XHR1bnNpZ25lZCBpbnQgdGhsZW47XG4rXG4rXHRcdGlmIChkYXRhX2xlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkpXG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0XHR0aGxlbiA9IF9fdGNwX2hkcmxlbih0aCk7XG4rXHRcdGlmICh0aGxlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkgfHwgZGF0YV9sZW4gXHUwMDNjIHRobGVuKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcbitcdFx0cmV0dXJuIHRydWU7XG4rXHR9XG4rXHRjYXNlIElQUFJPVE9fVURQOlxuK1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IHVkcGhkcik7XG4rXHRjYXNlIElQUFJPVE9fSUNNUDpcbitcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpY21waGRyKTtcbitcdGNhc2UgSVBQUk9UT19JQ01QVjY6XG4rXHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWNtcDZoZHIpO1xuK1x0Y2FzZSBJUFBST1RPX1NDVFA6XG4rXHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3Qgc2N0cGhkcik7XG4rXHRjYXNlIElQUFJPVE9fR1JFOlxuK1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGdyZV9iYXNlX2hkcik7XG4rXHRjYXNlIElQUFJPVE9fTk9ORTpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHR9XG4rXG4rXHRyZXR1cm4gZmFsc2U7XG4rfVxuK1xuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaF9uZXcsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSlcbiB7XG5AQCAtMTIyOSw3ICsxMjc4LDkgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4gXHQvKiBzdXBwb3J0IGZvciBpcG9wdHMgbWFuZ2xpbmcgd291bGQgcmVxdWlyZVxuIFx0ICogcmVjb21waWxlICsgc2tiIHRyYW5zcG9ydCBoZWFkZXIgdXBkYXRlLlxuIFx0ICovXG4tXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGlwaCwgZSk7XG4rXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGlwaCwgZSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgICAgbmZxbmxfdmFsaWRhdGVfbDQoKGNvbnN0IHU4ICopaXBoICsgaWhsLCBkYXRhX2xlbiAtIGlobCwgZSxcbitcdFx0XHRcdCBpcGgtXHUwMDNlcHJvdG9jb2wpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9vbmVfZXh0aGRyKGNvbnN0IHU4ICpkYXRhLFxuQEAgLTEyODYsNyArMTMzNyw4IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcbiBcdFx0aW50IGhkcmxlbjtcbiBcbiBcdFx0aWYgKG9yaWdfbmV4dGhkciA9PSBORVhUSERSX05PTkUpXG4tXHRcdFx0cmV0dXJuIHRydWU7XG4rXHRcdFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLFxuK1x0XHRcdFx0XHRcdCBuZXdfbmV4dGhkcik7XG4gXG4gXHRcdGlmICh1bmxpa2VseShleHRoZHJfY250KysgXHUwMDNlPSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEzMjMsNyArMTM3NSw3IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcbiBcdFx0ZGF0YSArPSBoZHJsZW47XG4gXHR9XG4gXG4tXHRyZXR1cm4gdHJ1ZTtcbitcdHJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwgbmV3X25leHRoZHIpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xuaW5kZXggMzkxNTM5YTFjZWFhNy4uNjNjZjNiNGY3NDIwZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXG5AQCAtMTA3Nyw2ICsxMDc3LDE3IEBAIHN0YXRpYyBib29sIG5mdF9wYXlsb2FkX2NzdW1fd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuK3N0YXRpYyBib29sIG5mdF90aF93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcbitcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5mdF9wYXlsb2FkX3NldCAqcHJpdilcbit7XG4rXHR1bnNpZ25lZCBpbnQgZG9mZiA9IG9mZnNldG9mKHN0cnVjdCB0Y3BoZHIsIGFja19zZXEpICsgc2l6ZW9mKF9fYmUzMik7XG4rXG4rXHRpZiAocGt0LVx1MDAzZXRwcm90ICE9IElQUFJPVE9fVENQKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHJldHVybiBwcml2LVx1MDAzZW9mZnNldCBcdTAwM2UgZG9mZiB8fCBwcml2LVx1MDAzZW9mZnNldCArIHByaXYtXHUwMDNlbGVuIFx1MDAzYz0gZG9mZjtcbit9XG4rXG4gc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuIFx0XHRcdFx0IHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbiBcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcbkBAIC0xMTE1LDYgKzExMjYsOCBAQCBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4gXHRjYXNlIE5GVF9QQVlMT0FEX1RSQU5TUE9SVF9IRUFERVI6XG4gXHRcdGlmICghKHBrdC1cdTAwM2VmbGFncyBcdTAwMjYgTkZUX1BLVElORk9fTDRQUk9UTykgfHwgcGt0LVx1MDAzZWZyYWdvZmYpXG4gXHRcdFx0Z290byBlcnI7XG4rXHRcdGlmICghbmZ0X3RoX3dyaXRlX29rKHBrdCwgcHJpdikpXG4rXHRcdFx0Z290byBlcnI7XG4gXHRcdG9mZnNldCA9IG5mdF90aG9mZihwa3QpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTkZUX1BBWUxPQURfSU5ORVJfSEVBREVSOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6MzIuNDExMzMxMTM1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ0MDkzMDQyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBsYW4gZm9yIE5ldGZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IHRvdWNoZXMgYG5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNgIGFuZCBgbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jYC4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiB0aHJ1c3Qgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgTDQgaGVhZGVycyBpbiBgbmZuZXRsaW5rX3F1ZXVlLmNgIHZpYSB0aGVzZSBuZXcgZnVuY3Rpb25zLCBgbmZxbmxfdmFsaWRhdGVfbDRgLCBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYW5kIGBuZnFubF92YWxpZGF0ZV9leHRoZHJgLiBBbmQgdGhlbiwgb3ZlciBpbiBgbmZ0X3BheWxvYWQuY2AsIHRoZXJlJ3MgYSBuZXcgY2hlY2sgYG5mdF90aF93cml0ZV9va2AgdG8gcHJldmVudCB3cml0ZXMgdG8gdGhlIFRDUCBgZG9mZmAgZmllbGQuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBzZWVtcyBsaWtlIGl0J3MgZGlnZ2luZyBpbnRvIHNvbWUgY29yZSBuZXRmaWx0ZXIgYmVoYXZpb3IsIHdoaWNoIG1lYW5zLi4uIGl0J3MgZnV6emluZyB0aW1lLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZXNlIGNoYW5nZXMg4oCTIGFkZGluZyB2YWxpZGF0aW9uIGFuZCByZXN0cmljdGluZyB3cml0ZXMg4oCTIHRoaXMgaXMgKmV4YWN0bHkqIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgY291bGQgdW5jb3ZlciBzb21lIG5hc3R5IHZ1bG5lcmFiaWxpdGllcy4gR290dGEgbWFrZSBzdXJlIHdlIGNvdmVyIGFsbCBiYXNlcy5cblxuRmlyc3QsIHRob3VnaCwgSSBzaG91bGQgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zIHRvIG1ha2Ugc3VyZSB0aGVzZSBmaWxlcyBhcmUgYWN0dWFsbHkgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBSaWdodCwgYG5mbmV0bGlua19xdWV1ZS5jYCBpcyBkcml2ZW4gYnkgYENPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRWAsIGFuZCBgbmZ0X3BheWxvYWQuY2AgaGluZ2VzIG9uIGBDT05GSUdfTkZfVEFCTEVTYC4gVGltZSB0byBoZWFkIG92ZXIgdG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIHRyYWNrIGRvd24gdGhvc2Ugc3BlY2lmaWMgY29uZmlncy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjZW5hcmlvcyBpbiB3aGljaCB0aGlzIGNvZGUgaXMgYWN0aXZlIHNvIEkgY2FuIGJldHRlciB0YWlsb3IgdGhlIGZ1enppbmcgZWZmb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6MzcuODUyMjY0NzM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyODYzNjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDY9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0FDQ1RcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9Mzg1PWNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4OC1cXHRkZXBlbmRzIG9uIE5GX0NUX05FVExJTktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzg5OlxcdGRlcGVuZHMgb24gTkVURklMVEVSX05FVExJTktfUVVFVUVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzkwLVxcdGRlcGVuZHMgb24gTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTM5OD1jb25maWcgTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwMC1cXHRkZWZhdWx0IG5cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDAxOlxcdGRlcGVuZHMgb24gKE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFIHx8IE5FVEZJTFRFUl9ORVRMSU5LX0xPRykgXFx1MDAyNlxcdTAwMjYgTkZfQ1RfTkVUTElOS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MDItXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTU2NT1jb25maWcgTkZUX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjU2NjpcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU2Ny1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBxdWV1ZSBtb2R1bGVcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTAwMj1jb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAwNC1cXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDA1OlxcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS19RVUVVRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDA2LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6MzcuOTA1MTM0OTQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3NjU3NDAwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbi4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyByZWdhcmRpbmcgdGhhdCBwcm9tcHQ6XG5cbioqSW5zcGVjdGluZyBOZXRmaWx0ZXIncyBORlQgUGF5bG9hZCBIYW5kbGluZyoqXG5cbkFscmlnaHQsIHRoZSBpbnN0cnVjdGlvbiB3YW50cyBtZSB0byBzdW1tYXJpemUgbXkgdGhvdWdodHMgYWJvdXQgc29tZXRoaW5nLiBTcGVjaWZpY2FsbHksIGl0J3MgYXNraW5nIG1lIHRvIGxvb2sgYXQgYG5mdF9wYXlsb2FkLmNgIHdpdGhpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvYCBkaXJlY3RvcnksIGFuZCBpdCBzZWVtcyByZWxhdGVkIHRvIGEgYE1ha2VmaWxlYC4gSW1tZWRpYXRlbHksIG15IGJyYWluIGdlYXJzIHVwLiBUaGlzIG1lYW5zIEknbSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSBzcGVjaWZpYyBuZXRmaWx0ZXIgbW9kdWxlIG9yIGZlYXR1cmUgcmVsYXRlZCB0byBoYW5kbGluZyBuZXR3b3JrIHRyYWZmaWMgYXQgYSBsb3cgbGV2ZWwsIGxpa2VseSB0aGUgcGF5bG9hZCBkYXRhIG9mIHBhY2tldHMuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgaXMgY29kZSBmb3IgbmZ0YWJsZXMuXG5cblRoZSByZXF1ZXN0IHRvIGV4YW1pbmUgYG5mdF9wYXlsb2FkLmNgIGlzIHRoZSBrZXkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHdoeSB0aGlzIHNwZWNpZmljIGZpbGU/XCIgSXMgaXQgcmVsYXRlZCB0byBhIGJ1ZyByZXBvcnQ/IE1heWJlIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRhc2s/IE9yIGlzIGl0IHBhcnQgb2YgYSBiaWdnZXIgaW52ZXN0aWdhdGlvbiBpbnRvIHRoZSBoYW5kbGluZyBvZiBuZXR3b3JrIGRhdGEgYnkgYSBzcGVjaWZpYyBydWxlPyBVbmRlcnN0YW5kaW5nIHdoeSBJJ20gYmVpbmcgZGlyZWN0ZWQgaGVyZSBpcyBpbXBvcnRhbnQgdG8gZ2l2ZSBjb250ZXh0IHRvIG15IGludmVzdGlnYXRpb24uXG5cbkknbSBtZW50YWxseSBwcmVwYXJpbmcgdG8gbmF2aWdhdGUgdGhlIGNvZGUuIEknbGwgbGlrZWx5IG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBwYXlsb2FkLCBob3cgaXQncyBhY2Nlc3NlZCwgbWFuaXB1bGF0ZWQsIGFuZCBob3cgaXQgaXMgdXNlZC4gSSdsbCBwcm9iYWJseSBiZSBsb29raW5nIGF0IGZ1bmN0aW9uIGNhbGxzIHRoYXQgaW52b2x2ZSB0aGluZ3MgbGlrZSBgc2tiX3B1bGxgLCBgc2tiX2NvcHlfYml0c2AsIG9yIG90aGVyIFNLQiAoc29ja2V0IGJ1ZmZlcikgcmVsYXRlZCBmdW5jdGlvbnMgYW5kIGRhdGEgYWNjZXNzIHBhdHRlcm5zLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGBuZnRfcGF5bG9hZC5jYCBjb2RlIGFuZCBvdGhlciBwYXJ0cyBvZiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yaywgcGFydGljdWxhcmx5IGFueSBvdGhlciBjb2RlIHRoYXQgaW1wbGVtZW50cyBORlQgaG9va3Mgb3IgbWF0Y2hlcnMuIEFuZCBvZiBjb3Vyc2UsIHRoZSBgTWFrZWZpbGVgIHdpbGwgYmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNvdXJjZSBjb2RlIGlzIGNvbXBpbGVkIGFuZCBpbnRlZ3JhdGVkIGludG8gdGhlIE5ldGZpbHRlciBlY29zeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxODoxOTo0Mi4zODE3MTEwODFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzcyNzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9wYXlsb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT04Nz1uZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODgtXFx0XFx0ICBuZl90YWJsZXNfdHJhY2UubyBuZnRfaW1tZWRpYXRlLm8gbmZ0X2NtcC5vIG5mdF9yYW5nZS5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg5OlxcdFxcdCAgbmZ0X2JpdHdpc2UubyBuZnRfYnl0ZW9yZGVyLm8gbmZ0X3BheWxvYWQubyBuZnRfbG9va3VwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTAtXFx0XFx0ICBuZnRfZHluc2V0Lm8gbmZ0X21ldGEubyBuZnRfcnQubyBuZnRfZXh0aGRyLm8gbmZ0X2xhc3QubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjE5OjQyLjQ4NzA4OTM3NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NDU2NzI4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYG5mdF9wYXlsb2FkLmNgIE1vZHVsZSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBgbmZ0X3BheWxvYWQuY2AuIFJpZ2h0LCB0aGF0J3MgZGVmaW5pdGVseSBhIHBhcnQgb2YgdGhlIGBuZl90YWJsZXNgIHN1YnN5c3RlbS4gTXkgbWVudGFsIGNoZWNrbGlzdCBraWNrcyBpbiBhdXRvbWF0aWNhbGx5LiBUaW1lIHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGV4cGxpY2l0bHkuIFdoZXJlJ3MgdGhlIGF1dGhvcml0YXRpdmUgc291cmNlPyBJIHNob3VsZCBjaGVjayBgbmZfdGFibGVzYCBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgSSBjYW4gZmluZCB0aGUgYnVpbGQgcHJvY2VzcyBkZWZpbmVkIGFuZCBjb25maXJtIHRoZSBsaW5rYWdlIGZvciBhbnkgc3BlY2lmaWMgdGFyZ2V0cy4gU2hvdWxkIGJlIGEgc3RyYWlnaHRmb3J3YXJkIHByb2Nlc3MgdG8gdmVyaWZ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTEwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6NDUuMjMyNzY1MTI2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzI5OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3RhYmxlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODQ9b2JqLSQoQ09ORklHX05GX0RVUF9ORVRERVYpXFx0Kz0gbmZfZHVwX25ldGRldi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04NS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg2OiMgbmZfdGFibGVzXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4NzpuZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODg6XFx0XFx0ICBuZl90YWJsZXNfdHJhY2UubyBuZnRfaW1tZWRpYXRlLm8gbmZ0X2NtcC5vIG5mdF9yYW5nZS5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg5LVxcdFxcdCAgbmZ0X2JpdHdpc2UubyBuZnRfYnl0ZW9yZGVyLm8gbmZ0X3BheWxvYWQubyBuZnRfbG9va3VwLm8gXFxcXFxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05MS1cXHRcXHQgIG5mdF9jb3VudGVyLm8gbmZ0X29ianJlZi5vIG5mdF9pbm5lci5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjkyOlxcdFxcdCAgbmZ0X2NoYWluX3JvdXRlLm8gbmZfdGFibGVzX29mZmxvYWQubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05My1cXHRcXHQgIG5mdF9zZXRfaGFzaC5vIG5mdF9zZXRfYml0bWFwLm8gbmZ0X3NldF9yYnRyZWUubyBcXFxcXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTk3PWlmbmRlZiBDT05GSUdfVU1MXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo5ODpuZl90YWJsZXMtb2JqcyArPSBuZnRfc2V0X3BpcGFwb19hdngyLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTk5LWVuZGlmXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwMz1pZmRlZiBDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkVcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEwNDpuZl90YWJsZXMtb2JqcyArPSBuZnRfY3RfZmFzdC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDUtZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwNj1lbmRpZlxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTA3LVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA4Om9iai0kKENPTkZJR19ORl9UQUJMRVMpXFx0XFx0Kz0gbmZfdGFibGVzLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwOS1vYmotJChDT05GSUdfTkZUX0NPTVBBVClcXHQrPSBuZnRfY29tcGF0Lm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTM1PW9iai0kKENPTkZJR19ORlRfTkFUKVxcdFxcdCs9IG5mdF9jaGFpbl9uYXQub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTM2LVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM3OiMgbmZfdGFibGVzIG5ldGRldlxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTM4LW9iai0kKENPTkZJR19ORlRfRFVQX05FVERFVilcXHQrPSBuZnRfZHVwX25ldGRldi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjE5OjQ1LjI5NTQ5ODU1MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTM4MjEwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKk5GX1RBQkxFUyBDb25maWd1cmF0aW9uIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGBDT05GSUdfTkZfVEFCTEVTYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIG5haWwgZG93biB3aGV0aGVyIHRoYXQncyBhY3R1YWxseSBlbmFibGVkIGFuZCBtb3JlIGltcG9ydGFudGx5LCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgKmhvdyogaXQncyBjb25maWd1cmVkLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGtub3cgdGhpcyB3aWxsIGRpY3RhdGUgdGhlIGF2YWlsYWJpbGl0eSBvZiwgd2VsbCwgdGhlIGVudGlyZSBgbmZ0YWJsZXNgIGZyYW1ld29yay4gSXQncyB0aGUgbHluY2hwaW4uIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGtub3cgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlaXIgc3RhdHVzZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIG5vdCBqdXN0IHdoZXRoZXIgYENPTkZJR19ORl9UQUJMRVNgIGlzIHNldCB0byBgeWAgb3IgYG1gLCBidXQgYWxzbyBpZiBvdGhlciBjcnVjaWFsIGNvbXBvbmVudHMgYXJlIGRyYWdnZWQgYWxvbmcgd2l0aCBpdCwgb3IgcG90ZW50aWFsbHkgZ2V0dGluZyBsZWZ0IGJlaGluZC4gSSdsbCBuZWVkIHRvIHJhcGlkbHkgZGV0ZXJtaW5lIHdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCBhcmUgZGVwZW5kZW50IG9uIHRoaXMgc2V0dGluZy4gV2hhdCBtb2R1bGVzIGFyZSB3ZSB0YWxraW5nIGFib3V0IGhlcmU/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGJvb3QgdGltZSwgbWVtb3J5IGZvb3RwcmludCwgYW5kIG92ZXJhbGwgc3lzdGVtIGZ1bmN0aW9uYWxpdHkgaWYgdGhpcyBpcyBjb25maWd1cmVkIGluY29ycmVjdGx5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgcGVyaGFwcyB3aXRoIG9sZGVyIGBpcHRhYmxlc2AgY29uZmlndXJhdGlvbnMsIG9yIGFueSBjdXN0b20gcnVsZXNldHM/IFRoaXMgaXMgYSBjcml0aWNhbCBidWlsZGluZyBibG9jayBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0gbmV0d29ya2luZyBiZWhhdmlvciwgc28gSSBuZWVkIHRvIGV4cGxvcmUgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyB3YXJyYW50cyBhIGRlZXAgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjE5OjUwLjAwOTMyMjY5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgyMzc5MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX1RBQkxFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTQ1Mz1lbmRpZiAjIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1Ni1cXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NzE9aWYgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVxcdGRlcGVuZHMgb24gSVBWNlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDgwOmNvbmZpZyBORl9UQUJMRVNfTkVUREVWXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cXHRib29sIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiB0YWJsZXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6NTAuMDg3NTY1MzM4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0ODQ0NjIzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE5ldGZpbHRlciBDb25maWd1cmF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYE5GX1RBQkxFU2AgYW5kIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWVuIGFsdGVyZWQgaW4gdGhlIGNvZGUuIExldCBtZSBkaXZlIGludG8gdGhlIGZ1bmN0aW9uIGNoYW5nZXMuXG5cbkhtbSwgZm9jdXNpbmcgb24gYG5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNgLi4uIEl0IGxvb2tzIGxpa2UgYG5mcW5sX2VucXVldWVfcGFja2V0YCBpcyB0aGVyZSwgYnV0IGl0J3MganVzdCBjb250ZXh0LiBSaWdodCwgaXQncyB0aGUgb3RoZXIgdmFsaWRhdGlvbiByb3V0aW5lcyBJIG5lZWQgdG8gZHJpbGwgaW50by4gSSBzZWUgYG5mcW5sX3ZhbGlkYXRlX2w0YCwgYSBuZXcgc3RhdGljIGZ1bmN0aW9uLCBhbmQgbW9kaWZpY2F0aW9ucyB0byBgbmZxbmxfdmFsaWRhdGVfaXBvcHRzYC4gVGhlbiB0aGVyZSBhcmUgY2hhbmdlcyBpbiBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYG5mcW5sX3ZhbGlkYXRlX29uZV9leHRoZHJgLCBgbmZxbmxfdmFsaWRhdGVfZXh0aGRyYCwgYW5kIGBuZnFubF92YWxpZGF0ZV9pcDZgLiBIb2xkIG9uLCBsb29rcyBsaWtlIGBuZnFubF9lbnF1ZXVlX3BhY2tldGAgd2Fzbid0IGFjdHVhbGx5IG1vZGlmaWVkLCBzbyB0aGF0J3MganVzdCBhIGJpdCBvZiBkaXN0cmFjdGlvbi4gVGhlIGNoYW5nZXMgYXJlIHNwZWNpZmljYWxseSBpbiB0aG9zZSBgdmFsaWRhdGVgIGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggSVAgYW5kIGV4dGVuc2lvbiBoZWFkZXJzLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgaG93IHRob3NlIGFyZSBjYWxsZWQsIHRvIGdyYXNwIHRoZSBpbXBhY3Qgb2YgdGhlc2UgYWRqdXN0bWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MTEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6NTcuNTcyMDMwMzY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIxOTM3OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZxbmxfdmFsaWRhdGVfaXA0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMjQ0PXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaF9uZXcsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEyNTctXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxMjU4OnN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNChjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTI1OS1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMzk3PXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX3dyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQwMS1cXHRjYXNlIE5GUFJPVE9fSVBWNDpcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE0MDI6XFx0XFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwNChkYXRhLCBkYXRhX2xlbiwgZSk7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDAzLVxcdGNhc2UgTkZQUk9UT19JUFY2OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxODoxOTo1Ny42ODQyMjg4MzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUwNTEzNzY1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIE5ldGZpbHRlci9uZnF1ZXVlIFdyaXRlIFZhbGlkYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBOZXRmaWx0ZXIgbmZxdWV1ZSBzZXR1cCBhbmQgaG93IHRoZSBwYWNrZXQgZGF0YSBnZXRzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSdtIHRyYWNpbmcgdGhlIGZsb3cgZnJvbSB3aGVuIHdlIHJlY2VpdmUgYSB2ZXJkaWN0IChsaWtlIEFDQ0VQVCwgRFJPUCwgZXRjLikgYmFjayB0byBhY3R1YWxseSB3cml0aW5nIHRoZSBkYXRhLlxuXG5NeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBuZnFubF92YWxpZGF0ZV93cml0ZWAuIEl0J3MgY2xlYXIgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzICpjcml0aWNhbCouIEl0J3MgY2FsbGVkIGZyb20gYG5mcW5sX3JlY3ZfdmVyZGljdGAsIHdoaWNoIG1lYW5zIGl0J3MgcmlnaHQgaW4gdGhlIHBhdGggd2hlcmUgd2UncmUgcHJvY2Vzc2luZyBkZWNpc2lvbnMgbWFkZSBvbiBxdWV1ZWQgcGFja2V0cy4gSXQncyB0aGUgcG9pbnQgd2hlcmUgd2UncmUgYWJvdXQgdG8gKmRvKiBzb21ldGhpbmcgd2l0aCB0aGUgcGFja2V0IGRhdGEgYmFzZWQgb24gdGhlIHZlcmRpY3QsIHNvIHZhbGlkYXRpbmcgdGhpcyByaWdodCBiZWZvcmUgd3JpdGluZyBpcyBlc3NlbnRpYWwuXG5cbkkgaW1hZ2luZSBpdCdzIGhlcmUgd2hlcmUgd2UncmUgY2hlY2tpbmcgdGhpbmdzIGxpa2UgYnVmZmVyIHNpemVzLCBwZXJtaXNzaW9ucywgYW5kIHBlcmhhcHMgZXZlbiBjb25zaXN0ZW5jeSBvZiB0aGUgcGFja2V0IG1ldGFkYXRhIGFnYWluc3Qgd2hhdCdzIGV4cGVjdGVkLiBXZSdyZSB0YWxraW5nIGFib3V0IGEgY3JpdGljYWwga2VybmVsLWxldmVsIHBhdGggaGVyZSDigJMgYW55IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVuZXhwZWN0ZWQgZGF0YSBjYW4gY2F1c2UgYmlnIHByb2JsZW1zLiBgbmZxbmxfdmFsaWRhdGVfd3JpdGVgIGlzIHByb2JhYmx5IHRoZSBsYXN0IGxpbmUgb2YgZGVmZW5zZSBiZWZvcmUgYSBwYWNrZXQgaXMgYWx0ZXJlZCBvciBwb3RlbnRpYWxseSBsZWFrZWQuIFRoZSBuYW1lIGl0c2VsZiBzaG91dHMgXCJ2ZXJpZnkgYmVmb3JlIGNvbW1pdFwiIVxuXG5JJ2xsIGhhdmUgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB3aGF0IHZhbGlkYXRpb24gYXNwZWN0cyB0aGUgZGV2ZWxvcGVycyBkZWNpZGVkIHdlcmUgbmVjZXNzYXJ5LiBJJ2xsIGJldCBpdCdzIGEgdGlnaHQgbG9vcCBvZiBjaGVja2luZyBhbmQgZXJyb3IgaGFuZGxpbmcsIG1ha2luZyBzdXJlIG5vdGhpbmcgc2xpcHMgdGhyb3VnaCB0aGF0IGNvdWxkIGplb3BhcmRpemUgdGhlIGludGVncml0eSBvciBzZWN1cml0eSBvZiB0aGUgbmV0d29yayB0cmFmZmljLiBJIHNob3VsZCB0YWtlIGEgbW9tZW50IGFuZCByZWZyZXNoIG15c2VsZiBvbiB0aGUgYG5mcW5sX3JlY3ZfdmVyZGljdGAgZmxvdyB0byBzZWUgd2hlcmUgaXQgc2l0cyBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMjMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxODoyMDowMi4xODkzNjg2NjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNjkxNzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mcW5sX3ZhbGlkYXRlX3dyaXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMzgxPXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2LCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEzOTYtXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxMzk3OnN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX3dyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEzOTgtXFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTQxNT1uZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDIxLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQyMjpcXHRpZiAoIW5mcW5sX3ZhbGlkYXRlX3dyaXRlKGRhdGEsIGRhdGFfbGVuLCBlKSlcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MjMtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjAyLjI4MTA2NTYxOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDAxODExNjY0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIG5ldHdvcmsgZmlsdGVyaW5nIG9yIG5ldGZpbHRlcjpcblxuKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2s6IGBuZnFubF9tYW5nbGVgIGFuZCBgbmZxbmxfcmVjdl92ZXJkaWN0YCoqXG5cbkFscmlnaHQsIG15IG1pbmQncyBvbiB0aGlzIG5ldGZpbHRlciBjb25uZWN0aW9uLCBhbmQgSSdtIHplcm9pbmcgaW4gb24gYSBjcml0aWNhbCBsaW5rOiBgbmZxbmxfbWFuZ2xlYCBpcyBjYWxsZWQgKmRpcmVjdGx5KiBmcm9tIGBuZnFubF9yZWN2X3ZlcmRpY3RgLiBUaGlzIGlzIHNpZ25pZmljYW50LiBJdCB0ZWxscyBtZSB0aGF0IHRoZSB2ZXJkaWN0IHByb2Nlc3Mg4oCTIHRoZSBwb2ludCB3aGVyZSB0aGUga2VybmVsIGRlY2lkZXMgd2hhdCB0byBkbyB3aXRoIGEgcGFja2V0IGFmdGVyIGl0J3MgYmVlbiBoYW5kbGVkIGJ5IGEgTmV0ZmlsdGVyIFF1ZXVlIChORlFVRVVFKSDigJMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBwYWNrZXQgbWFuZ2xpbmcuIFRoYXQncyBub3QgYWx3YXlzIG9idmlvdXMsIGFuZCBpdCBpbmRpY2F0ZXMgdGhlIHBhY2tldCBtb2RpZmljYXRpb24gaGFwcGVucyByaWdodCBiZWZvcmUgdGhlIHZlcmRpY3QgaXMgbWFkZSBvciBhY3Rpb24gcGVyZm9ybWVkLiBJJ20gbm90aW5nIHRoaXMgaXMgaGFwcGVuaW5nIGluIGBuZnFubF9yZWN2X3ZlcmRpY3RgLCB3aGljaCBtZWFucyB0aGlzIGlzIGFsbCBoYXBwZW5pbmcgd2l0aGluIHRoZSBjb250ZXh0IG9mIHJlY2VpdmluZyB2ZXJkaWN0cyBmcm9tIHVzZXJsYW5kLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvdyBhbmQgaG93IG1vZGlmaWNhdGlvbnMgYXJlIGluamVjdGVkIGludG8gdGhlIHBhY2tldCBwcm9jZXNzaW5nIHBpcGVsaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTIxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MTIuMjk5MTg0NjUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDg5OTQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnFubF9tYW5nbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE0MTQ9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQxNTpuZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQxNi17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE3NzE9c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTgyMC1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE4MjE6XFx0XFx0aWYgKG5mcW5sX21hbmdsZShubGFfZGF0YShuZnFhW05GUUFfUEFZTE9BRF0pLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTgyMi1cXHRcXHRcXHRcXHQgcGF5bG9hZF9sZW4sIGVudHJ5LCBkaWZmKSBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjEyLjM5MDA4OTAzN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI1NjA1NDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBOZXRmaWx0ZXIncyBOZXRsaW5rIFF1ZXVlIFZlcmRpY3RzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgbmV0bGluayBxdWV1ZSBoYW5kbGluZyBpcyBldm9sdmluZywgYW5kIGl0IGxvb2tzIGxpa2UgYG5mcW5sX3JlY3ZfdmVyZGljdGAgaXMgdGhlIGtleSBmdW5jdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24uIFRoYXQncyB0aGUgbWFpbiBlbnRyeSBwb2ludCwgdGhlIGNlbnRyYWwgaHViIGZvciB0aGUgdmVyZGljdC1zZXR0aW5nIG9wZXJhdGlvbnMgaW4gdGhlIG5ldGxpbmsgcXVldWUuIEdvdCBpdC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBhY2tldHMgYXJlIGhhbmRsZWQgYW5kIG1vZGlmaWVkIGFuZCBob3cgdmVyZGljdHMgYXJlIGltcG9zZWQuXG5cbk5vdyBJIHNlZSBpbiBgbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jYCwgSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgdHJhY2UgaW50byB0aGlzIGZpbGUsIGFuZCBoZXJlIGl0IGxvb2tzIGxpa2UgYG5mdF90aF93cml0ZV9va2AgaXMgY2FsbGVkIGJ5IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIFRoaXMgd2lsbCBsaWtlbHkgcmV2ZWFsIGhvdyBwYXlsb2FkIHVwZGF0ZXMgYXJlIGV2YWx1YXRlZC4gVGhpcyBoZWxwcyB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgaG93IHBhY2tldHMgYXJlIGV2YWx1YXRlZCBieSB0aGUgbmZ0YWJsZXMgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGhhcHBlbnMgYmVmb3JlIGFuZCBhZnRlciB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ0OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjE2LjExNTY5NzI4N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQxOTY5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X3BheWxvYWRfc2V0X2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYz0xMDgwPXN0YXRpYyBib29sIG5mdF90aF93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYy0xMDkwLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYzoxMDkxOnN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTA5Mi1cXHRcXHRcXHRcXHQgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jPTEyODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnRfZXhwcl9vcHMgbmZ0X3BheWxvYWRfc2V0X29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYy0xMjg2LVxcdC5zaXplXFx0XFx0PSBORlRfRVhQUl9TSVpFKHNpemVvZihzdHJ1Y3QgbmZ0X3BheWxvYWRfc2V0KSksXFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jOjEyODc6XFx0LmV2YWxcXHRcXHQ9IG5mdF9wYXlsb2FkX3NldF9ldmFsLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYy0xMjg4LVxcdC5pbml0XFx0XFx0PSBuZnRfcGF5bG9hZF9zZXRfaW5pdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MTYuMTg5ODk5MjAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NDQ4NDQ0MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkZvY3VzaW5nIG9uIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgZm9yIE5GVGFibGVzIEV4cHJlc3Npb24gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgd2UgY2FuIGFuYWx5emUgdGhlIGBuZnRhYmxlc2AgZXhwcmVzc2lvbiwgYW5kIEkndmUgaWRlbnRpZmllZCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGFzIGFuIGV2YWx1YXRpb24gZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gYWRkIHRoaXMgdG8gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlLiBUaGUgaXNzdWUgaXMgdGhhdCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBhbmQgdXN1YWxseSwgd2UgZG9uJ3QgZm9jdXMgb24gdGhvc2UgZGlyZWN0bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcgaGVyZS5cblxuTGV0IG1lIHZlcmlmeTogeWVzLCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgICppcyogaW5kZWVkIGRlY2xhcmVkIGFzIGBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIEhtbSwgYnV0IGl04oCZcyBhbiBBUEkgZW50cnkgcG9pbnQgZm9yIHRoZSBleHByZXNzaW9uLiBUaGUgZmFjdCB0aGF0IGl0J3Mgc3RhdGljIGlzIGEgcG90ZW50aWFsIGh1cmRsZS4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBpcyBhbm90aGVyIGVudHJ5LXBvaW50LCBwZXJoYXBzIGEgbm9uLXN0YXRpYyBvbmUsIGZvciBjb21wYXJpc29uLiBUaGUgcmVsYXRlZCBmdW5jdGlvbiBgbmZ0X3BheWxvYWRfc2V0X29wc2Agc2VlbXMgdG8gYWxzbyBiZSBzdGF0aWMuXG5cbkhvd2V2ZXIsIGRlc3BpdGUgYmVpbmcgc3RhdGljLCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGlzIHN0aWxsIGEgZ29vZCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24gYmVjYXVzZSBpdCdzIGNhbGxlZCBpbmRpcmVjdGx5IHRocm91Z2ggYSBmdW5jdGlvbiBwb2ludGVyLiBJJ20gd29uZGVyaW5nIGlmIHRoaXMgaXMgZXZlbiByZWxldmFudCBmb3Igc3l6a2FsbGVyLlxuXG5BaGEhIFN5emthbGxlciAqY2FuKiBmb2N1cyBvbiBzdGF0aWMgZnVuY3Rpb25zLCBwcm92aWRlZCB0aGV5IGFyZW4ndCBpbmxpbmVkLiBUaGF0J3MgdGhlIGtleS4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCBpcyBpbmxpbmVkLiBCYXNlZCBvbiBpdHMgYXNzaWdubWVudCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIg4oCTIHNwZWNpZmljYWxseSBgLmV2YWwgPSBuZnRfcGF5bG9hZF9zZXRfZXZhbGAg4oCTIEknbSBwcmV0dHkgc3VyZSBpdCdzICpub3QqIGlubGluZWQuIFRoZXJlZm9yZSwgaXQncyBhIHZhbGlkIHRhcmdldC4gVGhlIHNhbWUgbG9naWMgc2hvdWxkIGFsc28gYXBwbHkgdG8gYG5mcW5sX3JlY3ZfdmVyZGljdGAuIE5vdyB0aGF0IEkndmUgY29uZmlybWVkIHRoYXQsIGl0J3Mgc2FmZSB0byBhZGQgaXQgdG8gdGhlIGZvY3VzIGxpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMjYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MjIuMTM0NzQ2Nzg3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzcyMTA3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnFubF9yZWN2X3ZlcmRpY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE2NTU9c3RhdGljIGludCBuZnFfaWRfYWZ0ZXIodW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBpbnQgbWF4KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNjU5LVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTY2MDpzdGF0aWMgaW50IG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTY2MS1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTczNj1zdGF0aWMgaW50IG5mcWFfcGFyc2VfYnJpZGdlKHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE3NzAtXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNzcxOnN0YXRpYyBpbnQgbmZxbmxfcmVjdl92ZXJkaWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNzcyLVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBuZnFhW10pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE5Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIG5mcW5sX2NiW05GUU5MX01TR19NQVhdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xOTgzLVxcdFtORlFOTF9NU0dfVkVSRElDVF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE5ODQ6XFx0XFx0LmNhbGxcXHRcXHQ9IG5mcW5sX3JlY3ZfdmVyZGljdCxcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE5ODUtXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfUkNVLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xOTk1LVxcdFtORlFOTF9NU0dfVkVSRElDVF9CQVRDSF0gPSB7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxOTk2OlxcdFxcdC5jYWxsXFx0XFx0PSBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2gsXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xOTk3LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX1JDVSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MjIuMjAyNDcyNTMzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNTI1ODM3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgUXVldWUgYW5kIFBheWxvYWQgTW9kaWZpY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW5pdGlhbGx5LCBgbmZxbmxfcmVjdl92ZXJkaWN0YCBhbmQgYG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaGAgc2VlbSBsaWtlIGdvb2QgY2FuZGlkYXRlcyBmb3IgZm9jdXNlZCBhbmFseXNpcy4gSSdsbCBhZGQgdGhvc2UgdG8gYEZvY3VzU3ltYm9sc2AsIGFsb25nIHdpdGggYG5mdF9wYXlsb2FkX3NldF9ldmFsYC4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LlxuXG5CdXQgdGhlbiBJIHNlZSB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBuZnFubF92YWxpZGF0ZV9sNGAuIEhtbSwgdGhhdCdzIGludGVyZXN0aW5nIGJlY2F1c2UgYG5mcW5sX3ZhbGlkYXRlX2w0YCBpcyBjYWxsZWQgYnkgc2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgbGlrZSBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYG5mcW5sX3ZhbGlkYXRlX2V4dGhkcmAsIGFuZCBgbmZxbmxfdmFsaWRhdGVfaXA2YC4gVGhlc2UgaW4gdHVybiBhcmUgY2FsbGVkIGJ5IGBuZnFubF92YWxpZGF0ZV93cml0ZWAsIHdoaWNoIGZlZWRzIGludG8gYG5mcW5sX21hbmdsZWAsIGFuZCBmaW5hbGx5IHRoYXQgaXMgY2FsbGVkIGJ5IGBuZnFubF9yZWN2X3ZlcmRpY3RgLiBSaWdodCwgaXQgbG9va3MgbGlrZSBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBwbGFjZSB0byBmb2N1cy4gSXQncyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCB0byB0cmFjZSBiYWNrIGZyb20uXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBsdXJraW5nIGhlcmUuIEEgcXVpY2sgY2hlY2sgcmV2ZWFscyB0aGF0IGBDT05GSUdfTkZfQ09OTlRSQUNLYCBpcyB1c2VkIGluIGBuZnFubF92YWxpZGF0ZV9sNGAuIE9rYXksIEknbGwgYWRkIGBORl9DT05OVFJBQ0tgIHRvIHRoZSB3YXRjaCBsaXN0IHRvby4gSXQncyBpbXBvcnRhbnQgdG8gaW5jbHVkZSBhbGwgdGhlIHJlbGV2YW50IGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMDIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MjcuMzU1MDYwNTc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzc4MDI4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ09OTlRSQUNLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTUtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gbWFyayB0cmFja2luZyBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgc2VjdXJpdHkgbWFyayBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM3LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHpvbmVzJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OS1cXHRib29sIFxcXCJTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1Nzpjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXFx0Ym9vbCBcXFwiQ29ubmVjdGlvbiB0cmFja2luZyBldmVudHNcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjc6Y29uZmlnIE5GX0NPTk5UUkFDS19USU1FT1VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTc3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRVNUQU1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxODg6Y29uZmlnIE5GX0NPTk5UUkFDS19MQUJFTFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgbGFiZWxzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5Ni1cXHRib29sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MjAxPWNvbmZpZyBORl9DVF9QUk9UT19TQ1RQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMTI6Y29uZmlnIE5GX0NPTk5UUkFDS19BTUFOREFcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjEzLVxcdHRyaXN0YXRlIFxcXCJBbWFuZGEgYmFja3VwIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMjc6Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVxcdHRyaXN0YXRlIFxcXCJGVFAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjQwLVxcdHRyaXN0YXRlIFxcXCJILjMyMyBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjU4OmNvbmZpZyBORl9DT05OVFJBQ0tfSVJDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiSVJDIERDQyBwcm90b2NvbCBzdXBwb3J0IChvYnNvbGV0ZSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzQ6Y29uZmlnIE5GX0NPTk5UUkFDS19CUk9BRENBU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVxcdHRyaXN0YXRlXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIk5ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyOTY6Y29uZmlnIE5GX0NPTk5UUkFDS19TTk1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5Ny1cXHR0cmlzdGF0ZSBcXFwiU05NUCBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMTE6Y29uZmlnIE5GX0NPTk5UUkFDS19QUFRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cXHR0cmlzdGF0ZSBcXFwiUFB0UCBwcm90b2NvbCBzdXBwb3J0IChkZXByZWNhdGVkKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMjktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzMxLVxcdHRyaXN0YXRlIFxcXCJTQU5FIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNDM6Y29uZmlnIE5GX0NPTk5UUkFDS19TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQ0LVxcdHRyaXN0YXRlIFxcXCJTSVAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM1NTpjb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVxcdHRyaXN0YXRlIFxcXCJURlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjI3LjQxMjg0ODAxMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njk2MDc5NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5ldGZpbHRlciBDb25maWd1cmF0aW9ucyBhbmQgS2V5IEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIGBORl9DT05OVFJBQ0tgIGlzIGEgdmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb24uIEdvb2QuIE5vdywgbGV0J3MgcXVpY2tseSByZXZpZXcgdGhlIG90aGVyIHNpZ25pZmljYW50IE5ldGZpbHRlciBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgYXJlYS4gSXQgc2VlbXMgYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYCBhbmQgYE5GX1RBQkxFU2AgYXJlIHRoZSBwcmltYXJ5IG9uZXMgdG8ga2VlcCBpbiBtaW5kLCBhbmQgeWVzLCB3ZSBzaG91bGQgZGVmaW5pdGVseSBpbmNsdWRlIGBORl9DT05OVFJBQ0tgIGdpdmVuIHRoZSBmb2N1cy5cblxuVGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSByZWFsbHkganVtcGluZyBvdXQgYXQgbWUgYXMgY3J1Y2lhbCBpbiB0aGlzIHNwYWNlIGFyZTogYG5mcW5sX3JlY3ZfdmVyZGljdGAgYW5kIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIHRob3VnaCwgc28gbGV0J3MgY2hlY2sgbXkgbG9naWMgYW5kIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZy5cblxuSSdtIHRoaW5raW5nIHRoYXQgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCBpcyB0aGUga2V5LiBSaWdodCwgaXQncyB0aGUgb25lIHRoYXQgZXZhbHVhdGVzIHRoZSBgTkZUX1BBWUxPQURfVFJBTlNQT1JUX0hFQURFUmAgYW5kIHN1YnNlcXVlbnRseSBjaGVja3MgYG5mdF90aF93cml0ZV9va2AuIFl1cCwgdGhhdCdzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdGVkLCBpdOKAmXMgdGhlIHJpZ2h0IGZ1bmN0aW9uLlxuXG5Ob3csIGxldCdzIHZhbGlkYXRlIG15IGFzc3VtcHRpb24gYWJvdXQgYG5mcW5sX3JlY3ZfdmVyZGljdGAuIEl0J3MgbXkgdW5kZXJzdGFuZGluZyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgd2hlcmUgdGhlIGFjdGlvbiBpcy4gT2theSwgaXQgY2FsbHMgYG5mcW5sX21hbmdsZWAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG5mcW5sX3ZhbGlkYXRlX3dyaXRlYCwgYW5kIGZyb20gdGhlcmUgd2UgYnJhbmNoIGludG8gYG5mcW5sX3ZhbGlkYXRlX2lwNGAsIGBuZnFubF92YWxpZGF0ZV9pcDZgLCBhbmQgZmluYWxseSB0aGUgYG5mcW5sX3ZhbGlkYXRlX2w0YCBjaGVja3MuIFBlcmZlY3QuIFllcCwgZGVmaW5pdGVseSB0aGUgcmlnaHQgZnVuY3Rpb24uXG5cbkhvbGQgb24sIEkgbmVlZCB0byBjb25zaWRlciBgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoYC4gSSBpbml0aWFsbHkgdGhvdWdodCBpdCBkaWRuJ3QgY2FsbCBgbmZxbmxfbWFuZ2xlYCBhbmQgb25seSBkZWFsdCB3aXRoIHZlcmRpY3RzIHdoZXJlIG5vIHBheWxvYWQgbW9kaWZpY2F0aW9ucyBhcmUgcGVyZm9ybWVkLiBIbW0sIGl0IHNlZW1zIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGF0IGFzc3VtcHRpb24uIEknbSBnb2luZyB0byByZXZpc2l0IHRoYXQgZnVuY3Rpb24gdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNTUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MzQuMTA4OTMxMTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTE3Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTY1NT1zdGF0aWMgaW50IG5mcV9pZF9hZnRlcih1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBtYXgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE2NTktXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNjYwOnN0YXRpYyBpbnQgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoKHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNjYxLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xOTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZnFubF9jYltORlFOTF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5NS1cXHRbTkZRTkxfTVNHX1ZFUkRJQ1RfQkFUQ0hdID0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTk5NjpcXHRcXHQuY2FsbFxcdFxcdD0gbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5Ny1cXHRcXHQudHlwZVxcdFxcdD0gTkZOTF9DQl9SQ1UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjM0LjE4NDQ1MzUwNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzk5Mzk0ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyBgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoYC4gVGhhdCBuYW1lIGFsb25lIHRlbGxzIG1lIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciByZWNlaXZpbmcgYW5kIHByb2Nlc3NpbmcgdmVyZGljdHMgaW4gdGhlIE5ldGZpbHRlciBxdWV1ZSBmcmFtZXdvcmssIGxpa2VseSBpbiBiYXRjaCBmb3JtIGZvciBlZmZpY2llbmN5LiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBvZiB0aGUga2V5IGFyZWFzIEknbGwgbmVlZCB0byBmb2N1cyBvbjogdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCAocHJvYmFibHkgc2tfYnVmZnMsIG5ldGxpbmsgbWVzc2FnZXMsIGFuZCBzb21lIGtpbmQgb2YgdmVyZGljdCBkYXRhKSwgdGhlIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIGNvbmN1cnJlbmN5IGNvbnNpZGVyYXRpb25zLCBlc3BlY2lhbGx5IGlmIHRoaXMgZnVuY3Rpb24gaXMgZGVhbGluZyB3aXRoIG11bHRpcGxlIE5ldGZpbHRlciBxdWV1ZSBjb25uZWN0aW9ucyBvciB0aHJlYWRzLiBUaGlzIGlzIGxpa2VseSB0aGUgd29ya2hvcnNlIGZ1bmN0aW9uIGluIHRoZSBrZXJuZWwgbW9kdWxlLCByaWdodCBhdCB0aGUgaGVhcnQgb2YgdGhlIHBhY2tldCBwcm9jZXNzaW5nIHBpcGVsaW5lIGFzIHRoZSB2ZXJkaWN0IGZyb20gdXNlcnNwYWNlIGlzIHJlY2VpdmVkLiBMZXQncyBkaWcgaW4gYW5kIHNlZSBob3cgaXQgaGFuZGxlcyB0aGluZ3MuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMDgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxODoyMDozOC45ODM4NTE0NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjYwOlxcdHN0YXRpYyBpbnQgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoKHN0cnVjdCBza19idWZmICpza2IsXFxuMTY2MTpcXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG4xNjYyOlxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgbmZxYVtdKVxcbjE2NjM6XFx0e1xcbjE2NjQ6XFx0XFx0c3RydWN0IG5mbmxfcXVldWVfbmV0ICpxID0gbmZubF9xdWV1ZV9wZXJuZXQoaW5mby1cXHUwMDNlbmV0KTtcXG4xNjY1OlxcdFxcdHUxNiBxdWV1ZV9udW0gPSBudG9ocyhpbmZvLVxcdTAwM2VuZm1zZy1cXHUwMDNlcmVzX2lkKTtcXG4xNjY2OlxcdFxcdHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksICp0bXA7XFxuMTY2NzpcXHRcXHRzdHJ1Y3QgbmZxbmxfbXNnX3ZlcmRpY3RfaGRyICp2aGRyO1xcbjE2Njg6XFx0XFx0c3RydWN0IG5mcW5sX2luc3RhbmNlICpxdWV1ZTtcXG4xNjY5OlxcdFxcdHVuc2lnbmVkIGludCB2ZXJkaWN0LCBtYXhpZDtcXG4xNjcwOlxcdFxcdExJU1RfSEVBRChiYXRjaF9saXN0KTtcXG4xNjcxOlxcdFxcbjE2NzI6XFx0XFx0cXVldWUgPSB2ZXJkaWN0X2luc3RhbmNlX2xvb2t1cChxLCBxdWV1ZV9udW0sXFxuMTY3MzpcXHRcXHRcXHRcXHRcXHRcXHRORVRMSU5LX0NCKHNrYikucG9ydGlkKTtcXG4xNjc0OlxcdFxcdGlmIChJU19FUlIocXVldWUpKVxcbjE2NzU6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocXVldWUpO1xcbjE2NzY6XFx0XFxuMTY3NzpcXHRcXHR2aGRyID0gdmVyZGljdGhkcl9nZXQobmZxYSk7XFxuMTY3ODpcXHRcXHRpZiAoIXZoZHIpXFxuMTY3OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNjgwOlxcdFxcbjE2ODE6XFx0XFx0dmVyZGljdCA9IG50b2hsKHZoZHItXFx1MDAzZXZlcmRpY3QpO1xcbjE2ODI6XFx0XFx0bWF4aWQgPSBudG9obCh2aGRyLVxcdTAwM2VpZCk7XFxuMTY4MzpcXHRcXG4xNjg0OlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cXVldWUtXFx1MDAzZWxvY2spO1xcbjE2ODU6XFx0XFxuMTY4NjpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZW50cnksIHRtcCwgXFx1MDAyNnF1ZXVlLVxcdTAwM2VxdWV1ZV9saXN0LCBsaXN0KSB7XFxuMTY4NzpcXHRcXHRcXHRpZiAobmZxX2lkX2FmdGVyKGVudHJ5LVxcdTAwM2VpZCwgbWF4aWQpKVxcbjE2ODg6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTY4OTpcXHRcXHRcXHRfX2RlcXVldWVfZW50cnkocXVldWUsIGVudHJ5KTtcXG4xNjkwOlxcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmVudHJ5LVxcdTAwM2VsaXN0LCBcXHUwMDI2YmF0Y2hfbGlzdCk7XFxuMTY5MTpcXHRcXHR9XFxuMTY5MjpcXHRcXG4xNjkzOlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZxdWV1ZS1cXHUwMDNlbG9jayk7XFxuMTY5NDpcXHRcXG4xNjk1OlxcdFxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZiYXRjaF9saXN0KSlcXG4xNjk2OlxcdFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbjE2OTc6XFx0XFxuMTY5ODpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZW50cnksIHRtcCwgXFx1MDAyNmJhdGNoX2xpc3QsIGxpc3QpIHtcXG4xNjk5OlxcdFxcdFxcdGlmIChuZnFhW05GUUFfTUFSS10pXFxuMTcwMDpcXHRcXHRcXHRcXHRlbnRyeS1cXHUwMDNlc2tiLVxcdTAwM2VtYXJrID0gbnRvaGwobmxhX2dldF9iZTMyKG5mcWFbTkZRQV9NQVJLXSkpO1xcbjE3MDE6XFx0XFxuMTcwMjpcXHRcXHRcXHRpZiAobmZxYVtORlFBX1BSSU9SSVRZXSlcXG4xNzAzOlxcdFxcdFxcdFxcdGVudHJ5LVxcdTAwM2Vza2ItXFx1MDAzZXByaW9yaXR5ID0gbnRvaGwobmxhX2dldF9iZTMyKG5mcWFbTkZRQV9QUklPUklUWV0pKTtcXG4xNzA0OlxcdFxcbjE3MDU6XFx0XFx0XFx0bmZxbmxfcmVpbmplY3QoZW50cnksIHZlcmRpY3QpO1xcbjE3MDY6XFx0XFx0fVxcbjE3MDc6XFx0XFx0cmV0dXJuIDA7XFxuMTcwODpcXHR9XFxuMTcwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MzguOTgzOTY3NzRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzNjg3MDAyODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE5ldGZpbHRlciBDb2RlIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMsIGFuZCBpdCBsb29rcyBsaWtlIGBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2hgICpkb2Vzbid0KiBjYWxsIGBuZnFubF9tYW5nbGVgLiBUaGF0IG1lYW5zIHRoZSBtb2RpZmllZCBjb2RlIGlzbid0IGJlaW5nIHRyaWdnZXJlZCB0aGVyZSwgd2hpY2ggaXMgaGVscGZ1bCB0byBlbGltaW5hdGUgYSBwb3RlbnRpYWwgYXZlbnVlIG9mIGludmVzdGlnYXRpb24uIEl0J3Mgb25seSBgbmZxbmxfcmVjdl92ZXJkaWN0YCB0aGF0IGNhbGxzIGBuZnFubF9tYW5nbGVgLCB0aGF0J3MgdGhlIGtleS5cblxuVGhpcyBtZWFucyBJIG5lZWQgdG8gY29uY2VudHJhdGUgbXkgYW5hbHlzaXMgb24gYG5mcW5sX3JlY3ZfdmVyZGljdGAgYW5kLCBzcGVjaWZpY2FsbHksIG9uIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIEl0IHNlZW1zIHRob3NlIGFyZSB0aGUgY3JpdGljYWwgc3ltYm9scyBoZXJlLlxuXG5JJ3ZlIGFsc28gZ290IHNvbWUgY29uZmlndXJhdGlvbiBkZXRhaWxzIHRvIGNvbnNpZGVyOiBgTkVURklMVEVSX05FVExJTktfUVVFVUVgLCBgTkZfVEFCTEVTYCwgYW5kIGBORl9DT05OVFJBQ0tgIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgY29uZmlybSB0aGF0IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgKmlzKiBpbmRlZWQgdGhlIGV2YWx1YXRpb24gZnVuY3Rpb24gZm9yIGBuZnRfcGF5bG9hZF9zZXRfb3BzYCBhbmQgdGhhdCBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyB0aGUgY2FsbGJhY2sgZm9yIGBORlFOTF9NU0dfVkVSRElDVGAuIFllcCwgdGhhdCBhbGwgY2hlY2tzIG91dC5cblxuT2theSwgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlnIGRlcGVuZGVuY2llcy4gYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYCBkZXBlbmRzIG9uIGBORVRGSUxURVJfTkVUTElOS2AsIGFuZCBgTkZfVEFCTEVTYCBzZWxlY3RzIGBORVRGSUxURVJfTkVUTElOS2AuIE9rYXksIHRoYXQgbWVhbnMgYE5FVEZJTFRFUl9ORVRMSU5LYCBpcyBpbXBsaWNpdGx5IGVuYWJsZWQuIEdvb2QgdG8ga25vdy5cblxuQWxyaWdodCwgSSB0aGluayBJIGhhdmUgYSBjbGVhciBwaWN0dXJlLiBUaW1lIHRvIHVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2shXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MTY1LCJPdXRwdXRUb2tlbnMiOjE1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjQ5LjM1MjY3MjEyMloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTYwODM1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSX05FVExJTktfUVVFVUVcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZxbmxfcmVjdl92ZXJkaWN0XCIsXG4gICAgXCJuZnRfcGF5bG9hZF9zZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgTDQgaGVhZGVyIHZhbGlkYXRpb24gdG8gdGhlIG5ldGZpbHRlciBuZXRsaW5rIHF1ZXVlIHBhY2tldCBtYW5nbGluZyBwYXRoIChuZnFubF9yZWN2X3ZlcmRpY3QpIGFuZCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSBUQ1AgZGF0YSBvZmZzZXQgZmllbGQgaW4gdGhlIG5mdGFibGVzIHBheWxvYWQgc2V0IGV4cHJlc3Npb24gKG5mdF9wYXlsb2FkX3NldF9ldmFsKS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJfTkVUTElOS19RVUVVRVwiLFxuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnFubF9yZWN2X3ZlcmRpY3RcIixcbiAgICBcIm5mdF9wYXlsb2FkX3NldF9ldmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBMNCBoZWFkZXIgdmFsaWRhdGlvbiB0byB0aGUgbmV0ZmlsdGVyIG5ldGxpbmsgcXVldWUgcGFja2V0IG1hbmdsaW5nIHBhdGggKG5mcW5sX3JlY3ZfdmVyZGljdCkgYW5kIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlIFRDUCBkYXRhIG9mZnNldCBmaWVsZCBpbiB0aGUgbmZ0YWJsZXMgcGF5bG9hZCBzZXQgZXhwcmVzc2lvbiAobmZ0X3BheWxvYWRfc2V0X2V2YWwpLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUgbmV0ZmlsdGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowbx5ng[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 18:04:38 +0000 UTC FinishedAt: 2026-07-31 18:20:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_NETLINK_QUEUE", "NF_TABLES", "NF_CONNTRACK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_NETLINK_QUEUE", "NF_TABLES", "NF_CONNTRACK" ], "series_id": "1891e4d3-62f2-49ab-97b3-f194e5d4870b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfqnl_recv_verdict", "nft_payload_set_eval" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-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+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBMNCBoZWFkZXIgdmFsaWRhdGlvbiB0byB0aGUgbmV0ZmlsdGVyIG5ldGxpbmsgcXVldWUgcGFja2V0IG1hbmdsaW5nIHBhdGggKG5mcW5sX3JlY3ZfdmVyZGljdCkgYW5kIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlIFRDUCBkYXRhIG9mZnNldCBmaWVsZCBpbiB0aGUgbmZ0YWJsZXMgcGF5bG9hZCBzZXQgZXhwcmVzc2lvbiAobmZ0X3BheWxvYWRfc2V0X2V2YWwpLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUgbmV0ZmlsdGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGIzNTVlNTAwZjI4ZDc0NzE0YWI5OTE0N2I4YjYyNWFjY2JkYTU1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDE4OjE5OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG5pbmRleCBiOGFhZjM5Y2I0ZDhlLi41NjJiN2JmNmM4Nzc3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xuQEAgLTI4LDEwICYjNDM7MjgsMTYgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ljbXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pY21wdjYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpc3QuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9zY3RwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jZ3JvdXAtZGVmcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmhhc2h0YWJsZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC90Y3AuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC91ZHAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NuZXQvZ3JlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZ3NvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc29jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFx1MDAzZVxuQEAgLTExOTIsNiAmIzQzOzExOTgsNDkgQEAgbmZxbmxfZW5xdWV1ZV9wYWNrZXQoc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplbnRyeSwgdW5zaWduZWQgaW50IHF1ZXVlbnVtKVxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2w0KGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4mIzQzO1x0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgdTggcHJvdG8pXG4mIzQzO3tcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcbiYjNDM7XHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbztcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3Q7XG4mIzQzO1xuJiM0MztcdGN0ID0gbmZfY3RfZ2V0KGUtXHUwMDNlc2tiLCBcdTAwMjZjdGluZm8pO1xuJiM0MztcdGlmIChjdCBcdTAwMjZcdTAwMjYgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSBcdTAwMjZcdTAwMjYgbmZfY3RfcHJvdG9udW0oY3QpICE9IHByb3RvKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChwcm90bykge1xuJiM0MztcdGNhc2UgSVBQUk9UT19UQ1A6IHtcbiYjNDM7XHRcdGNvbnN0IHN0cnVjdCB0Y3BoZHIgKnRoID0gKGNvbnN0IHN0cnVjdCB0Y3BoZHIgKilkYXRhO1xuJiM0MztcdFx0dW5zaWduZWQgaW50IHRobGVuO1xuJiM0MztcbiYjNDM7XHRcdGlmIChkYXRhX2xlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0XHR0aGxlbiA9IF9fdGNwX2hkcmxlbih0aCk7XG4mIzQzO1x0XHRpZiAodGhsZW4gXHUwMDNjIHNpemVvZigqdGgpIHx8IGRhdGFfbGVuIFx1MDAzYyB0aGxlbilcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdH1cbiYjNDM7XHRjYXNlIElQUFJPVE9fVURQOlxuJiM0MztcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xuJiM0MztcdGNhc2UgSVBQUk9UT19JQ01QOlxuJiM0MztcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpY21waGRyKTtcbiYjNDM7XHRjYXNlIElQUFJPVE9fSUNNUFY2OlxuJiM0MztcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpY21wNmhkcik7XG4mIzQzO1x0Y2FzZSBJUFBST1RPX1NDVFA6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpO1xuJiM0MztcdGNhc2UgSVBQUk9UT19HUkU6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGdyZV9iYXNlX2hkcik7XG4mIzQzO1x0Y2FzZSBJUFBST1RPX05PTkU6XG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBmYWxzZTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcG9wdHMoY29uc3Qgc3RydWN0IGlwaGRyICppcGhfbmV3LFxuIFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXG4ge1xuQEAgLTEyMjksNyAmIzQzOzEyNzgsOSBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDQoY29uc3Qgc3RydWN0IGlwaGRyICppcGgsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcbiBcdC8qIHN1cHBvcnQgZm9yIGlwb3B0cyBtYW5nbGluZyB3b3VsZCByZXF1aXJlXG4gXHQgKiByZWNvbXBpbGUgJiM0Mzsgc2tiIHRyYW5zcG9ydCBoZWFkZXIgdXBkYXRlLlxuIFx0ICovXG4tXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGlwaCwgZSk7XG4mIzQzO1x0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgICBuZnFubF92YWxpZGF0ZV9sNCgoY29uc3QgdTggKilpcGggJiM0MzsgaWhsLCBkYXRhX2xlbiAtIGlobCwgZSxcbiYjNDM7XHRcdFx0XHQgaXBoLVx1MDAzZXByb3RvY29sKTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfb25lX2V4dGhkcihjb25zdCB1OCAqZGF0YSxcbkBAIC0xMjg2LDcgJiM0MzsxMzM3LDggQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxuIFx0XHRpbnQgaGRybGVuO1xuIFxuIFx0XHRpZiAob3JpZ19uZXh0aGRyID09IE5FWFRIRFJfTk9ORSlcbi1cdFx0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRcdFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLFxuJiM0MztcdFx0XHRcdFx0XHQgbmV3X25leHRoZHIpO1xuIFxuIFx0XHRpZiAodW5saWtlbHkoZXh0aGRyX2NudCYjNDM7JiM0MzsgXHUwMDNlPSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEzMjMsNyAmIzQzOzEzNzUsNyBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsXG4gXHRcdGRhdGEgJiM0Mzs9IGhkcmxlbjtcbiBcdH1cbiBcbi1cdHJldHVybiB0cnVlO1xuJiM0MztcdHJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwgbmV3X25leHRoZHIpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xuaW5kZXggMzkxNTM5YTFjZWFhNy4uNjNjZjNiNGY3NDIwZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXG5AQCAtMTA3Nyw2ICYjNDM7MTA3NywxNyBAQCBzdGF0aWMgYm9vbCBuZnRfcGF5bG9hZF9jc3VtX3dyaXRlX29rKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgbmZ0X3RoX3dyaXRlX29rKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxuJiM0MztcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5mdF9wYXlsb2FkX3NldCAqcHJpdilcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGludCBkb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IHRjcGhkciwgYWNrX3NlcSkgJiM0Mzsgc2l6ZW9mKF9fYmUzMik7XG4mIzQzO1xuJiM0MztcdGlmIChwa3QtXHUwMDNldHByb3QgIT0gSVBQUk9UT19UQ1ApXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHByaXYtXHUwMDNlb2Zmc2V0IFx1MDAzZSBkb2ZmIHx8IHByaXYtXHUwMDNlb2Zmc2V0ICYjNDM7IHByaXYtXHUwMDNlbGVuIFx1MDAzYz0gZG9mZjtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4gXHRcdFx0XHQgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxuIFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxuQEAgLTExMTUsNiAmIzQzOzExMjYsOCBAQCBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4gXHRjYXNlIE5GVF9QQVlMT0FEX1RSQU5TUE9SVF9IRUFERVI6XG4gXHRcdGlmICghKHBrdC1cdTAwM2VmbGFncyBcdTAwMjYgTkZUX1BLVElORk9fTDRQUk9UTykgfHwgcGt0LVx1MDAzZWZyYWdvZmYpXG4gXHRcdFx0Z290byBlcnI7XG4mIzQzO1x0XHRpZiAoIW5mdF90aF93cml0ZV9vayhwa3QsIHByaXYpKVxuJiM0MztcdFx0XHRnb3RvIGVycjtcbiBcdFx0b2Zmc2V0ID0gbmZ0X3Rob2ZmKHBrdCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBORlRfUEFZTE9BRF9JTk5FUl9IRUFERVI6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBMNCBoZWFkZXIgdmFsaWRhdGlvbiB0byB0aGUgbmV0ZmlsdGVyIG5ldGxpbmsgcXVldWUgcGFja2V0IG1hbmdsaW5nIHBhdGggKG5mcW5sX3JlY3ZfdmVyZGljdCkgYW5kIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlIFRDUCBkYXRhIG9mZnNldCBmaWVsZCBpbiB0aGUgbmZ0YWJsZXMgcGF5bG9hZCBzZXQgZXhwcmVzc2lvbiAobmZ0X3BheWxvYWRfc2V0X2V2YWwpLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUgbmV0ZmlsdGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGIzNTVlNTAwZjI4ZDc0NzE0YWI5OTE0N2I4YjYyNWFjY2JkYTU1MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDE4OjE5OjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMKaW5kZXggYjhhYWYzOWNiNGQ4ZS4uNTYyYjdiZjZjODc3NyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jCkBAIC0yOCwxMCAmIzQzOzI4LDE2IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZmlsdGVyL25mbmV0bGluay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pY21wLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ljbXB2Ni5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2xpc3QuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2N0cC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Nncm91cC1kZWZzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcmhhc2h0YWJsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2poYXNoLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3RjcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC91ZHAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L2dyZS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9nc28uaCZndDsKICNpbmNsdWRlICZsdDtuZXQvc29jay5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC90Y3Bfc3RhdGVzLmgmZ3Q7CkBAIC0xMTkyLDYgJiM0MzsxMTk4LDQ5IEBAIG5mcW5sX2VucXVldWVfcGFja2V0KHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksIHVuc2lnbmVkIGludCBxdWV1ZW51bSkKIAlyZXR1cm4gZXJyOwogfQogCiYjNDM7c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfbDQoY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbiwKJiM0MzsJCQkgICAgICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIHU4IHByb3RvKQomIzQzO3sKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfQ09OTlRSQUNLKQomIzQzOwllbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbzsKJiM0MzsJY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0OwomIzQzOwomIzQzOwljdCA9IG5mX2N0X2dldChlLSZndDtza2IsICZhbXA7Y3RpbmZvKTsKJiM0MzsJaWYgKGN0ICZhbXA7JmFtcDsgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSAmYW1wOyZhbXA7IG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBwcm90bykKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsJc3dpdGNoIChwcm90bykgewomIzQzOwljYXNlIElQUFJPVE9fVENQOiB7CiYjNDM7CQljb25zdCBzdHJ1Y3QgdGNwaGRyICp0aCA9IChjb25zdCBzdHJ1Y3QgdGNwaGRyICopZGF0YTsKJiM0MzsJCXVuc2lnbmVkIGludCB0aGxlbjsKJiM0MzsKJiM0MzsJCWlmIChkYXRhX2xlbiAmbHQ7IHNpemVvZigqdGgpKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJCXRobGVuID0gX190Y3BfaGRybGVuKHRoKTsKJiM0MzsJCWlmICh0aGxlbiAmbHQ7IHNpemVvZigqdGgpIHx8IGRhdGFfbGVuICZsdDsgdGhsZW4pCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CX0KJiM0MzsJY2FzZSBJUFBST1RPX1VEUDoKJiM0MzsJCXJldHVybiBkYXRhX2xlbiAmZ3Q7PSBzaXplb2Yoc3RydWN0IHVkcGhkcik7CiYjNDM7CWNhc2UgSVBQUk9UT19JQ01QOgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3QgaWNtcGhkcik7CiYjNDM7CWNhc2UgSVBQUk9UT19JQ01QVjY6CiYjNDM7CQlyZXR1cm4gZGF0YV9sZW4gJmd0Oz0gc2l6ZW9mKHN0cnVjdCBpY21wNmhkcik7CiYjNDM7CWNhc2UgSVBQUk9UT19TQ1RQOgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3Qgc2N0cGhkcik7CiYjNDM7CWNhc2UgSVBQUk9UT19HUkU6CiYjNDM7CQlyZXR1cm4gZGF0YV9sZW4gJmd0Oz0gc2l6ZW9mKHN0cnVjdCBncmVfYmFzZV9oZHIpOwomIzQzOwljYXNlIElQUFJPVE9fTk9ORToKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBmYWxzZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcG9wdHMoY29uc3Qgc3RydWN0IGlwaGRyICppcGhfbmV3LAogCQkJCSAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplKQogewpAQCAtMTIyOSw3ICYjNDM7MTI3OCw5IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNChjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCwgdW5zaWduZWQgaW50IGRhdGFfbGVuLAogCS8qIHN1cHBvcnQgZm9yIGlwb3B0cyBtYW5nbGluZyB3b3VsZCByZXF1aXJlCiAJICogcmVjb21waWxlICYjNDM7IHNrYiB0cmFuc3BvcnQgaGVhZGVyIHVwZGF0ZS4KIAkgKi8KLQlyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGlwaCwgZSk7CiYjNDM7CXJldHVybiBuZnFubF92YWxpZGF0ZV9pcG9wdHMoaXBoLCBlKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAgICBuZnFubF92YWxpZGF0ZV9sNCgoY29uc3QgdTggKilpcGggJiM0MzsgaWhsLCBkYXRhX2xlbiAtIGlobCwgZSwKJiM0MzsJCQkJIGlwaC0mZ3Q7cHJvdG9jb2wpOwogfQogCiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9vbmVfZXh0aGRyKGNvbnN0IHU4ICpkYXRhLApAQCAtMTI4Niw3ICYjNDM7MTMzNyw4IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldywKIAkJaW50IGhkcmxlbjsKIAogCQlpZiAob3JpZ19uZXh0aGRyID09IE5FWFRIRFJfTk9ORSkKLQkJCXJldHVybiB0cnVlOwomIzQzOwkJCXJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwKJiM0MzsJCQkJCQkgbmV3X25leHRoZHIpOwogCiAJCWlmICh1bmxpa2VseShleHRoZHJfY250JiM0MzsmIzQzOyAmZ3Q7PSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpCiAJCQlyZXR1cm4gZmFsc2U7CkBAIC0xMzIzLDcgJiM0MzsxMzc1LDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LAogCQlkYXRhICYjNDM7PSBoZHJsZW47CiAJfQogCi0JcmV0dXJuIHRydWU7CiYjNDM7CXJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwgbmV3X25leHRoZHIpOwogfQogCiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jCmluZGV4IDM5MTUzOWExY2VhYTcuLjYzY2YzYjRmNzQyMGQgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMKQEAgLTEwNzcsNiAmIzQzOzEwNzcsMTcgQEAgc3RhdGljIGJvb2wgbmZ0X3BheWxvYWRfY3N1bV93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCwKIAlyZXR1cm4gZmFsc2U7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsCiYjNDM7CQkJICAgIGNvbnN0IHN0cnVjdCBuZnRfcGF5bG9hZF9zZXQgKnByaXYpCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBpbnQgZG9mZiA9IG9mZnNldG9mKHN0cnVjdCB0Y3BoZHIsIGFja19zZXEpICYjNDM7IHNpemVvZihfX2JlMzIpOwomIzQzOwomIzQzOwlpZiAocGt0LSZndDt0cHJvdCAhPSBJUFBST1RPX1RDUCkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlyZXR1cm4gcHJpdi0mZ3Q7b2Zmc2V0ICZndDsgZG9mZiB8fCBwcml2LSZndDtvZmZzZXQgJiM0MzsgcHJpdi0mZ3Q7bGVuICZsdDs9IGRvZmY7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLAogCQkJCSBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsCiAJCQkJIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KQpAQCAtMTExNSw2ICYjNDM7MTEyNiw4IEBAIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwciwKIAljYXNlIE5GVF9QQVlMT0FEX1RSQU5TUE9SVF9IRUFERVI6CiAJCWlmICghKHBrdC0mZ3Q7ZmxhZ3MgJmFtcDsgTkZUX1BLVElORk9fTDRQUk9UTykgfHwgcGt0LSZndDtmcmFnb2ZmKQogCQkJZ290byBlcnI7CiYjNDM7CQlpZiAoIW5mdF90aF93cml0ZV9vayhwa3QsIHByaXYpKQomIzQzOwkJCWdvdG8gZXJyOwogCQlvZmZzZXQgPSBuZnRfdGhvZmYocGt0KTsKIAkJYnJlYWs7CiAJY2FzZSBORlRfUEFZTE9BRF9JTk5FUl9IRUFERVI6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MDcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQbGFuIGZvciBOZXRmaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IHRvdWNoZXMgYG5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNgIGFuZCBgbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jYC4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiB0aHJ1c3Qgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgTDQgaGVhZGVycyBpbiBgbmZuZXRsaW5rX3F1ZXVlLmNgIHZpYSB0aGVzZSBuZXcgZnVuY3Rpb25zLCBgbmZxbmxfdmFsaWRhdGVfbDRgLCBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYW5kIGBuZnFubF92YWxpZGF0ZV9leHRoZHJgLiBBbmQgdGhlbiwgb3ZlciBpbiBgbmZ0X3BheWxvYWQuY2AsIHRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrIGBuZnRfdGhfd3JpdGVfb2tgIHRvIHByZXZlbnQgd3JpdGVzIHRvIHRoZSBUQ1AgYGRvZmZgIGZpZWxkLgoKRnVuY3Rpb25hbGx5LCB0aGlzIHNlZW1zIGxpa2UgaXQmIzM5O3MgZGlnZ2luZyBpbnRvIHNvbWUgY29yZSBuZXRmaWx0ZXIgYmVoYXZpb3IsIHdoaWNoIG1lYW5zLi4uIGl0JiMzOTtzIGZ1enppbmcgdGltZS4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzIOKAkyBhZGRpbmcgdmFsaWRhdGlvbiBhbmQgcmVzdHJpY3Rpbmcgd3JpdGVzIOKAkyB0aGlzIGlzICpleGFjdGx5KiB0aGUga2luZCBvZiB0aGluZyB0aGF0IGNvdWxkIHVuY292ZXIgc29tZSBuYXN0eSB2dWxuZXJhYmlsaXRpZXMuIEdvdHRhIG1ha2Ugc3VyZSB3ZSBjb3ZlciBhbGwgYmFzZXMuCgpGaXJzdCwgdGhvdWdoLCBJIHNob3VsZCBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMgdG8gbWFrZSBzdXJlIHRoZXNlIGZpbGVzIGFyZSBhY3R1YWxseSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwuIFJpZ2h0LCBgbmZuZXRsaW5rX3F1ZXVlLmNgIGlzIGRyaXZlbiBieSBgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYCwgYW5kIGBuZnRfcGF5bG9hZC5jYCBoaW5nZXMgb24gYENPTkZJR19ORl9UQUJMRVNgLiBUaW1lIHRvIGhlYWQgb3ZlciB0byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdHJhY2sgZG93biB0aG9zZSBzcGVjaWZpYyBjb25maWdzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NlbmFyaW9zIGluIHdoaWNoIHRoaXMgY29kZSBpcyBhY3RpdmUgc28gSSBjYW4gYmV0dGVyIHRhaWxvciB0aGUgZnV6emluZyBlZmZvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVURklMVEVSX05FVExJTktfUVVFVUUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQ2PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19BQ0NUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTUzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIE5GUVVFVUUgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTM4NT1jb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVJcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg4LVx0ZGVwZW5kcyBvbiBORl9DVF9ORVRMSU5LXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzg5Olx0ZGVwZW5kcyBvbiBORVRGSUxURVJfTkVUTElOS19RVUVVRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM5MC1cdGRlcGVuZHMgb24gTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zOTg9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1Rcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDAwLVx0ZGVmYXVsdCBuXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDAxOlx0ZGVwZW5kcyBvbiAoTkVURklMVEVSX05FVExJTktfUVVFVUUgfHwgTkVURklMVEVSX05FVExJTktfTE9HKSBcdTAwMjZcdTAwMjYgTkZfQ1RfTkVUTElOS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTQwMi1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NTY1PWNvbmZpZyBORlRfUVVFVUVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1NjY6XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTY3LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBxdWV1ZSBtb2R1bGVcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTAwMj1jb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMDQtXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMDU6XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktfUVVFVUVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDA2LVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MzIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHJlZ2FyZGluZyB0aGF0IHByb21wdDoKCioqSW5zcGVjdGluZyBOZXRmaWx0ZXImIzM5O3MgTkZUIFBheWxvYWQgSGFuZGxpbmcqKgoKQWxyaWdodCwgdGhlIGluc3RydWN0aW9uIHdhbnRzIG1lIHRvIHN1bW1hcml6ZSBteSB0aG91Z2h0cyBhYm91dCBzb21ldGhpbmcuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYXNraW5nIG1lIHRvIGxvb2sgYXQgYG5mdF9wYXlsb2FkLmNgIHdpdGhpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvYCBkaXJlY3RvcnksIGFuZCBpdCBzZWVtcyByZWxhdGVkIHRvIGEgYE1ha2VmaWxlYC4gSW1tZWRpYXRlbHksIG15IGJyYWluIGdlYXJzIHVwLiBUaGlzIG1lYW5zIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBhdCB0aGUgc291cmNlIGNvZGUgZm9yIGEgc3BlY2lmaWMgbmV0ZmlsdGVyIG1vZHVsZSBvciBmZWF0dXJlIHJlbGF0ZWQgdG8gaGFuZGxpbmcgbmV0d29yayB0cmFmZmljIGF0IGEgbG93IGxldmVsLCBsaWtlbHkgdGhlIHBheWxvYWQgZGF0YSBvZiBwYWNrZXRzLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyBjb2RlIGZvciBuZnRhYmxlcy4KClRoZSByZXF1ZXN0IHRvIGV4YW1pbmUgYG5mdF9wYXlsb2FkLmNgIGlzIHRoZSBrZXkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHdoeSB0aGlzIHNwZWNpZmljIGZpbGU/JiMzNDsgSXMgaXQgcmVsYXRlZCB0byBhIGJ1ZyByZXBvcnQ/IE1heWJlIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRhc2s/IE9yIGlzIGl0IHBhcnQgb2YgYSBiaWdnZXIgaW52ZXN0aWdhdGlvbiBpbnRvIHRoZSBoYW5kbGluZyBvZiBuZXR3b3JrIGRhdGEgYnkgYSBzcGVjaWZpYyBydWxlPyBVbmRlcnN0YW5kaW5nIHdoeSBJJiMzOTttIGJlaW5nIGRpcmVjdGVkIGhlcmUgaXMgaW1wb3J0YW50IHRvIGdpdmUgY29udGV4dCB0byBteSBpbnZlc3RpZ2F0aW9uLgoKSSYjMzk7bSBtZW50YWxseSBwcmVwYXJpbmcgdG8gbmF2aWdhdGUgdGhlIGNvZGUuIEkmIzM5O2xsIGxpa2VseSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgcGF5bG9hZCwgaG93IGl0JiMzOTtzIGFjY2Vzc2VkLCBtYW5pcHVsYXRlZCwgYW5kIGhvdyBpdCBpcyB1c2VkLiBJJiMzOTtsbCBwcm9iYWJseSBiZSBsb29raW5nIGF0IGZ1bmN0aW9uIGNhbGxzIHRoYXQgaW52b2x2ZSB0aGluZ3MgbGlrZSBgc2tiX3B1bGxgLCBgc2tiX2NvcHlfYml0c2AsIG9yIG90aGVyIFNLQiAoc29ja2V0IGJ1ZmZlcikgcmVsYXRlZCBmdW5jdGlvbnMgYW5kIGRhdGEgYWNjZXNzIHBhdHRlcm5zLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGBuZnRfcGF5bG9hZC5jYCBjb2RlIGFuZCBvdGhlciBwYXJ0cyBvZiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yaywgcGFydGljdWxhcmx5IGFueSBvdGhlciBjb2RlIHRoYXQgaW1wbGVtZW50cyBORlQgaG9va3Mgb3IgbWF0Y2hlcnMuIEFuZCBvZiBjb3Vyc2UsIHRoZSBgTWFrZWZpbGVgIHdpbGwgYmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNvdXJjZSBjb2RlIGlzIGNvbXBpbGVkIGFuZCBpbnRlZ3JhdGVkIGludG8gdGhlIE5ldGZpbHRlciBlY29zeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X3BheWxvYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODc9bmZfdGFibGVzLW9ianMgOj0gbmZfdGFibGVzX2NvcmUubyBuZl90YWJsZXNfYXBpLm8gbmZ0X2NoYWluX2ZpbHRlci5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg4LVx0XHQgIG5mX3RhYmxlc190cmFjZS5vIG5mdF9pbW1lZGlhdGUubyBuZnRfY21wLm8gbmZ0X3JhbmdlLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODk6XHRcdCAgbmZ0X2JpdHdpc2UubyBuZnRfYnl0ZW9yZGVyLm8gbmZ0X3BheWxvYWQubyBuZnRfbG9va3VwLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTAtXHRcdCAgbmZ0X2R5bnNldC5vIG5mdF9tZXRhLm8gbmZ0X3J0Lm8gbmZ0X2V4dGhkci5vIG5mdF9sYXN0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTEwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgbmZ0X3BheWxvYWQuY2AgTW9kdWxlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gYG5mdF9wYXlsb2FkLmNgLiBSaWdodCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgcGFydCBvZiB0aGUgYG5mX3RhYmxlc2Agc3Vic3lzdGVtLiBNeSBtZW50YWwgY2hlY2tsaXN0IGtpY2tzIGluIGF1dG9tYXRpY2FsbHkuIFRpbWUgdG8gY29uZmlybSB0aGF0IGRlcGVuZGVuY3kgZXhwbGljaXRseS4gV2hlcmUmIzM5O3MgdGhlIGF1dGhvcml0YXRpdmUgc291cmNlPyBJIHNob3VsZCBjaGVjayBgbmZfdGFibGVzYCBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgY2FuIGZpbmQgdGhlIGJ1aWxkIHByb2Nlc3MgZGVmaW5lZCBhbmQgY29uZmlybSB0aGUgbGlua2FnZSBmb3IgYW55IHNwZWNpZmljIHRhcmdldHMuIFNob3VsZCBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBwcm9jZXNzIHRvIHZlcmlmeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl90YWJsZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODQ9b2JqLSQoQ09ORklHX05GX0RVUF9ORVRERVYpXHQmIzQzOz0gbmZfZHVwX25ldGRldi5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg1LVxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4NjojIG5mX3RhYmxlc1xubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4NzpuZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODg6XHRcdCAgbmZfdGFibGVzX3RyYWNlLm8gbmZ0X2ltbWVkaWF0ZS5vIG5mdF9jbXAubyBuZnRfcmFuZ2UubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04OS1cdFx0ICBuZnRfYml0d2lzZS5vIG5mdF9ieXRlb3JkZXIubyBuZnRfcGF5bG9hZC5vIG5mdF9sb29rdXAubyBcXFxuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTEtXHRcdCAgbmZ0X2NvdW50ZXIubyBuZnRfb2JqcmVmLm8gbmZ0X2lubmVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6OTI6XHRcdCAgbmZ0X2NoYWluX3JvdXRlLm8gbmZfdGFibGVzX29mZmxvYWQubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05My1cdFx0ICBuZnRfc2V0X2hhc2gubyBuZnRfc2V0X2JpdG1hcC5vIG5mdF9zZXRfcmJ0cmVlLm8gXFxcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTk3PWlmbmRlZiBDT05GSUdfVU1MXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjk4Om5mX3RhYmxlcy1vYmpzICYjNDM7PSBuZnRfc2V0X3BpcGFwb19hdngyLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTktZW5kaWZcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwMz1pZmRlZiBDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkVcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA0Om5mX3RhYmxlcy1vYmpzICYjNDM7PSBuZnRfY3RfZmFzdC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwNS1lbmRpZlxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMDY9ZW5kaWZcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTA3LVxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX05GX1RBQkxFUylcdFx0JiM0Mzs9IG5mX3RhYmxlcy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwOS1vYmotJChDT05GSUdfTkZUX0NPTVBBVClcdCYjNDM7PSBuZnRfY29tcGF0Lm9cbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEzNT1vYmotJChDT05GSUdfTkZUX05BVClcdFx0JiM0Mzs9IG5mdF9jaGFpbl9uYXQub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMzYtXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEzNzojIG5mX3RhYmxlcyBuZXRkZXZcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTM4LW9iai0kKENPTkZJR19ORlRfRFVQX05FVERFVilcdCYjNDM7PSBuZnRfZHVwX25ldGRldi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg4MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKk5GX1RBQkxFUyBDb25maWd1cmF0aW9uIERpdmUqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgQ09ORklHX05GX1RBQkxFU2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoZXRoZXIgdGhhdCYjMzk7cyBhY3R1YWxseSBlbmFibGVkIGFuZCBtb3JlIGltcG9ydGFudGx5LCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgKmhvdyogaXQmIzM5O3MgY29uZmlndXJlZC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSBrbm93IHRoaXMgd2lsbCBkaWN0YXRlIHRoZSBhdmFpbGFiaWxpdHkgb2YsIHdlbGwsIHRoZSBlbnRpcmUgYG5mdGFibGVzYCBmcmFtZXdvcmsuIEl0JiMzOTtzIHRoZSBseW5jaHBpbi4gVGhlcmVmb3JlLCBJIG5lZWQgdG8ga25vdyB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGVpciBzdGF0dXNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgbm90IGp1c3Qgd2hldGhlciBgQ09ORklHX05GX1RBQkxFU2AgaXMgc2V0IHRvIGB5YCBvciBgbWAsIGJ1dCBhbHNvIGlmIG90aGVyIGNydWNpYWwgY29tcG9uZW50cyBhcmUgZHJhZ2dlZCBhbG9uZyB3aXRoIGl0LCBvciBwb3RlbnRpYWxseSBnZXR0aW5nIGxlZnQgYmVoaW5kLiBJJiMzOTtsbCBuZWVkIHRvIHJhcGlkbHkgZGV0ZXJtaW5lIHdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCBhcmUgZGVwZW5kZW50IG9uIHRoaXMgc2V0dGluZy4gV2hhdCBtb2R1bGVzIGFyZSB3ZSB0YWxraW5nIGFib3V0IGhlcmU/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGJvb3QgdGltZSwgbWVtb3J5IGZvb3RwcmludCwgYW5kIG92ZXJhbGwgc3lzdGVtIGZ1bmN0aW9uYWxpdHkgaWYgdGhpcyBpcyBjb25maWd1cmVkIGluY29ycmVjdGx5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgcGVyaGFwcyB3aXRoIG9sZGVyIGBpcHRhYmxlc2AgY29uZmlndXJhdGlvbnMsIG9yIGFueSBjdXN0b20gcnVsZXNldHM/IFRoaXMgaXMgYSBjcml0aWNhbCBidWlsZGluZyBibG9jayBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0gbmV0d29ya2luZyBiZWhhdmlvciwgc28gSSBuZWVkIHRvIGV4cGxvcmUgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyB3YXJyYW50cyBhIGRlZXAgZGl2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX1RBQkxFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDUzPWVuZGlmICMgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU2LVx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTQ3MT1pZiBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVx0ZGVwZW5kcyBvbiBJUFY2XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0ODA6Y29uZmlnIE5GX1RBQkxFU19ORVRERVZcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXHRib29sIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgbmV0ZGV2IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MTEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldGZpbHRlciBDb25maWd1cmF0aW9uIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgTkZfVEFCTEVTYCBhbmQgYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBiZWVuIGFsdGVyZWQgaW4gdGhlIGNvZGUuIExldCBtZSBkaXZlIGludG8gdGhlIGZ1bmN0aW9uIGNoYW5nZXMuCgpIbW0sIGZvY3VzaW5nIG9uIGBuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jYC4uLiBJdCBsb29rcyBsaWtlIGBuZnFubF9lbnF1ZXVlX3BhY2tldGAgaXMgdGhlcmUsIGJ1dCBpdCYjMzk7cyBqdXN0IGNvbnRleHQuIFJpZ2h0LCBpdCYjMzk7cyB0aGUgb3RoZXIgdmFsaWRhdGlvbiByb3V0aW5lcyBJIG5lZWQgdG8gZHJpbGwgaW50by4gSSBzZWUgYG5mcW5sX3ZhbGlkYXRlX2w0YCwgYSBuZXcgc3RhdGljIGZ1bmN0aW9uLCBhbmQgbW9kaWZpY2F0aW9ucyB0byBgbmZxbmxfdmFsaWRhdGVfaXBvcHRzYC4gVGhlbiB0aGVyZSBhcmUgY2hhbmdlcyBpbiBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYG5mcW5sX3ZhbGlkYXRlX29uZV9leHRoZHJgLCBgbmZxbmxfdmFsaWRhdGVfZXh0aGRyYCwgYW5kIGBuZnFubF92YWxpZGF0ZV9pcDZgLiBIb2xkIG9uLCBsb29rcyBsaWtlIGBuZnFubF9lbnF1ZXVlX3BhY2tldGAgd2FzbiYjMzk7dCBhY3R1YWxseSBtb2RpZmllZCwgc28gdGhhdCYjMzk7cyBqdXN0IGEgYml0IG9mIGRpc3RyYWN0aW9uLiBUaGUgY2hhbmdlcyBhcmUgc3BlY2lmaWNhbGx5IGluIHRob3NlIGB2YWxpZGF0ZWAgZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCBJUCBhbmQgZXh0ZW5zaW9uIGhlYWRlcnMuIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHdoZXJlIGFuZCBob3cgdGhvc2UgYXJlIGNhbGxlZCwgdG8gZ3Jhc3AgdGhlIGltcGFjdCBvZiB0aGVzZSBhZGp1c3RtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZxbmxfdmFsaWRhdGVfaXA0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTEyNDQ9c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoX25ldyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEyNTctXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjEyNTg6c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEyNTktXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTEzOTc9c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfd3JpdGUoY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQwMS1cdGNhc2UgTkZQUk9UT19JUFY0OlxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNDAyOlx0XHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXA0KGRhdGEsIGRhdGFfbGVuLCBlKTtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQwMy1cdGNhc2UgTkZQUk9UT19JUFY2OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjIzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byBOZXRmaWx0ZXIvbmZxdWV1ZSBXcml0ZSBWYWxpZGF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBOZXRmaWx0ZXIgbmZxdWV1ZSBzZXR1cCBhbmQgaG93IHRoZSBwYWNrZXQgZGF0YSBnZXRzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0cmFjaW5nIHRoZSBmbG93IGZyb20gd2hlbiB3ZSByZWNlaXZlIGEgdmVyZGljdCAobGlrZSBBQ0NFUFQsIERST1AsIGV0Yy4pIGJhY2sgdG8gYWN0dWFsbHkgd3JpdGluZyB0aGUgZGF0YS4KCk15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYG5mcW5sX3ZhbGlkYXRlX3dyaXRlYC4gSXQmIzM5O3MgY2xlYXIgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzICpjcml0aWNhbCouIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBuZnFubF9yZWN2X3ZlcmRpY3RgLCB3aGljaCBtZWFucyBpdCYjMzk7cyByaWdodCBpbiB0aGUgcGF0aCB3aGVyZSB3ZSYjMzk7cmUgcHJvY2Vzc2luZyBkZWNpc2lvbnMgbWFkZSBvbiBxdWV1ZWQgcGFja2V0cy4gSXQmIzM5O3MgdGhlIHBvaW50IHdoZXJlIHdlJiMzOTtyZSBhYm91dCB0byAqZG8qIHNvbWV0aGluZyB3aXRoIHRoZSBwYWNrZXQgZGF0YSBiYXNlZCBvbiB0aGUgdmVyZGljdCwgc28gdmFsaWRhdGluZyB0aGlzIHJpZ2h0IGJlZm9yZSB3cml0aW5nIGlzIGVzc2VudGlhbC4KCkkgaW1hZ2luZSBpdCYjMzk7cyBoZXJlIHdoZXJlIHdlJiMzOTtyZSBjaGVja2luZyB0aGluZ3MgbGlrZSBidWZmZXIgc2l6ZXMsIHBlcm1pc3Npb25zLCBhbmQgcGVyaGFwcyBldmVuIGNvbnNpc3RlbmN5IG9mIHRoZSBwYWNrZXQgbWV0YWRhdGEgYWdhaW5zdCB3aGF0JiMzOTtzIGV4cGVjdGVkLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGNyaXRpY2FsIGtlcm5lbC1sZXZlbCBwYXRoIGhlcmUg4oCTIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciB1bmV4cGVjdGVkIGRhdGEgY2FuIGNhdXNlIGJpZyBwcm9ibGVtcy4gYG5mcW5sX3ZhbGlkYXRlX3dyaXRlYCBpcyBwcm9iYWJseSB0aGUgbGFzdCBsaW5lIG9mIGRlZmVuc2UgYmVmb3JlIGEgcGFja2V0IGlzIGFsdGVyZWQgb3IgcG90ZW50aWFsbHkgbGVha2VkLiBUaGUgbmFtZSBpdHNlbGYgc2hvdXRzICYjMzQ7dmVyaWZ5IGJlZm9yZSBjb21taXQmIzM0OyEKCkkmIzM5O2xsIGhhdmUgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB3aGF0IHZhbGlkYXRpb24gYXNwZWN0cyB0aGUgZGV2ZWxvcGVycyBkZWNpZGVkIHdlcmUgbmVjZXNzYXJ5LiBJJiMzOTtsbCBiZXQgaXQmIzM5O3MgYSB0aWdodCBsb29wIG9mIGNoZWNraW5nIGFuZCBlcnJvciBoYW5kbGluZywgbWFraW5nIHN1cmUgbm90aGluZyBzbGlwcyB0aHJvdWdoIHRoYXQgY291bGQgamVvcGFyZGl6ZSB0aGUgaW50ZWdyaXR5IG9yIHNlY3VyaXR5IG9mIHRoZSBuZXR3b3JrIHRyYWZmaWMuIEkgc2hvdWxkIHRha2UgYSBtb21lbnQgYW5kIHJlZnJlc2ggbXlzZWxmIG9uIHRoZSBgbmZxbmxfcmVjdl92ZXJkaWN0YCBmbG93IHRvIHNlZSB3aGVyZSBpdCBzaXRzIGluIHRoZSBsYXJnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZxbmxfdmFsaWRhdGVfd3JpdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTM4MT1zdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTM5Ni1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTM5NzpzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV93cml0ZShjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEzOTgtXHRcdFx0XHQgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTQxNT1uZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQyMS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQyMjpcdGlmICghbmZxbmxfdmFsaWRhdGVfd3JpdGUoZGF0YSwgZGF0YV9sZW4sIGUpKVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDIzLVx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkyMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBuZXR3b3JrIGZpbHRlcmluZyBvciBuZXRmaWx0ZXI6CgoqKkFuYWx5emluZyB0aGUgQ2FsbCBTdGFjazogYG5mcW5sX21hbmdsZWAgYW5kIGBuZnFubF9yZWN2X3ZlcmRpY3RgKioKCkFscmlnaHQsIG15IG1pbmQmIzM5O3Mgb24gdGhpcyBuZXRmaWx0ZXIgY29ubmVjdGlvbiwgYW5kIEkmIzM5O20gemVyb2luZyBpbiBvbiBhIGNyaXRpY2FsIGxpbms6IGBuZnFubF9tYW5nbGVgIGlzIGNhbGxlZCAqZGlyZWN0bHkqIGZyb20gYG5mcW5sX3JlY3ZfdmVyZGljdGAuIFRoaXMgaXMgc2lnbmlmaWNhbnQuIEl0IHRlbGxzIG1lIHRoYXQgdGhlIHZlcmRpY3QgcHJvY2VzcyDigJMgdGhlIHBvaW50IHdoZXJlIHRoZSBrZXJuZWwgZGVjaWRlcyB3aGF0IHRvIGRvIHdpdGggYSBwYWNrZXQgYWZ0ZXIgaXQmIzM5O3MgYmVlbiBoYW5kbGVkIGJ5IGEgTmV0ZmlsdGVyIFF1ZXVlIChORlFVRVVFKSDigJMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBwYWNrZXQgbWFuZ2xpbmcuIFRoYXQmIzM5O3Mgbm90IGFsd2F5cyBvYnZpb3VzLCBhbmQgaXQgaW5kaWNhdGVzIHRoZSBwYWNrZXQgbW9kaWZpY2F0aW9uIGhhcHBlbnMgcmlnaHQgYmVmb3JlIHRoZSB2ZXJkaWN0IGlzIG1hZGUgb3IgYWN0aW9uIHBlcmZvcm1lZC4gSSYjMzk7bSBub3RpbmcgdGhpcyBpcyBoYXBwZW5pbmcgaW4gYG5mcW5sX3JlY3ZfdmVyZGljdGAsIHdoaWNoIG1lYW5zIHRoaXMgaXMgYWxsIGhhcHBlbmluZyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgcmVjZWl2aW5nIHZlcmRpY3RzIGZyb20gdXNlcmxhbmQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZGF0YSBmbG93IGFuZCBob3cgbW9kaWZpY2F0aW9ucyBhcmUgaW5qZWN0ZWQgaW50byB0aGUgcGFja2V0IHByb2Nlc3NpbmcgcGlwZWxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mcW5sX21hbmdsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNDE0PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQxNTpuZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDE2LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE3NzE9c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE4MjAtXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE4MjE6XHRcdGlmIChuZnFubF9tYW5nbGUobmxhX2RhdGEobmZxYVtORlFBX1BBWUxPQURdKSxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTgyMi1cdFx0XHRcdCBwYXlsb2FkX2xlbiwgZW50cnksIGRpZmYpIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDQ4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIE5ldGZpbHRlciYjMzk7cyBOZXRsaW5rIFF1ZXVlIFZlcmRpY3RzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyBuZXRsaW5rIHF1ZXVlIGhhbmRsaW5nIGlzIGV2b2x2aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyB0aGUga2V5IGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbi4gVGhhdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCwgdGhlIGNlbnRyYWwgaHViIGZvciB0aGUgdmVyZGljdC1zZXR0aW5nIG9wZXJhdGlvbnMgaW4gdGhlIG5ldGxpbmsgcXVldWUuIEdvdCBpdC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBhY2tldHMgYXJlIGhhbmRsZWQgYW5kIG1vZGlmaWVkIGFuZCBob3cgdmVyZGljdHMgYXJlIGltcG9zZWQuCgpOb3cgSSBzZWUgaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY2AsIEkmIzM5O20gZ29pbmcgdG8gZm9sbG93IHRoZSB0cmFjZSBpbnRvIHRoaXMgZmlsZSwgYW5kIGhlcmUgaXQgbG9va3MgbGlrZSBgbmZ0X3RoX3dyaXRlX29rYCBpcyBjYWxsZWQgYnkgYG5mdF9wYXlsb2FkX3NldF9ldmFsYC4gVGhpcyB3aWxsIGxpa2VseSByZXZlYWwgaG93IHBheWxvYWQgdXBkYXRlcyBhcmUgZXZhbHVhdGVkLiBUaGlzIGhlbHBzIHRoZSBsYXJnZXIgcGljdHVyZSBvZiBob3cgcGFja2V0cyBhcmUgZXZhbHVhdGVkIGJ5IHRoZSBuZnRhYmxlcyBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGhhcHBlbnMgYmVmb3JlIGFuZCBhZnRlciB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jPTEwODA9c3RhdGljIGJvb2wgbmZ0X3RoX3dyaXRlX29rKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYy0xMDkwLVxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jOjEwOTE6c3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jLTEwOTItXHRcdFx0XHQgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYz0xMjg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9wYXlsb2FkX3NldF9vcHMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jLTEyODYtXHQuc2l6ZVx0XHQ9IE5GVF9FWFBSX1NJWkUoc2l6ZW9mKHN0cnVjdCBuZnRfcGF5bG9hZF9zZXQpKSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYzoxMjg3Olx0LmV2YWxcdFx0PSBuZnRfcGF5bG9hZF9zZXRfZXZhbCxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYy0xMjg4LVx0LmluaXRcdFx0PSBuZnRfcGF5bG9hZF9zZXRfaW5pdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAyNgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipGb2N1c2luZyBvbiBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGZvciBORlRhYmxlcyBFeHByZXNzaW9uIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UgY2FuIGFuYWx5emUgdGhlIGBuZnRhYmxlc2AgZXhwcmVzc2lvbiwgYW5kIEkmIzM5O3ZlIGlkZW50aWZpZWQgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCBhcyBhbiBldmFsdWF0aW9uIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGFkZCB0aGlzIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZS4gVGhlIGlzc3VlIGlzIHRoYXQgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIGFuZCB1c3VhbGx5LCB3ZSBkb24mIzM5O3QgZm9jdXMgb24gdGhvc2UgZGlyZWN0bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcgaGVyZS4KCkxldCBtZSB2ZXJpZnk6IHllcywgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCAqaXMqIGluZGVlZCBkZWNsYXJlZCBhcyBgc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLiBIbW0sIGJ1dCBpdOKAmXMgYW4gQVBJIGVudHJ5IHBvaW50IGZvciB0aGUgZXhwcmVzc2lvbi4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBzdGF0aWMgaXMgYSBwb3RlbnRpYWwgaHVyZGxlLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGlzIGFub3RoZXIgZW50cnktcG9pbnQsIHBlcmhhcHMgYSBub24tc3RhdGljIG9uZSwgZm9yIGNvbXBhcmlzb24uIFRoZSByZWxhdGVkIGZ1bmN0aW9uIGBuZnRfcGF5bG9hZF9zZXRfb3BzYCBzZWVtcyB0byBhbHNvIGJlIHN0YXRpYy4KCkhvd2V2ZXIsIGRlc3BpdGUgYmVpbmcgc3RhdGljLCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGlzIHN0aWxsIGEgZ29vZCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24gYmVjYXVzZSBpdCYjMzk7cyBjYWxsZWQgaW5kaXJlY3RseSB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlci4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhpcyBpcyBldmVuIHJlbGV2YW50IGZvciBzeXprYWxsZXIuCgpBaGEhIFN5emthbGxlciAqY2FuKiBmb2N1cyBvbiBzdGF0aWMgZnVuY3Rpb25zLCBwcm92aWRlZCB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZC4gVGhhdCYjMzk7cyB0aGUga2V5LiBJIG5lZWQgdG8gY29uZmlybSBpZiBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGlzIGlubGluZWQuIEJhc2VkIG9uIGl0cyBhc3NpZ25tZW50IHRvIGEgZnVuY3Rpb24gcG9pbnRlciDigJMgc3BlY2lmaWNhbGx5IGAuZXZhbCA9IG5mdF9wYXlsb2FkX3NldF9ldmFsYCDigJMgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyAqbm90KiBpbmxpbmVkLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGEgdmFsaWQgdGFyZ2V0LiBUaGUgc2FtZSBsb2dpYyBzaG91bGQgYWxzbyBhcHBseSB0byBgbmZxbmxfcmVjdl92ZXJkaWN0YC4gTm93IHRoYXQgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQsIGl0JiMzOTtzIHNhZmUgdG8gYWRkIGl0IHRvIHRoZSBmb2N1cyBsaXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTY1NT1zdGF0aWMgaW50IG5mcV9pZF9hZnRlcih1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBtYXgpXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNjU5LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNjYwOnN0YXRpYyBpbnQgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE2NjEtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE3MzY9c3RhdGljIGludCBuZnFhX3BhcnNlX2JyaWRnZShzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmVudHJ5LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTc3MC1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTc3MTpzdGF0aWMgaW50IG5mcW5sX3JlY3ZfdmVyZGljdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNzcyLVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBuZnFhW10pXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xOTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZnFubF9jYltORlFOTF9NU0dfTUFYXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE5ODMtXHRbTkZRTkxfTVNHX1ZFUkRJQ1RdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTk4NDpcdFx0LmNhbGxcdFx0PSBuZnFubF9yZWN2X3ZlcmRpY3QsXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE5ODUtXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9SQ1UsXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xOTk1LVx0W05GUU5MX01TR19WRVJESUNUX0JBVENIXSA9IHtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTk5NjpcdFx0LmNhbGxcdFx0PSBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2gsXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE5OTctXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9SQ1UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjAyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIFF1ZXVlIGFuZCBQYXlsb2FkIE1vZGlmaWNhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW5pdGlhbGx5LCBgbmZxbmxfcmVjdl92ZXJkaWN0YCBhbmQgYG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaGAgc2VlbSBsaWtlIGdvb2QgY2FuZGlkYXRlcyBmb3IgZm9jdXNlZCBhbmFseXNpcy4gSSYjMzk7bGwgYWRkIHRob3NlIHRvIGBGb2N1c1N5bWJvbHNgLCBhbG9uZyB3aXRoIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludC4KCkJ1dCB0aGVuIEkgc2VlIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYG5mcW5sX3ZhbGlkYXRlX2w0YC4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nIGJlY2F1c2UgYG5mcW5sX3ZhbGlkYXRlX2w0YCBpcyBjYWxsZWQgYnkgc2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgbGlrZSBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYG5mcW5sX3ZhbGlkYXRlX2V4dGhkcmAsIGFuZCBgbmZxbmxfdmFsaWRhdGVfaXA2YC4gVGhlc2UgaW4gdHVybiBhcmUgY2FsbGVkIGJ5IGBuZnFubF92YWxpZGF0ZV93cml0ZWAsIHdoaWNoIGZlZWRzIGludG8gYG5mcW5sX21hbmdsZWAsIGFuZCBmaW5hbGx5IHRoYXQgaXMgY2FsbGVkIGJ5IGBuZnFubF9yZWN2X3ZlcmRpY3RgLiBSaWdodCwgaXQgbG9va3MgbGlrZSBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBwbGFjZSB0byBmb2N1cy4gSXQmIzM5O3MgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgdG8gdHJhY2UgYmFjayBmcm9tLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgbHVya2luZyBoZXJlLiBBIHF1aWNrIGNoZWNrIHJldmVhbHMgdGhhdCBgQ09ORklHX05GX0NPTk5UUkFDS2AgaXMgdXNlZCBpbiBgbmZxbmxfdmFsaWRhdGVfbDRgLiBPa2F5LCBJJiMzOTtsbCBhZGQgYE5GX0NPTk5UUkFDS2AgdG8gdGhlIHdhdGNoIGxpc3QgdG9vLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gaW5jbHVkZSBhbGwgdGhlIHJlbGV2YW50IGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExNS1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiBtYXJrIHRyYWNraW5nIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBzZWN1cml0eSBtYXJrIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzctXHRib29sICAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgem9uZXMmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVx0Ym9vbCBcJiMzNDtTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTk2LVx0Ym9vbFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O0FtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNTg6Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtJUkMgRENDIHByb3RvY29sIHN1cHBvcnQgKG9ic29sZXRlKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVx0dHJpc3RhdGVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O05ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI5Njpjb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXHR0cmlzdGF0ZSBcJiMzNDtTTk1QIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cdHRyaXN0YXRlIFwmIzM0O1BQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMzEtXHR0cmlzdGF0ZSBcJiMzNDtTQU5FIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM0Mzpjb25maWcgTkZfQ09OTlRSQUNLX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cdHRyaXN0YXRlIFwmIzM0O1NJUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVx0dHJpc3RhdGUgXCYjMzQ7VEZUUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDU1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE5ldGZpbHRlciBDb25maWd1cmF0aW9ucyBhbmQgS2V5IEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgYE5GX0NPTk5UUkFDS2AgaXMgYSB2YWxpZCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR29vZC4gTm93LCBsZXQmIzM5O3MgcXVpY2tseSByZXZpZXcgdGhlIG90aGVyIHNpZ25pZmljYW50IE5ldGZpbHRlciBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgYXJlYS4gSXQgc2VlbXMgYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYCBhbmQgYE5GX1RBQkxFU2AgYXJlIHRoZSBwcmltYXJ5IG9uZXMgdG8ga2VlcCBpbiBtaW5kLCBhbmQgeWVzLCB3ZSBzaG91bGQgZGVmaW5pdGVseSBpbmNsdWRlIGBORl9DT05OVFJBQ0tgIGdpdmVuIHRoZSBmb2N1cy4KClRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgcmVhbGx5IGp1bXBpbmcgb3V0IGF0IG1lIGFzIGNydWNpYWwgaW4gdGhpcyBzcGFjZSBhcmU6IGBuZnFubF9yZWN2X3ZlcmRpY3RgIGFuZCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLiBJIG5lZWQgdG8gYmUgY29tcGxldGVseSBzdXJlLCB0aG91Z2gsIHNvIGxldCYjMzk7cyBjaGVjayBteSBsb2dpYyBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nLgoKSSYjMzk7bSB0aGlua2luZyB0aGF0IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgaXMgdGhlIGtleS4gUmlnaHQsIGl0JiMzOTtzIHRoZSBvbmUgdGhhdCBldmFsdWF0ZXMgdGhlIGBORlRfUEFZTE9BRF9UUkFOU1BPUlRfSEVBREVSYCBhbmQgc3Vic2VxdWVudGx5IGNoZWNrcyBgbmZ0X3RoX3dyaXRlX29rYC4gWXVwLCB0aGF0JiMzOTtzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdGVkLCBpdOKAmXMgdGhlIHJpZ2h0IGZ1bmN0aW9uLgoKTm93LCBsZXQmIzM5O3MgdmFsaWRhdGUgbXkgYXNzdW1wdGlvbiBhYm91dCBgbmZxbmxfcmVjdl92ZXJkaWN0YC4gSXQmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgd2hlcmUgdGhlIGFjdGlvbiBpcy4gT2theSwgaXQgY2FsbHMgYG5mcW5sX21hbmdsZWAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG5mcW5sX3ZhbGlkYXRlX3dyaXRlYCwgYW5kIGZyb20gdGhlcmUgd2UgYnJhbmNoIGludG8gYG5mcW5sX3ZhbGlkYXRlX2lwNGAsIGBuZnFubF92YWxpZGF0ZV9pcDZgLCBhbmQgZmluYWxseSB0aGUgYG5mcW5sX3ZhbGlkYXRlX2w0YCBjaGVja3MuIFBlcmZlY3QuIFllcCwgZGVmaW5pdGVseSB0aGUgcmlnaHQgZnVuY3Rpb24uCgpIb2xkIG9uLCBJIG5lZWQgdG8gY29uc2lkZXIgYG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaGAuIEkgaW5pdGlhbGx5IHRob3VnaHQgaXQgZGlkbiYjMzk7dCBjYWxsIGBuZnFubF9tYW5nbGVgIGFuZCBvbmx5IGRlYWx0IHdpdGggdmVyZGljdHMgd2hlcmUgbm8gcGF5bG9hZCBtb2RpZmljYXRpb25zIGFyZSBwZXJmb3JtZWQuIEhtbSwgaXQgc2VlbXMgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgYXNzdW1wdGlvbi4gSSYjMzk7bSBnb2luZyB0byByZXZpc2l0IHRoYXQgZnVuY3Rpb24gdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE2NTU9c3RhdGljIGludCBuZnFfaWRfYWZ0ZXIodW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBpbnQgbWF4KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTY1OS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTY2MDpzdGF0aWMgaW50IG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNjYxLVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xOTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZnFubF9jYltORlFOTF9NU0dfTUFYXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE5OTUtXHRbTkZRTkxfTVNHX1ZFUkRJQ1RfQkFUQ0hdID0ge1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxOTk2Olx0XHQuY2FsbFx0XHQ9IG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaCxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5Ny1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX1JDVSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMDgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIGBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2hgKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoYC4gVGhhdCBuYW1lIGFsb25lIHRlbGxzIG1lIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciByZWNlaXZpbmcgYW5kIHByb2Nlc3NpbmcgdmVyZGljdHMgaW4gdGhlIE5ldGZpbHRlciBxdWV1ZSBmcmFtZXdvcmssIGxpa2VseSBpbiBiYXRjaCBmb3JtIGZvciBlZmZpY2llbmN5LiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgb2YgdGhlIGtleSBhcmVhcyBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uOiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkIChwcm9iYWJseSBza19idWZmcywgbmV0bGluayBtZXNzYWdlcywgYW5kIHNvbWUga2luZCBvZiB2ZXJkaWN0IGRhdGEpLCB0aGUgZXJyb3IgaGFuZGxpbmcsIGFuZCB0aGUgY29uY3VycmVuY3kgY29uc2lkZXJhdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhpcyBmdW5jdGlvbiBpcyBkZWFsaW5nIHdpdGggbXVsdGlwbGUgTmV0ZmlsdGVyIHF1ZXVlIGNvbm5lY3Rpb25zIG9yIHRocmVhZHMuIFRoaXMgaXMgbGlrZWx5IHRoZSB3b3JraG9yc2UgZnVuY3Rpb24gaW4gdGhlIGtlcm5lbCBtb2R1bGUsIHJpZ2h0IGF0IHRoZSBoZWFydCBvZiB0aGUgcGFja2V0IHByb2Nlc3NpbmcgcGlwZWxpbmUgYXMgdGhlIHZlcmRpY3QgZnJvbSB1c2Vyc3BhY2UgaXMgcmVjZWl2ZWQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSBob3cgaXQgaGFuZGxlcyB0aGluZ3MuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjYwOlx0c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYixcbjE2NjE6XHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxuMTY2MjpcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBuZnFhW10pXG4xNjYzOlx0e1xuMTY2NDpcdFx0c3RydWN0IG5mbmxfcXVldWVfbmV0ICpxID0gbmZubF9xdWV1ZV9wZXJuZXQoaW5mby1cdTAwM2VuZXQpO1xuMTY2NTpcdFx0dTE2IHF1ZXVlX251bSA9IG50b2hzKGluZm8tXHUwMDNlbmZtc2ctXHUwMDNlcmVzX2lkKTtcbjE2NjY6XHRcdHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksICp0bXA7XG4xNjY3Olx0XHRzdHJ1Y3QgbmZxbmxfbXNnX3ZlcmRpY3RfaGRyICp2aGRyO1xuMTY2ODpcdFx0c3RydWN0IG5mcW5sX2luc3RhbmNlICpxdWV1ZTtcbjE2Njk6XHRcdHVuc2lnbmVkIGludCB2ZXJkaWN0LCBtYXhpZDtcbjE2NzA6XHRcdExJU1RfSEVBRChiYXRjaF9saXN0KTtcbjE2NzE6XHRcbjE2NzI6XHRcdHF1ZXVlID0gdmVyZGljdF9pbnN0YW5jZV9sb29rdXAocSwgcXVldWVfbnVtLFxuMTY3MzpcdFx0XHRcdFx0XHRORVRMSU5LX0NCKHNrYikucG9ydGlkKTtcbjE2NzQ6XHRcdGlmIChJU19FUlIocXVldWUpKVxuMTY3NTpcdFx0XHRyZXR1cm4gUFRSX0VSUihxdWV1ZSk7XG4xNjc2Olx0XG4xNjc3Olx0XHR2aGRyID0gdmVyZGljdGhkcl9nZXQobmZxYSk7XG4xNjc4Olx0XHRpZiAoIXZoZHIpXG4xNjc5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTY4MDpcdFxuMTY4MTpcdFx0dmVyZGljdCA9IG50b2hsKHZoZHItXHUwMDNldmVyZGljdCk7XG4xNjgyOlx0XHRtYXhpZCA9IG50b2hsKHZoZHItXHUwMDNlaWQpO1xuMTY4MzpcdFxuMTY4NDpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnF1ZXVlLVx1MDAzZWxvY2spO1xuMTY4NTpcdFxuMTY4NjpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudHJ5LCB0bXAsIFx1MDAyNnF1ZXVlLVx1MDAzZXF1ZXVlX2xpc3QsIGxpc3QpIHtcbjE2ODc6XHRcdFx0aWYgKG5mcV9pZF9hZnRlcihlbnRyeS1cdTAwM2VpZCwgbWF4aWQpKVxuMTY4ODpcdFx0XHRcdGJyZWFrO1xuMTY4OTpcdFx0XHRfX2RlcXVldWVfZW50cnkocXVldWUsIGVudHJ5KTtcbjE2OTA6XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlbnRyeS1cdTAwM2VsaXN0LCBcdTAwMjZiYXRjaF9saXN0KTtcbjE2OTE6XHRcdH1cbjE2OTI6XHRcbjE2OTM6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnF1ZXVlLVx1MDAzZWxvY2spO1xuMTY5NDpcdFxuMTY5NTpcdFx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2YmF0Y2hfbGlzdCkpXG4xNjk2Olx0XHRcdHJldHVybiAtRU5PRU5UO1xuMTY5NzpcdFxuMTY5ODpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudHJ5LCB0bXAsIFx1MDAyNmJhdGNoX2xpc3QsIGxpc3QpIHtcbjE2OTk6XHRcdFx0aWYgKG5mcWFbTkZRQV9NQVJLXSlcbjE3MDA6XHRcdFx0XHRlbnRyeS1cdTAwM2Vza2ItXHUwMDNlbWFyayA9IG50b2hsKG5sYV9nZXRfYmUzMihuZnFhW05GUUFfTUFSS10pKTtcbjE3MDE6XHRcbjE3MDI6XHRcdFx0aWYgKG5mcWFbTkZRQV9QUklPUklUWV0pXG4xNzAzOlx0XHRcdFx0ZW50cnktXHUwMDNlc2tiLVx1MDAzZXByaW9yaXR5ID0gbnRvaGwobmxhX2dldF9iZTMyKG5mcWFbTkZRQV9QUklPUklUWV0pKTtcbjE3MDQ6XHRcbjE3MDU6XHRcdFx0bmZxbmxfcmVpbmplY3QoZW50cnksIHZlcmRpY3QpO1xuMTcwNjpcdFx0fVxuMTcwNzpcdFx0cmV0dXJuIDA7XG4xNzA4Olx0fVxuMTcwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDE2NQoJCQkJCQkJb3V0cHV0OiAxNTMKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE5ldGZpbHRlciBDb2RlIFBhdGgqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcywgYW5kIGl0IGxvb2tzIGxpa2UgYG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaGAgKmRvZXNuJiMzOTt0KiBjYWxsIGBuZnFubF9tYW5nbGVgLiBUaGF0IG1lYW5zIHRoZSBtb2RpZmllZCBjb2RlIGlzbiYjMzk7dCBiZWluZyB0cmlnZ2VyZWQgdGhlcmUsIHdoaWNoIGlzIGhlbHBmdWwgdG8gZWxpbWluYXRlIGEgcG90ZW50aWFsIGF2ZW51ZSBvZiBpbnZlc3RpZ2F0aW9uLiBJdCYjMzk7cyBvbmx5IGBuZnFubF9yZWN2X3ZlcmRpY3RgIHRoYXQgY2FsbHMgYG5mcW5sX21hbmdsZWAsIHRoYXQmIzM5O3MgdGhlIGtleS4KClRoaXMgbWVhbnMgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG15IGFuYWx5c2lzIG9uIGBuZnFubF9yZWN2X3ZlcmRpY3RgIGFuZCwgc3BlY2lmaWNhbGx5LCBvbiBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLiBJdCBzZWVtcyB0aG9zZSBhcmUgdGhlIGNyaXRpY2FsIHN5bWJvbHMgaGVyZS4KCkkmIzM5O3ZlIGFsc28gZ290IHNvbWUgY29uZmlndXJhdGlvbiBkZXRhaWxzIHRvIGNvbnNpZGVyOiBgTkVURklMVEVSX05FVExJTktfUVVFVUVgLCBgTkZfVEFCTEVTYCwgYW5kIGBORl9DT05OVFJBQ0tgIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBjb25maXJtIHRoYXQgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCAqaXMqIGluZGVlZCB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgYG5mdF9wYXlsb2FkX3NldF9vcHNgIGFuZCB0aGF0IGBuZnFubF9yZWN2X3ZlcmRpY3RgIGlzIHRoZSBjYWxsYmFjayBmb3IgYE5GUU5MX01TR19WRVJESUNUYC4gWWVwLCB0aGF0IGFsbCBjaGVja3Mgb3V0LgoKT2theSwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMuIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgZGVwZW5kcyBvbiBgTkVURklMVEVSX05FVExJTktgLCBhbmQgYE5GX1RBQkxFU2Agc2VsZWN0cyBgTkVURklMVEVSX05FVExJTktgLiBPa2F5LCB0aGF0IG1lYW5zIGBORVRGSUxURVJfTkVUTElOS2AgaXMgaW1wbGljaXRseSBlbmFibGVkLiBHb29kIHRvIGtub3cuCgpBbHJpZ2h0LCBJIHRoaW5rIEkgaGF2ZSBhIGNsZWFyIHBpY3R1cmUuIFRpbWUgdG8gdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIHRha2UgYSBjbG9zZXIgbG9vayEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBMNCBoZWFkZXIgdmFsaWRhdGlvbiB0byB0aGUgbmV0ZmlsdGVyIG5ldGxpbmsgcXVldWUgcGFja2V0IG1hbmdsaW5nIHBhdGggKG5mcW5sX3JlY3ZfdmVyZGljdCkgYW5kIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlIFRDUCBkYXRhIG9mZnNldCBmaWVsZCBpbiB0aGUgbmZ0YWJsZXMgcGF5bG9hZCBzZXQgZXhwcmVzc2lvbiAobmZ0X3BheWxvYWRfc2V0X2V2YWwpLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUgbmV0ZmlsdGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRGSUxURVJfTkVUTElOS19RVUVVRSYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZxbmxfcmVjdl92ZXJkaWN0JiMzNDssCiAgICAmIzM0O25mdF9wYXlsb2FkX3NldF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgTDQgaGVhZGVyIHZhbGlkYXRpb24gdG8gdGhlIG5ldGZpbHRlciBuZXRsaW5rIHF1ZXVlIHBhY2tldCBtYW5nbGluZyBwYXRoIChuZnFubF9yZWN2X3ZlcmRpY3QpIGFuZCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSBUQ1AgZGF0YSBvZmZzZXQgZmllbGQgaW4gdGhlIG5mdGFibGVzIHBheWxvYWQgc2V0IGV4cHJlc3Npb24gKG5mdF9wYXlsb2FkX3NldF9ldmFsKS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjE5OjMxLjkwODkyMzUwNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NTg5MzcwOTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXCIsXG4gICAgXCJORl9UQUJMRVNcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mcW5sX3JlY3ZfdmVyZGljdFwiLFxuICAgIFwibmZ0X3BheWxvYWRfc2V0X2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIEw0IGhlYWRlciB2YWxpZGF0aW9uIHRvIHRoZSBuZXRmaWx0ZXIgbmV0bGluayBxdWV1ZSBwYWNrZXQgbWFuZ2xpbmcgcGF0aCAobmZxbmxfcmVjdl92ZXJkaWN0KSBhbmQgYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgd3JpdGluZyB0byB0aGUgVENQIGRhdGEgb2Zmc2V0IGZpZWxkIGluIHRoZSBuZnRhYmxlcyBwYXlsb2FkIHNldCBleHByZXNzaW9uIChuZnRfcGF5bG9hZF9zZXRfZXZhbCkuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBuZXRmaWx0ZXIgY29tcG9uZW50cyB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjE5OjMxLjkwODkyODkxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAxNTc3MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGIzNTVlNTAwZjI4ZDc0NzE0YWI5OTE0N2I4YjYyNWFjY2JkYTU1MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAxODoxOTozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xcbmluZGV4IGI4YWFmMzljYjRkOGUuLjU2MmI3YmY2Yzg3NzcgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcXG5AQCAtMjgsMTAgKzI4LDE2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaWNtcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaWNtcHY2LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saXN0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zY3RwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZ3JvdXAtZGVmcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmhhc2h0YWJsZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvamhhc2guaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RjcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdWRwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvZ3JlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvZ3NvLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvc29jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFxcdTAwM2VcXG5AQCAtMTE5Miw2ICsxMTk4LDQ5IEBAIG5mcW5sX2VucXVldWVfcGFja2V0KHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksIHVuc2lnbmVkIGludCBxdWV1ZW51bSlcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfbDQoY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcXG4rXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplLCB1OCBwcm90bylcXG4re1xcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfQ09OTlRSQUNLKVxcbitcXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbztcXG4rXFx0Y29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0O1xcbitcXG4rXFx0Y3QgPSBuZl9jdF9nZXQoZS1cXHUwMDNlc2tiLCBcXHUwMDI2Y3RpbmZvKTtcXG4rXFx0aWYgKGN0IFxcdTAwMjZcXHUwMDI2ICFuZl9jdF9pc190ZW1wbGF0ZShjdCkgXFx1MDAyNlxcdTAwMjYgbmZfY3RfcHJvdG9udW0oY3QpICE9IHByb3RvKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuKyNlbmRpZlxcbitcXG4rXFx0c3dpdGNoIChwcm90bykge1xcbitcXHRjYXNlIElQUFJPVE9fVENQOiB7XFxuK1xcdFxcdGNvbnN0IHN0cnVjdCB0Y3BoZHIgKnRoID0gKGNvbnN0IHN0cnVjdCB0Y3BoZHIgKilkYXRhO1xcbitcXHRcXHR1bnNpZ25lZCBpbnQgdGhsZW47XFxuK1xcbitcXHRcXHRpZiAoZGF0YV9sZW4gXFx1MDAzYyBzaXplb2YoKnRoKSlcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0XFx0dGhsZW4gPSBfX3RjcF9oZHJsZW4odGgpO1xcbitcXHRcXHRpZiAodGhsZW4gXFx1MDAzYyBzaXplb2YoKnRoKSB8fCBkYXRhX2xlbiBcXHUwMDNjIHRobGVuKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFx0fVxcbitcXHRjYXNlIElQUFJPVE9fVURQOlxcbitcXHRcXHRyZXR1cm4gZGF0YV9sZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xcbitcXHRjYXNlIElQUFJPVE9fSUNNUDpcXG4rXFx0XFx0cmV0dXJuIGRhdGFfbGVuIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWNtcGhkcik7XFxuK1xcdGNhc2UgSVBQUk9UT19JQ01QVjY6XFxuK1xcdFxcdHJldHVybiBkYXRhX2xlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IGljbXA2aGRyKTtcXG4rXFx0Y2FzZSBJUFBST1RPX1NDVFA6XFxuK1xcdFxcdHJldHVybiBkYXRhX2xlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpO1xcbitcXHRjYXNlIElQUFJPVE9fR1JFOlxcbitcXHRcXHRyZXR1cm4gZGF0YV9sZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBncmVfYmFzZV9oZHIpO1xcbitcXHRjYXNlIElQUFJPVE9fTk9ORTpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbitcXG4gc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoX25ldyxcXG4gXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXFxuIHtcXG5AQCAtMTIyOSw3ICsxMjc4LDkgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuIFxcdC8qIHN1cHBvcnQgZm9yIGlwb3B0cyBtYW5nbGluZyB3b3VsZCByZXF1aXJlXFxuIFxcdCAqIHJlY29tcGlsZSArIHNrYiB0cmFuc3BvcnQgaGVhZGVyIHVwZGF0ZS5cXG4gXFx0ICovXFxuLVxcdHJldHVybiBuZnFubF92YWxpZGF0ZV9pcG9wdHMoaXBoLCBlKTtcXG4rXFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgICBuZnFubF92YWxpZGF0ZV9sNCgoY29uc3QgdTggKilpcGggKyBpaGwsIGRhdGFfbGVuIC0gaWhsLCBlLFxcbitcXHRcXHRcXHRcXHQgaXBoLVxcdTAwM2Vwcm90b2NvbCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX29uZV9leHRoZHIoY29uc3QgdTggKmRhdGEsXFxuQEAgLTEyODYsNyArMTMzNyw4IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcXG4gXFx0XFx0aW50IGhkcmxlbjtcXG4gXFxuIFxcdFxcdGlmIChvcmlnX25leHRoZHIgPT0gTkVYVEhEUl9OT05FKVxcbi1cXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFx0XFx0XFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgbmV3X25leHRoZHIpO1xcbiBcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGV4dGhkcl9jbnQrKyBcXHUwMDNlPSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpXFxuIFxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG5AQCAtMTMyMyw3ICsxMzc1LDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxcbiBcXHRcXHRkYXRhICs9IGhkcmxlbjtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0dXJuIHRydWU7XFxuK1xcdHJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwgbmV3X25leHRoZHIpO1xcbiB9XFxuIFxcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNcXG5pbmRleCAzOTE1MzlhMWNlYWE3Li42M2NmM2I0Zjc0MjBkIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xcbkBAIC0xMDc3LDYgKzEwNzcsMTcgQEAgc3RhdGljIGJvb2wgbmZ0X3BheWxvYWRfY3N1bV93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuK1xcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbmZ0X3BheWxvYWRfc2V0ICpwcml2KVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCBkb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IHRjcGhkciwgYWNrX3NlcSkgKyBzaXplb2YoX19iZTMyKTtcXG4rXFxuK1xcdGlmIChwa3QtXFx1MDAzZXRwcm90ICE9IElQUFJPVE9fVENQKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK1xcdHJldHVybiBwcml2LVxcdTAwM2VvZmZzZXQgXFx1MDAzZSBkb2ZmIHx8IHByaXYtXFx1MDAzZW9mZnNldCArIHByaXYtXFx1MDAzZWxlbiBcXHUwMDNjPSBkb2ZmO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuIFxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuIFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcXG5AQCAtMTExNSw2ICsxMTI2LDggQEAgc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbiBcXHRjYXNlIE5GVF9QQVlMT0FEX1RSQU5TUE9SVF9IRUFERVI6XFxuIFxcdFxcdGlmICghKHBrdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBORlRfUEtUSU5GT19MNFBST1RPKSB8fCBwa3QtXFx1MDAzZWZyYWdvZmYpXFxuIFxcdFxcdFxcdGdvdG8gZXJyO1xcbitcXHRcXHRpZiAoIW5mdF90aF93cml0ZV9vayhwa3QsIHByaXYpKVxcbitcXHRcXHRcXHRnb3RvIGVycjtcXG4gXFx0XFx0b2Zmc2V0ID0gbmZ0X3Rob2ZmKHBrdCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIE5GVF9QQVlMT0FEX0lOTkVSX0hFQURFUjpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6MzIuNDExMzI5MTc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzcwODY5NTU5NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSX05FVExJTktfUVVFVUVcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZxbmxfcmVjdl92ZXJkaWN0XCIsXG4gICAgXCJuZnRfcGF5bG9hZF9zZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgTDQgaGVhZGVyIHZhbGlkYXRpb24gdG8gdGhlIG5ldGZpbHRlciBuZXRsaW5rIHF1ZXVlIHBhY2tldCBtYW5nbGluZyBwYXRoIChuZnFubF9yZWN2X3ZlcmRpY3QpIGFuZCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSBUQ1AgZGF0YSBvZmZzZXQgZmllbGQgaW4gdGhlIG5mdGFibGVzIHBheWxvYWQgc2V0IGV4cHJlc3Npb24gKG5mdF9wYXlsb2FkX3NldF9ldmFsKS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGIzNTVlNTAwZjI4ZDc0NzE0YWI5OTE0N2I4YjYyNWFjY2JkYTU1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDE4OjE5OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcbmluZGV4IGI4YWFmMzljYjRkOGUuLjU2MmI3YmY2Yzg3NzcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG5AQCAtMjgsMTAgKzI4LDE2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mbmV0bGluay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ljbXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ljbXB2Ni5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGlzdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc2N0cC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY2dyb3VwLWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JoYXNodGFibGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2poYXNoLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90Y3AuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3VkcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbmV0L2dyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2dzby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3NvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC90Y3Bfc3RhdGVzLmhcdTAwM2VcbkBAIC0xMTkyLDYgKzExOTgsNDkgQEAgbmZxbmxfZW5xdWV1ZV9wYWNrZXQoc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplbnRyeSwgdW5zaWduZWQgaW50IHF1ZXVlbnVtKVxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4rc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfbDQoY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcbitcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIHU4IHByb3RvKVxuK3tcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfQ09OTlRSQUNLKVxuK1x0ZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm87XG4rXHRjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3Q7XG4rXG4rXHRjdCA9IG5mX2N0X2dldChlLVx1MDAzZXNrYiwgXHUwMDI2Y3RpbmZvKTtcbitcdGlmIChjdCBcdTAwMjZcdTAwMjYgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSBcdTAwMjZcdTAwMjYgbmZfY3RfcHJvdG9udW0oY3QpICE9IHByb3RvKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rI2VuZGlmXG4rXG4rXHRzd2l0Y2ggKHByb3RvKSB7XG4rXHRjYXNlIElQUFJPVE9fVENQOiB7XG4rXHRcdGNvbnN0IHN0cnVjdCB0Y3BoZHIgKnRoID0gKGNvbnN0IHN0cnVjdCB0Y3BoZHIgKilkYXRhO1xuK1x0XHR1bnNpZ25lZCBpbnQgdGhsZW47XG4rXG4rXHRcdGlmIChkYXRhX2xlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkpXG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0XHR0aGxlbiA9IF9fdGNwX2hkcmxlbih0aCk7XG4rXHRcdGlmICh0aGxlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkgfHwgZGF0YV9sZW4gXHUwMDNjIHRobGVuKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcbitcdFx0cmV0dXJuIHRydWU7XG4rXHR9XG4rXHRjYXNlIElQUFJPVE9fVURQOlxuK1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IHVkcGhkcik7XG4rXHRjYXNlIElQUFJPVE9fSUNNUDpcbitcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpY21waGRyKTtcbitcdGNhc2UgSVBQUk9UT19JQ01QVjY6XG4rXHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWNtcDZoZHIpO1xuK1x0Y2FzZSBJUFBST1RPX1NDVFA6XG4rXHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3Qgc2N0cGhkcik7XG4rXHRjYXNlIElQUFJPVE9fR1JFOlxuK1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGdyZV9iYXNlX2hkcik7XG4rXHRjYXNlIElQUFJPVE9fTk9ORTpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHR9XG4rXG4rXHRyZXR1cm4gZmFsc2U7XG4rfVxuK1xuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaF9uZXcsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSlcbiB7XG5AQCAtMTIyOSw3ICsxMjc4LDkgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4gXHQvKiBzdXBwb3J0IGZvciBpcG9wdHMgbWFuZ2xpbmcgd291bGQgcmVxdWlyZVxuIFx0ICogcmVjb21waWxlICsgc2tiIHRyYW5zcG9ydCBoZWFkZXIgdXBkYXRlLlxuIFx0ICovXG4tXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGlwaCwgZSk7XG4rXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGlwaCwgZSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgICAgbmZxbmxfdmFsaWRhdGVfbDQoKGNvbnN0IHU4ICopaXBoICsgaWhsLCBkYXRhX2xlbiAtIGlobCwgZSxcbitcdFx0XHRcdCBpcGgtXHUwMDNlcHJvdG9jb2wpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9vbmVfZXh0aGRyKGNvbnN0IHU4ICpkYXRhLFxuQEAgLTEyODYsNyArMTMzNyw4IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcbiBcdFx0aW50IGhkcmxlbjtcbiBcbiBcdFx0aWYgKG9yaWdfbmV4dGhkciA9PSBORVhUSERSX05PTkUpXG4tXHRcdFx0cmV0dXJuIHRydWU7XG4rXHRcdFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLFxuK1x0XHRcdFx0XHRcdCBuZXdfbmV4dGhkcik7XG4gXG4gXHRcdGlmICh1bmxpa2VseShleHRoZHJfY250KysgXHUwMDNlPSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEzMjMsNyArMTM3NSw3IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcbiBcdFx0ZGF0YSArPSBoZHJsZW47XG4gXHR9XG4gXG4tXHRyZXR1cm4gdHJ1ZTtcbitcdHJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwgbmV3X25leHRoZHIpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xuaW5kZXggMzkxNTM5YTFjZWFhNy4uNjNjZjNiNGY3NDIwZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXG5AQCAtMTA3Nyw2ICsxMDc3LDE3IEBAIHN0YXRpYyBib29sIG5mdF9wYXlsb2FkX2NzdW1fd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuK3N0YXRpYyBib29sIG5mdF90aF93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcbitcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5mdF9wYXlsb2FkX3NldCAqcHJpdilcbit7XG4rXHR1bnNpZ25lZCBpbnQgZG9mZiA9IG9mZnNldG9mKHN0cnVjdCB0Y3BoZHIsIGFja19zZXEpICsgc2l6ZW9mKF9fYmUzMik7XG4rXG4rXHRpZiAocGt0LVx1MDAzZXRwcm90ICE9IElQUFJPVE9fVENQKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHJldHVybiBwcml2LVx1MDAzZW9mZnNldCBcdTAwM2UgZG9mZiB8fCBwcml2LVx1MDAzZW9mZnNldCArIHByaXYtXHUwMDNlbGVuIFx1MDAzYz0gZG9mZjtcbit9XG4rXG4gc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuIFx0XHRcdFx0IHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbiBcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcbkBAIC0xMTE1LDYgKzExMjYsOCBAQCBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4gXHRjYXNlIE5GVF9QQVlMT0FEX1RSQU5TUE9SVF9IRUFERVI6XG4gXHRcdGlmICghKHBrdC1cdTAwM2VmbGFncyBcdTAwMjYgTkZUX1BLVElORk9fTDRQUk9UTykgfHwgcGt0LVx1MDAzZWZyYWdvZmYpXG4gXHRcdFx0Z290byBlcnI7XG4rXHRcdGlmICghbmZ0X3RoX3dyaXRlX29rKHBrdCwgcHJpdikpXG4rXHRcdFx0Z290byBlcnI7XG4gXHRcdG9mZnNldCA9IG5mdF90aG9mZihwa3QpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTkZUX1BBWUxPQURfSU5ORVJfSEVBREVSOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6MzIuNDExMzMxMTM1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ0MDkzMDQyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBsYW4gZm9yIE5ldGZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IHRvdWNoZXMgYG5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNgIGFuZCBgbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jYC4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiB0aHJ1c3Qgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgTDQgaGVhZGVycyBpbiBgbmZuZXRsaW5rX3F1ZXVlLmNgIHZpYSB0aGVzZSBuZXcgZnVuY3Rpb25zLCBgbmZxbmxfdmFsaWRhdGVfbDRgLCBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYW5kIGBuZnFubF92YWxpZGF0ZV9leHRoZHJgLiBBbmQgdGhlbiwgb3ZlciBpbiBgbmZ0X3BheWxvYWQuY2AsIHRoZXJlJ3MgYSBuZXcgY2hlY2sgYG5mdF90aF93cml0ZV9va2AgdG8gcHJldmVudCB3cml0ZXMgdG8gdGhlIFRDUCBgZG9mZmAgZmllbGQuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBzZWVtcyBsaWtlIGl0J3MgZGlnZ2luZyBpbnRvIHNvbWUgY29yZSBuZXRmaWx0ZXIgYmVoYXZpb3IsIHdoaWNoIG1lYW5zLi4uIGl0J3MgZnV6emluZyB0aW1lLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZXNlIGNoYW5nZXMg4oCTIGFkZGluZyB2YWxpZGF0aW9uIGFuZCByZXN0cmljdGluZyB3cml0ZXMg4oCTIHRoaXMgaXMgKmV4YWN0bHkqIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgY291bGQgdW5jb3ZlciBzb21lIG5hc3R5IHZ1bG5lcmFiaWxpdGllcy4gR290dGEgbWFrZSBzdXJlIHdlIGNvdmVyIGFsbCBiYXNlcy5cblxuRmlyc3QsIHRob3VnaCwgSSBzaG91bGQgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zIHRvIG1ha2Ugc3VyZSB0aGVzZSBmaWxlcyBhcmUgYWN0dWFsbHkgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBSaWdodCwgYG5mbmV0bGlua19xdWV1ZS5jYCBpcyBkcml2ZW4gYnkgYENPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRWAsIGFuZCBgbmZ0X3BheWxvYWQuY2AgaGluZ2VzIG9uIGBDT05GSUdfTkZfVEFCTEVTYC4gVGltZSB0byBoZWFkIG92ZXIgdG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIHRyYWNrIGRvd24gdGhvc2Ugc3BlY2lmaWMgY29uZmlncy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjZW5hcmlvcyBpbiB3aGljaCB0aGlzIGNvZGUgaXMgYWN0aXZlIHNvIEkgY2FuIGJldHRlciB0YWlsb3IgdGhlIGZ1enppbmcgZWZmb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6MzcuODUyMjY0NzM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyODYzNjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDY9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0FDQ1RcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9Mzg1PWNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4OC1cXHRkZXBlbmRzIG9uIE5GX0NUX05FVExJTktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzg5OlxcdGRlcGVuZHMgb24gTkVURklMVEVSX05FVExJTktfUVVFVUVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzkwLVxcdGRlcGVuZHMgb24gTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTM5OD1jb25maWcgTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwMC1cXHRkZWZhdWx0IG5cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDAxOlxcdGRlcGVuZHMgb24gKE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFIHx8IE5FVEZJTFRFUl9ORVRMSU5LX0xPRykgXFx1MDAyNlxcdTAwMjYgTkZfQ1RfTkVUTElOS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MDItXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTU2NT1jb25maWcgTkZUX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjU2NjpcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU2Ny1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBxdWV1ZSBtb2R1bGVcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTAwMj1jb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAwNC1cXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDA1OlxcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS19RVUVVRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDA2LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6MzcuOTA1MTM0OTQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3NjU3NDAwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbi4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyByZWdhcmRpbmcgdGhhdCBwcm9tcHQ6XG5cbioqSW5zcGVjdGluZyBOZXRmaWx0ZXIncyBORlQgUGF5bG9hZCBIYW5kbGluZyoqXG5cbkFscmlnaHQsIHRoZSBpbnN0cnVjdGlvbiB3YW50cyBtZSB0byBzdW1tYXJpemUgbXkgdGhvdWdodHMgYWJvdXQgc29tZXRoaW5nLiBTcGVjaWZpY2FsbHksIGl0J3MgYXNraW5nIG1lIHRvIGxvb2sgYXQgYG5mdF9wYXlsb2FkLmNgIHdpdGhpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvYCBkaXJlY3RvcnksIGFuZCBpdCBzZWVtcyByZWxhdGVkIHRvIGEgYE1ha2VmaWxlYC4gSW1tZWRpYXRlbHksIG15IGJyYWluIGdlYXJzIHVwLiBUaGlzIG1lYW5zIEknbSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSBzcGVjaWZpYyBuZXRmaWx0ZXIgbW9kdWxlIG9yIGZlYXR1cmUgcmVsYXRlZCB0byBoYW5kbGluZyBuZXR3b3JrIHRyYWZmaWMgYXQgYSBsb3cgbGV2ZWwsIGxpa2VseSB0aGUgcGF5bG9hZCBkYXRhIG9mIHBhY2tldHMuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgaXMgY29kZSBmb3IgbmZ0YWJsZXMuXG5cblRoZSByZXF1ZXN0IHRvIGV4YW1pbmUgYG5mdF9wYXlsb2FkLmNgIGlzIHRoZSBrZXkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHdoeSB0aGlzIHNwZWNpZmljIGZpbGU/XCIgSXMgaXQgcmVsYXRlZCB0byBhIGJ1ZyByZXBvcnQ/IE1heWJlIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRhc2s/IE9yIGlzIGl0IHBhcnQgb2YgYSBiaWdnZXIgaW52ZXN0aWdhdGlvbiBpbnRvIHRoZSBoYW5kbGluZyBvZiBuZXR3b3JrIGRhdGEgYnkgYSBzcGVjaWZpYyBydWxlPyBVbmRlcnN0YW5kaW5nIHdoeSBJJ20gYmVpbmcgZGlyZWN0ZWQgaGVyZSBpcyBpbXBvcnRhbnQgdG8gZ2l2ZSBjb250ZXh0IHRvIG15IGludmVzdGlnYXRpb24uXG5cbkknbSBtZW50YWxseSBwcmVwYXJpbmcgdG8gbmF2aWdhdGUgdGhlIGNvZGUuIEknbGwgbGlrZWx5IG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBwYXlsb2FkLCBob3cgaXQncyBhY2Nlc3NlZCwgbWFuaXB1bGF0ZWQsIGFuZCBob3cgaXQgaXMgdXNlZC4gSSdsbCBwcm9iYWJseSBiZSBsb29raW5nIGF0IGZ1bmN0aW9uIGNhbGxzIHRoYXQgaW52b2x2ZSB0aGluZ3MgbGlrZSBgc2tiX3B1bGxgLCBgc2tiX2NvcHlfYml0c2AsIG9yIG90aGVyIFNLQiAoc29ja2V0IGJ1ZmZlcikgcmVsYXRlZCBmdW5jdGlvbnMgYW5kIGRhdGEgYWNjZXNzIHBhdHRlcm5zLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGBuZnRfcGF5bG9hZC5jYCBjb2RlIGFuZCBvdGhlciBwYXJ0cyBvZiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yaywgcGFydGljdWxhcmx5IGFueSBvdGhlciBjb2RlIHRoYXQgaW1wbGVtZW50cyBORlQgaG9va3Mgb3IgbWF0Y2hlcnMuIEFuZCBvZiBjb3Vyc2UsIHRoZSBgTWFrZWZpbGVgIHdpbGwgYmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNvdXJjZSBjb2RlIGlzIGNvbXBpbGVkIGFuZCBpbnRlZ3JhdGVkIGludG8gdGhlIE5ldGZpbHRlciBlY29zeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxODoxOTo0Mi4zODE3MTEwODFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzcyNzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9wYXlsb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT04Nz1uZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODgtXFx0XFx0ICBuZl90YWJsZXNfdHJhY2UubyBuZnRfaW1tZWRpYXRlLm8gbmZ0X2NtcC5vIG5mdF9yYW5nZS5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg5OlxcdFxcdCAgbmZ0X2JpdHdpc2UubyBuZnRfYnl0ZW9yZGVyLm8gbmZ0X3BheWxvYWQubyBuZnRfbG9va3VwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTAtXFx0XFx0ICBuZnRfZHluc2V0Lm8gbmZ0X21ldGEubyBuZnRfcnQubyBuZnRfZXh0aGRyLm8gbmZ0X2xhc3QubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjE5OjQyLjQ4NzA4OTM3NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NDU2NzI4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYG5mdF9wYXlsb2FkLmNgIE1vZHVsZSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBgbmZ0X3BheWxvYWQuY2AuIFJpZ2h0LCB0aGF0J3MgZGVmaW5pdGVseSBhIHBhcnQgb2YgdGhlIGBuZl90YWJsZXNgIHN1YnN5c3RlbS4gTXkgbWVudGFsIGNoZWNrbGlzdCBraWNrcyBpbiBhdXRvbWF0aWNhbGx5LiBUaW1lIHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGV4cGxpY2l0bHkuIFdoZXJlJ3MgdGhlIGF1dGhvcml0YXRpdmUgc291cmNlPyBJIHNob3VsZCBjaGVjayBgbmZfdGFibGVzYCBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgSSBjYW4gZmluZCB0aGUgYnVpbGQgcHJvY2VzcyBkZWZpbmVkIGFuZCBjb25maXJtIHRoZSBsaW5rYWdlIGZvciBhbnkgc3BlY2lmaWMgdGFyZ2V0cy4gU2hvdWxkIGJlIGEgc3RyYWlnaHRmb3J3YXJkIHByb2Nlc3MgdG8gdmVyaWZ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTEwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6NDUuMjMyNzY1MTI2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzI5OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3RhYmxlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODQ9b2JqLSQoQ09ORklHX05GX0RVUF9ORVRERVYpXFx0Kz0gbmZfZHVwX25ldGRldi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04NS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg2OiMgbmZfdGFibGVzXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4NzpuZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODg6XFx0XFx0ICBuZl90YWJsZXNfdHJhY2UubyBuZnRfaW1tZWRpYXRlLm8gbmZ0X2NtcC5vIG5mdF9yYW5nZS5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg5LVxcdFxcdCAgbmZ0X2JpdHdpc2UubyBuZnRfYnl0ZW9yZGVyLm8gbmZ0X3BheWxvYWQubyBuZnRfbG9va3VwLm8gXFxcXFxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05MS1cXHRcXHQgIG5mdF9jb3VudGVyLm8gbmZ0X29ianJlZi5vIG5mdF9pbm5lci5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjkyOlxcdFxcdCAgbmZ0X2NoYWluX3JvdXRlLm8gbmZfdGFibGVzX29mZmxvYWQubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05My1cXHRcXHQgIG5mdF9zZXRfaGFzaC5vIG5mdF9zZXRfYml0bWFwLm8gbmZ0X3NldF9yYnRyZWUubyBcXFxcXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTk3PWlmbmRlZiBDT05GSUdfVU1MXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo5ODpuZl90YWJsZXMtb2JqcyArPSBuZnRfc2V0X3BpcGFwb19hdngyLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTk5LWVuZGlmXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwMz1pZmRlZiBDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkVcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEwNDpuZl90YWJsZXMtb2JqcyArPSBuZnRfY3RfZmFzdC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDUtZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwNj1lbmRpZlxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTA3LVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA4Om9iai0kKENPTkZJR19ORl9UQUJMRVMpXFx0XFx0Kz0gbmZfdGFibGVzLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwOS1vYmotJChDT05GSUdfTkZUX0NPTVBBVClcXHQrPSBuZnRfY29tcGF0Lm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTM1PW9iai0kKENPTkZJR19ORlRfTkFUKVxcdFxcdCs9IG5mdF9jaGFpbl9uYXQub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTM2LVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM3OiMgbmZfdGFibGVzIG5ldGRldlxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTM4LW9iai0kKENPTkZJR19ORlRfRFVQX05FVERFVilcXHQrPSBuZnRfZHVwX25ldGRldi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjE5OjQ1LjI5NTQ5ODU1MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTM4MjEwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKk5GX1RBQkxFUyBDb25maWd1cmF0aW9uIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGBDT05GSUdfTkZfVEFCTEVTYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIG5haWwgZG93biB3aGV0aGVyIHRoYXQncyBhY3R1YWxseSBlbmFibGVkIGFuZCBtb3JlIGltcG9ydGFudGx5LCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgKmhvdyogaXQncyBjb25maWd1cmVkLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGtub3cgdGhpcyB3aWxsIGRpY3RhdGUgdGhlIGF2YWlsYWJpbGl0eSBvZiwgd2VsbCwgdGhlIGVudGlyZSBgbmZ0YWJsZXNgIGZyYW1ld29yay4gSXQncyB0aGUgbHluY2hwaW4uIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGtub3cgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlaXIgc3RhdHVzZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIG5vdCBqdXN0IHdoZXRoZXIgYENPTkZJR19ORl9UQUJMRVNgIGlzIHNldCB0byBgeWAgb3IgYG1gLCBidXQgYWxzbyBpZiBvdGhlciBjcnVjaWFsIGNvbXBvbmVudHMgYXJlIGRyYWdnZWQgYWxvbmcgd2l0aCBpdCwgb3IgcG90ZW50aWFsbHkgZ2V0dGluZyBsZWZ0IGJlaGluZC4gSSdsbCBuZWVkIHRvIHJhcGlkbHkgZGV0ZXJtaW5lIHdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCBhcmUgZGVwZW5kZW50IG9uIHRoaXMgc2V0dGluZy4gV2hhdCBtb2R1bGVzIGFyZSB3ZSB0YWxraW5nIGFib3V0IGhlcmU/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGJvb3QgdGltZSwgbWVtb3J5IGZvb3RwcmludCwgYW5kIG92ZXJhbGwgc3lzdGVtIGZ1bmN0aW9uYWxpdHkgaWYgdGhpcyBpcyBjb25maWd1cmVkIGluY29ycmVjdGx5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgcGVyaGFwcyB3aXRoIG9sZGVyIGBpcHRhYmxlc2AgY29uZmlndXJhdGlvbnMsIG9yIGFueSBjdXN0b20gcnVsZXNldHM/IFRoaXMgaXMgYSBjcml0aWNhbCBidWlsZGluZyBibG9jayBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0gbmV0d29ya2luZyBiZWhhdmlvciwgc28gSSBuZWVkIHRvIGV4cGxvcmUgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyB3YXJyYW50cyBhIGRlZXAgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjE5OjUwLjAwOTMyMjY5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgyMzc5MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX1RBQkxFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTQ1Mz1lbmRpZiAjIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1Ni1cXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NzE9aWYgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVxcdGRlcGVuZHMgb24gSVBWNlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDgwOmNvbmZpZyBORl9UQUJMRVNfTkVUREVWXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cXHRib29sIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiB0YWJsZXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6NTAuMDg3NTY1MzM4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0ODQ0NjIzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE5ldGZpbHRlciBDb25maWd1cmF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYE5GX1RBQkxFU2AgYW5kIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWVuIGFsdGVyZWQgaW4gdGhlIGNvZGUuIExldCBtZSBkaXZlIGludG8gdGhlIGZ1bmN0aW9uIGNoYW5nZXMuXG5cbkhtbSwgZm9jdXNpbmcgb24gYG5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNgLi4uIEl0IGxvb2tzIGxpa2UgYG5mcW5sX2VucXVldWVfcGFja2V0YCBpcyB0aGVyZSwgYnV0IGl0J3MganVzdCBjb250ZXh0LiBSaWdodCwgaXQncyB0aGUgb3RoZXIgdmFsaWRhdGlvbiByb3V0aW5lcyBJIG5lZWQgdG8gZHJpbGwgaW50by4gSSBzZWUgYG5mcW5sX3ZhbGlkYXRlX2w0YCwgYSBuZXcgc3RhdGljIGZ1bmN0aW9uLCBhbmQgbW9kaWZpY2F0aW9ucyB0byBgbmZxbmxfdmFsaWRhdGVfaXBvcHRzYC4gVGhlbiB0aGVyZSBhcmUgY2hhbmdlcyBpbiBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYG5mcW5sX3ZhbGlkYXRlX29uZV9leHRoZHJgLCBgbmZxbmxfdmFsaWRhdGVfZXh0aGRyYCwgYW5kIGBuZnFubF92YWxpZGF0ZV9pcDZgLiBIb2xkIG9uLCBsb29rcyBsaWtlIGBuZnFubF9lbnF1ZXVlX3BhY2tldGAgd2Fzbid0IGFjdHVhbGx5IG1vZGlmaWVkLCBzbyB0aGF0J3MganVzdCBhIGJpdCBvZiBkaXN0cmFjdGlvbi4gVGhlIGNoYW5nZXMgYXJlIHNwZWNpZmljYWxseSBpbiB0aG9zZSBgdmFsaWRhdGVgIGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggSVAgYW5kIGV4dGVuc2lvbiBoZWFkZXJzLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgaG93IHRob3NlIGFyZSBjYWxsZWQsIHRvIGdyYXNwIHRoZSBpbXBhY3Qgb2YgdGhlc2UgYWRqdXN0bWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MTEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MTk6NTcuNTcyMDMwMzY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIxOTM3OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZxbmxfdmFsaWRhdGVfaXA0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMjQ0PXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaF9uZXcsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEyNTctXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxMjU4OnN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNChjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTI1OS1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMzk3PXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX3dyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQwMS1cXHRjYXNlIE5GUFJPVE9fSVBWNDpcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE0MDI6XFx0XFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwNChkYXRhLCBkYXRhX2xlbiwgZSk7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDAzLVxcdGNhc2UgTkZQUk9UT19JUFY2OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxODoxOTo1Ny42ODQyMjg4MzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUwNTEzNzY1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIE5ldGZpbHRlci9uZnF1ZXVlIFdyaXRlIFZhbGlkYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBOZXRmaWx0ZXIgbmZxdWV1ZSBzZXR1cCBhbmQgaG93IHRoZSBwYWNrZXQgZGF0YSBnZXRzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSdtIHRyYWNpbmcgdGhlIGZsb3cgZnJvbSB3aGVuIHdlIHJlY2VpdmUgYSB2ZXJkaWN0IChsaWtlIEFDQ0VQVCwgRFJPUCwgZXRjLikgYmFjayB0byBhY3R1YWxseSB3cml0aW5nIHRoZSBkYXRhLlxuXG5NeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBuZnFubF92YWxpZGF0ZV93cml0ZWAuIEl0J3MgY2xlYXIgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzICpjcml0aWNhbCouIEl0J3MgY2FsbGVkIGZyb20gYG5mcW5sX3JlY3ZfdmVyZGljdGAsIHdoaWNoIG1lYW5zIGl0J3MgcmlnaHQgaW4gdGhlIHBhdGggd2hlcmUgd2UncmUgcHJvY2Vzc2luZyBkZWNpc2lvbnMgbWFkZSBvbiBxdWV1ZWQgcGFja2V0cy4gSXQncyB0aGUgcG9pbnQgd2hlcmUgd2UncmUgYWJvdXQgdG8gKmRvKiBzb21ldGhpbmcgd2l0aCB0aGUgcGFja2V0IGRhdGEgYmFzZWQgb24gdGhlIHZlcmRpY3QsIHNvIHZhbGlkYXRpbmcgdGhpcyByaWdodCBiZWZvcmUgd3JpdGluZyBpcyBlc3NlbnRpYWwuXG5cbkkgaW1hZ2luZSBpdCdzIGhlcmUgd2hlcmUgd2UncmUgY2hlY2tpbmcgdGhpbmdzIGxpa2UgYnVmZmVyIHNpemVzLCBwZXJtaXNzaW9ucywgYW5kIHBlcmhhcHMgZXZlbiBjb25zaXN0ZW5jeSBvZiB0aGUgcGFja2V0IG1ldGFkYXRhIGFnYWluc3Qgd2hhdCdzIGV4cGVjdGVkLiBXZSdyZSB0YWxraW5nIGFib3V0IGEgY3JpdGljYWwga2VybmVsLWxldmVsIHBhdGggaGVyZSDigJMgYW55IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVuZXhwZWN0ZWQgZGF0YSBjYW4gY2F1c2UgYmlnIHByb2JsZW1zLiBgbmZxbmxfdmFsaWRhdGVfd3JpdGVgIGlzIHByb2JhYmx5IHRoZSBsYXN0IGxpbmUgb2YgZGVmZW5zZSBiZWZvcmUgYSBwYWNrZXQgaXMgYWx0ZXJlZCBvciBwb3RlbnRpYWxseSBsZWFrZWQuIFRoZSBuYW1lIGl0c2VsZiBzaG91dHMgXCJ2ZXJpZnkgYmVmb3JlIGNvbW1pdFwiIVxuXG5JJ2xsIGhhdmUgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB3aGF0IHZhbGlkYXRpb24gYXNwZWN0cyB0aGUgZGV2ZWxvcGVycyBkZWNpZGVkIHdlcmUgbmVjZXNzYXJ5LiBJJ2xsIGJldCBpdCdzIGEgdGlnaHQgbG9vcCBvZiBjaGVja2luZyBhbmQgZXJyb3IgaGFuZGxpbmcsIG1ha2luZyBzdXJlIG5vdGhpbmcgc2xpcHMgdGhyb3VnaCB0aGF0IGNvdWxkIGplb3BhcmRpemUgdGhlIGludGVncml0eSBvciBzZWN1cml0eSBvZiB0aGUgbmV0d29yayB0cmFmZmljLiBJIHNob3VsZCB0YWtlIGEgbW9tZW50IGFuZCByZWZyZXNoIG15c2VsZiBvbiB0aGUgYG5mcW5sX3JlY3ZfdmVyZGljdGAgZmxvdyB0byBzZWUgd2hlcmUgaXQgc2l0cyBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMjMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxODoyMDowMi4xODkzNjg2NjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNjkxNzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mcW5sX3ZhbGlkYXRlX3dyaXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMzgxPXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2LCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEzOTYtXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxMzk3OnN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX3dyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTEzOTgtXFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTQxNT1uZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDIxLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQyMjpcXHRpZiAoIW5mcW5sX3ZhbGlkYXRlX3dyaXRlKGRhdGEsIGRhdGFfbGVuLCBlKSlcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MjMtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjAyLjI4MTA2NTYxOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDAxODExNjY0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIG5ldHdvcmsgZmlsdGVyaW5nIG9yIG5ldGZpbHRlcjpcblxuKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2s6IGBuZnFubF9tYW5nbGVgIGFuZCBgbmZxbmxfcmVjdl92ZXJkaWN0YCoqXG5cbkFscmlnaHQsIG15IG1pbmQncyBvbiB0aGlzIG5ldGZpbHRlciBjb25uZWN0aW9uLCBhbmQgSSdtIHplcm9pbmcgaW4gb24gYSBjcml0aWNhbCBsaW5rOiBgbmZxbmxfbWFuZ2xlYCBpcyBjYWxsZWQgKmRpcmVjdGx5KiBmcm9tIGBuZnFubF9yZWN2X3ZlcmRpY3RgLiBUaGlzIGlzIHNpZ25pZmljYW50LiBJdCB0ZWxscyBtZSB0aGF0IHRoZSB2ZXJkaWN0IHByb2Nlc3Mg4oCTIHRoZSBwb2ludCB3aGVyZSB0aGUga2VybmVsIGRlY2lkZXMgd2hhdCB0byBkbyB3aXRoIGEgcGFja2V0IGFmdGVyIGl0J3MgYmVlbiBoYW5kbGVkIGJ5IGEgTmV0ZmlsdGVyIFF1ZXVlIChORlFVRVVFKSDigJMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBwYWNrZXQgbWFuZ2xpbmcuIFRoYXQncyBub3QgYWx3YXlzIG9idmlvdXMsIGFuZCBpdCBpbmRpY2F0ZXMgdGhlIHBhY2tldCBtb2RpZmljYXRpb24gaGFwcGVucyByaWdodCBiZWZvcmUgdGhlIHZlcmRpY3QgaXMgbWFkZSBvciBhY3Rpb24gcGVyZm9ybWVkLiBJJ20gbm90aW5nIHRoaXMgaXMgaGFwcGVuaW5nIGluIGBuZnFubF9yZWN2X3ZlcmRpY3RgLCB3aGljaCBtZWFucyB0aGlzIGlzIGFsbCBoYXBwZW5pbmcgd2l0aGluIHRoZSBjb250ZXh0IG9mIHJlY2VpdmluZyB2ZXJkaWN0cyBmcm9tIHVzZXJsYW5kLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvdyBhbmQgaG93IG1vZGlmaWNhdGlvbnMgYXJlIGluamVjdGVkIGludG8gdGhlIHBhY2tldCBwcm9jZXNzaW5nIHBpcGVsaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTIxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MTIuMjk5MTg0NjUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDg5OTQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnFubF9tYW5nbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE0MTQ9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQxNTpuZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQxNi17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE3NzE9c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTgyMC1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE4MjE6XFx0XFx0aWYgKG5mcW5sX21hbmdsZShubGFfZGF0YShuZnFhW05GUUFfUEFZTE9BRF0pLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTgyMi1cXHRcXHRcXHRcXHQgcGF5bG9hZF9sZW4sIGVudHJ5LCBkaWZmKSBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjEyLjM5MDA4OTAzN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI1NjA1NDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBOZXRmaWx0ZXIncyBOZXRsaW5rIFF1ZXVlIFZlcmRpY3RzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgbmV0bGluayBxdWV1ZSBoYW5kbGluZyBpcyBldm9sdmluZywgYW5kIGl0IGxvb2tzIGxpa2UgYG5mcW5sX3JlY3ZfdmVyZGljdGAgaXMgdGhlIGtleSBmdW5jdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24uIFRoYXQncyB0aGUgbWFpbiBlbnRyeSBwb2ludCwgdGhlIGNlbnRyYWwgaHViIGZvciB0aGUgdmVyZGljdC1zZXR0aW5nIG9wZXJhdGlvbnMgaW4gdGhlIG5ldGxpbmsgcXVldWUuIEdvdCBpdC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBhY2tldHMgYXJlIGhhbmRsZWQgYW5kIG1vZGlmaWVkIGFuZCBob3cgdmVyZGljdHMgYXJlIGltcG9zZWQuXG5cbk5vdyBJIHNlZSBpbiBgbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jYCwgSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgdHJhY2UgaW50byB0aGlzIGZpbGUsIGFuZCBoZXJlIGl0IGxvb2tzIGxpa2UgYG5mdF90aF93cml0ZV9va2AgaXMgY2FsbGVkIGJ5IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIFRoaXMgd2lsbCBsaWtlbHkgcmV2ZWFsIGhvdyBwYXlsb2FkIHVwZGF0ZXMgYXJlIGV2YWx1YXRlZC4gVGhpcyBoZWxwcyB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgaG93IHBhY2tldHMgYXJlIGV2YWx1YXRlZCBieSB0aGUgbmZ0YWJsZXMgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGhhcHBlbnMgYmVmb3JlIGFuZCBhZnRlciB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ0OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjE2LjExNTY5NzI4N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQxOTY5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X3BheWxvYWRfc2V0X2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYz0xMDgwPXN0YXRpYyBib29sIG5mdF90aF93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYy0xMDkwLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYzoxMDkxOnN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTA5Mi1cXHRcXHRcXHRcXHQgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jPTEyODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnRfZXhwcl9vcHMgbmZ0X3BheWxvYWRfc2V0X29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYy0xMjg2LVxcdC5zaXplXFx0XFx0PSBORlRfRVhQUl9TSVpFKHNpemVvZihzdHJ1Y3QgbmZ0X3BheWxvYWRfc2V0KSksXFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jOjEyODc6XFx0LmV2YWxcXHRcXHQ9IG5mdF9wYXlsb2FkX3NldF9ldmFsLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYy0xMjg4LVxcdC5pbml0XFx0XFx0PSBuZnRfcGF5bG9hZF9zZXRfaW5pdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MTYuMTg5ODk5MjAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NDQ4NDQ0MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkZvY3VzaW5nIG9uIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgZm9yIE5GVGFibGVzIEV4cHJlc3Npb24gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgd2UgY2FuIGFuYWx5emUgdGhlIGBuZnRhYmxlc2AgZXhwcmVzc2lvbiwgYW5kIEkndmUgaWRlbnRpZmllZCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGFzIGFuIGV2YWx1YXRpb24gZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gYWRkIHRoaXMgdG8gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlLiBUaGUgaXNzdWUgaXMgdGhhdCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBhbmQgdXN1YWxseSwgd2UgZG9uJ3QgZm9jdXMgb24gdGhvc2UgZGlyZWN0bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcgaGVyZS5cblxuTGV0IG1lIHZlcmlmeTogeWVzLCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgICppcyogaW5kZWVkIGRlY2xhcmVkIGFzIGBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIEhtbSwgYnV0IGl04oCZcyBhbiBBUEkgZW50cnkgcG9pbnQgZm9yIHRoZSBleHByZXNzaW9uLiBUaGUgZmFjdCB0aGF0IGl0J3Mgc3RhdGljIGlzIGEgcG90ZW50aWFsIGh1cmRsZS4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBpcyBhbm90aGVyIGVudHJ5LXBvaW50LCBwZXJoYXBzIGEgbm9uLXN0YXRpYyBvbmUsIGZvciBjb21wYXJpc29uLiBUaGUgcmVsYXRlZCBmdW5jdGlvbiBgbmZ0X3BheWxvYWRfc2V0X29wc2Agc2VlbXMgdG8gYWxzbyBiZSBzdGF0aWMuXG5cbkhvd2V2ZXIsIGRlc3BpdGUgYmVpbmcgc3RhdGljLCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGlzIHN0aWxsIGEgZ29vZCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24gYmVjYXVzZSBpdCdzIGNhbGxlZCBpbmRpcmVjdGx5IHRocm91Z2ggYSBmdW5jdGlvbiBwb2ludGVyLiBJJ20gd29uZGVyaW5nIGlmIHRoaXMgaXMgZXZlbiByZWxldmFudCBmb3Igc3l6a2FsbGVyLlxuXG5BaGEhIFN5emthbGxlciAqY2FuKiBmb2N1cyBvbiBzdGF0aWMgZnVuY3Rpb25zLCBwcm92aWRlZCB0aGV5IGFyZW4ndCBpbmxpbmVkLiBUaGF0J3MgdGhlIGtleS4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCBpcyBpbmxpbmVkLiBCYXNlZCBvbiBpdHMgYXNzaWdubWVudCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIg4oCTIHNwZWNpZmljYWxseSBgLmV2YWwgPSBuZnRfcGF5bG9hZF9zZXRfZXZhbGAg4oCTIEknbSBwcmV0dHkgc3VyZSBpdCdzICpub3QqIGlubGluZWQuIFRoZXJlZm9yZSwgaXQncyBhIHZhbGlkIHRhcmdldC4gVGhlIHNhbWUgbG9naWMgc2hvdWxkIGFsc28gYXBwbHkgdG8gYG5mcW5sX3JlY3ZfdmVyZGljdGAuIE5vdyB0aGF0IEkndmUgY29uZmlybWVkIHRoYXQsIGl0J3Mgc2FmZSB0byBhZGQgaXQgdG8gdGhlIGZvY3VzIGxpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMjYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MjIuMTM0NzQ2Nzg3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzcyMTA3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnFubF9yZWN2X3ZlcmRpY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE2NTU9c3RhdGljIGludCBuZnFfaWRfYWZ0ZXIodW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBpbnQgbWF4KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNjU5LVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTY2MDpzdGF0aWMgaW50IG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTY2MS1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTczNj1zdGF0aWMgaW50IG5mcWFfcGFyc2VfYnJpZGdlKHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE3NzAtXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNzcxOnN0YXRpYyBpbnQgbmZxbmxfcmVjdl92ZXJkaWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNzcyLVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBuZnFhW10pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE5Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIG5mcW5sX2NiW05GUU5MX01TR19NQVhdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xOTgzLVxcdFtORlFOTF9NU0dfVkVSRElDVF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE5ODQ6XFx0XFx0LmNhbGxcXHRcXHQ9IG5mcW5sX3JlY3ZfdmVyZGljdCxcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE5ODUtXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfUkNVLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xOTk1LVxcdFtORlFOTF9NU0dfVkVSRElDVF9CQVRDSF0gPSB7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxOTk2OlxcdFxcdC5jYWxsXFx0XFx0PSBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2gsXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xOTk3LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX1JDVSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MjIuMjAyNDcyNTMzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNTI1ODM3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgUXVldWUgYW5kIFBheWxvYWQgTW9kaWZpY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW5pdGlhbGx5LCBgbmZxbmxfcmVjdl92ZXJkaWN0YCBhbmQgYG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaGAgc2VlbSBsaWtlIGdvb2QgY2FuZGlkYXRlcyBmb3IgZm9jdXNlZCBhbmFseXNpcy4gSSdsbCBhZGQgdGhvc2UgdG8gYEZvY3VzU3ltYm9sc2AsIGFsb25nIHdpdGggYG5mdF9wYXlsb2FkX3NldF9ldmFsYC4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LlxuXG5CdXQgdGhlbiBJIHNlZSB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBuZnFubF92YWxpZGF0ZV9sNGAuIEhtbSwgdGhhdCdzIGludGVyZXN0aW5nIGJlY2F1c2UgYG5mcW5sX3ZhbGlkYXRlX2w0YCBpcyBjYWxsZWQgYnkgc2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgbGlrZSBgbmZxbmxfdmFsaWRhdGVfaXA0YCwgYG5mcW5sX3ZhbGlkYXRlX2V4dGhkcmAsIGFuZCBgbmZxbmxfdmFsaWRhdGVfaXA2YC4gVGhlc2UgaW4gdHVybiBhcmUgY2FsbGVkIGJ5IGBuZnFubF92YWxpZGF0ZV93cml0ZWAsIHdoaWNoIGZlZWRzIGludG8gYG5mcW5sX21hbmdsZWAsIGFuZCBmaW5hbGx5IHRoYXQgaXMgY2FsbGVkIGJ5IGBuZnFubF9yZWN2X3ZlcmRpY3RgLiBSaWdodCwgaXQgbG9va3MgbGlrZSBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBwbGFjZSB0byBmb2N1cy4gSXQncyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCB0byB0cmFjZSBiYWNrIGZyb20uXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBsdXJraW5nIGhlcmUuIEEgcXVpY2sgY2hlY2sgcmV2ZWFscyB0aGF0IGBDT05GSUdfTkZfQ09OTlRSQUNLYCBpcyB1c2VkIGluIGBuZnFubF92YWxpZGF0ZV9sNGAuIE9rYXksIEknbGwgYWRkIGBORl9DT05OVFJBQ0tgIHRvIHRoZSB3YXRjaCBsaXN0IHRvby4gSXQncyBpbXBvcnRhbnQgdG8gaW5jbHVkZSBhbGwgdGhlIHJlbGV2YW50IGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMDIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MjcuMzU1MDYwNTc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzc4MDI4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ09OTlRSQUNLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTUtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gbWFyayB0cmFja2luZyBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgc2VjdXJpdHkgbWFyayBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM3LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHpvbmVzJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OS1cXHRib29sIFxcXCJTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1Nzpjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXFx0Ym9vbCBcXFwiQ29ubmVjdGlvbiB0cmFja2luZyBldmVudHNcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjc6Y29uZmlnIE5GX0NPTk5UUkFDS19USU1FT1VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTc3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRVNUQU1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxODg6Y29uZmlnIE5GX0NPTk5UUkFDS19MQUJFTFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgbGFiZWxzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5Ni1cXHRib29sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MjAxPWNvbmZpZyBORl9DVF9QUk9UT19TQ1RQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMTI6Y29uZmlnIE5GX0NPTk5UUkFDS19BTUFOREFcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjEzLVxcdHRyaXN0YXRlIFxcXCJBbWFuZGEgYmFja3VwIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMjc6Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVxcdHRyaXN0YXRlIFxcXCJGVFAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjQwLVxcdHRyaXN0YXRlIFxcXCJILjMyMyBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjU4OmNvbmZpZyBORl9DT05OVFJBQ0tfSVJDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiSVJDIERDQyBwcm90b2NvbCBzdXBwb3J0IChvYnNvbGV0ZSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzQ6Y29uZmlnIE5GX0NPTk5UUkFDS19CUk9BRENBU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVxcdHRyaXN0YXRlXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIk5ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyOTY6Y29uZmlnIE5GX0NPTk5UUkFDS19TTk1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5Ny1cXHR0cmlzdGF0ZSBcXFwiU05NUCBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMTE6Y29uZmlnIE5GX0NPTk5UUkFDS19QUFRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cXHR0cmlzdGF0ZSBcXFwiUFB0UCBwcm90b2NvbCBzdXBwb3J0IChkZXByZWNhdGVkKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMjktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzMxLVxcdHRyaXN0YXRlIFxcXCJTQU5FIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNDM6Y29uZmlnIE5GX0NPTk5UUkFDS19TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQ0LVxcdHRyaXN0YXRlIFxcXCJTSVAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM1NTpjb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVxcdHRyaXN0YXRlIFxcXCJURlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjI3LjQxMjg0ODAxMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njk2MDc5NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5ldGZpbHRlciBDb25maWd1cmF0aW9ucyBhbmQgS2V5IEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIGBORl9DT05OVFJBQ0tgIGlzIGEgdmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb24uIEdvb2QuIE5vdywgbGV0J3MgcXVpY2tseSByZXZpZXcgdGhlIG90aGVyIHNpZ25pZmljYW50IE5ldGZpbHRlciBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgYXJlYS4gSXQgc2VlbXMgYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYCBhbmQgYE5GX1RBQkxFU2AgYXJlIHRoZSBwcmltYXJ5IG9uZXMgdG8ga2VlcCBpbiBtaW5kLCBhbmQgeWVzLCB3ZSBzaG91bGQgZGVmaW5pdGVseSBpbmNsdWRlIGBORl9DT05OVFJBQ0tgIGdpdmVuIHRoZSBmb2N1cy5cblxuVGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSByZWFsbHkganVtcGluZyBvdXQgYXQgbWUgYXMgY3J1Y2lhbCBpbiB0aGlzIHNwYWNlIGFyZTogYG5mcW5sX3JlY3ZfdmVyZGljdGAgYW5kIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIHRob3VnaCwgc28gbGV0J3MgY2hlY2sgbXkgbG9naWMgYW5kIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZy5cblxuSSdtIHRoaW5raW5nIHRoYXQgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCBpcyB0aGUga2V5LiBSaWdodCwgaXQncyB0aGUgb25lIHRoYXQgZXZhbHVhdGVzIHRoZSBgTkZUX1BBWUxPQURfVFJBTlNQT1JUX0hFQURFUmAgYW5kIHN1YnNlcXVlbnRseSBjaGVja3MgYG5mdF90aF93cml0ZV9va2AuIFl1cCwgdGhhdCdzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdGVkLCBpdOKAmXMgdGhlIHJpZ2h0IGZ1bmN0aW9uLlxuXG5Ob3csIGxldCdzIHZhbGlkYXRlIG15IGFzc3VtcHRpb24gYWJvdXQgYG5mcW5sX3JlY3ZfdmVyZGljdGAuIEl0J3MgbXkgdW5kZXJzdGFuZGluZyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgd2hlcmUgdGhlIGFjdGlvbiBpcy4gT2theSwgaXQgY2FsbHMgYG5mcW5sX21hbmdsZWAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG5mcW5sX3ZhbGlkYXRlX3dyaXRlYCwgYW5kIGZyb20gdGhlcmUgd2UgYnJhbmNoIGludG8gYG5mcW5sX3ZhbGlkYXRlX2lwNGAsIGBuZnFubF92YWxpZGF0ZV9pcDZgLCBhbmQgZmluYWxseSB0aGUgYG5mcW5sX3ZhbGlkYXRlX2w0YCBjaGVja3MuIFBlcmZlY3QuIFllcCwgZGVmaW5pdGVseSB0aGUgcmlnaHQgZnVuY3Rpb24uXG5cbkhvbGQgb24sIEkgbmVlZCB0byBjb25zaWRlciBgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoYC4gSSBpbml0aWFsbHkgdGhvdWdodCBpdCBkaWRuJ3QgY2FsbCBgbmZxbmxfbWFuZ2xlYCBhbmQgb25seSBkZWFsdCB3aXRoIHZlcmRpY3RzIHdoZXJlIG5vIHBheWxvYWQgbW9kaWZpY2F0aW9ucyBhcmUgcGVyZm9ybWVkLiBIbW0sIGl0IHNlZW1zIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGF0IGFzc3VtcHRpb24uIEknbSBnb2luZyB0byByZXZpc2l0IHRoYXQgZnVuY3Rpb24gdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNTUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MzQuMTA4OTMxMTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTE3Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTY1NT1zdGF0aWMgaW50IG5mcV9pZF9hZnRlcih1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBtYXgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE2NTktXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNjYwOnN0YXRpYyBpbnQgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoKHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNjYxLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xOTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZnFubF9jYltORlFOTF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5NS1cXHRbTkZRTkxfTVNHX1ZFUkRJQ1RfQkFUQ0hdID0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTk5NjpcXHRcXHQuY2FsbFxcdFxcdD0gbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5Ny1cXHRcXHQudHlwZVxcdFxcdD0gTkZOTF9DQl9SQ1UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjM0LjE4NDQ1MzUwNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzk5Mzk0ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyBgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoYC4gVGhhdCBuYW1lIGFsb25lIHRlbGxzIG1lIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciByZWNlaXZpbmcgYW5kIHByb2Nlc3NpbmcgdmVyZGljdHMgaW4gdGhlIE5ldGZpbHRlciBxdWV1ZSBmcmFtZXdvcmssIGxpa2VseSBpbiBiYXRjaCBmb3JtIGZvciBlZmZpY2llbmN5LiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBvZiB0aGUga2V5IGFyZWFzIEknbGwgbmVlZCB0byBmb2N1cyBvbjogdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCAocHJvYmFibHkgc2tfYnVmZnMsIG5ldGxpbmsgbWVzc2FnZXMsIGFuZCBzb21lIGtpbmQgb2YgdmVyZGljdCBkYXRhKSwgdGhlIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIGNvbmN1cnJlbmN5IGNvbnNpZGVyYXRpb25zLCBlc3BlY2lhbGx5IGlmIHRoaXMgZnVuY3Rpb24gaXMgZGVhbGluZyB3aXRoIG11bHRpcGxlIE5ldGZpbHRlciBxdWV1ZSBjb25uZWN0aW9ucyBvciB0aHJlYWRzLiBUaGlzIGlzIGxpa2VseSB0aGUgd29ya2hvcnNlIGZ1bmN0aW9uIGluIHRoZSBrZXJuZWwgbW9kdWxlLCByaWdodCBhdCB0aGUgaGVhcnQgb2YgdGhlIHBhY2tldCBwcm9jZXNzaW5nIHBpcGVsaW5lIGFzIHRoZSB2ZXJkaWN0IGZyb20gdXNlcnNwYWNlIGlzIHJlY2VpdmVkLiBMZXQncyBkaWcgaW4gYW5kIHNlZSBob3cgaXQgaGFuZGxlcyB0aGluZ3MuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMDgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxODoyMDozOC45ODM4NTE0NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjYwOlxcdHN0YXRpYyBpbnQgbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoKHN0cnVjdCBza19idWZmICpza2IsXFxuMTY2MTpcXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG4xNjYyOlxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgbmZxYVtdKVxcbjE2NjM6XFx0e1xcbjE2NjQ6XFx0XFx0c3RydWN0IG5mbmxfcXVldWVfbmV0ICpxID0gbmZubF9xdWV1ZV9wZXJuZXQoaW5mby1cXHUwMDNlbmV0KTtcXG4xNjY1OlxcdFxcdHUxNiBxdWV1ZV9udW0gPSBudG9ocyhpbmZvLVxcdTAwM2VuZm1zZy1cXHUwMDNlcmVzX2lkKTtcXG4xNjY2OlxcdFxcdHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksICp0bXA7XFxuMTY2NzpcXHRcXHRzdHJ1Y3QgbmZxbmxfbXNnX3ZlcmRpY3RfaGRyICp2aGRyO1xcbjE2Njg6XFx0XFx0c3RydWN0IG5mcW5sX2luc3RhbmNlICpxdWV1ZTtcXG4xNjY5OlxcdFxcdHVuc2lnbmVkIGludCB2ZXJkaWN0LCBtYXhpZDtcXG4xNjcwOlxcdFxcdExJU1RfSEVBRChiYXRjaF9saXN0KTtcXG4xNjcxOlxcdFxcbjE2NzI6XFx0XFx0cXVldWUgPSB2ZXJkaWN0X2luc3RhbmNlX2xvb2t1cChxLCBxdWV1ZV9udW0sXFxuMTY3MzpcXHRcXHRcXHRcXHRcXHRcXHRORVRMSU5LX0NCKHNrYikucG9ydGlkKTtcXG4xNjc0OlxcdFxcdGlmIChJU19FUlIocXVldWUpKVxcbjE2NzU6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocXVldWUpO1xcbjE2NzY6XFx0XFxuMTY3NzpcXHRcXHR2aGRyID0gdmVyZGljdGhkcl9nZXQobmZxYSk7XFxuMTY3ODpcXHRcXHRpZiAoIXZoZHIpXFxuMTY3OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNjgwOlxcdFxcbjE2ODE6XFx0XFx0dmVyZGljdCA9IG50b2hsKHZoZHItXFx1MDAzZXZlcmRpY3QpO1xcbjE2ODI6XFx0XFx0bWF4aWQgPSBudG9obCh2aGRyLVxcdTAwM2VpZCk7XFxuMTY4MzpcXHRcXG4xNjg0OlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cXVldWUtXFx1MDAzZWxvY2spO1xcbjE2ODU6XFx0XFxuMTY4NjpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZW50cnksIHRtcCwgXFx1MDAyNnF1ZXVlLVxcdTAwM2VxdWV1ZV9saXN0LCBsaXN0KSB7XFxuMTY4NzpcXHRcXHRcXHRpZiAobmZxX2lkX2FmdGVyKGVudHJ5LVxcdTAwM2VpZCwgbWF4aWQpKVxcbjE2ODg6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTY4OTpcXHRcXHRcXHRfX2RlcXVldWVfZW50cnkocXVldWUsIGVudHJ5KTtcXG4xNjkwOlxcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmVudHJ5LVxcdTAwM2VsaXN0LCBcXHUwMDI2YmF0Y2hfbGlzdCk7XFxuMTY5MTpcXHRcXHR9XFxuMTY5MjpcXHRcXG4xNjkzOlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZxdWV1ZS1cXHUwMDNlbG9jayk7XFxuMTY5NDpcXHRcXG4xNjk1OlxcdFxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZiYXRjaF9saXN0KSlcXG4xNjk2OlxcdFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbjE2OTc6XFx0XFxuMTY5ODpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZW50cnksIHRtcCwgXFx1MDAyNmJhdGNoX2xpc3QsIGxpc3QpIHtcXG4xNjk5OlxcdFxcdFxcdGlmIChuZnFhW05GUUFfTUFSS10pXFxuMTcwMDpcXHRcXHRcXHRcXHRlbnRyeS1cXHUwMDNlc2tiLVxcdTAwM2VtYXJrID0gbnRvaGwobmxhX2dldF9iZTMyKG5mcWFbTkZRQV9NQVJLXSkpO1xcbjE3MDE6XFx0XFxuMTcwMjpcXHRcXHRcXHRpZiAobmZxYVtORlFBX1BSSU9SSVRZXSlcXG4xNzAzOlxcdFxcdFxcdFxcdGVudHJ5LVxcdTAwM2Vza2ItXFx1MDAzZXByaW9yaXR5ID0gbnRvaGwobmxhX2dldF9iZTMyKG5mcWFbTkZRQV9QUklPUklUWV0pKTtcXG4xNzA0OlxcdFxcbjE3MDU6XFx0XFx0XFx0bmZxbmxfcmVpbmplY3QoZW50cnksIHZlcmRpY3QpO1xcbjE3MDY6XFx0XFx0fVxcbjE3MDc6XFx0XFx0cmV0dXJuIDA7XFxuMTcwODpcXHR9XFxuMTcwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTg6MjA6MzguOTgzOTY3NzRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzNjg3MDAyODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE5ldGZpbHRlciBDb2RlIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMsIGFuZCBpdCBsb29rcyBsaWtlIGBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2hgICpkb2Vzbid0KiBjYWxsIGBuZnFubF9tYW5nbGVgLiBUaGF0IG1lYW5zIHRoZSBtb2RpZmllZCBjb2RlIGlzbid0IGJlaW5nIHRyaWdnZXJlZCB0aGVyZSwgd2hpY2ggaXMgaGVscGZ1bCB0byBlbGltaW5hdGUgYSBwb3RlbnRpYWwgYXZlbnVlIG9mIGludmVzdGlnYXRpb24uIEl0J3Mgb25seSBgbmZxbmxfcmVjdl92ZXJkaWN0YCB0aGF0IGNhbGxzIGBuZnFubF9tYW5nbGVgLCB0aGF0J3MgdGhlIGtleS5cblxuVGhpcyBtZWFucyBJIG5lZWQgdG8gY29uY2VudHJhdGUgbXkgYW5hbHlzaXMgb24gYG5mcW5sX3JlY3ZfdmVyZGljdGAgYW5kLCBzcGVjaWZpY2FsbHksIG9uIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIEl0IHNlZW1zIHRob3NlIGFyZSB0aGUgY3JpdGljYWwgc3ltYm9scyBoZXJlLlxuXG5JJ3ZlIGFsc28gZ290IHNvbWUgY29uZmlndXJhdGlvbiBkZXRhaWxzIHRvIGNvbnNpZGVyOiBgTkVURklMVEVSX05FVExJTktfUVVFVUVgLCBgTkZfVEFCTEVTYCwgYW5kIGBORl9DT05OVFJBQ0tgIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgY29uZmlybSB0aGF0IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgKmlzKiBpbmRlZWQgdGhlIGV2YWx1YXRpb24gZnVuY3Rpb24gZm9yIGBuZnRfcGF5bG9hZF9zZXRfb3BzYCBhbmQgdGhhdCBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyB0aGUgY2FsbGJhY2sgZm9yIGBORlFOTF9NU0dfVkVSRElDVGAuIFllcCwgdGhhdCBhbGwgY2hlY2tzIG91dC5cblxuT2theSwgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlnIGRlcGVuZGVuY2llcy4gYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYCBkZXBlbmRzIG9uIGBORVRGSUxURVJfTkVUTElOS2AsIGFuZCBgTkZfVEFCTEVTYCBzZWxlY3RzIGBORVRGSUxURVJfTkVUTElOS2AuIE9rYXksIHRoYXQgbWVhbnMgYE5FVEZJTFRFUl9ORVRMSU5LYCBpcyBpbXBsaWNpdGx5IGVuYWJsZWQuIEdvb2QgdG8ga25vdy5cblxuQWxyaWdodCwgSSB0aGluayBJIGhhdmUgYSBjbGVhciBwaWN0dXJlLiBUaW1lIHRvIHVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2shXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MTY1LCJPdXRwdXRUb2tlbnMiOjE1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE4OjIwOjQ5LjM1MjY3MjEyMloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTYwODM1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSX05FVExJTktfUVVFVUVcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZxbmxfcmVjdl92ZXJkaWN0XCIsXG4gICAgXCJuZnRfcGF5bG9hZF9zZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgTDQgaGVhZGVyIHZhbGlkYXRpb24gdG8gdGhlIG5ldGZpbHRlciBuZXRsaW5rIHF1ZXVlIHBhY2tldCBtYW5nbGluZyBwYXRoIChuZnFubF9yZWN2X3ZlcmRpY3QpIGFuZCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCB3cml0aW5nIHRvIHRoZSBUQ1AgZGF0YSBvZmZzZXQgZmllbGQgaW4gdGhlIG5mdGFibGVzIHBheWxvYWQgc2V0IGV4cHJlc3Npb24gKG5mdF9wYXlsb2FkX3NldF9ldmFsKS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJfTkVUTElOS19RVUVVRVwiLFxuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnFubF9yZWN2X3ZlcmRpY3RcIixcbiAgICBcIm5mdF9wYXlsb2FkX3NldF9ldmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBMNCBoZWFkZXIgdmFsaWRhdGlvbiB0byB0aGUgbmV0ZmlsdGVyIG5ldGxpbmsgcXVldWUgcGFja2V0IG1hbmdsaW5nIHBhdGggKG5mcW5sX3JlY3ZfdmVyZGljdCkgYW5kIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IHdyaXRpbmcgdG8gdGhlIFRDUCBkYXRhIG9mZnNldCBmaWVsZCBpbiB0aGUgbmZ0YWJsZXMgcGF5bG9hZCBzZXQgZXhwcmVzc2lvbiAobmZ0X3BheWxvYWRfc2V0X2V2YWwpLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUgbmV0ZmlsdGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowbx5ng[1] Phase: Succeeded StartedAt: 2026-07-31 18:21:00 +0000 UTC FinishedAt: 2026-07-31 18:21:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 18:21:00 +0000 UTC FinishedAt: 2026-07-31 18:21:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2] Phase: Succeeded StartedAt: 2026-07-31 18:21:00 +0000 UTC FinishedAt: 2026-07-31 22:06:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 18:21:00 +0000 UTC FinishedAt: 2026-07-31 22:06:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 18:21:00 +0000 UTC FinishedAt: 2026-07-31 18:21:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 18:21:00 +0000 UTC FinishedAt: 2026-07-31 18:21:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowbx5ng/series-workflowbx5ng-convert-artifact-135655743/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 18:21:21 +0000 UTC FinishedAt: 2026-07-31 18:41:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 18:21:21 +0000 UTC FinishedAt: 2026-07-31 18:41: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:*0f045181-82fc-4830-9e85-3fea84cfcdbd,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-workflowbx5ng/series-workflowbx5ng-convert-artifact-135655743/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": "512f4cdd-3de2-4819-aff8-7d007da37cdc", "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-workflowbx5ng/series-workflowbx5ng-build-action-1184758725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 18:21:21 +0000 UTC FinishedAt: 2026-07-31 18:41:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0f045181-82fc-4830-9e85-3fea84cfcdbd,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-workflowbx5ng/series-workflowbx5ng-convert-artifact-135655743/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": "512f4cdd-3de2-4819-aff8-7d007da37cdc", "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-workflowbx5ng/series-workflowbx5ng-build-action-1184758725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 18:41:59 +0000 UTC FinishedAt: 2026-07-31 18:41:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 18:41:59 +0000 UTC FinishedAt: 2026-07-31 18:41:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 18:41:59 +0000 UTC FinishedAt: 2026-07-31 18:42:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 18:41:59 +0000 UTC FinishedAt: 2026-07-31 18:42:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowbx5ng/series-workflowbx5ng-convert-artifact-1233396302/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 18:42:09 +0000 UTC FinishedAt: 2026-07-31 18:44:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 18:42:09 +0000 UTC FinishedAt: 2026-07-31 18:44:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*512f4cdd-3de2-4819-aff8-7d007da37cdc,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-workflowbx5ng/series-workflowbx5ng-build-action-1184758725/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-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 18:44:20 +0000 UTC FinishedAt: 2026-07-31 18:44:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 18:44:20 +0000 UTC FinishedAt: 2026-07-31 18:44:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 18:44:20 +0000 UTC FinishedAt: 2026-07-31 19:02:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 18:44:21 +0000 UTC FinishedAt: 2026-07-31 19:02:00 +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:*0f045181-82fc-4830-9e85-3fea84cfcdbd,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-workflowbx5ng/series-workflowbx5ng-convert-artifact-1233396302/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": "55bd01bd-8df7-4938-bcb2-64f03c4e1427", "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-workflowbx5ng/series-workflowbx5ng-build-action-1555743714/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 18:44:21 +0000 UTC FinishedAt: 2026-07-31 19:01:50 +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:*0f045181-82fc-4830-9e85-3fea84cfcdbd,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-workflowbx5ng/series-workflowbx5ng-convert-artifact-1233396302/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": "55bd01bd-8df7-4938-bcb2-64f03c4e1427", "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-workflowbx5ng/series-workflowbx5ng-build-action-1555743714/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 19:02:00 +0000 UTC FinishedAt: 2026-07-31 19:02:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 19:02:00 +0000 UTC FinishedAt: 2026-07-31 19:02:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 19:02:00 +0000 UTC FinishedAt: 2026-07-31 19:03:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 19:02:00 +0000 UTC FinishedAt: 2026-07-31 19:03:39 +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:*55bd01bd-8df7-4938-bcb2-64f03c4e1427,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-workflowbx5ng/series-workflowbx5ng-build-action-1555743714/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-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 19:03:49 +0000 UTC FinishedAt: 2026-07-31 22:06:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 19:03:49 +0000 UTC FinishedAt: 2026-07-31 22:06:52 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"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:*512f4cdd-3de2-4819-aff8-7d007da37cdc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*55bd01bd-8df7-4938-bcb2-64f03c4e1427,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-workflowbx5ng/series-workflowbx5ng-build-action-1184758725/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-workflowbx5ng/series-workflowbx5ng-build-action-1555743714/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 19:03:49 +0000 UTC FinishedAt: 2026-07-31 19:03:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 19:03:49 +0000 UTC FinishedAt: 2026-07-31 19:03:53 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"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-workflowbx5ng/series-workflowbx5ng-convert-artifact-2467869811/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 19:03:49 +0000 UTC FinishedAt: 2026-07-31 19:03:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 19:03:49 +0000 UTC FinishedAt: 2026-07-31 19:03:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 19:03:49 +0000 UTC FinishedAt: 2026-07-31 19:03:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 19:03:59 +0000 UTC FinishedAt: 2026-07-31 22:06:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbx5ng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_NETLINK_QUEUE","NF_TABLES","NF_CONNTRACK"],"series_id":"1891e4d3-62f2-49ab-97b3-f194e5d4870b","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 19:03:59 +0000 UTC FinishedAt: 2026-07-31 22:06:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*512f4cdd-3de2-4819-aff8-7d007da37cdc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*55bd01bd-8df7-4938-bcb2-64f03c4e1427,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-workflowbx5ng/series-workflowbx5ng-build-action-1184758725/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-workflowbx5ng/series-workflowbx5ng-build-action-1555743714/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-workflowbx5ng/series-workflowbx5ng-convert-artifact-2467869811/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,}