Name: series-workflow6kdrn Phase: Succeeded StartedAt: 2026-08-11 08:13:20 +0000 UTC FinishedAt: 2026-08-11 09:46:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[0] Phase: Succeeded StartedAt: 2026-08-11 08:13:20 +0000 UTC FinishedAt: 2026-08-11 09:05:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[0].run-triage Phase: Succeeded StartedAt: 2026-08-11 08:13:20 +0000 UTC FinishedAt: 2026-08-11 09:05:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3d08ff75a47a3e7e2ab45a3bcab6723b4d906422", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SCHED_CLASS_EXT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3d08ff75a47a3e7e2ab45a3bcab6723b4d906422", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SCHED_CLASS_EXT" ], "series_id": "f438a239-e8aa-4404-9c7c-2026feb24e1b" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "scx_bpf_dsq_reenq", "scx_bpf_destroy_dsq" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NDSEVEX0NMQVNTX0VYVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjeF9icGZfZHNxX3JlZW5xJiMzNDssCiAgICAmIzM0O3NjeF9icGZfZGVzdHJveV9kc3EmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIEJVR19PTigpIHdpdGggYSBjb25kaXRpb25hbCBjaGVjayBhbmQgYSBgY29udGludWVgIHN0YXRlbWVudCB0byBoYW5kbGUgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWlnaHQgaW52YWxpZGF0ZSBhIGRpc3BhdGNoIHF1ZXVlIChgZHNxYCkuIFRoaXMgY2hhbmdlIHByZXZlbnRzIGEga2VybmVsIHBhbmljIChCVUdfT04pIGFuZCBoYW5kbGVzIHRoZSByYWNlIGdyYWNlZnVsbHkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgb3IgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgcmFjZSBjb25kaXRpb24gd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGRmNzRhNWU0ODdiNjQ0ZjY5OWEyMjViYmFmNWQ2OTA2NGU1YTM1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA5OjAzOjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG5pbmRleCAwYmJlMTQ0Yzk4MTExLi42MDRhMDVkYTQxYjkzIDEwMDY0NFxuLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuQEAgLTQ1MzEsNyAmIzQzOzQ1MzEsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXG4gXHRcdC8qIHNlZSBzY2hlZHVsZV9kc3FfcmVlbnEoKSAqL1xuIFx0XHRzbXBfbWIoKTtcbiBcbi1cdFx0QlVHX09OKGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pO1xuJiM0MztcdFx0LyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovXG4mIzQzO1x0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkIFx1MDAyNiBTQ1hfRFNRX0ZMQUdfQlVJTFRJTikpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRyZWVucV91c2VyKHJxLCBkc3EsIHJlZW5xX2ZsYWdzKTtcbiBcdH1cbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NDSEVEX0NMQVNTX0VYVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjeF9icGZfZHNxX3JlZW5xJiMzNDssCiAgICAmIzM0O3NjeF9icGZfZGVzdHJveV9kc3EmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGRmNzRhNWU0ODdiNjQ0ZjY5OWEyMjViYmFmNWQ2OTA2NGU1YTM1YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDA5OjAzOjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMKaW5kZXggMGJiZTE0NGM5ODExMS4uNjA0YTA1ZGE0MWI5MyAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jCkBAIC00NTMxLDcgJiM0Mzs0NTMxLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKQogCQkvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi8KIAkJc21wX21iKCk7CiAKLQkJQlVHX09OKGRzcS0mZ3Q7aWQgJmFtcDsgU0NYX0RTUV9GTEFHX0JVSUxUSU4pOwomIzQzOwkJLyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovCiYjNDM7CQlpZiAodW5saWtlbHkoZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTikpCiYjNDM7CQkJY29udGludWU7CiAJCXJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpOwogCX0KIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyMQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcml0aWNhbCBTY2hlZHVsZXIgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgZnVuY3Rpb24uIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBidXQgaW1wb3J0YW50IGNoYW5nZTogdGhleSYjMzk7dmUgcmVwbGFjZWQgYSBoYXJkIGBCVUdfT05gIHdpdGggYSBtb3JlIGdyYWNlZnVsIGNvbmRpdGlvbmFsIGBjb250aW51ZWAuIFRoZSBvbGQgY29kZSB3YXMgcG90ZW50aWFsbHkgY2F1c2luZyBhIGNyYXNoLCBhIHJhY2UgY29uZGl0aW9uIHRoYXQgd291bGQgdHJpZ2dlciB0aGF0IGBCVUdfT05gIHdoZW4gYGRzcS0mZ3Q7aWRgIGhhZCB0aGUgYFNDWF9EU1FfRkxBR19CVUlMVElOYCBmbGFnIHNldC4gVGhlIG5ldyBsb2dpYyBkZXRlY3RzIHRoaXMgcmFjZSwgYW5kIHNpbXBseSBza2lwcyB0aGF0IGVsZW1lbnQsIHByZXZlbnRpbmcgdGhlIHBhbmljLgoKVGhpcyB0ZWxscyBtZSB0aGVyZSYjMzk7cyBhIGNvbmN1cnJlbmN5IGlzc3VlLiBUaGUgc3lzdGVtIG1pZ2h0IGJlIGF0dGVtcHRpbmcgdG8gd29yayB3aXRoIGEgYGRzcWAgb2JqZWN0IChsaWtlbHkgYSAmIzM0O2RlZmVycmVkIHNjaGVkdWxpbmcgcXVldWUmIzM0OykgdGhhdCYjMzk7cyBiZWluZyBpbnZhbGlkYXRlZCBvciBkZXN0cm95ZWQgY29uY3VycmVudGx5LCBsaWtlbHkgYnkgYSBjYWxsIHRvIGBkZXN0cm95X2RzcSgpYC4gVGhhdCByYWNlIGhhcyBiZWVuIGZvdW5kIGFuZCBmaXhlZCAtIGdvb2QuIFRoaXMgbWVhbnMgdGhlcmUgd2FzIGEgd2luZG93IHdoZXJlIHdlIGNvdWxkIGRlcmVmZXJlbmNlIGEgZGFuZ2xpbmcgcG9pbnRlciwgd2hpY2ggaXMgbmV2ZXIgZ29vZC4KClNpbmNlIHRoaXMgYWZmZWN0cyB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MsIGBzY2hlZF9leHRgLCBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gcmVzcG9uc2libGUgZm9yIGVuYWJsaW5nIHRoaXMgZmVhdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIHRhcmdldCBzeXN0ZW0gaXMgZXZlbiB1c2luZyB0aGlzIGNvZGUgcGF0aCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gSXQmIzM5O3MgYSBjcml0aWNhbCBhcmVhLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIHNlYXJjaCB0aGUga2VybmVsIGNvbmZpZ3MgZm9yIGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNDSEVEX0VYVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTM3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIGdlYXJlZCB0b3dhcmRzIGEgdXNlciB3aG8ga25vd3MgdGhlaXIgc3R1ZmY6CgoqKkh1bnRpbmcgRG93biBUaG9zZSBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCB0aW1lIHRvIHRyYWNrIGRvd24gdGhvc2UgcHJlZW1wdGlvbi1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQg4oCTIGl0ICpzaG91bGQqIGNvbnRhaW4gdGhlIGtleSBzZXR0aW5ncy4gQnV0LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBjb3ZlciBhbGwgdGhlIGJhc2VzLCBJJiMzOTtsbCBhbHNvIGdsYW5jZSBhdCBgaW5pdC9LY29uZmlnYC4gWW91IG5ldmVyIGtub3csIHNvbWUgaW5pdGlhbGl6YXRpb24tcmVsYXRlZCBvcHRpb25zICptaWdodCogdG91Y2ggb24gcHJlZW1wdGlvbiwgb3IgbWF5YmUgdGhlcmUgYXJlIHNvbWUgaW5jbHVkZXMgaW4gdGhlcmUgdGhhdCBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBjb25zaWRlcmluZy4gQW5kIG9mIGNvdXJzZSwgSSBzaG91bGQgYWxzbyBpbW1lZGlhdGVseSBjaGVjayBga2VybmVsL3NjaGVkL0tjb25maWdgLiBQcmVlbXB0aW9uIGlzIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBzY2hlZHVsZXIsIHNvIHRoYXQmIzM5O3MgYW5vdGhlciB2ZXJ5IGxpa2VseSBsb2NhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBkaWcgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0NIRURfRVhUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzkyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyByZWxhdGVkIHRvIGBjb25maWcgU0NIRURfQ0xBU1NfRVhUYCwgYnV0IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbi4gQmVzdCB3YXkgdG8gY29uZmlybSB0aGF0IGlzIHRvIGxvb2sgYXQgdGhlIHNvdXJjZSBjb2RlLiBJIHNob3VsZCBkZWx2ZSBpbnRvIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCBhbmQgc2VlIGlmIHRoZSBjb21waWxhdGlvbiBvZiBpdHMgY29udGVudHMgaXMgYWN0dWFsbHkgY29udGluZ2VudCB1cG9uIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24uIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBiYXJraW5nIHVwIHRoZSB3cm9uZyB0cmVlIGhlcmUgYmVmb3JlIEkgZGlnIGFueSBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBTY2hlZHVsZXImIzM5O3MgTWFrZXVwKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyByZWxhdGVkIHRvICYjMzQ7ZXh0LCYjMzQ7IHByb2JhYmx5IHNvbWUgZXh0ZW5zaW9uIG9yIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBzY2hlZHVsZXIgY29kZS4gTXkgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCBmb3IgdGhlIGBrZXJuZWwvc2NoZWQvYCBkaXJlY3Rvcnkg4oCTIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBzY2hlZHVsaW5nIGxvZ2ljIHJlc2lkZXMuIEdpdmVuIHRoYXQgaXQmIzM5O3MgbGlrZWx5IGEgY29uZmlndXJhdGlvbiBvciBidWlsZC1yZWxhdGVkIHNldHRpbmcsIHRoZSBgTWFrZWZpbGVgIGluIHRoYXQgZGlyZWN0b3J5IHNlZW1zIGxpa2UgdGhlIG1vc3QgcHJvYmFibGUgc3RhcnRpbmcgcG9pbnQuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwbGFjZSB0byBjaGVjayBmb3IgYW55IGJ1aWxkIG9wdGlvbnMgb3IgbW9kdWxlIGluY2x1c2lvbnMgcmVsYXRlZCB0byB0aGUgc2NoZWR1bGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gYGtlcm5lbC9zY2hlZC9NYWtlZmlsZWAuIEhvcGVmdWxseSwgYGV4dGAgd2lsbCBlaXRoZXIgYmUgZGlyZWN0bHkgbWVudGlvbmVkIG9yIGxlYWQgbWUgdG8gdGhlIHJpZ2h0IGZpbGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvTWFrZWZpbGU9OD1jY2ZsYWdzLXkgJiM0Mzs9ICQoY2FsbCBjYy1kaXNhYmxlLXdhcm5pbmcsIHVudXNlZC1idXQtc2V0LXZhcmlhYmxlKVxuLS1cbmtlcm5lbC9zY2hlZC9NYWtlZmlsZS0xMC0jIFRoZXNlIGZpbGVzIGFyZSBkaXNhYmxlZCBiZWNhdXNlIHRoZXkgcHJvZHVjZSBub24taW50ZXJlc3RpbmcgZmxha3kgY292ZXJhZ2Vcbmtlcm5lbC9zY2hlZC9NYWtlZmlsZToxMTojIHRoYXQgaXMgbm90IGEgZnVuY3Rpb24gb2Ygc3lzY2FsbCBpbnB1dHMuIEUuZy4gaW52b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlcy5cbmtlcm5lbC9zY2hlZC9NYWtlZmlsZS0xMi1LQ09WX0lOU1RSVU1FTlQgOj0gblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjgyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgS2VybmVsIFNvdXJjZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgdGhyb3VnaCB0aGlzIGtlcm5lbCBjb2RlIGFuZCBJIGp1c3Qgc2F3IGEgcmVmZXJlbmNlIHRvIGBleHQuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgc291cmNlIGZpbGUgYWN0dWFsbHkgbGl2ZXMgd2l0aGluIHRoaXMgc3ByYXdsaW5nIHByb2plY3QuIEl0ICpzaG91bGQqIGJlIGluIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCwgYnV0IHlvdSBjYW4mIzM5O3QgYXNzdW1lIGFueXRoaW5nIGluIHRoaXMgZW52aXJvbm1lbnQuIEJlc3QgcHJhY3RpY2UgZGljdGF0ZXMgdGhhdCBJIHZlcmlmeSB0aGlzIGJ5IGNoZWNraW5nIHRoZSBjb3JyZXNwb25kaW5nIGBNYWtlZmlsZWAuIEkgbmVlZCB0byBjb25maXJtIHdoZXJlIHRoaXMgY29tcG9uZW50IGlzIGRlY2xhcmVkIHNvIEkgY2FuIGJldHRlciB1bmRlcnN0YW5kIGl0cyBjb21waWxhdGlvbiBhbmQgbGlua2FnZS4gVGltZSB0byBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9NYWtlZmlsZWAuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIGhhcyB0byBzYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ5NAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIEJhY2sgaW50byB0aGUgU2NoZWR1bGVyIE1ha2VmaWxlKioKCk9rYXksIEkgbmVlZCB0byByZXZpc2l0IGBrZXJuZWwvc2NoZWQvTWFrZWZpbGVgLiBJIGhhZCBhIG5hZ2dpbmcgZmVlbGluZyBhYm91dCBzb21ldGhpbmcgaW4gdGhlcmUsIGEgcG90ZW50aWFsIG9wdGltaXphdGlvbiBvciBhIHN1YnRsZSBjb25maWd1cmF0aW9uIGlzc3VlIHRoYXQgSSB3YW50IHRvIGRvdWJsZS1jaGVjay4gSXQmIzM5O3MgdGltZSB0byByZWZyZXNoIG15IG1lbnRhbCBtYXAgb2YgdGhhdCBzcGVjaWZpYyBidWlsZCBwcm9jZXNzIGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSBpbXBvcnRhbnQgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIHJlbGF0ZWQgdG8gbXkgY3VycmVudCBhcmVhIG9mIGZvY3VzLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGJ1aWxkIHN5c3RlbSBpcyBiZWhhdmluZyBhcyBJIGV4cGVjdCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgZmluZXIgcG9pbnRzIG9mIHRoZSBzY2hlZHVsZXIuIEkmIzM5O20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IG9uIGhvdyBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgbWlnaHQgaW5mbHVlbmNlIHRoZSBsaW5raW5nIG9yIGNvbXBpbGF0aW9uIG9mIGNlcnRhaW4gbW9kdWxlcywgb3IgZXZlbiBpbXBhY3QgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgYmFzZWQgb24gdGhlIGZsYWdzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoYXQgcXVpY2sgc2NhbiByZXZlYWxzIGFueXRoaW5nIEkgbWlnaHQgaGF2ZSBtaXNzZWQgZWFybGllci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBTY2hlZHVsZXIgRXh0ZW5zaW9uIEJ1aWxkIFByb2Nlc3MqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2NoZWR1bGVyIGV4dGVuc2lvbnMgYXJlIGJlaW5nIGJ1aWx0LiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGtlcm5lbC9zY2hlZC9leHQvTWFrZWZpbGVgLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgYnVpbGQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBpbiB0aGVyZS4gVGhhdCYjMzk7cyB0aGUgdHlwaWNhbCBwbGFjZSBmb3IgaGFuZGxpbmcgb2JqZWN0IGZpbGUgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcgd2l0aGluIHRoYXQgcGFydCBvZiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGlzIE1ha2VmaWxlIGhvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBmaWxlIGRvZXMgbm90IGV4aXN0PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDt0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkwMgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIGEgS2VybmVsIFNjaGVkdWxlciBDaGFuZ2UqKgoKT2theSwgc28gdGhlIGRpZmYgbWVudGlvbnMgYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgLiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXMgaG93IHRoaXMgYGV4dC5jYCBmaWxlIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgdGhlIHNjaGVkdWxlciB3aXRoaW4gdGhlIGtlcm5lbC4gSSBzaG91bGQgaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGBrZXJuZWwvc2NoZWQvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgY2FuIGZpbmQgdGhlIGRlcGVuZGVuY3kgZ3JhcGggYW5kIGJ1aWxkIGluc3RydWN0aW9ucyBmb3Igc2NoZWR1bGVyIGNvbXBvbmVudHMuIEl0IHdpbGwgc2hvdyBtZSBob3cgYGV4dC5jYCBpcyBpbmNsdWRlZCBhbmQgaWYgaXTigJlzIGEgbW9kdWxlLCBwYXJ0IG9mIHRoZSBjb3JlLCBvciBzb21ldGhpbmcgZWxzZS4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgcHJvY2VzcyBpcyBjcnVjaWFsIGZvciB0cmFjaW5nIHRoZSBjb2RlJiMzOTtzIGludGVncmF0aW9uIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBUaGF0IE1ha2VmaWxlIGlzIG15IGZpcnN0IHN0b3AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvY29yZS5jPTcwMTI9ZmluZF9wcm94eV90YXNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqZG9ub3IsIHN0cnVjdCBycV9mbGFncyAqcmYpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy03MDQwLSAqXG5rZXJuZWwvc2NoZWQvY29yZS5jOjcwNDE6ICogICAgICAgICAtIGluIHN5c2NhbGwgb3IgZXhjZXB0aW9uIGNvbnRleHQsIGF0IHRoZSBuZXh0IG91dG1vc3Rcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzA0Mi0gKiAgICAgICAgICAgcHJlZW1wdF9lbmFibGUoKS4gKHRoaXMgbWlnaHQgYmUgYXMgc29vbiBhcyB0aGUgd2FrZV91cCgpJiMzOTtzXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYz04MzY2PXZvaWQgc2NoZWRfc2V0bnVtYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBuaWQpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy04Mzc1LS8qXG5rZXJuZWwvc2NoZWQvY29yZS5jOjgzNzY6ICogSW52b2tlZCBvbiB0aGUgb3V0Z29pbmcgQ1BVIGluIGNvbnRleHQgb2YgdGhlIENQVSBob3RwbHVnIHRocmVhZFxua2VybmVsL3NjaGVkL2NvcmUuYy04Mzc3LSAqIGFmdGVyIGVuc3VyaW5nIHRoYXQgdGhlcmUgYXJlIG5vIHVzZXIgc3BhY2UgdGFza3MgbGVmdCBvbiB0aGUgQ1BVLlxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9MTA2MzM9dm9pZCBjYWxsX3RyYWNlX3NjaGVkX3VwZGF0ZV9ucl9ydW5uaW5nKHN0cnVjdCBycSAqcnEsIGludCBjb3VudClcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTEwNzU3LSAqIHRoZSBmaXh1cCBmdW5jdGlvbi4gSWYgaXQgd2FzIGluaXRpYXRlZCBieSBhIGFmZmluaXR5IGNoYW5nZSwgdGhlbiBpdCYjMzk7c1xua2VybmVsL3NjaGVkL2NvcmUuYzoxMDc1ODogKiBydW4gZWl0aGVyIGluIHRoZSBkZWZlcnJlZCB1cGRhdGUgZnVuY3Rpb24gaW4gY29udGV4dCBvZiBhIHdvcmtxdWV1ZSBvclxua2VybmVsL3NjaGVkL2NvcmUuYy0xMDc1OS0gKiBieSBhIHRhc2sgd2hpY2ggZm9ya3MgYSBuZXcgb25lIG9yIGJ5IGEgdGFzayB3aGljaCBleGl0cy4gV2hhdGV2ZXJcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTcwMzk9c3RydWN0IHNjeF9zY2hlZCAqc2N4X2FsbG9jX2FuZF9hZGRfc2NoZWQoc3RydWN0IHNjeF9lbmFibGVfY21kICpjbWQsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MDQyLXtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzA0MzpcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMgPSBjbWQtXHUwMDNlb3BzO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MDQ0LVx0c3RydWN0IHNjeF9zY2hlZCAqc2NoO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzE1NC1cdCAqIENvcHkgb3BzIHRocm91Z2ggdGhlIHJpZ2h0IHVuaW9uIHZpZXcuIEZvciBjaWQtZm9ybSB0aGUgc291cmNlIGlzXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjcxNTU6XHQgKiBzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWQgd2hpY2ggbGFja3MgdGhlIHRyYWlsaW5nIGNwdV9hY3F1aXJlL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MTU2LVx0ICogY3B1X3JlbGVhc2U7IHRob3NlIHN0YXkgemVybyBmcm9tIGt6YWxsb2MuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz03Mjk4PXN0YXRpYyBpbnQgY2hlY2tfaG90cGx1Z19zZXEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3Mjk5Olx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTczMDAte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzMyMS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzMyMjppbnQgc2N4X3ZhbGlkYXRlX29wcyhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIGNvbnN0IHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTczMjMte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NzM4Mj1zdGF0aWMgdm9pZCBzY3hfcm9vdF9lbmFibGVfd29ya2ZuKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03Mzg0LVx0c3RydWN0IHNjeF9lbmFibGVfY21kICpjbWQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHNjeF9lbmFibGVfY21kLCB3b3JrKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzM4NTpcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMgPSBjbWQtXHUwMDNlb3BzO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy03Mzg2LVx0c3RydWN0IGNncm91cCAqY2dycCA9IHJvb3RfY2dyb3VwKCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz03OTE0PXN0YXRpYyBpbnQgYnBmX3NjeF9pbml0X21lbWJlcihjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTE3LXtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzkxODpcdGNvbnN0IHN0cnVjdCBzY2hlZF9leHRfb3BzICp1b3BzID0gdWRhdGE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5MTk6XHRzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzID0ga2RhdGE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5MjAtXHR1MzIgbW9mZiA9IF9fYnRmX21lbWJlcl9iaXRfb2Zmc2V0KHQsIG1lbWJlcikgLyA4O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkyMy1cdHN3aXRjaCAobW9mZikge1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTI0Olx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgZGlzcGF0Y2hfbWF4X2JhdGNoKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkyNS1cdFx0aWYgKCoodTMyICopKHVkYXRhICYjNDM7IG1vZmYpIFx1MDAzZSBJTlRfTUFYKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkyOC1cdFx0cmV0dXJuIDE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5Mjk6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBmbGFncyk6XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5MzAtXHRcdGlmICgqKHU2NCAqKSh1ZGF0YSAmIzQzOyBtb2ZmKSBcdTAwMjYgflNDWF9PUFNfQUxMX0ZMQUdTKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkzMy1cdFx0cmV0dXJuIDE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5MzQ6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBuYW1lKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkzNS1cdFx0cmV0ID0gYnBmX29ial9uYW1lX2NweShvcHMtXHUwMDNlbmFtZSwgdW9wcy1cdTAwM2VuYW1lLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk0MS1cdFx0cmV0dXJuIDE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5NDI6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCB0aW1lb3V0X21zKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk0My1cdFx0aWYgKG1zZWNzX3RvX2ppZmZpZXMoKih1MzIgKikodWRhdGEgJiM0MzsgbW9mZikpIFx1MDAzZVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk0Ny1cdFx0cmV0dXJuIDE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5NDg6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBleGl0X2R1bXBfbGVuKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk0OS1cdFx0b3BzLVx1MDAzZWV4aXRfZHVtcF9sZW4gPVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk1MS1cdFx0cmV0dXJuIDE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5NTI6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBob3RwbHVnX3NlcSk6XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTMtXHRcdG9wcy1cdTAwM2Vob3RwbHVnX3NlcSA9ICoodTY0ICopKHVkYXRhICYjNDM7IG1vZmYpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTU0LVx0XHRyZXR1cm4gMTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk1NTpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGNpZF9zaGFyZF9zaXplKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk1Ni1cdFx0b3BzLVx1MDAzZWNpZF9zaGFyZF9zaXplID0gKih1MzIgKikodWRhdGEgJiM0MzsgbW9mZik7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTctXHRcdHJldHVybiAxO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTU4Olx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgcmVzY3VlX2JhbmR3aWR0aF9wcHQpOiB7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTktXHRcdHUzMiBid19wcHQgPSAqKHUzMiAqKSh1ZGF0YSAmIzQzOyBtb2ZmKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NjUtXHR9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5NjY6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCByZXNjdWVfcXVhbnR1bV91cyk6IHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk2Ny1cdFx0dTMyIHF1YW50dW1fdXMgPSAqKHUzMiAqKSh1ZGF0YSAmIzQzOyBtb2ZmKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NzYtI2lmZGVmIENPTkZJR19FWFRfU1VCX1NDSEVEXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5Nzc6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfY2dyb3VwX2lkKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk3OC1cdFx0b3BzLVx1MDAzZXN1Yl9jZ3JvdXBfaWQgPSAqKHU2NCAqKSh1ZGF0YSAmIzQzOyBtb2ZmKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTc5ODY9c3RhdGljIGludCBicGZfc2N4X2NoZWNrX21lbWJlcihjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTkyLVx0c3dpdGNoIChtb2ZmKSB7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTM6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBpbml0X3Rhc2spOlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTk0LSNpZmRlZiBDT05GSUdfRVhUX0dST1VQX1NDSEVEXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTU6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBjZ3JvdXBfaW5pdCk6XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTY6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBjZ3JvdXBfZXhpdCk6XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTc6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBjZ3JvdXBfcHJlcF9tb3ZlKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk5OC0jZW5kaWZcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk5OTpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGNwdV9vbmxpbmUpOlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDAwOlx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgY3B1X29mZmxpbmUpOlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDAxOlx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgaW5pdF9jaWRzKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAwMjpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGluaXQpOlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDAzOlx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgZXhpdCk6XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgwMDQ6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfYXR0YWNoKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAwNTpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIHN1Yl9kZXRhY2gpOlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDA2LVx0XHRicmVhaztcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgwMjEtXHRzd2l0Y2ggKG1vZmYpIHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAyMjpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGRpc3BhdGNoKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODAyMy1cdFx0cHJvZy1cdTAwM2VhdXgtXHUwMDNlcHJpdl9zdGFja19yZXF1ZXN0ZWQgPSB0cnVlO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODAyNS1cdFx0YnJlYWs7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgwMjY6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfY2Fwc191cGRhdGVkKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODAyNy1cdFx0cHJvZy1cdTAwM2VhdXgtXHUwMDNlcHJpdl9zdGFja19yZXF1ZXN0ZWQgPSB0cnVlO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODA5Nj1zdGF0aWMgdm9pZCBicGZfc2N4X3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgwOTcte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDk4Olx0c3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcyA9IGtkYXRhO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDk5LVx0c3RydWN0IHNjeF9zY2hlZCAqc2NoID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChvcHMtXHUwMDNlcHJpdiwgdHJ1ZSk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz04MTI2PXN0YXRpYyBpbnQgYnBmX3NjeF92YWxpZGF0ZSh2b2lkICprZGF0YSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgxMzAtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzE6c3RhdGljIHMzMiBzY2hlZF9leHRfb3BzX19zZWxlY3RfY3B1KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgczMyIHByZXZfY3B1LCB1NjQgd2FrZV9mbGFncykgeyByZXR1cm4gLUVJTlZBTDsgfVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTMyOnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2VucXVldWUoc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1NjQgZW5xX2ZsYWdzKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTMzOnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2RlcXVldWUoc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1NjQgZW5xX2ZsYWdzKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTM0OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Rpc3BhdGNoKHMzMiBwcmV2X2NwdSwgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2X19udWxsYWJsZSkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODEzNTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX190aWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODEzNjpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19ydW5uYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBlbnFfZmxhZ3MpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzc6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fcnVubmluZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzg6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fc3RvcHBpbmcoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBib29sIHJ1bm5hYmxlKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTM5OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3F1aWVzY2VudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBkZXFfZmxhZ3MpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDA6c3RhdGljIGJvb2wgc2NoZWRfZXh0X29wc19feWllbGQoc3RydWN0IHRhc2tfc3RydWN0ICpmcm9tLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRvX19udWxsYWJsZSkgeyByZXR1cm4gZmFsc2U7IH1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0MTpzdGF0aWMgYm9vbCBzY2hlZF9leHRfb3BzX19jb3JlX3NjaGVkX2JlZm9yZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKmEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqYikgeyByZXR1cm4gZmFsc2U7IH1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0MjpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19zZXRfd2VpZ2h0KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTMyIHdlaWdodCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0MzpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19zZXRfY3B1bWFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTQ0OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3VwZGF0ZV9pZGxlKHMzMiBjcHUsIGJvb2wgaWRsZSkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0NTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jcHVfYWNxdWlyZShzMzIgY3B1LCBzdHJ1Y3Qgc2N4X2NwdV9hY3F1aXJlX2FyZ3MgKmFyZ3MpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDY6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY3B1X3JlbGVhc2UoczMyIGNwdSwgc3RydWN0IHNjeF9jcHVfcmVsZWFzZV9hcmdzICphcmdzKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTQ3OnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19faW5pdF90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHNjeF9pbml0X3Rhc2tfYXJncyAqYXJncykgeyByZXR1cm4gLUVJTlZBTDsgfVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTQ4OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2V4aXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBzY3hfZXhpdF90YXNrX2FyZ3MgKmFyZ3MpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDk6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZW5hYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1MDpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODE1MS0jaWZkZWYgQ09ORklHX0VYVF9HUk9VUF9TQ0hFRFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTUyOnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19fY2dyb3VwX2luaXQoc3RydWN0IGNncm91cCAqY2dycCwgc3RydWN0IHNjeF9jZ3JvdXBfaW5pdF9hcmdzICphcmdzKSB7IHJldHVybiAtRUlOVkFMOyB9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNTM6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY2dyb3VwX2V4aXQoc3RydWN0IGNncm91cCAqY2dycCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1NDpzdGF0aWMgczMyIHNjaGVkX2V4dF9vcHNfX2Nncm91cF9wcmVwX21vdmUoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3QgY2dyb3VwICpmcm9tLCBzdHJ1Y3QgY2dyb3VwICp0bykgeyByZXR1cm4gLUVJTlZBTDsgfVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTU1OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Nncm91cF9tb3ZlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IGNncm91cCAqZnJvbSwgc3RydWN0IGNncm91cCAqdG8pIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNTY6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY2dyb3VwX2NhbmNlbF9tb3ZlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IGNncm91cCAqZnJvbSwgc3RydWN0IGNncm91cCAqdG8pIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNTc6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY2dyb3VwX3NldF93ZWlnaHQoc3RydWN0IGNncm91cCAqY2dycCwgdTMyIHdlaWdodCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1ODpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2JhbmR3aWR0aChzdHJ1Y3QgY2dyb3VwICpjZ3JwLCB1NjQgcGVyaW9kX3VzLCB1NjQgcXVvdGFfdXMsIHU2NCBidXJzdF91cykge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1OTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2lkbGUoc3RydWN0IGNncm91cCAqY2dycCwgYm9vbCBpZGxlKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MTYwLSNlbmRpZlx0LyogQ09ORklHX0VYVF9HUk9VUF9TQ0hFRCAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTYxOnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19fc3ViX2F0dGFjaChzdHJ1Y3Qgc2N4X3N1Yl9hdHRhY2hfYXJncyAqYXJncykgeyByZXR1cm4gLUVJTlZBTDsgfVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTYyOnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3N1Yl9kZXRhY2goc3RydWN0IHNjeF9zdWJfZGV0YWNoX2FyZ3MgKmFyZ3MpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNjM6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY3B1X29ubGluZShzMzIgY3B1KSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTY0OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2NwdV9vZmZsaW5lKHMzMiBjcHUpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNjU6c3RhdGljIHMzMiBzY2hlZF9leHRfb3BzX19pbml0X2NpZHModm9pZCkgeyByZXR1cm4gLUVJTlZBTDsgfVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTY2OnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19faW5pdCh2b2lkKSB7IHJldHVybiAtRUlOVkFMOyB9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNjc6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZXhpdChzdHJ1Y3Qgc2N4X2V4aXRfaW5mbyAqaW5mbykge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2ODpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19kdW1wKHN0cnVjdCBzY3hfZHVtcF9jdHggKmN0eCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2OTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19kdW1wX2NwdShzdHJ1Y3Qgc2N4X2R1bXBfY3R4ICpjdHgsIHMzMiBjcHUsIGJvb2wgaWRsZSkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE3MDpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19kdW1wX3Rhc2soc3RydWN0IHNjeF9kdW1wX2N0eCAqY3R4LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgxNzEtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzI6c3RhdGljIHN0cnVjdCBzY2hlZF9leHRfb3BzIF9fYnBmX29wc19zY2hlZF9leHRfb3BzID0ge1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTczOlx0LnNlbGVjdF9jcHVcdFx0PSBzY2hlZF9leHRfb3BzX19zZWxlY3RfY3B1LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTc0Olx0LmVucXVldWVcdFx0PSBzY2hlZF9leHRfb3BzX19lbnF1ZXVlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTc1Olx0LmRlcXVldWVcdFx0PSBzY2hlZF9leHRfb3BzX19kZXF1ZXVlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTc2Olx0LmRpc3BhdGNoXHRcdD0gc2NoZWRfZXh0X29wc19fZGlzcGF0Y2gsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzc6XHQudGlja1x0XHRcdD0gc2NoZWRfZXh0X29wc19fdGljayxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE3ODpcdC5ydW5uYWJsZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX3J1bm5hYmxlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTc5Olx0LnJ1bm5pbmdcdFx0PSBzY2hlZF9leHRfb3BzX19ydW5uaW5nLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTgwOlx0LnN0b3BwaW5nXHRcdD0gc2NoZWRfZXh0X29wc19fc3RvcHBpbmcsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxODE6XHQucXVpZXNjZW50XHRcdD0gc2NoZWRfZXh0X29wc19fcXVpZXNjZW50LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTgyOlx0LnlpZWxkXHRcdFx0PSBzY2hlZF9leHRfb3BzX195aWVsZCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE4MzpcdC5jb3JlX3NjaGVkX2JlZm9yZVx0PSBzY2hlZF9leHRfb3BzX19jb3JlX3NjaGVkX2JlZm9yZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE4NDpcdC5zZXRfd2VpZ2h0XHRcdD0gc2NoZWRfZXh0X29wc19fc2V0X3dlaWdodCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE4NTpcdC5zZXRfY3B1bWFza1x0XHQ9IHNjaGVkX2V4dF9vcHNfX3NldF9jcHVtYXNrLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg2Olx0LnVwZGF0ZV9pZGxlXHRcdD0gc2NoZWRfZXh0X29wc19fdXBkYXRlX2lkbGUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxODc6XHQuY3B1X2FjcXVpcmVcdFx0PSBzY2hlZF9leHRfb3BzX19jcHVfYWNxdWlyZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE4ODpcdC5jcHVfcmVsZWFzZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX2NwdV9yZWxlYXNlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg5Olx0LmluaXRfdGFza1x0XHQ9IHNjaGVkX2V4dF9vcHNfX2luaXRfdGFzayxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5MDpcdC5leGl0X3Rhc2tcdFx0PSBzY2hlZF9leHRfb3BzX19leGl0X3Rhc2ssXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTE6XHQuZW5hYmxlXHRcdFx0PSBzY2hlZF9leHRfb3BzX19lbmFibGUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTI6XHQuZGlzYWJsZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX2Rpc2FibGUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgxOTMtI2lmZGVmIENPTkZJR19FWFRfR1JPVVBfU0NIRURcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5NDpcdC5jZ3JvdXBfaW5pdFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9pbml0LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTk1Olx0LmNncm91cF9leGl0XHRcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX2V4aXQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTY6XHQuY2dyb3VwX3ByZXBfbW92ZVx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfcHJlcF9tb3ZlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTk3Olx0LmNncm91cF9tb3ZlXHRcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX21vdmUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTg6XHQuY2dyb3VwX2NhbmNlbF9tb3ZlXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9jYW5jZWxfbW92ZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5OTpcdC5jZ3JvdXBfc2V0X3dlaWdodFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X3dlaWdodCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwMDpcdC5jZ3JvdXBfc2V0X2JhbmR3aWR0aFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2JhbmR3aWR0aCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwMTpcdC5jZ3JvdXBfc2V0X2lkbGVcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX3NldF9pZGxlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjAyLSNlbmRpZlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjAzOlx0LnN1Yl9hdHRhY2hcdFx0PSBzY2hlZF9leHRfb3BzX19zdWJfYXR0YWNoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA0Olx0LnN1Yl9kZXRhY2hcdFx0PSBzY2hlZF9leHRfb3BzX19zdWJfZGV0YWNoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA1Olx0LmNwdV9vbmxpbmVcdFx0PSBzY2hlZF9leHRfb3BzX19jcHVfb25saW5lLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA2Olx0LmNwdV9vZmZsaW5lXHRcdD0gc2NoZWRfZXh0X29wc19fY3B1X29mZmxpbmUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMDc6XHQuaW5pdF9jaWRzXHRcdD0gc2NoZWRfZXh0X29wc19faW5pdF9jaWRzLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA4Olx0LmluaXRcdFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2luaXQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMDk6XHQuZXhpdFx0XHRcdD0gc2NoZWRfZXh0X29wc19fZXhpdCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIxMDpcdC5kdW1wXHRcdFx0PSBzY2hlZF9leHRfb3BzX19kdW1wLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjExOlx0LmR1bXBfY3B1XHRcdD0gc2NoZWRfZXh0X29wc19fZHVtcF9jcHUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMTI6XHQuZHVtcF90YXNrXHRcdD0gc2NoZWRfZXh0X29wc19fZHVtcF90YXNrLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjEzLX07XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMTQtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMTU6c3RhdGljIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfc2NoZWRfZXh0X29wcyA9IHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIxNi1cdC52ZXJpZmllcl9vcHMgPSBcdTAwMjZicGZfc2N4X3ZlcmlmaWVyX29wcyxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMjMtXHQudmFsaWRhdGUgPSBicGZfc2N4X3ZhbGlkYXRlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjI0Olx0Lm5hbWUgPSBcJiMzNDtzY2hlZF9leHRfb3BzXCYjMzQ7LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjI1LVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMjY6XHQuY2ZpX3N0dWJzID0gXHUwMDI2X19icGZfb3BzX3NjaGVkX2V4dF9vcHNcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIyNy19O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIzNC0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIzNTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX2NpZF9fc2V0X2NtYXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIzNi1cdFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBzY3hfY21hc2sgKmNtYXNrKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjM3OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3N1Yl9jYXBzX3VwZGF0ZWQoY29uc3Qgc3RydWN0IHNjeF9jbWFzayAqY21hc2ssIHU2NCBjYXBzKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjM4OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3N1Yl9lY2Fwc191cGRhdGVkKHMzMiBjaWQsIHU2NCBiZWZvcmUsIHU2NCBhZnRlcikge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIzOS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MDpzdGF0aWMgc3RydWN0IHNjaGVkX2V4dF9vcHNfY2lkIF9fYnBmX29wc19zY2hlZF9leHRfb3BzX2NpZCA9IHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MTpcdC5zZWxlY3RfY2lkXHRcdD0gc2NoZWRfZXh0X29wc19fc2VsZWN0X2NwdSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MjpcdC5lbnF1ZXVlXHRcdD0gc2NoZWRfZXh0X29wc19fZW5xdWV1ZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MzpcdC5kZXF1ZXVlXHRcdD0gc2NoZWRfZXh0X29wc19fZGVxdWV1ZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0NDpcdC5kaXNwYXRjaFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2Rpc3BhdGNoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjQ1Olx0LnRpY2tcdFx0XHQ9IHNjaGVkX2V4dF9vcHNfX3RpY2ssXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNDY6XHQucnVubmFibGVcdFx0PSBzY2hlZF9leHRfb3BzX19ydW5uYWJsZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0NzpcdC5ydW5uaW5nXHRcdD0gc2NoZWRfZXh0X29wc19fcnVubmluZyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0ODpcdC5zdG9wcGluZ1x0XHQ9IHNjaGVkX2V4dF9vcHNfX3N0b3BwaW5nLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjQ5Olx0LnF1aWVzY2VudFx0XHQ9IHNjaGVkX2V4dF9vcHNfX3F1aWVzY2VudCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1MDpcdC55aWVsZFx0XHRcdD0gc2NoZWRfZXh0X29wc19feWllbGQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTE6XHQuY29yZV9zY2hlZF9iZWZvcmVcdD0gc2NoZWRfZXh0X29wc19fY29yZV9zY2hlZF9iZWZvcmUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTI6XHQuc2V0X3dlaWdodFx0XHQ9IHNjaGVkX2V4dF9vcHNfX3NldF93ZWlnaHQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTM6XHQuc2V0X2NtYXNrXHRcdD0gc2NoZWRfZXh0X29wc19jaWRfX3NldF9jbWFzayxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1NDpcdC51cGRhdGVfaWRsZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX3VwZGF0ZV9pZGxlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjU1Olx0LmluaXRfdGFza1x0XHQ9IHNjaGVkX2V4dF9vcHNfX2luaXRfdGFzayxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1NjpcdC5leGl0X3Rhc2tcdFx0PSBzY2hlZF9leHRfb3BzX19leGl0X3Rhc2ssXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTc6XHQuZW5hYmxlXHRcdFx0PSBzY2hlZF9leHRfb3BzX19lbmFibGUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTg6XHQuZGlzYWJsZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX2Rpc2FibGUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyNTktI2lmZGVmIENPTkZJR19FWFRfR1JPVVBfU0NIRURcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI2MDpcdC5jcHVjdGxfaW5pdFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9pbml0LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjYxOlx0LmNwdWN0bF9leGl0XHRcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX2V4aXQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjI6XHQuY3B1Y3RsX3ByZXBfbW92ZVx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfcHJlcF9tb3ZlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjYzOlx0LmNwdWN0bF9tb3ZlXHRcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX21vdmUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjQ6XHQuY3B1Y3RsX2NhbmNlbF9tb3ZlXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9jYW5jZWxfbW92ZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI2NTpcdC5jcHVjdGxfc2V0X3dlaWdodFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X3dlaWdodCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI2NjpcdC5jcHVjdGxfc2V0X2JhbmR3aWR0aFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2JhbmR3aWR0aCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI2NzpcdC5jcHVjdGxfc2V0X2lkbGVcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX3NldF9pZGxlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjY4LSNlbmRpZlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjY5Olx0LnN1Yl9hdHRhY2hcdFx0PSBzY2hlZF9leHRfb3BzX19zdWJfYXR0YWNoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjcwOlx0LnN1Yl9kZXRhY2hcdFx0PSBzY2hlZF9leHRfb3BzX19zdWJfZGV0YWNoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjcxOlx0LnN1Yl9jYXBzX3VwZGF0ZWRcdD0gc2NoZWRfZXh0X29wc19fc3ViX2NhcHNfdXBkYXRlZCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3MjpcdC5zdWJfZWNhcHNfdXBkYXRlZFx0PSBzY2hlZF9leHRfb3BzX19zdWJfZWNhcHNfdXBkYXRlZCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3MzpcdC5jaWRfb25saW5lXHRcdD0gc2NoZWRfZXh0X29wc19fY3B1X29ubGluZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3NDpcdC5jaWRfb2ZmbGluZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX2NwdV9vZmZsaW5lLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4Mjc1Olx0LmluaXRfY2lkc1x0XHQ9IHNjaGVkX2V4dF9vcHNfX2luaXRfY2lkcyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3NjpcdC5pbml0XHRcdFx0PSBzY2hlZF9leHRfb3BzX19pbml0LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4Mjc3Olx0LmV4aXRcdFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2V4aXQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNzg6XHQuZHVtcFx0XHRcdD0gc2NoZWRfZXh0X29wc19fZHVtcCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3OTpcdC5kdW1wX2NpZFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2R1bXBfY3B1LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjgwOlx0LmR1bXBfdGFza1x0XHQ9IHNjaGVkX2V4dF9vcHNfX2R1bXBfdGFzayxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI4MS19O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI4Ny0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI4ODpzdGF0aWMgc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzIGJwZl9zY2hlZF9leHRfb3BzX2NpZCA9IHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI4OS1cdC52ZXJpZmllcl9vcHMgPSBcdTAwMjZicGZfc2N4X2NpZF92ZXJpZmllcl9vcHMsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04Mjk2LVx0LnZhbGlkYXRlID0gYnBmX3NjeF92YWxpZGF0ZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI5NzpcdC5uYW1lID0gXCYjMzQ7c2NoZWRfZXh0X29wc19jaWRcJiMzNDssXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyOTgtXHQub3duZXIgPSBUSElTX01PRFVMRSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI5OTpcdC5jZmlfc3R1YnMgPSBcdTAwMjZfX2JwZl9vcHNfc2NoZWRfZXh0X29wc19jaWRcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODMwMC19O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA2MzI9c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHNjeF9rZnVuY19zZXRfYW55ID0ge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA2MzktICogY3B1LWZvcm0ga2Z1bmNzIHRoYXQgYXJlIGZvcmJpZGRlbiBmcm9tIGNpZC1mb3JtIHNjaGVkdWxlcnNcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA2NDA6ICogKGJwZl9zY2hlZF9leHRfb3BzX2NpZCkuIFByb2dyYW1zIHRhcmdldGluZyB0aGUgY2lkIHN0cnVjdF9vcHMgdHlwZSBtdXN0XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNjQxLSAqIHVzZSB0aGUgY2lkLWZvcm0gYWx0ZXJuYXRpdmUgKGNpZC9jbWFzayBrZnVuY3MpLlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA3MzM9aW50IHNjeF9rZnVuY19jb250ZXh0X2ZpbHRlcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBrZnVuY19pZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNzcwLVx0ICpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA3NzE6XHQgKiBCb3RoIGJwZl9zY2hlZF9leHRfb3BzIChjcHUtZm9ybSkgYW5kIGJwZl9zY2hlZF9leHRfb3BzX2NpZFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc3Mi1cdCAqIChjaWQtZm9ybSkgYXJlIHZhbGlkIFNDWCBzdHJ1Y3Rfb3BzLiBNZW1iZXIgb2Zmc2V0cyBtYXRjaCBiZXR3ZWVuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc3Ni1cdCAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDc3NzpcdGlmIChwcm9nLVx1MDAzZWF1eC1cdTAwM2VzdF9vcHMgIT0gXHUwMDI2YnBmX3NjaGVkX2V4dF9vcHMgXHUwMDI2XHUwMDI2XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNzc4Olx0ICAgIHByb2ctXHUwMDNlYXV4LVx1MDAzZXN0X29wcyAhPSBcdTAwMjZicGZfc2NoZWRfZXh0X29wc19jaWQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNzc5LVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNzg2LVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNzg3Olx0aWYgKHByb2ctXHUwMDNlYXV4LVx1MDAzZXN0X29wcyA9PSBcdTAwMjZicGZfc2NoZWRfZXh0X29wc19jaWQgXHUwMDI2XHUwMDI2IGluX2NwdV9vbmx5KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc4OC1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDgxMz1zdGF0aWMgaW50IF9faW5pdCBzY3hfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MTctXHQvKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDgxODpcdCAqIHNjaGVkX2V4dF9vcHNfY2lkIG1pcnJvcnMgc2NoZWRfZXh0X29wcyB1cCB0byBhbmQgaW5jbHVkaW5nIEBwcml2Llxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDgxOS1cdCAqIEJvdGggYnBmX3NjeF9pbml0X21lbWJlcigpIGFuZCBicGZfc2N4X2NoZWNrX21lbWJlcigpIHVzZSBvZmZzZXRzXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODIwOlx0ICogZnJvbSBzdHJ1Y3Qgc2NoZWRfZXh0X29wczsgc2NoZWRfZXh0X29wc19jaWQgcmVsaWVzIG9uIHRob3NlIG9mZnNldHNcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MjEtXHQgKiBtYXRjaGluZyBmb3IgdGhlIHNoYXJlZCBmaWVsZHMuIENhdGNoIGFueSBkcmlmdCBhdCBib290LlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MjMtI2RlZmluZSBDSURfT0ZGU0VUX01BVENIKGNwdV9maWVsZCwgY2lkX2ZpZWxkKVx0XHRcdFx0XHRcXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDgyNDpcdEJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgY3B1X2ZpZWxkKSAhPVx0XHRcXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDgyNTpcdFx0ICAgICBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWQsIGNpZF9maWVsZCkpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwODI2LVx0LyogZGF0YSBmaWVsZHMgdXNlZCBieSBicGZfc2N4X2luaXRfbWVtYmVyKCkgKi9cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwODg1LVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODg2Olx0QlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZCwgX19lbmQpICE9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODg3Olx0XHQgICAgIG9mZnNldG9mZW5kKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBwcml2KSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwODg4LSN1bmRlZiBDSURfT0ZGU0VUX01BVENIXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDkzMy1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA5MzQ6XHRyZXQgPSByZWdpc3Rlcl9icGZfc3RydWN0X29wcyhcdTAwMjZicGZfc2NoZWRfZXh0X29wcywgc2NoZWRfZXh0X29wcyk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwOTM1LVx0aWYgKHJldCkge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA5MzktXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwOTQwOlx0cmV0ID0gcmVnaXN0ZXJfYnBmX3N0cnVjdF9vcHMoXHUwMDI2YnBmX3NjaGVkX2V4dF9vcHNfY2lkLCBzY2hlZF9leHRfb3BzX2NpZCk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwOTQxLVx0aWYgKHJldCkge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTMwMD1zdGF0aWMgYm9vbCBsbGNfbnVtYV9taXNtYXRjaCh2b2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTM0NC0gKi9cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjM0NTp2b2lkIHNjeF9pZGxlX3VwZGF0ZV9zZWxjcHVfdG9wb2xvZ3koc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcylcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTM0Ni17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM9ODAxPXZvaWQgX19zY3hfdXBkYXRlX2lkbGUoc3RydWN0IHJxICpycSwgYm9vbCBpZGxlLCBib29sIGRvX25vdGlmeSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy04MzctXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzo4Mzg6c3RhdGljIHZvaWQgcmVzZXRfaWRsZV9tYXNrcyhzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtODM5LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy04NTktXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzo4NjA6dm9pZCBzY3hfaWRsZV9lbmFibGUoc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcylcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTg2MS17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM9OTEzPXN0YXRpYyBib29sIGNoZWNrX2J1aWx0aW5faWRsZV9lbmFibGVkKHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy05MjItLypcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjkyMzogKiBEZXRlcm1pbmUgd2hldGhlciBAcCBpcyBhIG1pZ3JhdGlvbi1kaXNhYmxlZCB0YXNrIGluIHRoZSBjb250ZXh0IG9mIEJQRlxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtOTI0LSAqIGNvZGUuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmg9MTU9c3RydWN0IGNwdW1hc2s7XG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaDoxNjpzdHJ1Y3Qgc2NoZWRfZXh0X29wcztcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oLTE3LXN0cnVjdCB0YXNrX3N0cnVjdDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaD0yMD1leHRlcm4gc3RydWN0IGJ0Zl9pZF9zZXQ4IHNjeF9rZnVuY19pZHNfc2VsZWN0X2NwdTtcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oLTIxLVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmg6MjI6dm9pZCBzY3hfaWRsZV91cGRhdGVfc2VsY3B1X3RvcG9sb2d5KHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMpO1xua2VybmVsL3NjaGVkL2V4dC9pZGxlLmgtMjMtdm9pZCBzY3hfaWRsZV9pbml0X21hc2tzKHZvaWQpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oPTI1PXMzMiBzY3hfc2VsZWN0X2NwdV9kZmwoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzMzIgcHJldl9jcHUsIHU2NCB3YWtlX2ZsYWdzLFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmgtMjYtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1c19hbGxvd2VkLCB1NjQgZmxhZ3MpO1xua2VybmVsL3NjaGVkL2V4dC9pZGxlLmg6Mjc6dm9pZCBzY3hfaWRsZV9lbmFibGUoc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcyk7XG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaC0yOC12b2lkIHNjeF9pZGxlX2Rpc2FibGUodm9pZCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTQxLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjQyOiNkZWZpbmUgU0NYX09QX0lEWChvcClcdFx0KG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBvcCkgLyBzaXplb2Yodm9pZCAoKikodm9pZCkpKVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTQzLSNkZWZpbmUgU0NYX01PRkZfSURYKG1vZmYpXHQoKG1vZmYpIC8gc2l6ZW9mKHZvaWQgKCopKHZvaWQpKSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTAxPXN0cnVjdCBzY3hfZXhpdF9pbmZvIHtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTMwLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEzMTovKiBzY2hlZF9leHRfb3BzLmZsYWdzICovXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTMyLWVudW0gc2N4X29wc19mbGFncyB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTMwMD1zdHJ1Y3Qgc2N4X3N1Yl9hdHRhY2hfYXJncyB7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MzAxOlx0c3RydWN0IHNjaGVkX2V4dF9vcHNcdCpvcHM7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMzAyLVx0Y2hhclx0XHRcdCpjZ3JvdXBfcGF0aDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MzA2PXN0cnVjdCBzY3hfc3ViX2RldGFjaF9hcmdzIHtcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDozMDc6XHRzdHJ1Y3Qgc2NoZWRfZXh0X29wc1x0Km9wcztcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0zMDgtXHRjaGFyXHRcdFx0KmNncm91cF9wYXRoO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0zMTEtLyoqXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MzEyOiAqIHN0cnVjdCBzY2hlZF9leHRfb3BzIC0gT3BlcmF0aW9uIHRhYmxlIGZvciBCUEYgc2NoZWR1bGVyIGltcGxlbWVudGF0aW9uXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMzEzLSAqXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMxOC0gKi9cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDozMTk6c3RydWN0IHNjaGVkX2V4dF9vcHMge1xua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMyMC1cdC8qKlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC05NjgtXHQgKiBNdXN0IGJlIGEgbm9uLXplcm8gdmFsaWQgQlBGIG9iamVjdCBuYW1lIGluY2x1ZGluZyBvbmx5IGlzYWxudW0oKSxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDo5Njk6XHQgKiAmIzM5O18mIzM5OyBhbmQgJiMzOTsuJiMzOTsgY2hhcnMuIFNob3dzIHVwIGluIGtlcm5lbC5zY2hlZF9leHRfb3BzIHN5c2N0bCB3aGlsZSB0aGVcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC05NzAtXHQgKiBCUEYgc2NoZWR1bGVyIGlzIGVuYWJsZWQuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTk3OC1cdCAqIERlcHJlY2F0ZWQgY2FsbGJhY2tzLiBLZXB0IGF0IHRoZSBlbmQgb2YgdGhlIHN0cnVjdCBzbyB0aGUgY2lkLWZvcm1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDo5Nzk6XHQgKiBzdHJ1Y3QgKHNjaGVkX2V4dF9vcHNfY2lkKSBjYW4gb21pdCB0aGVtIHdpdGhvdXQgYWZmZWN0aW5nIHRoZVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTk4MC1cdCAqIHNoYXJlZCBmaWVsZCBvZmZzZXRzLiBVc2UgU0NYX0VOUV9JTU1FRCBpbnN0ZWFkLiBTaXR0aW5nIHBhc3Rcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAxMC0vKipcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxMDExOiAqIHN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZCAtIGNpZC1mb3JtIGFsdGVybmF0aXZlIHRvIHN0cnVjdCBzY2hlZF9leHRfb3BzXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAxMi0gKlxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMTM6ICogTWlycm9ycyBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyB3aXRoIGNwdS9jcHVtYXNrIHN1YnN0aXR1dGVkIHdpdGggY2lkL2NtYXNrXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTAxNDogKiB3aGVyZSBhcHBsaWNhYmxlLiBMYXlvdXQgdXAgdG8gYW5kIGluY2x1ZGluZyBAcHJpdiBtYXRjaGVzIHNjaGVkX2V4dF9vcHNcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDE1LSAqIGJ5dGUtZm9yLWJ5dGUgKHZlcmlmaWVkIGJ5IEJVSUxEX0JVR19PTiBjaGVja3MgYXQgc2N4X2luaXQoKSB0aW1lKSBzb1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDE3LSAqIGFuZCBicGZfc2N4X2NoZWNrX21lbWJlcigpLiBUaGUgZGVwcmVjYXRlZCBjcHVfYWNxdWlyZS9jcHVfcmVsZWFzZVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMTg6ICogY2FsbGJhY2tzIGF0IHRoZSB0YWlsIG9mIHNjaGVkX2V4dF9vcHMgYXJlIG9taXR0ZWQgaGVyZSBlbnRpcmVseS5cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDE5LSAqXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTAyMDogKiBEaWZmZXJlbmNlcyBmcm9tIHNjaGVkX2V4dF9vcHM6XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAyMS0gKiAgIC0gc2VsZWN0X2NwdSAgICAgICAtXHUwMDNlIHNlbGVjdF9jaWQgKHJldHVybnMgY2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDI4LSAqICAgLSBjZ3JvdXBfKiAgICAgICAgIC1cdTAwM2UgY3B1Y3RsXyogKHRoZXkgdHJhY2sgdGhlIGNncm91cCBjcHUgY29udHJvbGxlcilcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxMDI5OiAqICAgLSBjcHVfYWNxdWlyZS9jcHVfcmVsZWFzZSAgLVx1MDAzZSBub3QgcHJlc2VudCAoZGVwcmVjYXRlZCBpbiBzY2hlZF9leHRfb3BzKVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwMzAtICpcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAzNC0gKlxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMzU6ICogU2VlIHNjaGVkX2V4dF9vcHMgZm9yIGNhbGxiYWNrIGRvY3VtZW50YXRpb24uXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAzNi0gKi9cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxMDM3OnN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZCB7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAzOC1cdHMzMiAoKnNlbGVjdF9jaWQpKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgczMyIHByZXZfY2lkLCB1NjQgd2FrZV9mbGFncyk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwODUtXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTA4NjpcdC8qIERhdGEgZmllbGRzIC0gbXVzdCBtYXRjaCBzY2hlZF9leHRfb3BzIGxheW91dCBleGFjdGx5ICovXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTA4Ny1cdHUzMiBkaXNwYXRjaF9tYXhfYmF0Y2g7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTE1MTU9c3RydWN0IHNjeF9zY2hlZCB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE1MjMtXHR1bmlvbiB7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTUyNDpcdFx0c3RydWN0IHNjaGVkX2V4dF9vcHNcdFx0b3BzO1xua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE1MjU6XHRcdHN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZFx0b3BzX2NpZDtcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNTI2LVx0fTtcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxNTI3Olx0Ym9vbFx0XHRcdGlzX2NpZF90eXBlO1x0LyogdHJ1ZSBpZiByZWdpc3RlcmVkIHZpYSBicGZfc2NoZWRfZXh0X29wc19jaWQgKi9cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNTI4LVx0Ym9vbFx0XHRcdGRlYWQ7XHRcdC8qIHNldCBhZnRlciBvcHMuZXhpdCgpLCBnYXRlcyBzY3hfcHJvZ19zY2hlZCgpICovXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTE5OTI9c3RydWN0IHNjeF9lbmFibGVfY21kIHtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTk5NC1cdHVuaW9uIHtcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxOTk1Olx0XHRzdHJ1Y3Qgc2NoZWRfZXh0X29wc1x0XHQqb3BzO1xua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE5OTY6XHRcdHN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZFx0Km9wc19jaWQ7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTk5Ny1cdH07XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTIwNzM9c3RydWN0IHNjeF9zY2hlZCAqc2N4X2FsbG9jX2FuZF9hZGRfc2NoZWQoc3RydWN0IHNjeF9lbmFibGVfY21kICpjbWQsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTIwNzUtXHRcdFx0XHRcdCAgc3RydWN0IHNjeF9zY2hlZCAqcGFyZW50KTtcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoyMDc2OmludCBzY3hfdmFsaWRhdGVfb3BzKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgY29uc3Qgc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcyk7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMjA3Ny1pbnQgc2N4X3NjaGVkX3N5c2ZzX2FkZChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaD0yMzg4PXN0YXRpYyBpbmxpbmUgc3RydWN0IHNjeF9zY2hlZCAqc2N4X3Byb2dfc2NoZWQoY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTIzODkte1xua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjIzOTA6XHRzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzO1xua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTIzOTEtXHRzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsICpyb290O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM9NDc9c3RydWN0IHNjeF9zY2hlZCAqc2N4X3NraXBfc3VidHJlZV9wcmUoc3RydWN0IHNjeF9zY2hlZCAqcG9zLCBzdHJ1Y3Qgc2N4X3NjaGVkICpyb290KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtNTUtXHR3aGlsZSAocG9zICE9IHJvb3QpIHtcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM6NTY6XHRcdG5leHQgPSBsaXN0X25leHRfb3JfbnVsbF9yY3UoXHUwMDI2c2N4X3BhcmVudChwb3MpLVx1MDAzZWNoaWxkcmVuLCBcdTAwMjZwb3MtXHUwMDNlc2libGluZyxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtNTctXHRcdFx0XHRcdCAgICAgc3RydWN0IHNjeF9zY2hlZCwgc2libGluZyk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9zdWIuYz01MzI9c3RhdGljIHZvaWQgc2N4X3Jlc2N1ZV90aW1lcmZuKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcilcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTU1Mi1cbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM6NTUzOlx0XHQvKiB0aGVyZSYjMzk7cyBlbm91Z2ggYnVkZ2V0IHRvIHN0YXJ0IHJlc2N1aW5nIHRoZSBuZXh0IG9uZSAqL1xua2VybmVsL3NjaGVkL2V4dC9zdWIuYy01NTQtXHRcdHAgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNnJxLVx1MDAzZXNjeC5yZXNjdWUuZHNxLmxpc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jPTE3MDc9dm9pZCBzY3hfc3ViX2VuYWJsZV93b3JrZm4oc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTE3MDktXHRzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQgKmNtZCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQsIHdvcmspO1xua2VybmVsL3NjaGVkL2V4dC9zdWIuYzoxNzEwOlx0c3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcyA9IGNtZC1cdTAwM2VvcHM7XG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTE3MTEtXHRzdHJ1Y3QgY2dyb3VwICpjZ3JwO1xuLS1cbmtlcm5lbC9zY2hlZC9mYWlyLmM9NzA5NT1zdGF0aWMgdm9pZCBfX2Nmc2JfY3NkX3VudGhyb3R0bGUodm9pZCAqYXJnKVxuLS1cbmtlcm5lbC9zY2hlZC9mYWlyLmMtNzEwNC1cdCAqIHVwZGF0ZV9ycV9jbG9jaygpIGluIHVudGhyb3R0bGVfY2ZzX3JxKCkuXG5rZXJuZWwvc2NoZWQvZmFpci5jOjcxMDU6XHQgKiBEbyBpdCBvbmNlIGFuZCBza2lwIHRoZSBwb3RlbnRpYWwgbmV4dCBvbmVzLlxua2VybmVsL3NjaGVkL2ZhaXIuYy03MTA2LVx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MTgzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBkZXZlbG9wbWVudDoKCioqSW5pdGlhbCBJbnZlc3RpZ2F0aW9uIGludG8gdGhlIEVYVCBTY2hlZHVsZXIgQ2xhc3MqKgoKUmlnaHQsIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCBpcyB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBFWFQgc2NoZWR1bGVyIGNsYXNzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBzbyBgQ09ORklHX1NDSEVEX0NMQVNTX0VYVGAgbXVzdCBiZSB0aGUgZ3VhcmQgdGhhdCBlbmFibGVzIGl0LiYjMzQ7IE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIExldCYjMzk7cyB2ZXJpZnkgdGhhdCBxdWlja2x5LiBJJiMzOTtsbCBqdW1wIG92ZXIgdG8gYGtlcm5lbC9zY2hlZC9LY29uZmlnYCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgaW50ZXJlc3RpbmcgZGV0YWlscyBhYm91dCBob3cgaXQmIzM5O3MgZGVmaW5lZCBhbmQgb3RoZXIgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBzY2hlZHVsZXIgY2FuIGJlIGVuYWJsZWQuIEkgYW0gc3VyZSB0aGVyZSBhcmUgb3RoZXIgcGllY2VzIHRvIGludmVzdGlnYXRlLCBidXQgdGhpcyBpcyB0aGUgZmlyc3Qgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0NIRURfQ0xBU1NfRVhUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQ0MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkRpZ2dpbmcgaW50byB0aGUgU2NoZWR1bGluZyBDbGFzcyBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYFNDSEVEX0NMQVNTX0VYVGAuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtkIGNoZWNrIGlzIGxpa2VseSBnb2luZyB0byBiZSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFRoZSBtb3N0IG9idmlvdXMgY2FuZGlkYXRlcyB3b3VsZCBiZSBga2VybmVsL0tjb25maWcucHJlZW1wdGAgb3IgcGVyaGFwcyBgaW5pdC9LY29uZmlnYC4gVGhlc2UgZmlsZXMgYXJlIHdoZXJlIHRoZSBtYWluIHNjaGVkdWxpbmctcmVsYXRlZCBmZWF0dXJlcyBhbmQgb3B0aW9ucyB1c3VhbGx5IHJlc2lkZS4gSSYjMzk7bGwgc3RhcnQgdGhlcmUgYW5kIHNlZSBpZiBJIGNhbiBsb2NhdGUgdGhlIGRlZmluaXRpb24gb3IgYXQgbGVhc3QgZmlndXJlIG91dCB3aGljaCBLY29uZmlnIG9wdGlvbiBlbmFibGVzIHRoaXMgYFNDSEVEX0NMQVNTX0VYVGAuIEl0IGlzIHdoZXJlIHRoZSBtYWluIHNjaGVkdWxpbmctcmVsYXRlZCBmZWF0dXJlcyBhbmQgb3B0aW9ucyB1c3VhbGx5IHJlc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNDSEVEX0NMQVNTX0VYVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvS2NvbmZpZy5wcmVlbXB0PTE1MT1jb25maWcgU0NIRURfQ09SRVxuLS1cbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTY4LVxua2VybmVsL0tjb25maWcucHJlZW1wdDoxNjk6Y29uZmlnIFNDSEVEX0NMQVNTX0VYVFxua2VybmVsL0tjb25maWcucHJlZW1wdC0xNzAtXHRib29sIFwmIzM0O0V4dGVuc2libGUgU2NoZWR1bGluZyBDbGFzc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjc1MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NoZWR1bGVyIEV4dGVuc2lvbiBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZm9yIHRoaXMgZXh0ZW5zaW9uIGlzIGBTQ0hFRF9DTEFTU19FWFRgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gQnV0LCBoYW5nIG9uLCB0aGVyZSBtaWdodCBiZSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkLCBzbyBsZXQmIzM5O3Mga2VlcCBhbiBleWUgb3V0IGZvciB0aG9zZSBhcyB3ZSBkaWcgZGVlcGVyLgoKVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgaGFwcGVuaW5nIGluIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIGEgc2NoZWR1bGVyIGV4dGVuc2lvbi4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb24gSSBuZWVkIHRvIGZvY3VzIG9uIHJpZ2h0IG5vdyBpcyBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIEkmIzM5O2xsIG5lZWQgdG8ganVtcCBkaXJlY3RseSB0byB0aGF0IGZ1bmN0aW9uIHdpdGhpbiBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AgYW5kIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGl0JiMzOTtzIGRvaW5nLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoaXMgZXh0ZW5zaW9uIGxpa2VseSBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQ1MjA6XHRcdFx0XHRpZiAoIWRydSlcbjQ1MjE6XHRcdFx0XHRcdHJldHVybjtcbjQ1MjI6XHRcbjQ1MjM6XHRcdFx0XHRkc3FfcGNwdSA9IGNvbnRhaW5lcl9vZihkcnUsIHN0cnVjdCBzY3hfZHNxX3BjcHUsXG40NTI0Olx0XHRcdFx0XHRcdFx0ZGVmZXJyZWRfcmVlbnFfdXNlcik7XG40NTI1Olx0XHRcdFx0ZHNxID0gZHNxX3BjcHUtXHUwMDNlZHNxO1xuNDUyNjpcdFx0XHRcdHJlZW5xX2ZsYWdzID0gZHJ1LVx1MDAzZWZsYWdzO1xuNDUyNzpcdFx0XHRcdFdSSVRFX09OQ0UoZHJ1LVx1MDAzZWZsYWdzLCAwKTtcbjQ1Mjg6XHRcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNmRydS1cdTAwM2Vub2RlKTtcbjQ1Mjk6XHRcdFx0fVxuNDUzMDpcdFxuNDUzMTpcdFx0XHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cbjQ1MzI6XHRcdFx0c21wX21iKCk7XG40NTMzOlx0XG40NTM0Olx0XHRcdC8qIGRlc3Ryb3lfZHNxKCkgbWF5IHJhY2UgYW5kIGludmFsaWRhdGUgQGRzcTsgc2tpcCAqL1xuNDUzNTpcdFx0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkIFx1MDAyNiBTQ1hfRFNRX0ZMQUdfQlVJTFRJTikpXG40NTM2Olx0XHRcdFx0Y29udGludWU7XG40NTM3Olx0XHRcdHJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpO1xuNDUzODpcdFx0fVxuNDUzOTpcdH1cbjQ1NDA6XHRcbjQ1NDE6XHRzdGF0aWMgdm9pZCBydW5fZGVmZXJyZWQoc3RydWN0IHJxICpycSlcbjQ1NDI6XHR7XG40NTQzOlx0XHRwcm9jZXNzX2Rkc3BfZGVmZXJyZWRfbG9jYWxzKHJxKTtcbjQ1NDQ6XHRcbjQ1NDU6XHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfbG9jYWxzKSlcbjQ1NDY6XHRcdFx0cHJvY2Vzc19kZWZlcnJlZF9yZWVucV9sb2NhbHMocnEpO1xuNDU0NzpcdFxuNDU0ODpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnJxLVx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2VycykpXG40NTQ5Olx0XHRcdHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMocnEpO1xuNDU1MDpcdFxuNDU1MTpcdFx0c2N4X3JlZW5xX3JlamVjdChycSk7XG40NTUyOlx0fVxuNDU1MzpcdFxuNDU1NDpcdCNpZmRlZiBDT05GSUdfTk9fSFpfRlVMTFxuNDU1NTpcdGJvb2wgc2N4X2Nhbl9zdG9wX3RpY2soc3RydWN0IHJxICpycSlcbjQ1NTY6XHR7XG40NTU3Olx0XHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAgPSBycS1cdTAwM2VjdXJyO1xuNDU1ODpcdFx0c3RydWN0IHNjeF9zY2hlZCAqc2NoID0gc2N4X3Rhc2tfc2NoZWQocCk7XG40NTU5Olx0XG40NTYwOlx0XHRpZiAocC1cdTAwM2VzY2hlZF9jbGFzcyAhPSBcdTAwMjZleHRfc2NoZWRfY2xhc3MpXG40NTYxOlx0XHRcdHJldHVybiB0cnVlO1xuNDU2MjpcdFxuNDU2MzpcdFx0LypcbjQ1NjQ6XHRcdCAqIEBycS1cdTAwM2VjdXJyIG1heSBzdGlsbCByZWZlcmVuY2UgYW4gb3V0Z29pbmcgRVhUIHRhc2sgYWZ0ZXIgaXQgaGFzIGJlZW5cbjQ1NjU6XHRcdCAqIGRlcXVldWVkLiBJZiBubyBFWFQgdGFza3MgYXJlIGFjY291bnRlZCBvbiBAcnEsIGlnbm9yZSBpdHMgc3RhbGVcbjQ1NjY6XHRcdCAqIHNsaWNlIHN0YXRlLiBJZiBhbm90aGVyIHRhc2sgaXMgZGlzcGF0Y2hlZCBmcm9tIGEgRFNRLFxuNDU2NzpcdFx0ICogc2V0X25leHRfdGFza19zY3goKSB3aWxsIHVwZGF0ZSB0aGUgZGVwZW5kZW5jeSBmb3IgdGhlIGluY29taW5nIHRhc2suXG40NTY4Olx0XHQgKi9cbjQ1Njk6XHRcdGlmICghcnEtXHUwMDNlc2N4Lm5yX3J1bm5pbmcpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NzgyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipUcmFjaW5nIHRoZSBFeGVjdXRpb24gUGF0aCBvZiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBnZXRzIGludm9rZWQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHJ1bl9kZWZlcnJlZGAsIHdoaWNoIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIGRlZmVycmVkIHdvcmsgaW4gdGhpcyBlbnZpcm9ubWVudC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGVyZSBkb2VzICpgcnVuX2RlZmVycmVkYCogaXRzZWxmIGdldCBjYWxsZWQ/IElzIGl0IHNvbGVseSBmcm9tIGBzY3hfYnBmX2tpY2tfY3B1YCBhbmQgdGhpbmdzIGxpa2UgaXQsIG9yIGFyZSB0aGVyZSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIEkgbmVlZCB0byBjb25zaWRlcj8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsIGdyYXBoIGZvciBgcnVuX2RlZmVycmVkYCB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBleGVjdXRpb24gcGF0aHMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHRyaWdnZXJzIGZvciB0aGUgZGVmZXJyZWQgcmUtZW5xdWV1ZSBvZiB1c2Vycywgd2hpY2ggaXMgY2xlYXJseSBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIG92ZXJhbGwgZmxvdy4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIHRob3NlIGNhbGwgc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J1bl9kZWZlcnJlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz0yNTM9TU9EVUxFX1BBUk1fREVTQyhieXBhc3NfbGJfaW50dl91cywgXCYjMzQ7YnlwYXNzIGxvYWQgYmFsYW5jZSBpbnRlcnZhbCBpbiBtaWNyb3NlY29uZHMgKDAgKGRpc2FibGUpIHRvIDEwcylcJiMzNDspO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjU5LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoyNjA6c3RhdGljIHZvaWQgcnVuX2RlZmVycmVkKHN0cnVjdCBycSAqcnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yNjEtc3RhdGljIGJvb2wgdGFza19kZWFkX2FuZF9kb25lKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05Nzk9c3RhdGljIHZvaWQgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbihzdHJ1Y3QgcnEgKnJxKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODAte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5ODE6XHRydW5fZGVmZXJyZWQocnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODItfVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTg0PXN0YXRpYyB2b2lkIGRlZmVycmVkX2lycV93b3JrZm4oc3RydWN0IGlycV93b3JrICppcnFfd29yaylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk4OC1cdHJhd19zcGluX3JxX2xvY2socnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5ODk6XHRydW5fZGVmZXJyZWQocnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy05OTAtXHRyYXdfc3Bpbl9ycV91bmxvY2socnEpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzUyND1zdGF0aWMgdm9pZCB0YXNrX3dva2VuX3NjeChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MjUte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNTI2Olx0cnVuX2RlZmVycmVkKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzUyNy19XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NTA1PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1NDAtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1NDE6c3RhdGljIHZvaWQgcnVuX2RlZmVycmVkKHN0cnVjdCBycSAqcnEpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1NDIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODU3OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgRnVuY3Rpb24qKgoKT2theSwgc28gdGhlIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBmdW5jdGlvbiBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgcnVuX2RlZmVycmVkYCwgd2hpY2ggaXRzZWxmIGlzIGludm9rZWQgYnkgYHRhc2tfd29rZW5fc2N4YCwgYGRlZmVycmVkX2lycV93b3JrZm5gLCBhbmQgYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gLiBUaGVzZSBlbnRyeSBwb2ludHMgYXJlIGFsbCB0cmlnZ2VyZWQgd2hlbiBgU0NIRURfQ0xBU1NfRVhUYCBpcyBlbmFibGVkIGFuZCBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkLiBHaXZlbiBpdHMgcGxhY2UgaW4gYSBjb3JlIHNjaGVkdWxlciBjaGFuZ2UsIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG5vbmV0aGVsZXNzLCBmdXp6aW5nIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIHRhcmdldC4KClRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJJiMzOTtsbCBuZWVkIGFyZSBgU0NIRURfQ0xBU1NfRVhUYC4gQWgsIHJpZ2h0LCBCUEYgaXMgYSBwcmVyZXF1aXNpdGUgdG8gbG9hZCB0aGUgc2NoZWR1bGVyLCBzbyBJJiMzOTtsbCBhbHNvIG5lZWQgYEJQRl9TWVNDQUxMYCBlbmFibGVkIGFzIHdlbGwuIEp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBmb3IgYFNDSEVEX0NMQVNTX0VYVGAuIEdvdHRhIGRvdCB0aGUgSSYjMzk7cyBhbmQgY3Jvc3MgdGhlIFQmIzM5O3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQ0hFRF9DTEFTU19FWFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvS2NvbmZpZy5wcmVlbXB0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9LY29uZmlnLnByZWVtcHQ9MTUxPWNvbmZpZyBTQ0hFRF9DT1JFXG4tLVxua2VybmVsL0tjb25maWcucHJlZW1wdC0xNjgtXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0OjE2OTpjb25maWcgU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3MC1cdGJvb2wgXCYjMzQ7RXh0ZW5zaWJsZSBTY2hlZHVsaW5nIENsYXNzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDk1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByZWVtcHRpb24gY29uZmlndXJhdGlvbiBvcHRpb25zIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBXaGVyZSB3b3VsZCBJIHN0YXJ0PyBBbHJpZ2h0LCBsZXQmIzM5O3MgaGVhZCBzdHJhaWdodCBmb3IgYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgLiBUaGF0JiMzOTtzIHVzdWFsbHkgdGhlIGdvLXRvIGZpbGUgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHByZWVtcHRpdmUgY29uZmlndXJhdGlvbnMuIFNwZWNpZmljYWxseSwgYXJvdW5kIGxpbmUgMTY5IOKAkyB0aGF0JiMzOTtzIG9mdGVuIHdoZXJlIHRoZSBjb3JlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gSSBleHBlY3QgdG8gZmluZCB0aGUgbWFpbiBgQ09ORklHX1BSRUVNUFRgIGFuZCBpdHMgYXNzb2NpYXRlZCBzdWItb3B0aW9ucyBvciBkZXBlbmRlbmNpZXMgdGhlcmUuIEkgYW50aWNpcGF0ZSBhIGRpc2N1c3Npb24gYWJvdXQgdGhlIGRpZmZlcmVudCBwcmVlbXB0aW9uIG1vZGVscywgc3VjaCBhcyB2b2x1bnRhcnksIGZ1bGwsIGFuZCB0aGUgcmVhbHRpbWUgb3B0aW9ucy4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIHRoZSBkZXBlbmRlbmNpZXMgaXQgaGFzIGFuZCBob3cgdGhvc2UgYXJlIHNldCB1cC4gSSYjMzk7bSBrZWVuIHRvIGdldCBhIHNvbGlkIGdyYXNwIG9mIGhvdyB0aGUga2VybmVsJiMzOTtzIHByZWVtcHRpb24gYmVoYXZpb3IgaXMgY29udHJvbGxlZCBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBGcm9tIHRoZXJlLCBJIGNhbiBhbmFseXplIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGxhdGVuY3kgYW5kIHNjaGVkdWxpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL0tjb25maWcucHJlZW1wdCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTY5Olx0Y29uZmlnIFNDSEVEX0NMQVNTX0VYVFxuIDE3MDpcdFx0Ym9vbCBcJiMzNDtFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcJiMzNDtcbiAxNzE6XHRcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXHUwMDI2XHUwMDI2IEJQRl9KSVQgXHUwMDI2XHUwMDI2IERFQlVHX0lORk9fQlRGXG4gMTcyOlx0XHRzZWxlY3QgU1RBQ0tUUkFDRSBpZiBTVEFDS1RSQUNFX1NVUFBPUlRcbiAxNzM6XHRcdGhlbHBcbiAxNzQ6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBhIG5ldyBzY2hlZHVsZXIgY2xhc3Mgc2NoZWRfZXh0IChTQ1gpLCB3aGljaFxuIDE3NTpcdFx0ICBhbGxvd3Mgc2NoZWR1bGluZyBwb2xpY2llcyB0byBiZSBpbXBsZW1lbnRlZCBhcyBCUEYgcHJvZ3JhbXMgdG9cbiAxNzY6XHRcdCAgYWNoaWV2ZSB0aGUgZm9sbG93aW5nOlxuIDE3NzpcdFxuIDE3ODpcdFx0ICAtIEVhc2Ugb2YgZXhwZXJpbWVudGF0aW9uIGFuZCBleHBsb3JhdGlvbjogRW5hYmxpbmcgcmFwaWRcbiAxNzk6XHRcdCAgICBpdGVyYXRpb24gb2YgbmV3IHNjaGVkdWxpbmcgcG9saWNpZXMuXG4gMTgwOlx0XHQgIC0gQ3VzdG9taXphdGlvbjogQnVpbGRpbmcgYXBwbGljYXRpb24tc3BlY2lmaWMgc2NoZWR1bGVycyB3aGljaFxuIDE4MTpcdFx0ICAgIGltcGxlbWVudCBwb2xpY2llcyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZSB0byBnZW5lcmFsLXB1cnBvc2VcbiAxODI6XHRcdCAgICBzY2hlZHVsZXJzLlxuIDE4MzpcdFx0ICAtIFJhcGlkIHNjaGVkdWxlciBkZXBsb3ltZW50czogTm9uLWRpc3J1cHRpdmUgc3dhcCBvdXRzIG9mXG4gMTg0Olx0XHQgICAgc2NoZWR1bGluZyBwb2xpY2llcyBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cy5cbiAxODU6XHRcbiAxODY6XHRcdCAgc2NoZWRfZXh0IGxldmVyYWdlcyBCUEYgc3RydWN0X29wcyBmZWF0dXJlIHRvIGRlZmluZSBhIHN0cnVjdHVyZVxuIDE4NzpcdFx0ICB3aGljaCBleHBvcnRzIGZ1bmN0aW9uIGNhbGxiYWNrcyBhbmQgZmxhZ3MgdG8gQlBGIHByb2dyYW1zIHRoYXRcbiAxODg6XHRcdCAgd2lzaCB0byBpbXBsZW1lbnQgc2NoZWR1bGluZyBwb2xpY2llcy4gVGhlIHN0cnVjdF9vcHMgc3RydWN0dXJlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NjkxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLZXJuZWwgU2NoZWR1bGVyIEVuaGFuY2VtZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgbmV3IGtlcm5lbCBjb2RlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBzY2hlZHVsZXIgaW1wcm92ZW1lbnRzLiBJIHNlZSBzb21lIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kOiBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGFuZCBgREVCVUdfSU5GT19CVEZgLiBBbHJpZ2h0LCBnaXZlbiB0aG9zZSwgSSB0aGluayB3ZSBkZWZpbml0ZWx5IG5lZWQgdG8gYWRkIGBTQ0hFRF9DTEFTU19FWFRgIHRvIHRoZSBFbmFibGVDb25maWdzLiBUaGF0IGZlZWxzIHJpZ2h0LiBOb3csIGxldCYjMzk7cyBjb25zaWRlciBGb2N1c1N5bWJvbHMuLi4gSSBuZWVkIHRvIHJlbWVtYmVyIHRvIGNpcmNsZSBiYWNrIHRvIHRoYXQgbGF0ZXIuCgpUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgZnVuY3Rpb24uIEl0JiMzOTtzIG1hcmtlZCBhcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJIHNob3VsZCB0cmFjayBkb3duIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkLiBMZXQmIzM5O3Mgc2VlLi4uIGB0YXNrX3dva2VuX3NjeGAgaXMgc3RhdGljLCBgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbmAgaXMgYWxzbyBzdGF0aWMsIGFuZCBzbyBpcyBgZGVmZXJyZWRfaXJxX3dvcmtmbmAuIEhtbSwgYWxsIHRoZSBvbmVzIEkgaW5pdGlhbGx5IHNlZSBhcmUgc3RhdGljLCBidXQgSSBuZWVkIHRvIGJlIHN1cmUuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgYXJlYSwgc28gbGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSB1c2FnZSBvZiBgdGFza193b2tlbl9zY3hgLiBUaGlzIHdpbGwgZ2l2ZSBtZSBzb21lIGNvbnRleHQsIGFuZCB0aGVuIEkgY2FuIHJlLWV4YW1pbmUgdGhlIG90aGVycy4gVGhpcyBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rhc2tfd29rZW5fc2N4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMjU9c3RhdGljIHZvaWQgc2NoZWR1bGVfZGVmZXJyZWRfbG9ja2VkKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDI5LVx0Lypcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzMDpcdCAqIElmIGluIHRoZSBtaWRkbGUgb2Ygd2FraW5nIHVwIGEgdGFzaywgdGFza193b2tlbl9zY3goKSB3aWxsIGJlIGNhbGxlZFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDMxLVx0ICogYWZ0ZXJ3YXJkcyB3aGljaCB3aWxsIHRoZW4gcnVuIHRoZSBkZWZlcnJlZCBhY3Rpb25zLCBubyBuZWVkIHRvXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNDUxPXN0YXRpYyBpbnQgc2VsZWN0X3Rhc2tfcnFfc2N4KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHByZXZfY3B1LCBpbnQgd2FrZV9mbGFncylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MjMtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM1MjQ6c3RhdGljIHZvaWQgdGFza193b2tlbl9zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNTI1LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ5MjA9REVGSU5FX1NDSEVEX0NMQVNTKGV4dCkgPSB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTMzLVx0LnNlbGVjdF90YXNrX3JxXHRcdD0gc2VsZWN0X3Rhc2tfcnFfc2N4LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0OTM0Olx0LnRhc2tfd29rZW5cdFx0PSB0YXNrX3dva2VuX3NjeCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkzNS1cdC5zZXRfY3B1c19hbGxvd2VkXHQ9IHNldF9jcHVzX2FsbG93ZWRfc2N4LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDUyOQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBTY2hlZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwaWVjZSBvZiBjb2RlLCBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgaXQmIzM5O3MgcGFydCBvZiB0aGUgYGV4dGAgc2NoZWQgY2xhc3MuIFRoYXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgY29udGV4dC4gTm93LCB3aGF0JiMzOTtzIHJlbGF0ZWQgdG8gdGhpcz8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gV2hhdCBpcyB0aGlzIG1vZHVsZSBzdXBwb3NlZCB0byBkbz8gV2hhdCYjMzk7cyB0aGUgc2NoZWR1bGluZyBzdHJhdGVneSBpdCBlbXBsb3lzPyBXaGF0IG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0gaW50ZXJhY3Qgd2l0aCBpdD8gUmlnaHQgbm93LCBteSBtaW5kIGdvZXMgdG8gYSBzcGVjaWZpYyBmdW5jdGlvbiAtIGBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuYC4gSXMgdGhpcyByZWxldmFudD8gSXMgdGhpcyAqdGhlKiB3b3JrIGZ1bmN0aW9uLCBvciBpcyBpdCByZWxhdGVkLCBvciBhIHBhcnQgb2YgYSBsYXJnZXIsIGNvb3JkaW5hdGVkIHNldCBvZiBmdW5jdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgc3lzdGVtLCBhbmQgdGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwIEkgaGF2ZSB0byB0YWtlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk2OT1ib29sIHNjeF9jcHVfdmFsaWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzMzIgY3B1LCBjb25zdCBjaGFyICp3aGVyZSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3OC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc5OnN0YXRpYyB2b2lkIGRlZmVycmVkX2JhbF9jYl93b3JrZm4oc3RydWN0IHJxICpycSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTgwLXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTI5NTA9c3RhdGljIGlubGluZSB2b2lkIG1heWJlX3F1ZXVlX2JhbGFuY2VfY2FsbGJhY2soc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI5NTctXHRxdWV1ZV9iYWxhbmNlX2NhbGxiYWNrKHJxLCBcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfYmFsX2NiLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoyOTU4Olx0XHRcdFx0ZGVmZXJyZWRfYmFsX2NiX3dvcmtmbik7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI5NTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDAyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSYjMzk7dmUgZGVzY3JpYmVkOgoKKipDb25zaWRlcmluZyBEZWZlcnJlZCBJbnRlcnJ1cHQgSGFuZGxlcnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gTXkgZm9jdXMgaXMgYWx3YXlzIG9uIG9wdGltaXplZCBrZXJuZWwgcGVyZm9ybWFuY2UsIGVzcGVjaWFsbHkgYXJvdW5kIGludGVycnVwdCBoYW5kbGluZy4gSSYjMzk7bSBkZWVwIGluIHRoZSB3ZWVkcyByaWdodCBub3csIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGFwcHJvYWNoIGZvciBhIHBhcnRpY3VsYXIgcHJvYmxlbS4gQW5kIHJpZ2h0IG5vdywgdGhlIHF1ZXN0aW9uIHRoYXQmIzM5O3MganVtcGluZyB0byB0aGUgZm9yZWZyb250IGlzOiB3aGF0IGFib3V0IGBkZWZlcnJlZF9pcnFfd29ya2ZuYD8gSXMgdGhpcyBmdW5jdGlvbiwgZGVzaWduZWQgdG8gZGVmZXIgaW50ZXJydXB0LXJlbGF0ZWQgd29yaywgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoZSBqb2IgaGVyZT8gSXQgc2VlbXMgbGlrZSBpdCBjb3VsZCBvZmZlciBhIHBhdGggdG93YXJkIG1vcmUgcHJlZGljdGFibGUgcGVyZm9ybWFuY2UsIGFuZCBhIHdheSB0byBhdm9pZCBhbnkgcG90ZW50aWFsIGJsb2NraW5nIHdpdGhpbiB0aGUgaW50ZXJydXB0IGNvbnRleHQuIEkgbmVlZCB0byB3ZWlnaCB0aGUgcHJvcyBhbmQgY29ucyBjYXJlZnVsbHksIGNvbnNpZGVyaW5nIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgZGF0YSBpbnZvbHZlZC4gV2hhdCYjMzk7cyB0aGUgbGF0ZW5jeSBpbXBhY3Qgb2YgdXNpbmcgdGhpcyBwYXJ0aWN1bGFyIGRlZmVycmVkIHdvcmsgbWVjaGFuaXNtPyBBbmQgd2hhdCYjMzk7cyB0aGUgdGhyZWFkaW5nIG1vZGVsIGhlcmU/IElzIGl0IGFwcHJvcHJpYXRlIGZvciB0aGUgdGFzayBhdCBoYW5kPyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgc3VpdGFiaWxpdHkuIEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgYmVuY2htYXJrIGl0IGFnYWluc3Qgb3RoZXIgb3B0aW9ucyB0byBzZWUgaWYgdGhpcyBpcyB0aGUgYmVzdCwgbW9zdCBlbGVnYW50LCBhbmQgbW9zdCBwZXJmb3JtYW50IHNvbHV0aW9uLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmVycmVkX2lycV93b3JrZm4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTc5PXN0YXRpYyB2b2lkIGRlZmVycmVkX2JhbF9jYl93b3JrZm4oc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk4My1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTg0OnN0YXRpYyB2b2lkIGRlZmVycmVkX2lycV93b3JrZm4oc3RydWN0IGlycV93b3JrICppcnFfd29yaylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTg1LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTg1NzY9dm9pZCBfX2luaXQgaW5pdF9zY2hlZF9leHRfY2xhc3Modm9pZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2MDgtXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnJxLVx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2Vycyk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg2MDk6XHRcdHJxLVx1MDAzZXNjeC5kZWZlcnJlZF9pcnFfd29yayA9IElSUV9XT1JLX0lOSVRfSEFSRChkZWZlcnJlZF9pcnFfd29ya2ZuKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODYxMC1cdFx0cnEtXHUwMDNlc2N4LmtpY2tfY3B1c19pcnFfd29yayA9IElSUV9XT1JLX0lOSVRfSEFSRChraWNrX2NwdXNfaXJxX3dvcmtmbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTcwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQW5hbHl6aW5nIGBydW5fZGVmZXJyZWRgIENhbGxzaXRlcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdHJhY2UgdGhpcy4gU28gYHJ1bl9kZWZlcnJlZGAgZ2V0cyBjYWxsZWQgZnJvbSAqdGhlc2UqIHBsYWNlcy4gT2theSwgZ290IGl0LiBIbW0sIG5vdyB3aGF0JiMzOTtzIHRoZSBtb3N0IHByb2R1Y3RpdmUgYXBwcm9hY2ggdG8gZGlnIGluIGhlcmUsIHdoZXJlIHRvIGZvY3VzPyBIbW1tLCBpcyB0aGVyZSBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gYW1vbmdzdCBhbGwgdGhlc2UgY2FsbHMgdGhhdCB3ZSBjYW4gcmVhbGx5IGRyaWxsIGludG8/IEkgdGhpbmsgdGhhdCYjMzk7cyB0aGUgYmVzdCB3YXkgdG8gbW92ZSBmb3J3YXJkLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiB1c2UgYHNjeF9icGZfa2lja19jcHVgIHRvIG1vdmUgZm9yd2FyZCBpbiBvdXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N4X2JwZl9raWNrX2NwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz04NzA1PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg3NDAtICogJVNDWF9TTElDRV9JTkYsIEBwIG5ldmVyIGV4cGlyZXMgYW5kIHRoZSBCUEYgc2NoZWR1bGVyIG11c3Qga2ljayB0aGUgQ1BVIHdpdGhcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODc0MTogKiBzY3hfYnBmX2tpY2tfY3B1KCkgdG8gdHJpZ2dlciBzY2hlZHVsaW5nLlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQyLSAqXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NDI1PXZvaWQgc2N4X2tpY2tfY3B1KHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgczMyIGNwdSwgdTY0IGZsYWdzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTQzNS1cdGlmICh1bmxpa2VseShpbl9ubWkoKSkpIHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTQzNjpcdFx0c2N4X2Vycm9yKHNjaCwgXCYjMzQ7c2N4X2JwZl9raWNrX2NwdSgpIGNhbGxlZCBmcm9tIE5NSVwmIzM0Oyk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0MzctXHRcdHJldHVybjtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0OTEtLyoqXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk0OTI6ICogc2N4X2JwZl9raWNrX2NwdSAtIFRyaWdnZXIgcmVzY2hlZHVsZSBvbiBhIENQVVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NDkzLSAqIEBjcHU6IGNwdSB0byBraWNrXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTAxLSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NTAyOl9fYnBmX2tmdW5jIHZvaWQgc2N4X2JwZl9raWNrX2NwdShzMzIgY3B1LCB1NjQgZmxhZ3MsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUwMy17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTE3LSAqXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk1MTg6ICogY2lkLWFkZHJlc3NlZCBlcXVpdmFsZW50IG9mIHNjeF9icGZfa2lja19jcHUoKS4gQW4gaW52YWxpZCBAY2lkIGFib3J0cyB0aGVcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUxOS0gKiBzY2hlZHVsZXIgdmlhIHNjeF9jaWRfdG9fY3B1KCkuIENhcHMgYXJlIGVuZm9yY2VkIG9uIHRoZSBkZWxpdmVyeSBwYXRoOiBhXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDU4Nj1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX3NldF9kc3FfdnRpbWUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDU4NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA1ODgtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfa2lja19jaWQsIEtGX0lNUExJQ0lUX0FSR1MpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDY1Mj1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNjUzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2tpY2tfY3B1LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY1NC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX2NwdSwgS0ZfUkNVKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjU2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGNvZGU6CgoqKlRoaW5raW5nIFRocm91Z2ggdGhlIFNjaGVkdWxlciBhbmQgRGVmZXJyZWQgV29yayoqCgpPa2F5LCBzbyBgc2N4X2JwZl9raWNrX2NwdWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaW5pdGlhdGVzIGEgQ1BVIHJlc2NoZWR1bGUsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBpbXBsaWNhdGlvbnMuIE15IHByaW1hcnkgcXVlc3Rpb24gaXMgd2hldGhlciBpdCBhbHNvIHRyaWdnZXJzIGBydW5fZGVmZXJyZWRgLiBJIGtub3cgYHNjeF9raWNrX2NwdWAgaXMgaW52b2x2ZWQgaGVyZSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24mIzM5O3MgaW1wbGVtZW50YXRpb24gdG8gYmUgY2VydGFpbi4gTGV0IG1lIHN0YXJ0IHRoZXJlIGFuZCBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBwYXRoLiBJIG5lZWQgdG8ga25vdyBwcmVjaXNlbHkgd2hhdCYjMzk7cyBkZWZlcnJlZCBhbmQgaG93LiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMgaXMgY3J1Y2lhbCBmb3IuLi4gW3RoZSB1c2VyIGNhbiBmaWxsIGluIHRoZSBwdXJwb3NlIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dF0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjeF9raWNrX2NwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz01OTMzPXN0YXRpYyB2b2lkIHVuYnlwYXNzX3Jlbm90aWZ5X2lkbGUoc3RydWN0IHJxICpycSwgc3RydWN0IHNjeF9zY2hlZCAqcG9zLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTk3Mi0gKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1OTczOiAqIC0gc2N4X2tpY2tfY3B1KCkgaXMgZGlzYWJsZWQgdG8gYXZvaWQgaXJxX3dvcmsgbWFsZnVuY3Rpb24gZHVyaW5nIFBNXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU5NzQtICogICBvcGVyYXRpb25zLlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODQ0Mj1zdGF0aWMgdm9pZCBraWNrX2NwdXNfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODQ1OC1cdC8qXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg0NTk6XHQgKiBXYWxrIHNjaGVkcyB3aXRoIHBlbmRpbmcga2lja3Mgb24gdGhpcyBjcHUuIHNjeF9raWNrX2NwdSgpIGFkZHMgdG9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODQ2MC1cdCAqIHRoZSBsaXN0IHVuZGVyIGxvY2FsX2lycV9zYXZlKCkgYW5kIG9ubHkgdGhpcyBpcnFfd29yayBjb25zdW1lcyBpdC5cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk0MTE9X19icGZfa2Z1bmMgYm9vbCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCB2dGltZSxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0MjQtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk0MjU6dm9pZCBzY3hfa2lja19jcHUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzMzIgY3B1LCB1NjQgZmxhZ3MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0MjYte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTUwMj1fX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfa2lja19jcHUoczMyIGNwdSwgdTY0IGZsYWdzLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTA4LVx0aWYgKGxpa2VseShzY2gpIFx1MDAyNlx1MDAyNiBzY3hfY3B1X3ZhbGlkKHNjaCwgY3B1LCBOVUxMKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTUwOTpcdFx0c2N4X2tpY2tfY3B1KHNjaCwgY3B1LCBmbGFncyk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1MTAtfVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTUyND1fX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfa2lja19jaWQoczMyIGNpZCwgdTY0IGZsYWdzLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTM1LVx0XHRyZXR1cm47XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk1MzY6XHRzY3hfa2lja19jcHUoc2NoLCBjcHUsIGZsYWdzKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUzNy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNDQ1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIERlZmVycmVkIFJlLWVucXVldWUgUHJvY2VzcyBpbiB0aGUgS2VybmVsKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHJlLWVucXVldWUgcHJvY2VzcyB3b3Jrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBhbmQgY2hlY2sgdGhlIGBzY3hfYnBmX2Rpc3BhdGNoYCBmdW5jdGlvbiBvciBzb21ldGhpbmcgc2ltaWxhci4gV2hlcmUgaXMgdGhlIG1hZ2ljIGhhcHBlbmluZz8gT2theSwgSSBzZWUgdGhhdCBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgaXMgdGhlIGtleS4gQnV0IHdoYXQgdHJpZ2dlcnMgdGhhdCBmdW5jdGlvbj8gSXQgbG9va3MgbGlrZSBgcnVuX2RlZmVycmVkYCBpcyByZXNwb25zaWJsZSBmb3IgcHJvY2Vzc2luZyBgcnEtJmd0O3NjeC5kZWZlcnJlZF9yZWVucV91c2Vyc2AuIEkmIzM5O20gZ2V0dGluZyBjbG9zZXIuLi4gU28gbm93IHRoZSBxdWVzdGlvbiBpczogd2hlcmUgYXJlIGl0ZW1zIGluaXRpYWxseSAqYWRkZWQqIHRvIHRoaXMgYGRlZmVycmVkX3JlZW5xX3VzZXJzYCBzdHJ1Y3R1cmU/IFRoYXQmIzM5O3MgdGhlIG1pc3NpbmcgcGllY2Ugb2YgdGhlIHB1enpsZSBJIG5lZWQgdG8gZmluZCB0aGUgY2F1c2Ugb2YgdGhlIHByb2JsZW0uIFRpbWUgdG8gZGlnIGRlZXBlci4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZlcnJlZF9yZWVucV91c2VycyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDY1PXZvaWQgc2NoZWR1bGVfZHNxX3JlZW5xKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMTE2LVx0XHQvKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMTE3Olx0XHQgKiBQYWlycyB3aXRoIHNtcF9tYigpIGluIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBhbmRcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTExOC1cdFx0ICogZ3VhcmFudGVlcyB0aGF0IHRoZXJlIGlzIGEgcmVlbnFfdXNlcigpIGFmdGVyd2FyZHMuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMTI3LVx0XHRcdGlmIChsaXN0X2VtcHR5KFx1MDAyNmRydS1cdTAwM2Vub2RlKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTEyODpcdFx0XHRcdGxpc3RfbW92ZV90YWlsKFx1MDAyNmRydS1cdTAwM2Vub2RlLCBcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMTI5LVx0XHRcdFdSSVRFX09OQ0UoZHJ1LVx1MDAzZWZsYWdzLCBkcnUtXHUwMDNlZmxhZ3MgfCByZWVucV9mbGFncyk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NDM0PXN0YXRpYyB2b2lkIHJlZW5xX3VzZXIoc3RydWN0IHJxICpycSwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EsIHU2NCByZWVucV9mbGFncylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MDQtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1MDU6c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTA2LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MTQtXHRcdFx0c3RydWN0IHNjeF9kZWZlcnJlZF9yZWVucV91c2VyICpkcnUgPVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NTE1Olx0XHRcdFx0bGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNnJxLVx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2Vycyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUxNi1cdFx0XHRcdFx0XHRcdCBzdHJ1Y3Qgc2N4X2RlZmVycmVkX3JlZW5xX3VzZXIsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NTQxPXN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDU0Ny1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDU0ODpcdGlmICghbGlzdF9lbXB0eShcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMpKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NTQ5Olx0XHRwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDU1MC1cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTg1NzY9dm9pZCBfX2luaXQgaW5pdF9zY2hlZF9leHRfY2xhc3Modm9pZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2MDctXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnJxLVx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV9sb2NhbHMpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NjA4Olx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NjA5LVx0XHRycS1cdTAwM2VzY3guZGVmZXJyZWRfaXJxX3dvcmsgPSBJUlFfV09SS19JTklUX0hBUkQoZGVmZXJyZWRfaXJxX3dvcmtmbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDU3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIHRoZSBSZS1lbnF1ZXVlIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBgc2NoZWR1bGVfZHNxX3JlZW5xYCBpcyBjbGVhcmx5IG1lYW50IHRvIGFkZCBzb21ldGhpbmcgdG8gYGRlZmVycmVkX3JlZW5xX3VzZXJzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0ICYjMzQ7c29tZXRoaW5nJiMzNDsgaXMsIGFuZCBtb3JlIGltcG9ydGFudGx5LCB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2Ygd2h5IHdlJiMzOTtyZSBkZWZlcnJpbmcgcmUtZW5xdWV1aW5nIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhhdCB2YXJpYWJsZSBuYW1lLCBgZGVmZXJyZWRfcmVlbnFfdXNlcnNgLCBpbXBsaWVzIHRoZXJlIGFyZSB1c2Vycy4gU28sIG15IGluaXRpYWwgdGhvdWdodCBpcywgd2hhdCBjcml0ZXJpYSBtdXN0IGEgdXNlciBtZWV0IHRvIGJlIGRlZmVycmVkPyBJcyB0aGUgaXNzdWUgcmVsYXRlZCB0byBjYXBhY2l0eSwgdHJhbnNpZW50IGVycm9ycywgb3IgYSBtb3JlIGNvbXBsZXggYnVzaW5lc3MgcnVsZT8KCk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgcXVlc3Rpb24gaXMsIHdoZXJlIGluIHRoZSBjb2RlYmFzZSBpcyBgc2NoZWR1bGVfZHNxX3JlZW5xYCBhY3R1YWxseSBiZWluZyAqY2FsbGVkKj8gRmluZGluZyB0aGUgY2FsbCBzaXRlcyB3aWxsIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHRyaWdnZXIgY29uZGl0aW9ucyBmb3IgdGhpcyBkZWZlcnJlZCByZS1lbnF1ZXVlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBpZGVudGlmeSB0aGUgc2NlbmFyaW9zIHRoYXQgbGVhZCB0byBjYWxsaW5nIHRoYXQgZnVuY3Rpb24uIElzIGl0IHBhcnQgb2YgYSByZXRyeSBsb2dpYywgYSByYXRlLWxpbWl0aW5nIG1lY2hhbmlzbSwgb3Igc29tZXRoaW5nIGVudGlyZWx5IGRpZmZlcmVudD8gV2l0aG91dCB0aGF0IGNvbnRleHQsIEkgY2FuJiMzOTt0IGRldGVybWluZSBpZiB0aGlzIG1lY2hhbmlzbSBpcyBvcHRpbWFsLCBlZmZpY2llbnQsIG9yIHBvdGVudGlhbGx5IGludHJvZHVjaW5nIHByb2JsZW1zLiBJIG5lZWQgdG8gZm9sbG93IHRoZSBjYWxsIHN0YWNrIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93IG9mIGNvbnRyb2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjaGVkdWxlX2RzcV9yZWVucSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDI1PXN0YXRpYyB2b2lkIHNjaGVkdWxlX2RlZmVycmVkX2xvY2tlZChzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA2NC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA2NTp2b2lkIHNjaGVkdWxlX2RzcV9yZWVucShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY2LVx0XHRcdHU2NCByZWVucV9mbGFncywgc3RydWN0IHJxICpsb2NrZWRfcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00Mzg5PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfbG9jYWxzKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NDIwLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NDIxOlx0XHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDQyMi1cdFx0c21wX21iKCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NTA1PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MzAtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1MzE6XHRcdC8qIHNlZSBzY2hlZHVsZV9kc3FfcmVlbnEoKSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTMyLVx0XHRzbXBfbWIoKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk3NDI9X19icGZfa2Z1bmMgdm9pZCBzY3hfYnBmX2RzcV9yZWVucSh1NjQgZHNxX2lkLCB1NjQgcmVlbnFfZmxhZ3MsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzYzLVx0ZHNxID0gZmluZF9kc3FfZm9yX2Rpc3BhdGNoKHNjaCwgdGhpc19ycSgpLCBkc3FfaWQsIHNtcF9wcm9jZXNzb3JfaWQoKSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk3NjQ6XHRzY2hlZHVsZV9kc3FfcmVlbnEoc2NoLCBkc3EsIHJlZW5xX2ZsYWdzLCBzY3hfbG9ja2VkX3JxKCkpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzY1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyODgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBzY3hfYnBmX2RzcV9yZWVucWAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXQgY2FsbHMgYHNjaGVkdWxlX2RzcV9yZWVucWAsIGFuZCBJIHNlZSBpdCYjMzk7cyBkZWZpbmVkIGFzIGEgQlBGIGtmdW5jLiBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGlzIG1lYW5zIGEgQlBGIHByb2dyYW0gY2FuIGNhbGwgYHNjeF9icGZfZHNxX3JlZW5xYCwgd2hpY2ggaW4gdHVybiBhZGRzIHNvbWV0aGluZyB0byBgZGVmZXJyZWRfcmVlbnFfdXNlcnNgLiBUaGVuLCBsYXRlciwgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGNvbWVzIGFsb25nIGFuZCBwcm9jZXNzZXMgdGhvc2UgdXNlcnMgdmlhIGBydW5fZGVmZXJyZWRgLgoKTXkgaW50dWl0aW9uIGlzIHNjcmVhbWluZyAmIzM0O3BvdGVudGlhbCByYWNlIGNvbmRpdGlvbiEmIzM0OyBiZWNhdXNlIEkgc2VlIGEgc2l0dWF0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCAqbWlnaHQqIGludmFsaWRhdGUgdGhlIGBkc3FgIG9iamVjdCAqYmVmb3JlKiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgZ2V0cyBhIGNoYW5jZSB0byBydW4uIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHRoZSB0eXBlIG9mIHNjZW5hcmlvIEkmIzM5O20gbG9va2luZyBmb3IuIFNvLCBgc2N4X2JwZl9kc3FfcmVlbnFgIGlzIGRlZmluaXRlbHkgYSBnb29kIGNhbmRpZGF0ZSBmb3IgYSBGb2N1c1N5bWJvbCwgYW5kLCBzaW5jZSBpdCYjMzk7cyBhIGtmdW5jLCBpdCYjMzk7cyBhIGdyZWF0IGVudHJ5IHBvaW50IHRvIHN0YXJ0IGxvb2tpbmcgYXQuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgd291bGQgYmUgYW4gb2J2aW91cyBibG9ja2VyIHRvIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3hfYnBmX2RzcV9yZWVucSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz05NzAzPV9fYnBmX2tmdW5jIHN0cnVjdCB0YXNrX3N0cnVjdCAqc2N4X2JwZl9kc3FfcGVlayh1NjQgZHNxX2lkLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyNy0vKipcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTcyODogKiBzY3hfYnBmX2RzcV9yZWVucSAtIFJlLWVucXVldWUgdGFza3Mgb24gYSBEU1Fcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyOS0gKiBAZHNxX2lkOiBEU1EgdG8gcmUtZW5xdWV1ZVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc0MS0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc0MjpfX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZHNxX3JlZW5xKHU2NCBkc3FfaWQsIHU2NCByZWVucV9mbGFncyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc0My1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3NzQtICpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc3NTogKiBUaGlzIGlzIG5vdyBhIHNwZWNpYWwgY2FzZSBvZiBzY3hfYnBmX2RzcV9yZWVucSgpIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGVcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc3Ni0gKiBmdXR1cmUuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05Nzc4PV9fYnBmX2tmdW5jIHZvaWQgc2N4X2JwZl9yZWVucXVldWVfbG9jYWxfX192Mihjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3Nzkte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzgwOlx0c2N4X2JwZl9kc3FfcmVlbnEoU0NYX0RTUV9MT0NBTCwgMCwgYXV4KTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc4MS19XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDU5MT1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfcGVlaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVV9QUk9URUNURUQgfCBLRl9SRVRfTlVMTClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA1OTI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3JlZW5xLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDU5My1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9yZWVucXVldWVfbG9jYWxfX192MiwgS0ZfSU1QTElDSVRfQVJHUylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzOTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERTUSBEZXN0cnVjdGlvbiBSYWNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIERTUSBpc3N1ZSBhbmQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgeWVzLCBgc2N4X2JwZl9kc3FfcmVlbnFgIGlzIGRlZmluaXRlbHkgYSBrZnVuYywgYW5kIGNydWNpYWxseSwgaXQmIzM5O3Mgbm9uLXN0YXRpYy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgcmVjYWxsIGFub3RoZXIgb25lIHJlbGF0ZWQgdG8gcmUtZW5xdWV1ZWluZyBpcyBgc2N4X2JwZl9yZWVucXVldWVfbG9jYWxfX192MmAuIE5vdywgdGhlIHByb2JsZW0gZGVzY3JpcHRpb24gaXMgc3BlY2lmaWNhbGx5IHBvaW50aW5nIGF0IGEgcmFjZSBjb25kaXRpb24gZHVyaW5nIGBkZXN0cm95X2RzcSgpYC4gUmlnaHQsIHRoYXQgZnVuY3Rpb24gZ2V0cyBpbnZva2VkIHdoZW4gYSBEU1EgaXMsIHdlbGwsIGRlc3Ryb3llZC4gU2VlbXMgbG9naWNhbC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBkZXN0cm95X2RzcSgpYCBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kIHRoYXQgbWlnaHQgYmUgY2F1c2luZyB0aGlzIHJhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBtZWNoYW5pY3Mgb2YgaXRzIG9wZXJhdGlvbiB0byBpZGVudGlmeSB0aGUgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVzdHJveV9kc3EmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDUwNT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTMzLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NTM0Olx0XHQvKiBkZXN0cm95X2RzcSgpIG1heSByYWNlIGFuZCBpbnZhbGlkYXRlIEBkc3E7IHNraXAgKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUzNS1cdFx0aWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTAxOT1zdGF0aWMgREVGSU5FX0lSUV9XT1JLKGZyZWVfZHNxX2lycV93b3JrLCBmcmVlX2RzcV9pcnFfd29ya2ZuKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAyMC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NTAyMTpzdGF0aWMgdm9pZCBkZXN0cm95X2RzcShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHU2NCBkc3FfaWQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUwMjIte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTIzMD1zdGF0aWMgdm9pZCBzY3hfc2NoZWRfZnJlZV9yY3Vfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01Mjk1LVx0XHR3aGlsZSAoIUlTX0VSUl9PUl9OVUxMKChkc3EgPSByaGFzaHRhYmxlX3dhbGtfbmV4dChcdTAwMjZyaHRfaXRlcikpKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NTI5NjpcdFx0XHRkZXN0cm95X2RzcShzY2gsIGRzcS1cdTAwM2VpZCk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUyOTctXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NTQ3PV9fYnBmX2tmdW5jIHMzMiBzY3hfYnBmX2RzcV9ucl9xdWV1ZWQodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU4NC0vKipcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTU4NTogKiBzY3hfYnBmX2Rlc3Ryb3lfZHNxIC0gRGVzdHJveSBhIGN1c3RvbSBEU1Fcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU4Ni0gKiBAZHNxX2lkOiBEU1EgdG8gZGVzdHJveVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU5My0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTU5NDpfX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZGVzdHJveV9kc3EodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTk1LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk2MDAtXHRpZiAoc2NoKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NjAxOlx0XHRkZXN0cm95X2RzcShzY2gsIGRzcV9pZCk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk2MDItfVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA1ODk9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX25yX3F1ZXVlZCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA1OTA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZGVzdHJveV9kc3EsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNTkxLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9wZWVrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVX1BST1RFQ1RFRCB8IEtGX1JFVF9OVUxMKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzUyMwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQ1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSYWNlIENvbmRpdGlvbiBpbiB0aGUgRXh0ZW5zaWJsZSBTY2hlZHVsZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBmaXggcmVsYXRlZCB0byB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgKHNjaGVkX2V4dCkgYW5kIGEgY3VzdG9tIGRpc3BhdGNoIHF1ZXVlIChEU1EpLiBJdCBsb29rcyBsaWtlIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgZGVzdHJveWluZyB0aGUgRFNRLiBUaGUgY29yZSBpc3N1ZSBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIHRoaXMgZGVzdHJ1Y3Rpb24gcHJvY2VzcyBhbmQgdGhlIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucyBtYW5hZ2VkIGJ5IGBzY3hfYnBmX2RzcV9yZWVucWAuCgpUaGVyZWZvcmUsIG15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZXNlIHR3byBmdW5jdGlvbnM6IGBzY3hfYnBmX2RzcV9yZWVucWAgYW5kIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGV5JiMzOTtyZSBiZWhhdmluZyBjb3JyZWN0bHkgaW4gdGhlIGZhY2Ugb2YgZWFjaCBvdGhlci4gSSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgdGhleSBhcmUgYm90aCBub24tc3RhdGljIGFuZCBleHBvcnRlZCwgc3BlY2lmaWNhbGx5IGBfX2JwZl9rZnVuY2AsIG1lYW5pbmcgdGhleSBhcmUgYWNjZXNzaWJsZSB0byBCUEYgY29kZSwgYW5kIHRoZXJlZm9yZSB0aGlzIHJhY2UgaXMgYSBnZW51aW5lIGNvbmNlcm4uCgpFc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBjcml0aWNhbCByYWNlIGNvbmRpdGlvbiB3aXRoaW4gdGhlIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBvZiBzY2hlZF9leHQuIFRoaXMgaXMgdGhlIHBsYWNlIHRvIGJlLCB0byBsb29rIHRvIGJlIGZ1enppbmcuIFRoaXMgaXMgcGFydGljdWxhcmx5IHJlbGV2YW50IHdoZW4gYSBCUEYgc2NoZWR1bGVyIGlzIGluIHVzZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQuIFdlIGRlZmluaXRlbHkgbmVlZCBgU0NIRURfQ0xBU1NfRVhUYC4gYEJQRl9TWVNDQUxMYCBhbmQgYERFQlVHX0lORk9fQlRGYCBhcmUgdXN1YWxseSBzdGFuZGFyZCBmb3IgYW55IEJQRiBmdXp6aW5nIHNldHVwIGFueXdheSwgc28gSSYjMzk7bGwgYXNzdW1lIHRob3NlIGFyZSBpbiBwbGFjZS4gVGhlcmVmb3JlLCBgU0NIRURfQ0xBU1NfRVhUYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlLCBhbmQgSSYjMzk7bGwga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgZnVydGhlciBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQ0hFRF9DTEFTU19FWFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL0tjb25maWcucHJlZW1wdD0xNTE9Y29uZmlnIFNDSEVEX0NPUkVcbi0tXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE2OC1cbmtlcm5lbC9LY29uZmlnLnByZWVtcHQ6MTY5OmNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTcwLVx0Ym9vbCBcJiMzNDtFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0MjYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTY2hlZHVsZXIgQ2xhc3MgRXh0ZW5zaW9uIFJhY2UgQ29uZGl0aW9uKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLiBJcyBgU0NIRURfQ0xBU1NfRVhUYCB0cnVseSB0aGUgKm9ubHkqIHNjaGVkdWxlciBjbGFzcyBleHRlbnNpb24gd2UgbmVlZCB0byBjb25zaWRlciBoZXJlPyBZZXMsIHRoYXQgY2hlY2tzIG91dC4gR29vZC4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoaXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLiBUaW1lIHRvIHJldmlldyB0aGUgYEZvY3VzU3ltYm9sc2AuCgpSaWdodCwgc28gd2UgaGF2ZSBgc2N4X2JwZl9kc3FfcmVlbnFgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAuIFRob3NlIGFyZSB0aGUgQlBGIGtmdW5jcyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIHdob2xlIGlzc3VlLiBXZSBuZWVkIHRvIGJlIHByZWNpc2UgYWJvdXQgaG93IHRoZXkgaW50ZXJhY3QgYW5kIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXR5IGxpZXMuCgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgc2VxdWVuY2U6IEZpcnN0LCBgc2N4X2JwZl9kc3FfcmVlbnFgIGdldHMgY2FsbGVkLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBgc2N4X2RlZmVycmVkX3JlZW5xX3VzZXJgIHRvIGBycS0mZ3Q7c2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzYC4gVGhhdCYjMzk7cyB0aGUgZW5xdWV1aW5nIHNpZGUuIFRoZW4sIGNvbmN1cnJlbnRseSwgYHNjeF9icGZfZGVzdHJveV9kc3FgIGlzIGNhbGxlZC4gQWgsIHJpZ2h0LiBUaGlzIGRlc3Ryb3lzIHRoZSBEU1EuIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgRFNRJiMzOTtzIElEIHRvIGBTQ1hfRFNRX0ZMQUdfQlVJTFRJTmAuLi4gaG9sZCBvbiwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgcGFydC4gQWgsIHRoZSBwYXRjaCBub3RlcyBjbGVhcmx5IGluZGljYXRlIHRoYXQgdGhlIERTUSYjMzk7cyBJRCBpcyBzZXQgYnkgYGRzcS0mZ3Q7aWQgJmFtcDsgU0NYX0RTUV9GTEFHX0JVSUxUSU5gLiBCZXN0IHRvIHZlcmlmeSBleGFjdGx5IHdoYXQgYGRlc3Ryb3lfZHNxYCBkb2VzIGludGVybmFsbHksIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAyMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1MDIxOlx0c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxuNTAyMjpcdHtcbjUwMjM6XHRcdHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxO1xuNTAyNDpcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbjUwMjU6XHRcbjUwMjY6XHRcdHJjdV9yZWFkX2xvY2soKTtcbjUwMjc6XHRcbjUwMjg6XHRcdGRzcSA9IGZpbmRfdXNlcl9kc3Eoc2NoLCBkc3FfaWQpO1xuNTAyOTpcdFx0aWYgKCFkc3EpXG41MDMwOlx0XHRcdGdvdG8gb3V0X3VubG9ja19yY3U7XG41MDMxOlx0XG41MDMyOlx0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZHNxLVx1MDAzZWxvY2ssIGZsYWdzKTtcbjUwMzM6XHRcbjUwMzQ6XHRcdGlmIChkc3EtXHUwMDNlbnIpIHtcbjUwMzU6XHRcdFx0c2N4X2Vycm9yKHNjaCwgXCYjMzQ7YXR0ZW1wdGluZyB0byBkZXN0cm95IGluLXVzZSBkc3EgMHglMDE2bGx4IChucj0ldSlcJiMzNDssXG41MDM2Olx0XHRcdFx0ICBkc3EtXHUwMDNlaWQsIGRzcS1cdTAwM2Vucik7XG41MDM3Olx0XHRcdGdvdG8gb3V0X3VubG9ja19kc3E7XG41MDM4Olx0XHR9XG41MDM5Olx0XG41MDQwOlx0XHRpZiAocmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcdTAwMjZzY2gtXHUwMDNlZHNxX2hhc2gsIFx1MDAyNmRzcS1cdTAwM2VoYXNoX25vZGUsXG41MDQxOlx0XHRcdFx0XHQgICBkc3FfaGFzaF9wYXJhbXMpKVxuNTA0MjpcdFx0XHRnb3RvIG91dF91bmxvY2tfZHNxO1xuNTA0MzpcdFxuNTA0NDpcdFx0LypcbjUwNDU6XHRcdCAqIE1hcmsgZGVhZCBieSBpbnZhbGlkYXRpbmcgLVx1MDAzZWlkIHRvIHByZXZlbnQgc2N4X2Rpc3BhdGNoX2VucXVldWUoKSBmcm9tXG41MDQ2Olx0XHQgKiBxdWV1ZWluZyBtb3JlIHRhc2tzLiBBcyB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnl3aGVyZSxcbjUwNDc6XHRcdCAqIGZyZWVpbmcgaXMgYm91bmNlZCB0aHJvdWdoIGFuIGlycSB3b3JrIHRvIGF2b2lkIG5lc3RpbmcgUkNVXG41MDQ4Olx0XHQgKiBvcGVyYXRpb25zIGluc2lkZSBzY2hlZHVsZXIgbG9ja3MuXG41MDQ5Olx0XHQgKi9cbjUwNTA6XHRcdGRzcS1cdTAwM2VpZCA9IFNDWF9EU1FfSU5WQUxJRDtcbjUwNTE6XHRcdGlmIChsbGlzdF9hZGQoXHUwMDI2ZHNxLVx1MDAzZWZyZWVfbm9kZSwgXHUwMDI2ZHNxc190b19mcmVlKSlcbjUwNTI6XHRcdFx0aXJxX3dvcmtfcXVldWUoXHUwMDI2ZnJlZV9kc3FfaXJxX3dvcmspO1xuNTA1MzpcdFxuNTA1NDpcdG91dF91bmxvY2tfZHNxOlxuNTA1NTpcdFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZHNxLVx1MDAzZWxvY2ssIGZsYWdzKTtcbjUwNTY6XHRvdXRfdW5sb2NrX3JjdTpcbjUwNTc6XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuNTA1ODpcdH1cbjUwNTk6XHRcbjUwNjA6XHQjaWZkZWYgQ09ORklHX0VYVF9HUk9VUF9TQ0hFRFxuNTA2MTpcdHN0YXRpYyB2b2lkIHNjeF9jZ3JvdXBfZXhpdChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG41MDYyOlx0e1xuNTA2MzpcdFx0c3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcztcbjUwNjQ6XHRcbjUwNjU6XHRcdC8qXG41MDY2Olx0XHQgKiBzY3hfdGdfb24vb2ZmbGluZSgpIGFyZSBleGNsdWRlZCB0aHJvdWdoIGNncm91cF9sb2NrKCkuIElmIHdlIHdhbGtcbjUwNjc6XHRcdCAqIGNncm91cHMgYW5kIGV4aXQgYWxsIHRoZSBpbml0ZWQgb25lcywgYWxsIG9ubGluZSBjZ3JvdXBzIGFyZSBleGl0ZWQuXG41MDY4Olx0XHQgKi9cbjUwNjk6XHRcdGNzc19mb3JfZWFjaF9kZXNjZW5kYW50X3Bvc3QoY3NzLCBcdTAwMjZyb290X3Rhc2tfZ3JvdXAuY3NzKSB7XG41MDcwOlx0XHRcdHN0cnVjdCB0YXNrX2dyb3VwICp0ZyA9IGNzc190Zyhjc3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTgyNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYGRlc3Ryb3lfZHNxYCBGdW5jdGlvbiBhbmQgSW52YWxpZGF0aW5nIHRoZSBEYXRhIFN0cnVjdHVyZSBJZGVudGlmaWVyKioKClJpZ2h0LCBzbyBgZGVzdHJveV9kc3FgIGlzIGNsZWFybHkgc2V0dGluZyBgZHNxLSZndDtpZCA9IFNDWF9EU1FfSU5WQUxJRGAuIE1ha2VzIHNlbnNlOyB3ZSYjMzk7cmUgaW52YWxpZGF0aW5nIHRoZSBkYXRhIHN0cnVjdHVyZSBhZnRlciBkZXN0cnVjdGlvbi4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gaW1tZWRpYXRlbHkgdmVyaWZ5IHdoYXQgYFNDWF9EU1FfSU5WQUxJRGAgYWN0dWFsbHkgKmlzKi4gSXMgaXQgLTE/IDA/IFNvbWUgbGFyZ2UsIGltcHJvYmFibGUgbnVtYmVyPyBVbmRlcnN0YW5kaW5nIHRoYXQgY29uc3RhbnQgaXMgY3JpdGljYWwgdG8gZW5zdXJpbmcgd2UgZG9uJiMzOTt0IGFjY2lkZW50YWxseSByZXVzZSB0aGUgbm93LWRlc3Ryb3llZCBgZHNxYCBoYW5kbGUgd2l0aG91dCBwcm9wZXIgcmUtaW5pdGlhbGl6YXRpb24sIG9yIHdvcnNlLCB0aGF0IGl0IGRvZXNuJiMzOTt0IGNvbGxpZGUgd2l0aCBzb21lIHZhbGlkIGRhdGEgc3RydWN0dXJlLiBJdCYjMzk7cyB0aGUgbHluY2hwaW4gb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN0cmF0ZWd5IGhlcmUgYW5kIHNob3VsZCBiZSBpbW1lZGlhdGVseSB2ZXJpZmlhYmxlIGJ5IHRoZSB0ZWFtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTQ1hfRFNRX0lOVkFMSUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTYyMj1zdGF0aWMgdm9pZCBzY3hfZGlzcGF0Y2hfZW5xdWV1ZShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBycSAqcnEsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjQwLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxNjQxOlx0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpIHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTY0Mi1cdFx0XHRzY3hfZXJyb3Ioc2NoLCBcJiMzNDthdHRlbXB0aW5nIHRvIGRpc3BhdGNoIHRvIGEgZGVzdHJveWVkIGRzcVwmIzM0Oyk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xODg4PXN0YXRpYyB2b2lkIG1hcmtfZGlyZWN0X2Rpc3BhdGNoKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE5MTEtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE5MTI6XHRXQVJOX09OX09OQ0UocC1cdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTkxMy1cdFdBUk5fT05fT05DRShwLVx1MDAzZXNjeC5kZHNwX2VucV9mbGFncyk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xOTM2PXN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9kaXJlY3RfZGlzcGF0Y2goc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTM3LXtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTkzODpcdHAtXHUwMDNlc2N4LmRkc3BfZHNxX2lkID0gU0NYX0RTUV9JTlZBTElEO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTM5LVx0cC1cdTAwM2VzY3guZGRzcF9lbnFfZmxhZ3MgPSAwO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MjAxMD12b2lkIHNjeF9kb19lbnF1ZXVlX3Rhc2soc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1NjQgZW5xX2ZsYWdzLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjA2Mi1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjA2MzpcdGlmIChwLVx1MDAzZXNjeC5kZHNwX2RzcV9pZCAhPSBTQ1hfRFNRX0lOVkFMSUQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwNjQtXHRcdGdvdG8gZGlyZWN0O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjA5Ni1cdCpkZHNwX3Rhc2twID0gTlVMTDtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjA5NzpcdGlmIChwLVx1MDAzZXNjeC5kZHNwX2RzcV9pZCAhPSBTQ1hfRFNRX0lOVkFMSUQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwOTgtXHRcdGdvdG8gZGlyZWN0O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9Mzk1Nj12b2lkIGluaXRfc2N4X2VudGl0eShzdHJ1Y3Qgc2NoZWRfZXh0X2VudGl0eSAqc2N4KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk2NS1cdHNjeC1cdTAwM2VydW5uYWJsZV9hdCA9IGppZmZpZXM7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM5NjY6XHRzY3gtXHUwMDNlZGRzcF9kc3FfaWQgPSBTQ1hfRFNRX0lOVkFMSUQ7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NjctXHRzY3gtXHUwMDNlc2xpY2UgPSBTQ1hfU0xJQ0VfREZMO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTAyMT1zdGF0aWMgdm9pZCBkZXN0cm95X2RzcShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHU2NCBkc3FfaWQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MDQ5LVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjUwNTA6XHRkc3EtXHUwMDNlaWQgPSBTQ1hfRFNRX0lOVkFMSUQ7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUwNTEtXHRpZiAobGxpc3RfYWRkKFx1MDAyNmRzcS1cdTAwM2VmcmVlX25vZGUsIFx1MDAyNmRzcXNfdG9fZnJlZSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTU1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBgU0NYX0RTUV9JTlZBTElEYCBjb25zdGFudCBpcyBkZWZpbmVkLiBLbm93aW5nIHRoZSBMaW51eCBrZXJuZWwsIHRoZSBsaWtlbHkgY2FuZGlkYXRlcyBhcmUgaW4gdGhlIGhlYWRlciBmaWxlcyBmb3Igc2NoZWR1bGVyIGV4dGVuc2lvbnMuIEkgc2hvdWxkIGNoZWNrIGBpbmNsdWRlL3VhcGkvbGludXgvc2NoZWQvZXh0LmhgIGZpcnN0LCBhcyB0aGF0IHVzdWFsbHkgY29udGFpbnMgdGhlIHVzZXItc3BhY2UgYWNjZXNzaWJsZSBkZWZpbml0aW9ucy4gSWYgaXQmIzM5O3Mgbm90IHRoZXJlLCB0aGVuIEkmIzM5O2xsIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgaW50ZXJuYWwgc3RydWN0dXJlcyBhbmQgbG9vayBpbiBga2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHByb2dyZXNzaW9uIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHVzYWdlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NDWF9EU1FfSU5WQUxJRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oPTUzPWVudW0gc2N4X2RzcV9pZF9mbGFncyB7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC01Ni1cbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0Lmg6NTc6XHRTQ1hfRFNRX0lOVkFMSURcdFx0PSBTQ1hfRFNRX0ZMQUdfQlVJTFRJTiB8IDAsXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oLTU4LVx0U0NYX0RTUV9HTE9CQUxcdFx0PSBTQ1hfRFNRX0ZMQUdfQlVJTFRJTiB8IDEsXG4tLVxuaW5pdC9pbml0X3Rhc2suYz0xMDU9c3RydWN0IHRhc2tfc3RydWN0IGluaXRfdGFzayBfX2FsaWduZWQoTDFfQ0FDSEVfQllURVMpID0ge1xuLS1cbmluaXQvaW5pdF90YXNrLmMtMTUwLVx0XHQucnVubmFibGVfYXRcdD0gSU5JVElBTF9KSUZGSUVTLFxuaW5pdC9pbml0X3Rhc2suYzoxNTE6XHRcdC5kZHNwX2RzcV9pZFx0PSBTQ1hfRFNRX0lOVkFMSUQsXG5pbml0L2luaXRfdGFzay5jLTE1Mi1cdFx0LnNsaWNlXHRcdD0gU0NYX1NMSUNFX0RGTCxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTE2MjI9c3RhdGljIHZvaWQgc2N4X2Rpc3BhdGNoX2VucXVldWUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgcnEgKnJxLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTY0MC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTY0MTpcdFx0aWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKSB7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2NDItXHRcdFx0c2N4X2Vycm9yKHNjaCwgXCYjMzQ7YXR0ZW1wdGluZyB0byBkaXNwYXRjaCB0byBhIGRlc3Ryb3llZCBkc3FcJiMzNDspO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTg4OD1zdGF0aWMgdm9pZCBtYXJrX2RpcmVjdF9kaXNwYXRjaChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTExLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxOTEyOlx0V0FSTl9PTl9PTkNFKHAtXHUwMDNlc2N4LmRkc3BfZHNxX2lkICE9IFNDWF9EU1FfSU5WQUxJRCk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE5MTMtXHRXQVJOX09OX09OQ0UocC1cdTAwM2VzY3guZGRzcF9lbnFfZmxhZ3MpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTkzNj1zdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfZGlyZWN0X2Rpc3BhdGNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTkzNy17XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE5Mzg6XHRwLVx1MDAzZXNjeC5kZHNwX2RzcV9pZCA9IFNDWF9EU1FfSU5WQUxJRDtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTkzOS1cdHAtXHUwMDNlc2N4LmRkc3BfZW5xX2ZsYWdzID0gMDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTIwMTA9dm9pZCBzY3hfZG9fZW5xdWV1ZV90YXNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGVucV9mbGFncyxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwNjItXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjIwNjM6XHRpZiAocC1cdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yMDY0LVx0XHRnb3RvIGRpcmVjdDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwOTYtXHQqZGRzcF90YXNrcCA9IE5VTEw7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjIwOTc6XHRpZiAocC1cdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yMDk4LVx0XHRnb3RvIGRpcmVjdDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM5NTY9dm9pZCBpbml0X3NjeF9lbnRpdHkoc3RydWN0IHNjaGVkX2V4dF9lbnRpdHkgKnNjeClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NjUtXHRzY3gtXHUwMDNlcnVubmFibGVfYXQgPSBqaWZmaWVzO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozOTY2Olx0c2N4LVx1MDAzZWRkc3BfZHNxX2lkID0gU0NYX0RTUV9JTlZBTElEO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zOTY3LVx0c2N4LVx1MDAzZXNsaWNlID0gU0NYX1NMSUNFX0RGTDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTUwMjE9c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTA0OS1cdCAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1MDUwOlx0ZHNxLVx1MDAzZWlkID0gU0NYX0RTUV9JTlZBTElEO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MDUxLVx0aWYgKGxsaXN0X2FkZChcdTAwMjZkc3EtXHUwMDNlZnJlZV9ub2RlLCBcdTAwMjZkc3FzX3RvX2ZyZWUpKVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtX2RlZnMuYXV0b2dlbi5oLTYwLSNkZWZpbmUgSEFWRV9TQ1hfRFNRX0ZMQUdfTE9DQUxfT05cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtX2RlZnMuYXV0b2dlbi5oOjYxOiNkZWZpbmUgSEFWRV9TQ1hfRFNRX0lOVkFMSURcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtX2RlZnMuYXV0b2dlbi5oLTYyLSNkZWZpbmUgSEFWRV9TQ1hfRFNRX0dMT0JBTFxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmJwZi5oPTQzPWNvbnN0IHZvbGF0aWxlIHU2NCBfX1NDWF9EU1FfRkxBR19MT0NBTF9PTiBfX3dlYWs7XG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1zLmF1dG9nZW4uYnBmLmgtNDUtXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvZW51bXMuYXV0b2dlbi5icGYuaDo0Njpjb25zdCB2b2xhdGlsZSB1NjQgX19TQ1hfRFNRX0lOVkFMSUQgX193ZWFrO1xudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1zLmF1dG9nZW4uYnBmLmg6NDc6I2RlZmluZSBTQ1hfRFNRX0lOVkFMSUQgX19TQ1hfRFNRX0lOVkFMSURcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmJwZi5oLTQ4LVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmgtMjAtXHRTQ1hfRU5VTV9TRVQoc2tlbCwgc2N4X2RzcV9pZF9mbGFncywgU0NYX0RTUV9GTEFHX0xPQ0FMX09OKTsgXFxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmg6MjE6XHRTQ1hfRU5VTV9TRVQoc2tlbCwgc2N4X2RzcV9pZF9mbGFncywgU0NYX0RTUV9JTlZBTElEKTsgXFxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmgtMjItXHRTQ1hfRU5VTV9TRVQoc2tlbCwgc2N4X2RzcV9pZF9mbGFncywgU0NYX0RTUV9HTE9CQUwpOyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjcxOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBTQ1hfRFNRX0lOVkFMSURgIEJ1ZyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBTQ1hfRFNRX0lOVkFMSURgIGhhcyB0aGUgYFNDWF9EU1FfRkxBR19CVUlMVElOYCBmbGFnIHNldC4gVGhpcyBtZWFucyB0aGF0IHdoZW4gd2UgcGVyZm9ybSB0aGUgYml0d2lzZSBBTkQgb3BlcmF0aW9uLCBgZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTmAgd2lsbCBldmFsdWF0ZSB0byB0cnVlIGZvciBgU0NYX0RTUV9JTlZBTElEYC4gVGhlIHBhdGNoIGNvcnJlY3RseSByZWNvZ25pemVzIHRoaXMgd2l0aCBgaWYgKHVubGlrZWx5KGRzcS0mZ3Q7aWQgJmFtcDsgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKWAgYW5kIHRoZW4gc2tpcHMgdGhlIGludmFsaWQgcXVldWUuIFRoaXMgc2VlbXMgdG8gYWxpZ24gcGVyZmVjdGx5IHdpdGggdGhlIHJlcG9ydGVkIGJ1Zy4gSSB0aGluayBJJiMzOTt2ZSBnb3QgaXQuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCwgdGhlICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDsgYXMgSSBsaWtlIHRvIGNhbGwgdGhlbS4gQmFzZWQgb24gdGhpcywgaXQgbG9va3MgbGlrZSBgc2N4X2JwZl9kc3FfcmVlbnFgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYXJlIHdoZXJlIHRoZSBhY3Rpb24gaGFwcGVucy4KCldhaXQsIGBzY3hfYnBmX2RzcV9yZWVucWAgaXMgYSBrZnVuYyEgVGhhdCBtZWFucyBpdCBjYW4gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gQlBGIGNvZGUgd2hpY2ggaXMgaW1wb3J0YW50LCBidXQgd2hhdCBlbHNlPwoKYGRlc3Ryb3lfZHNxYCBpcyBzdGF0aWMsIGJ1dCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgc2N4X2JwZl9kZXN0cm95X2RzcWAuIFRoZW4gd2UgaGF2ZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AsIHdoaWNoIGlzIGFsc28gc3RhdGljLCBidXQgdGhhdCYjMzk7cyBjYWxsZWQgZnJvbSBgcnVuX2RlZmVycmVkYC4gSSBoYXZlIHRvIHRyYWNlIGhvdyBgcnVuX2RlZmVycmVkYCBpcyBjYWxsZWQsIGFuZCB0aGF0IGxvb2tzIGxpa2UgYHRhc2tfd29rZW5fc2N4YCwgYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gLCBhbmQgYGRlZmVycmVkX2lycV93b3JrZm5gLiBPa2F5LCBzbywgd2l0aCB0aGVzZSBjb25uZWN0aW9ucywgYHNjeF9icGZfZHNxX3JlZW5xYCBhbmQgYHNjeF9icGZfZGVzdHJveV9kc3FgIGFyZSBkZWZpbml0ZWx5IHRoZSByaWdodCBGb2N1c1N5bWJvbHMuIFRoZSB3YXkgdGhlc2UgdGhpbmdzIGFyZSBjYWxsZWQgc2VlbXMgdG8gZXhwbGFpbiB0aGUgaXNzdWUuCgpMZXQmIzM5O3MgZG8gYSBmaW5hbCBjaGVjazogSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBgc2N4X2JwZl9kc3FfcmVlbnFgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIGFkZGluZyB0byBgZGVmZXJyZWRfcmVlbnFfdXNlcnNgLiBJIHNlZSB0aGF0IGBzY2hlZHVsZV9kc3FfcmVlbnFgIGRvZXMgYWRkIHRvIHRoaXMgbGlzdC4gQW5kLCB0aGFua2Z1bGx5LCBgc2NoZWR1bGVfZHNxX3JlZW5xYCBpcyBjYWxsZWQgZGlyZWN0bHkgYnkgYHNjeF9icGZfZHNxX3JlZW5xYC4gUGVyZmVjdCEgTm8gb3RoZXIgb2J2aW91cyBjYWxsZXJzLiBJIHRoaW5rIEkmIzM5O20gY29uZmlkZW50IGFib3V0IHRoZXNlIEZvY3VzU3ltYm9scy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoZWR1bGVfZHNxX3JlZW5xJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMjU9c3RhdGljIHZvaWQgc2NoZWR1bGVfZGVmZXJyZWRfbG9ja2VkKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY0LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDY1OnZvaWQgc2NoZWR1bGVfZHNxX3JlZW5xKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNjYtXHRcdFx0dTY0IHJlZW5xX2ZsYWdzLCBzdHJ1Y3QgcnEgKmxvY2tlZF9ycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQzODk9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV9sb2NhbHMoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ0MjAtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ0MjE6XHRcdC8qIHNlZSBzY2hlZHVsZV9kc3FfcmVlbnEoKSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NDIyLVx0XHRzbXBfbWIoKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1MDU9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUzMC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDUzMTpcdFx0Lyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MzItXHRcdHNtcF9tYigpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTc0Mj1fX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZHNxX3JlZW5xKHU2NCBkc3FfaWQsIHU2NCByZWVucV9mbGFncyxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3NjMtXHRkc3EgPSBmaW5kX2RzcV9mb3JfZGlzcGF0Y2goc2NoLCB0aGlzX3JxKCksIGRzcV9pZCwgc21wX3Byb2Nlc3Nvcl9pZCgpKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc2NDpcdHNjaGVkdWxlX2RzcV9yZWVucShzY2gsIGRzcSwgcmVlbnFfZmxhZ3MsIHNjeF9sb2NrZWRfcnEoKSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3NjUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDEzMQoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKlJlZmluaW5nIHRoZSBGb2N1czogQSBRdWljayBSZWNhcCBhbmQgQ29uZmlybWF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIHplcm9lZCBpbiBvbiB0aGUga2V5IGZ1bmN0aW9ucyBkcml2aW5nIHRoaXMgYmVoYXZpb3I6IGBzY3hfYnBmX2RzcV9yZWVucWAgaXMgdGhlIGNyaXRpY2FsIG9uZSwgYXMgaXQmIzM5O3MgdGhlIHNvbGUgY2FsbGVyIG9mIGBzY2hlZHVsZV9kc3FfcmVlbnFgLCB3aGljaCBpcyB0aGUgYmVoYXZpb3IgSSB3YW50IHRvIHVuZGVyc3RhbmQuIFRoaXMsIGNvbWJpbmVkIHdpdGggYHNjeF9icGZfZGVzdHJveV9kc3FgLCBzZWVtcyB0byBiZSB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb25zIGhhcHBlbi4gR2l2ZW4gdGhhdCwgSSYjMzk7bSBmYWlybHkgY2VydGFpbiB0aG9zZSB0d28gZnVuY3Rpb25zIGFyZSB0aGUgaW1wb3J0YW50IGBGb2N1c1N5bWJvbHNgLiBBbmQgdGhlIHJlbGV2YW50IGBFbmFibGVDb25maWdzYCByZW1haW5zIGFzIGBTQ0hFRF9DTEFTU19FWFRgLCB0aGF0IGlzIHdoZXJlIHRoZSBmdW5jdGlvbmFsaXR5IGlzLiBOb3csIGJlZm9yZSBJIG1vdmUgb24sIGl0JiMzOTtzIGp1c3QgYSBtYXR0ZXIgb2YgYSBmaW5hbCB2ZXJpZmljYXRpb24gdXNpbmcgdGhlIHNldC1yZXN1bHRzIHRvb2wuIEEgcXVpY2ssIGxhc3QgZG91YmxlLWNoZWNrIHdpbGwgZ2l2ZSBtZSBhZGRpdGlvbmFsIGNvbmZpZGVuY2UgaW4gdGhlIHJlc3VsdHMgYmVmb3JlIEkgZGlnIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NDSEVEX0NMQVNTX0VYVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjeF9icGZfZHNxX3JlZW5xJiMzNDssCiAgICAmIzM0O3NjeF9icGZfZGVzdHJveV9kc3EmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTQ0hFRF9DTEFTU19FWFQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3hfYnBmX2RzcV9yZWVucSYjMzQ7LAogICAgJiMzNDtzY3hfYnBmX2Rlc3Ryb3lfZHNxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4dGVuc2libGUgc2NoZWR1bGVyIGNsYXNzIChzY2hlZF9leHQpIHdoZXJlIGEgY3VzdG9tIGRpc3BhdGNoIHF1ZXVlIChEU1EpIGNvdWxkIGJlIGRlc3Ryb3llZCB3aGlsZSB0aGVyZSBhcmUgc3RpbGwgcGVuZGluZyBkZWZlcnJlZCByZS1lbnF1ZXVlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBjb3JlIHNjaGVkdWxpbmcgbG9naWMgZml4IHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gYSBCUEYgc2NoZWR1bGVyIGlzIGxvYWRlZCBhbmQgdXNlcyBjdXN0b20gRFNRcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIEJVR19PTigpIHdpdGggYSBjb25kaXRpb25hbCBjaGVjayBhbmQgYSBgY29udGludWVgIHN0YXRlbWVudCB0byBoYW5kbGUgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWlnaHQgaW52YWxpZGF0ZSBhIGRpc3BhdGNoIHF1ZXVlIChgZHNxYCkuIFRoaXMgY2hhbmdlIHByZXZlbnRzIGEga2VybmVsIHBhbmljIChCVUdfT04pIGFuZCBoYW5kbGVzIHRoZSByYWNlIGdyYWNlZnVsbHkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgb3IgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgcmFjZSBjb25kaXRpb24gd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGRmNzRhNWU0ODdiNjQ0ZjY5OWEyMjViYmFmNWQ2OTA2NGU1YTM1YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDA5OjAzOjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMKaW5kZXggMGJiZTE0NGM5ODExMS4uNjA0YTA1ZGE0MWI5MyAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jCkBAIC00NTMxLDcgJiM0Mzs0NTMxLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKQogCQkvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi8KIAkJc21wX21iKCk7CiAKLQkJQlVHX09OKGRzcS0mZ3Q7aWQgJmFtcDsgU0NYX0RTUV9GTEFHX0JVSUxUSU4pOwomIzQzOwkJLyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovCiYjNDM7CQlpZiAodW5saWtlbHkoZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTikpCiYjNDM7CQkJY29udGludWU7CiAJCXJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpOwogCX0KIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTgKCQkJCQkJCW91dHB1dDogMTMxCgkJCQkJCQl0aG91Z2h0czogMzI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBTY2hlZHVsZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYC4gSXQmIzM5O3MgdHdlYWtpbmcgdGhlIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhhdCB0aGV5JiMzOTtyZSByZXBsYWNpbmcgYSBgQlVHX09OYCBjaGVjayB3aXRoIGEgY29uZGl0aW9uYWwgc2tpcC4gU3BlY2lmaWNhbGx5LCBgQlVHX09OKGRzcS0mZ3Q7aWQgJmFtcDsgU0NYX0RTUV9GTEFHX0JVSUxUSU4pO2AgaXMgbm93IGFuIGBpZiAodW5saWtlbHkoZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTikpIGNvbnRpbnVlO2AuIFNlZW1zIGxpa2UgYSBidWcgZml4LCByaWdodD8gVGhlIGNvbW1lbnQgaW5kaWNhdGVzIGl0JiMzOTtzIHRvIGFkZHJlc3MgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWlnaHQgaW52YWxpZGF0ZSBgZHNxYCBieSBzZXR0aW5nIHRoZSBgU0NYX0RTUV9GTEFHX0JVSUxUSU5gIGZsYWcuIEVzc2VudGlhbGx5LCBpdCB3YXMgY3Jhc2hpbmcgd2l0aCBhIGBCVUdfT05gIGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uLiBJdCYjMzk7cyBub3QgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIGdvb2QuIERlZmluaXRlbHkgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSwgc28gSSYjMzk7bGwgc2V0IE5lZWRzS01TQU4gdG8gZmFsc2UuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIHRob3VnaC4gT2theSwgdGhlIGNvZGUgcmVhZHMgYGRzcWAuIElmIGl0JiMzOTtzIGludmFsaWRhdGVkLCB0aGF0ICpjb3VsZCogYmUgYSB1c2UtYWZ0ZXItZnJlZSwgYW5kIEtBU0FOIHdvdWxkIG5vcm1hbGx5IGNhdGNoIHRoYXQuIFdhaXQsIGJ1dCBgZGVzdHJveV9kc3EoKWAgaW52YWxpZGF0ZXMgaXQgYnkgc2V0dGluZyB0aGUgZmxhZz8gSG1tLi4uIG5vLCBubywgdGhlIHBhdGNoIGl0c2VsZiBqdXN0IGNoYW5nZXMgYSBgQlVHX09OYCB0byBhIHNraXAuIFNvIHRoZSBmdW5jdGlvbiB3aWxsIGp1c3Qgc2tpcCBhIHNwZWNpZmljIERTUSBpZiB0aGUgcmFjZSBjb25kaXRpb24gaGFzIG9jY3VycmVkLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnZvbHZlZCBhdCBhbGwuIExvb2tzIHNvbGlkLiBJJiMzOTtsbCBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIEJVR19PTigpIHdpdGggYSBjb25kaXRpb25hbCBjaGVjayBhbmQgYSBgY29udGludWVgIHN0YXRlbWVudCB0byBoYW5kbGUgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWlnaHQgaW52YWxpZGF0ZSBhIGRpc3BhdGNoIHF1ZXVlIChgZHNxYCkuIFRoaXMgY2hhbmdlIHByZXZlbnRzIGEga2VybmVsIHBhbmljIChCVUdfT04pIGFuZCBoYW5kbGVzIHRoZSByYWNlIGdyYWNlZnVsbHkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgb3IgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgcmFjZSBjb25kaXRpb24gd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGEgQlVHX09OKCkgd2l0aCBhIGNvbmRpdGlvbmFsIGNoZWNrIGFuZCBhIGBjb250aW51ZWAgc3RhdGVtZW50IHRvIGhhbmRsZSBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCBtaWdodCBpbnZhbGlkYXRlIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKS4gVGhpcyBjaGFuZ2UgcHJldmVudHMgYSBrZXJuZWwgcGFuaWMgKEJVR19PTikgYW5kIGhhbmRsZXMgdGhlIHJhY2UgZ3JhY2VmdWxseS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBvciBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlcyByZWxhdGVkIHRvIHRoZSByYWNlIGNvbmRpdGlvbiB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzoyOC45ODE5MDU5MzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgwMTk3NjUyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0NIRURfQ0xBU1NfRVhUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N4X2JwZl9kc3FfcmVlbnFcIixcbiAgICBcInNjeF9icGZfZGVzdHJveV9kc3FcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgQlVHX09OKCkgd2l0aCBhIGNvbmRpdGlvbmFsIGNoZWNrIGFuZCBhIGBjb250aW51ZWAgc3RhdGVtZW50IHRvIGhhbmRsZSBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCBtaWdodCBpbnZhbGlkYXRlIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKS4gVGhpcyBjaGFuZ2UgcHJldmVudHMgYSBrZXJuZWwgcGFuaWMgKEJVR19PTikgYW5kIGhhbmRsZXMgdGhlIHJhY2UgZ3JhY2VmdWxseS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBvciBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlcyByZWxhdGVkIHRvIHRoZSByYWNlIGNvbmRpdGlvbiB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4dGVuc2libGUgc2NoZWR1bGVyIGNsYXNzIChzY2hlZF9leHQpIHdoZXJlIGEgY3VzdG9tIGRpc3BhdGNoIHF1ZXVlIChEU1EpIGNvdWxkIGJlIGRlc3Ryb3llZCB3aGlsZSB0aGVyZSBhcmUgc3RpbGwgcGVuZGluZyBkZWZlcnJlZCByZS1lbnF1ZXVlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBjb3JlIHNjaGVkdWxpbmcgbG9naWMgZml4IHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gYSBCUEYgc2NoZWR1bGVyIGlzIGxvYWRlZCBhbmQgdXNlcyBjdXN0b20gRFNRcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDM6MjguOTgxOTEwODYzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyNTA3ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGRmNzRhNWU0ODdiNjQ0ZjY5OWEyMjViYmFmNWQ2OTA2NGU1YTM1YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxMSAwOTowMzoyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jIGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xcbmluZGV4IDBiYmUxNDRjOTgxMTEuLjYwNGEwNWRhNDFiOTMgMTAwNjQ0XFxuLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuY1xcbisrKyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmNcXG5AQCAtNDUzMSw3ICs0NTMxLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxcbiBcXHRcXHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cXG4gXFx0XFx0c21wX21iKCk7XFxuIFxcbi1cXHRcXHRCVUdfT04oZHNxLVxcdTAwM2VpZCBcXHUwMDI2IFNDWF9EU1FfRkxBR19CVUlMVElOKTtcXG4rXFx0XFx0LyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovXFxuK1xcdFxcdGlmICh1bmxpa2VseShkc3EtXFx1MDAzZWlkIFxcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0cmVlbnFfdXNlcihycSwgZHNxLCByZWVucV9mbGFncyk7XFxuIFxcdH1cXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzozMC4xNTUwNTk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTI5OTUzMjI0NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNDSEVEX0NMQVNTX0VYVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjeF9icGZfZHNxX3JlZW5xXCIsXG4gICAgXCJzY3hfYnBmX2Rlc3Ryb3lfZHNxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4ZGY3NGE1ZTQ4N2I2NDRmNjk5YTIyNWJiYWY1ZDY5MDY0ZTVhMzVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDk6MDM6MjcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jIGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuaW5kZXggMGJiZTE0NGM5ODExMS4uNjA0YTA1ZGE0MWI5MyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9zY2hlZC9leHQvZXh0LmNcbisrKyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmNcbkBAIC00NTMxLDcgKzQ1MzEsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXG4gXHRcdC8qIHNlZSBzY2hlZHVsZV9kc3FfcmVlbnEoKSAqL1xuIFx0XHRzbXBfbWIoKTtcbiBcbi1cdFx0QlVHX09OKGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pO1xuK1x0XHQvKiBkZXN0cm95X2RzcSgpIG1heSByYWNlIGFuZCBpbnZhbGlkYXRlIEBkc3E7IHNraXAgKi9cbitcdFx0aWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKVxuK1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRyZWVucV91c2VyKHJxLCBkc3EsIHJlZW5xX2ZsYWdzKTtcbiBcdH1cbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzozMC4xNTUwNjA4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NzE4OTI0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgU2NoZWR1bGVyIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBmdW5jdGlvbi4gSXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYnV0IGltcG9ydGFudCBjaGFuZ2U6IHRoZXkndmUgcmVwbGFjZWQgYSBoYXJkIGBCVUdfT05gIHdpdGggYSBtb3JlIGdyYWNlZnVsIGNvbmRpdGlvbmFsIGBjb250aW51ZWAuIFRoZSBvbGQgY29kZSB3YXMgcG90ZW50aWFsbHkgY2F1c2luZyBhIGNyYXNoLCBhIHJhY2UgY29uZGl0aW9uIHRoYXQgd291bGQgdHJpZ2dlciB0aGF0IGBCVUdfT05gIHdoZW4gYGRzcS1cdTAwM2VpZGAgaGFkIHRoZSBgU0NYX0RTUV9GTEFHX0JVSUxUSU5gIGZsYWcgc2V0LiBUaGUgbmV3IGxvZ2ljIGRldGVjdHMgdGhpcyByYWNlLCBhbmQgc2ltcGx5IHNraXBzIHRoYXQgZWxlbWVudCwgcHJldmVudGluZyB0aGUgcGFuaWMuXG5cblRoaXMgdGVsbHMgbWUgdGhlcmUncyBhIGNvbmN1cnJlbmN5IGlzc3VlLiBUaGUgc3lzdGVtIG1pZ2h0IGJlIGF0dGVtcHRpbmcgdG8gd29yayB3aXRoIGEgYGRzcWAgb2JqZWN0IChsaWtlbHkgYSBcImRlZmVycmVkIHNjaGVkdWxpbmcgcXVldWVcIikgdGhhdCdzIGJlaW5nIGludmFsaWRhdGVkIG9yIGRlc3Ryb3llZCBjb25jdXJyZW50bHksIGxpa2VseSBieSBhIGNhbGwgdG8gYGRlc3Ryb3lfZHNxKClgLiBUaGF0IHJhY2UgaGFzIGJlZW4gZm91bmQgYW5kIGZpeGVkIC0gZ29vZC4gVGhpcyBtZWFucyB0aGVyZSB3YXMgYSB3aW5kb3cgd2hlcmUgd2UgY291bGQgZGVyZWZlcmVuY2UgYSBkYW5nbGluZyBwb2ludGVyLCB3aGljaCBpcyBuZXZlciBnb29kLlxuXG5TaW5jZSB0aGlzIGFmZmVjdHMgdGhlIGV4dGVuc2libGUgc2NoZWR1bGVyIGNsYXNzLCBgc2NoZWRfZXh0YCwgSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGlzIGZlYXR1cmUuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIHRhcmdldCBzeXN0ZW0gaXMgZXZlbiB1c2luZyB0aGlzIGNvZGUgcGF0aCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gSXQncyBhIGNyaXRpY2FsIGFyZWEsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBidWlsZC10aW1lIGRlcGVuZGVuY2llcy4gSSdsbCBzZWFyY2ggdGhlIGtlcm5lbCBjb25maWdzIGZvciBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjM0LjkyNjk1NjE3NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzg0OTA3MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDM6MzQuOTcwODEzNzQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk2OTc5MjMzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBnZWFyZWQgdG93YXJkcyBhIHVzZXIgd2hvIGtub3dzIHRoZWlyIHN0dWZmOlxuXG4qKkh1bnRpbmcgRG93biBUaG9zZSBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gdHJhY2sgZG93biB0aG9zZSBwcmVlbXB0aW9uLXJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBga2VybmVsL0tjb25maWcucHJlZW1wdGAuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBpdCAqc2hvdWxkKiBjb250YWluIHRoZSBrZXkgc2V0dGluZ3MuIEJ1dCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY292ZXIgYWxsIHRoZSBiYXNlcywgSSdsbCBhbHNvIGdsYW5jZSBhdCBgaW5pdC9LY29uZmlnYC4gWW91IG5ldmVyIGtub3csIHNvbWUgaW5pdGlhbGl6YXRpb24tcmVsYXRlZCBvcHRpb25zICptaWdodCogdG91Y2ggb24gcHJlZW1wdGlvbiwgb3IgbWF5YmUgdGhlcmUgYXJlIHNvbWUgaW5jbHVkZXMgaW4gdGhlcmUgdGhhdCBJJ20gbm90IGltbWVkaWF0ZWx5IGNvbnNpZGVyaW5nLiBBbmQgb2YgY291cnNlLCBJIHNob3VsZCBhbHNvIGltbWVkaWF0ZWx5IGNoZWNrIGBrZXJuZWwvc2NoZWQvS2NvbmZpZ2AuIFByZWVtcHRpb24gaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHNjaGVkdWxlciwgc28gdGhhdCdzIGFub3RoZXIgdmVyeSBsaWtlbHkgbG9jYXRpb24uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBkaWcgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzcsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzozNy45NDA2MDc4ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MDg0ODEwNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjM5LjU4MTQ2OTg4M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NDUzMTY1ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLiBJJ20gcHJldHR5IHN1cmUgaXQncyByZWxhdGVkIHRvIGBjb25maWcgU0NIRURfQ0xBU1NfRVhUYCwgYnV0IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbi4gQmVzdCB3YXkgdG8gY29uZmlybSB0aGF0IGlzIHRvIGxvb2sgYXQgdGhlIHNvdXJjZSBjb2RlLiBJIHNob3VsZCBkZWx2ZSBpbnRvIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCBhbmQgc2VlIGlmIHRoZSBjb21waWxhdGlvbiBvZiBpdHMgY29udGVudHMgaXMgYWN0dWFsbHkgY29udGluZ2VudCB1cG9uIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24uIEdvdHRhIG1ha2Ugc3VyZSBJJ20gbm90IGJhcmtpbmcgdXAgdGhlIHdyb25nIHRyZWUgaGVyZSBiZWZvcmUgSSBkaWcgYW55IGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjQyLjMyNjc4OTQ2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjgzNzE0MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzo0Mi4zNjk2MzE3MDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTA2NjkwMDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgU2NoZWR1bGVyJ3MgTWFrZXVwKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gXCJleHQsXCIgcHJvYmFibHkgc29tZSBleHRlbnNpb24gb3IgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIHNjaGVkdWxlciBjb2RlLiBNeSBpbnN0aW5jdCBpcyB0byBoZWFkIHN0cmFpZ2h0IGZvciB0aGUgYGtlcm5lbC9zY2hlZC9gIGRpcmVjdG9yeSDigJMgdGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgc2NoZWR1bGluZyBsb2dpYyByZXNpZGVzLiBHaXZlbiB0aGF0IGl0J3MgbGlrZWx5IGEgY29uZmlndXJhdGlvbiBvciBidWlsZC1yZWxhdGVkIHNldHRpbmcsIHRoZSBgTWFrZWZpbGVgIGluIHRoYXQgZGlyZWN0b3J5IHNlZW1zIGxpa2UgdGhlIG1vc3QgcHJvYmFibGUgc3RhcnRpbmcgcG9pbnQuIEl0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIHRvIGNoZWNrIGZvciBhbnkgYnVpbGQgb3B0aW9ucyBvciBtb2R1bGUgaW5jbHVzaW9ucyByZWxhdGVkIHRvIHRoZSBzY2hlZHVsZXIuIExldCdzIHNlZSB3aGF0J3MgaW4gYGtlcm5lbC9zY2hlZC9NYWtlZmlsZWAuIEhvcGVmdWxseSwgYGV4dGAgd2lsbCBlaXRoZXIgYmUgZGlyZWN0bHkgbWVudGlvbmVkIG9yIGxlYWQgbWUgdG8gdGhlIHJpZ2h0IGZpbGUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzQsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzo0NC44NzYzMjM5NDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyOTE5MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL01ha2VmaWxlPTg9Y2NmbGFncy15ICs9ICQoY2FsbCBjYy1kaXNhYmxlLXdhcm5pbmcsIHVudXNlZC1idXQtc2V0LXZhcmlhYmxlKVxcbi0tXFxua2VybmVsL3NjaGVkL01ha2VmaWxlLTEwLSMgVGhlc2UgZmlsZXMgYXJlIGRpc2FibGVkIGJlY2F1c2UgdGhleSBwcm9kdWNlIG5vbi1pbnRlcmVzdGluZyBmbGFreSBjb3ZlcmFnZVxcbmtlcm5lbC9zY2hlZC9NYWtlZmlsZToxMTojIHRoYXQgaXMgbm90IGEgZnVuY3Rpb24gb2Ygc3lzY2FsbCBpbnB1dHMuIEUuZy4gaW52b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlcy5cXG5rZXJuZWwvc2NoZWQvTWFrZWZpbGUtMTItS0NPVl9JTlNUUlVNRU5UIDo9IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDM6NDQuOTE5MjUwNTc4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzQwNTIwNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgS2VybmVsIFNvdXJjZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIHRocm91Z2ggdGhpcyBrZXJuZWwgY29kZSBhbmQgSSBqdXN0IHNhdyBhIHJlZmVyZW5jZSB0byBgZXh0LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGVyZSB0aGF0IHNvdXJjZSBmaWxlIGFjdHVhbGx5IGxpdmVzIHdpdGhpbiB0aGlzIHNwcmF3bGluZyBwcm9qZWN0LiBJdCAqc2hvdWxkKiBiZSBpbiBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AsIGJ1dCB5b3UgY2FuJ3QgYXNzdW1lIGFueXRoaW5nIGluIHRoaXMgZW52aXJvbm1lbnQuIEJlc3QgcHJhY3RpY2UgZGljdGF0ZXMgdGhhdCBJIHZlcmlmeSB0aGlzIGJ5IGNoZWNraW5nIHRoZSBjb3JyZXNwb25kaW5nIGBNYWtlZmlsZWAuIEkgbmVlZCB0byBjb25maXJtIHdoZXJlIHRoaXMgY29tcG9uZW50IGlzIGRlY2xhcmVkIHNvIEkgY2FuIGJldHRlciB1bmRlcnN0YW5kIGl0cyBjb21waWxhdGlvbiBhbmQgbGlua2FnZS4gVGltZSB0byBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9NYWtlZmlsZWAuIExldCdzIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gaGFzIHRvIHNheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI4MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjQ3Ljk5MzMwNTczWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQ3NjY3OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDM6NDguMDM2Nzg5NTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3NjYzNDY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgQmFjayBpbnRvIHRoZSBTY2hlZHVsZXIgTWFrZWZpbGUqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gcmV2aXNpdCBga2VybmVsL3NjaGVkL01ha2VmaWxlYC4gSSBoYWQgYSBuYWdnaW5nIGZlZWxpbmcgYWJvdXQgc29tZXRoaW5nIGluIHRoZXJlLCBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3IgYSBzdWJ0bGUgY29uZmlndXJhdGlvbiBpc3N1ZSB0aGF0IEkgd2FudCB0byBkb3VibGUtY2hlY2suIEl0J3MgdGltZSB0byByZWZyZXNoIG15IG1lbnRhbCBtYXAgb2YgdGhhdCBzcGVjaWZpYyBidWlsZCBwcm9jZXNzIGFuZCBtYWtlIHN1cmUgSSBoYXZlbid0IG92ZXJsb29rZWQgYW55IGltcG9ydGFudCBkZXBlbmRlbmNpZXMgb3IgY29uZGl0aW9uYWwgbG9naWMgcmVsYXRlZCB0byBteSBjdXJyZW50IGFyZWEgb2YgZm9jdXMuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgYnVpbGQgc3lzdGVtIGlzIGJlaGF2aW5nIGFzIEkgZXhwZWN0LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBmaW5lciBwb2ludHMgb2YgdGhlIHNjaGVkdWxlci4gSSdtIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiBob3cgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGluZmx1ZW5jZSB0aGUgbGlua2luZyBvciBjb21waWxhdGlvbiBvZiBjZXJ0YWluIG1vZHVsZXMsIG9yIGV2ZW4gaW1wYWN0IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIGJhc2VkIG9uIHRoZSBmbGFncy4gTGV0J3Mgc2VlIGlmIHRoYXQgcXVpY2sgc2NhbiByZXZlYWxzIGFueXRoaW5nIEkgbWlnaHQgaGF2ZSBtaXNzZWQgZWFybGllci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ5NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjUxLjAxMzQyNjM3MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwNjc3MDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dC9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzo1MS4wNTU1MDQ4ODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzMjcyMTQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIFNjaGVkdWxlciBFeHRlbnNpb24gQnVpbGQgUHJvY2VzcyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHNjaGVkdWxlciBleHRlbnNpb25zIGFyZSBiZWluZyBidWlsdC4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBrZXJuZWwvc2NoZWQvZXh0L01ha2VmaWxlYC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgYnVpbGQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBpbiB0aGVyZS4gVGhhdCdzIHRoZSB0eXBpY2FsIHBsYWNlIGZvciBoYW5kbGluZyBvYmplY3QgZmlsZSBjb21waWxhdGlvbiBhbmQgbGlua2luZyB3aXRoaW4gdGhhdCBwYXJ0IG9mIHRoZSBrZXJuZWwuIExldCdzIHNlZSB3aGF0IHNlY3JldHMgdGhpcyBNYWtlZmlsZSBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcyMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjUzLjk4ODIyODc2M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTY2MCwiRXJyb3IiOiJ0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9zY2hlZC9leHQvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcInRoZSBmaWxlIGRvZXMgbm90IGV4aXN0XCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjUzLjk4ODI3NDc3M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIzNjIwNzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBhIEtlcm5lbCBTY2hlZHVsZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIGRpZmYgbWVudGlvbnMgYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgLiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXMgaG93IHRoaXMgYGV4dC5jYCBmaWxlIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgdGhlIHNjaGVkdWxlciB3aXRoaW4gdGhlIGtlcm5lbC4gSSBzaG91bGQgaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGBrZXJuZWwvc2NoZWQvTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgSSBjYW4gZmluZCB0aGUgZGVwZW5kZW5jeSBncmFwaCBhbmQgYnVpbGQgaW5zdHJ1Y3Rpb25zIGZvciBzY2hlZHVsZXIgY29tcG9uZW50cy4gSXQgd2lsbCBzaG93IG1lIGhvdyBgZXh0LmNgIGlzIGluY2x1ZGVkIGFuZCBpZiBpdOKAmXMgYSBtb2R1bGUsIHBhcnQgb2YgdGhlIGNvcmUsIG9yIHNvbWV0aGluZyBlbHNlLiBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBwcm9jZXNzIGlzIGNydWNpYWwgZm9yIHRyYWNpbmcgdGhlIGNvZGUncyBpbnRlZ3JhdGlvbiBhbmQgcG90ZW50aWFsIGltcGFjdC4gVGhhdCBNYWtlZmlsZSBpcyBteSBmaXJzdCBzdG9wLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTAyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzo1Ni45MTE5MDYwOTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDcyMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2NvcmUuYz03MDEyPWZpbmRfcHJveHlfdGFzayhzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmRvbm9yLCBzdHJ1Y3QgcnFfZmxhZ3MgKnJmKVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYy03MDQwLSAqXFxua2VybmVsL3NjaGVkL2NvcmUuYzo3MDQxOiAqICAgICAgICAgLSBpbiBzeXNjYWxsIG9yIGV4Y2VwdGlvbiBjb250ZXh0LCBhdCB0aGUgbmV4dCBvdXRtb3N0XFxua2VybmVsL3NjaGVkL2NvcmUuYy03MDQyLSAqICAgICAgICAgICBwcmVlbXB0X2VuYWJsZSgpLiAodGhpcyBtaWdodCBiZSBhcyBzb29uIGFzIHRoZSB3YWtlX3VwKCknc1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz04MzY2PXZvaWQgc2NoZWRfc2V0bnVtYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBuaWQpXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTgzNzUtLypcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjgzNzY6ICogSW52b2tlZCBvbiB0aGUgb3V0Z29pbmcgQ1BVIGluIGNvbnRleHQgb2YgdGhlIENQVSBob3RwbHVnIHRocmVhZFxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtODM3Ny0gKiBhZnRlciBlbnN1cmluZyB0aGF0IHRoZXJlIGFyZSBubyB1c2VyIHNwYWNlIHRhc2tzIGxlZnQgb24gdGhlIENQVS5cXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM9MTA2MzM9dm9pZCBjYWxsX3RyYWNlX3NjaGVkX3VwZGF0ZV9ucl9ydW5uaW5nKHN0cnVjdCBycSAqcnEsIGludCBjb3VudClcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtMTA3NTctICogdGhlIGZpeHVwIGZ1bmN0aW9uLiBJZiBpdCB3YXMgaW5pdGlhdGVkIGJ5IGEgYWZmaW5pdHkgY2hhbmdlLCB0aGVuIGl0J3NcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjEwNzU4OiAqIHJ1biBlaXRoZXIgaW4gdGhlIGRlZmVycmVkIHVwZGF0ZSBmdW5jdGlvbiBpbiBjb250ZXh0IG9mIGEgd29ya3F1ZXVlIG9yXFxua2VybmVsL3NjaGVkL2NvcmUuYy0xMDc1OS0gKiBieSBhIHRhc2sgd2hpY2ggZm9ya3MgYSBuZXcgb25lIG9yIGJ5IGEgdGFzayB3aGljaCBleGl0cy4gV2hhdGV2ZXJcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NzAzOT1zdHJ1Y3Qgc2N4X3NjaGVkICpzY3hfYWxsb2NfYW5kX2FkZF9zY2hlZChzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQgKmNtZCxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzA0Mi17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3MDQzOlxcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMgPSBjbWQtXFx1MDAzZW9wcztcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTcwNDQtXFx0c3RydWN0IHNjeF9zY2hlZCAqc2NoO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MTU0LVxcdCAqIENvcHkgb3BzIHRocm91Z2ggdGhlIHJpZ2h0IHVuaW9uIHZpZXcuIEZvciBjaWQtZm9ybSB0aGUgc291cmNlIGlzXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3MTU1OlxcdCAqIHN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZCB3aGljaCBsYWNrcyB0aGUgdHJhaWxpbmcgY3B1X2FjcXVpcmUvXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MTU2LVxcdCAqIGNwdV9yZWxlYXNlOyB0aG9zZSBzdGF5IHplcm8gZnJvbSBremFsbG9jLlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz03Mjk4PXN0YXRpYyBpbnQgY2hlY2tfaG90cGx1Z19zZXEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzI5OTpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzMwMC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTczMjEtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3MzIyOmludCBzY3hfdmFsaWRhdGVfb3BzKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgY29uc3Qgc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTczMjMte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz03MzgyPXN0YXRpYyB2b2lkIHNjeF9yb290X2VuYWJsZV93b3JrZm4oc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzM4NC1cXHRzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQgKmNtZCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQsIHdvcmspO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzM4NTpcXHRzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzID0gY21kLVxcdTAwM2VvcHM7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03Mzg2LVxcdHN0cnVjdCBjZ3JvdXAgKmNncnAgPSByb290X2Nncm91cCgpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz03OTE0PXN0YXRpYyBpbnQgYnBmX3NjeF9pbml0X21lbWJlcihjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5MTcte1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzkxODpcXHRjb25zdCBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqdW9wcyA9IHVkYXRhO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzkxOTpcXHRzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzID0ga2RhdGE7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTIwLVxcdHUzMiBtb2ZmID0gX19idGZfbWVtYmVyX2JpdF9vZmZzZXQodCwgbWVtYmVyKSAvIDg7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5MjMtXFx0c3dpdGNoIChtb2ZmKSB7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTI0OlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGRpc3BhdGNoX21heF9iYXRjaCk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTI1LVxcdFxcdGlmICgqKHUzMiAqKSh1ZGF0YSArIG1vZmYpIFxcdTAwM2UgSU5UX01BWClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkyOC1cXHRcXHRyZXR1cm4gMTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5Mjk6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgZmxhZ3MpOlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkzMC1cXHRcXHRpZiAoKih1NjQgKikodWRhdGEgKyBtb2ZmKSBcXHUwMDI2IH5TQ1hfT1BTX0FMTF9GTEFHUylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkzMy1cXHRcXHRyZXR1cm4gMTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5MzQ6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgbmFtZSk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTM1LVxcdFxcdHJldCA9IGJwZl9vYmpfbmFtZV9jcHkob3BzLVxcdTAwM2VuYW1lLCB1b3BzLVxcdTAwM2VuYW1lLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTQxLVxcdFxcdHJldHVybiAxO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk0MjpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCB0aW1lb3V0X21zKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NDMtXFx0XFx0aWYgKG1zZWNzX3RvX2ppZmZpZXMoKih1MzIgKikodWRhdGEgKyBtb2ZmKSkgXFx1MDAzZVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTQ3LVxcdFxcdHJldHVybiAxO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk0ODpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBleGl0X2R1bXBfbGVuKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NDktXFx0XFx0b3BzLVxcdTAwM2VleGl0X2R1bXBfbGVuID1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk1MS1cXHRcXHRyZXR1cm4gMTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5NTI6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgaG90cGx1Z19zZXEpOlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk1My1cXHRcXHRvcHMtXFx1MDAzZWhvdHBsdWdfc2VxID0gKih1NjQgKikodWRhdGEgKyBtb2ZmKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTQtXFx0XFx0cmV0dXJuIDE7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTU1OlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGNpZF9zaGFyZF9zaXplKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTYtXFx0XFx0b3BzLVxcdTAwM2VjaWRfc2hhcmRfc2l6ZSA9ICoodTMyICopKHVkYXRhICsgbW9mZik7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTU3LVxcdFxcdHJldHVybiAxO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk1ODpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCByZXNjdWVfYmFuZHdpZHRoX3BwdCk6IHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTktXFx0XFx0dTMyIGJ3X3BwdCA9ICoodTMyICopKHVkYXRhICsgbW9mZik7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NjUtXFx0fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk2NjpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCByZXNjdWVfcXVhbnR1bV91cyk6IHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NjctXFx0XFx0dTMyIHF1YW50dW1fdXMgPSAqKHUzMiAqKSh1ZGF0YSArIG1vZmYpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTc2LSNpZmRlZiBDT05GSUdfRVhUX1NVQl9TQ0hFRFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk3NzpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfY2dyb3VwX2lkKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NzgtXFx0XFx0b3BzLVxcdTAwM2VzdWJfY2dyb3VwX2lkID0gKih1NjQgKikodWRhdGEgKyBtb2ZmKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9Nzk4Nj1zdGF0aWMgaW50IGJwZl9zY3hfY2hlY2tfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk5Mi1cXHRzd2l0Y2ggKG1vZmYpIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTM6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgaW5pdF90YXNrKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5OTQtI2lmZGVmIENPTkZJR19FWFRfR1JPVVBfU0NIRURcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTU6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgY2dyb3VwX2luaXQpOlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk5NjpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBjZ3JvdXBfZXhpdCk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTk3OlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGNncm91cF9wcmVwX21vdmUpOlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk5OC0jZW5kaWZcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTk6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgY3B1X29ubGluZSk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDAwOlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGNwdV9vZmZsaW5lKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgwMDE6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgaW5pdF9jaWRzKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgwMDI6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgaW5pdCk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDAzOlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGV4aXQpOlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAwNDpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfYXR0YWNoKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgwMDU6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgc3ViX2RldGFjaCk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDA2LVxcdFxcdGJyZWFrO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDIxLVxcdHN3aXRjaCAobW9mZikge1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAyMjpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBkaXNwYXRjaCk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDIzLVxcdFxcdHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlcHJpdl9zdGFja19yZXF1ZXN0ZWQgPSB0cnVlO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDI1LVxcdFxcdGJyZWFrO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAyNjpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfY2Fwc191cGRhdGVkKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgwMjctXFx0XFx0cHJvZy1cXHUwMDNlYXV4LVxcdTAwM2Vwcml2X3N0YWNrX3JlcXVlc3RlZCA9IHRydWU7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTgwOTY9c3RhdGljIHZvaWQgYnBmX3NjeF91bnJlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODA5Ny17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDk4OlxcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMgPSBrZGF0YTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgwOTktXFx0c3RydWN0IHNjeF9zY2hlZCAqc2NoID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChvcHMtXFx1MDAzZXByaXYsIHRydWUpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz04MTI2PXN0YXRpYyBpbnQgYnBmX3NjeF92YWxpZGF0ZSh2b2lkICprZGF0YSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODEzMC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzE6c3RhdGljIHMzMiBzY2hlZF9leHRfb3BzX19zZWxlY3RfY3B1KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgczMyIHByZXZfY3B1LCB1NjQgd2FrZV9mbGFncykgeyByZXR1cm4gLUVJTlZBTDsgfVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODEzMjpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19lbnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGVucV9mbGFncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzM6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZGVxdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBlbnFfZmxhZ3MpIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTM0OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Rpc3BhdGNoKHMzMiBwcmV2X2NwdSwgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2X19udWxsYWJsZSkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzU6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fdGljayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTM2OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3J1bm5hYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGVucV9mbGFncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzc6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fcnVubmluZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTM4OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3N0b3BwaW5nKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgYm9vbCBydW5uYWJsZSkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzk6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fcXVpZXNjZW50KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGRlcV9mbGFncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDA6c3RhdGljIGJvb2wgc2NoZWRfZXh0X29wc19feWllbGQoc3RydWN0IHRhc2tfc3RydWN0ICpmcm9tLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRvX19udWxsYWJsZSkgeyByZXR1cm4gZmFsc2U7IH1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDE6c3RhdGljIGJvb2wgc2NoZWRfZXh0X29wc19fY29yZV9zY2hlZF9iZWZvcmUoc3RydWN0IHRhc2tfc3RydWN0ICphLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmIpIHsgcmV0dXJuIGZhbHNlOyB9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTQyOnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3NldF93ZWlnaHQoc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1MzIgd2VpZ2h0KSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0MzpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19zZXRfY3B1bWFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrKSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0NDpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX191cGRhdGVfaWRsZShzMzIgY3B1LCBib29sIGlkbGUpIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTQ1OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2NwdV9hY3F1aXJlKHMzMiBjcHUsIHN0cnVjdCBzY3hfY3B1X2FjcXVpcmVfYXJncyAqYXJncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDY6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY3B1X3JlbGVhc2UoczMyIGNwdSwgc3RydWN0IHNjeF9jcHVfcmVsZWFzZV9hcmdzICphcmdzKSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0NzpzdGF0aWMgczMyIHNjaGVkX2V4dF9vcHNfX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBzY3hfaW5pdF90YXNrX2FyZ3MgKmFyZ3MpIHsgcmV0dXJuIC1FSU5WQUw7IH1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDg6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZXhpdF90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHNjeF9leGl0X3Rhc2tfYXJncyAqYXJncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDk6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZW5hYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNTA6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZGlzYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MTUxLSNpZmRlZiBDT05GSUdfRVhUX0dST1VQX1NDSEVEXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTUyOnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19fY2dyb3VwX2luaXQoc3RydWN0IGNncm91cCAqY2dycCwgc3RydWN0IHNjeF9jZ3JvdXBfaW5pdF9hcmdzICphcmdzKSB7IHJldHVybiAtRUlOVkFMOyB9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTUzOnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Nncm91cF9leGl0KHN0cnVjdCBjZ3JvdXAgKmNncnApIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTU0OnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19fY2dyb3VwX3ByZXBfbW92ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBjZ3JvdXAgKmZyb20sIHN0cnVjdCBjZ3JvdXAgKnRvKSB7IHJldHVybiAtRUlOVkFMOyB9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTU1OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Nncm91cF9tb3ZlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IGNncm91cCAqZnJvbSwgc3RydWN0IGNncm91cCAqdG8pIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTU2OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Nncm91cF9jYW5jZWxfbW92ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBjZ3JvdXAgKmZyb20sIHN0cnVjdCBjZ3JvdXAgKnRvKSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1NzpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X3dlaWdodChzdHJ1Y3QgY2dyb3VwICpjZ3JwLCB1MzIgd2VpZ2h0KSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1ODpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2JhbmR3aWR0aChzdHJ1Y3QgY2dyb3VwICpjZ3JwLCB1NjQgcGVyaW9kX3VzLCB1NjQgcXVvdGFfdXMsIHU2NCBidXJzdF91cykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNTk6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY2dyb3VwX3NldF9pZGxlKHN0cnVjdCBjZ3JvdXAgKmNncnAsIGJvb2wgaWRsZSkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgxNjAtI2VuZGlmXFx0LyogQ09ORklHX0VYVF9HUk9VUF9TQ0hFRCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2MTpzdGF0aWMgczMyIHNjaGVkX2V4dF9vcHNfX3N1Yl9hdHRhY2goc3RydWN0IHNjeF9zdWJfYXR0YWNoX2FyZ3MgKmFyZ3MpIHsgcmV0dXJuIC1FSU5WQUw7IH1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNjI6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fc3ViX2RldGFjaChzdHJ1Y3Qgc2N4X3N1Yl9kZXRhY2hfYXJncyAqYXJncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNjM6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY3B1X29ubGluZShzMzIgY3B1KSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2NDpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jcHVfb2ZmbGluZShzMzIgY3B1KSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2NTpzdGF0aWMgczMyIHNjaGVkX2V4dF9vcHNfX2luaXRfY2lkcyh2b2lkKSB7IHJldHVybiAtRUlOVkFMOyB9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTY2OnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19faW5pdCh2b2lkKSB7IHJldHVybiAtRUlOVkFMOyB9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTY3OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2V4aXQoc3RydWN0IHNjeF9leGl0X2luZm8gKmluZm8pIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTY4OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2R1bXAoc3RydWN0IHNjeF9kdW1wX2N0eCAqY3R4KSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2OTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19kdW1wX2NwdShzdHJ1Y3Qgc2N4X2R1bXBfY3R4ICpjdHgsIHMzMiBjcHUsIGJvb2wgaWRsZSkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzA6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZHVtcF90YXNrKHN0cnVjdCBzY3hfZHVtcF9jdHggKmN0eCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODE3MS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzI6c3RhdGljIHN0cnVjdCBzY2hlZF9leHRfb3BzIF9fYnBmX29wc19zY2hlZF9leHRfb3BzID0ge1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE3MzpcXHQuc2VsZWN0X2NwdVxcdFxcdD0gc2NoZWRfZXh0X29wc19fc2VsZWN0X2NwdSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzQ6XFx0LmVucXVldWVcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2VucXVldWUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTc1OlxcdC5kZXF1ZXVlXFx0XFx0PSBzY2hlZF9leHRfb3BzX19kZXF1ZXVlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE3NjpcXHQuZGlzcGF0Y2hcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2Rpc3BhdGNoLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE3NzpcXHQudGlja1xcdFxcdFxcdD0gc2NoZWRfZXh0X29wc19fdGljayxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzg6XFx0LnJ1bm5hYmxlXFx0XFx0PSBzY2hlZF9leHRfb3BzX19ydW5uYWJsZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzk6XFx0LnJ1bm5pbmdcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3J1bm5pbmcsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTgwOlxcdC5zdG9wcGluZ1xcdFxcdD0gc2NoZWRfZXh0X29wc19fc3RvcHBpbmcsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTgxOlxcdC5xdWllc2NlbnRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3F1aWVzY2VudCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxODI6XFx0LnlpZWxkXFx0XFx0XFx0PSBzY2hlZF9leHRfb3BzX195aWVsZCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxODM6XFx0LmNvcmVfc2NoZWRfYmVmb3JlXFx0PSBzY2hlZF9leHRfb3BzX19jb3JlX3NjaGVkX2JlZm9yZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxODQ6XFx0LnNldF93ZWlnaHRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3NldF93ZWlnaHQsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg1OlxcdC5zZXRfY3B1bWFza1xcdFxcdD0gc2NoZWRfZXh0X29wc19fc2V0X2NwdW1hc2ssXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg2OlxcdC51cGRhdGVfaWRsZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fdXBkYXRlX2lkbGUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg3OlxcdC5jcHVfYWNxdWlyZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fY3B1X2FjcXVpcmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg4OlxcdC5jcHVfcmVsZWFzZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fY3B1X3JlbGVhc2UsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg5OlxcdC5pbml0X3Rhc2tcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2luaXRfdGFzayxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTA6XFx0LmV4aXRfdGFza1xcdFxcdD0gc2NoZWRfZXh0X29wc19fZXhpdF90YXNrLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5MTpcXHQuZW5hYmxlXFx0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19lbmFibGUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTkyOlxcdC5kaXNhYmxlXFx0XFx0PSBzY2hlZF9leHRfb3BzX19kaXNhYmxlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODE5My0jaWZkZWYgQ09ORklHX0VYVF9HUk9VUF9TQ0hFRFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5NDpcXHQuY2dyb3VwX2luaXRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9pbml0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5NTpcXHQuY2dyb3VwX2V4aXRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9leGl0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5NjpcXHQuY2dyb3VwX3ByZXBfbW92ZVxcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX3ByZXBfbW92ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTc6XFx0LmNncm91cF9tb3ZlXFx0XFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfbW92ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTg6XFx0LmNncm91cF9jYW5jZWxfbW92ZVxcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX2NhbmNlbF9tb3ZlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5OTpcXHQuY2dyb3VwX3NldF93ZWlnaHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9zZXRfd2VpZ2h0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwMDpcXHQuY2dyb3VwX3NldF9iYW5kd2lkdGhcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9zZXRfYmFuZHdpZHRoLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwMTpcXHQuY2dyb3VwX3NldF9pZGxlXFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2lkbGUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjAyLSNlbmRpZlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwMzpcXHQuc3ViX2F0dGFjaFxcdFxcdD0gc2NoZWRfZXh0X29wc19fc3ViX2F0dGFjaCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMDQ6XFx0LnN1Yl9kZXRhY2hcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3N1Yl9kZXRhY2gsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA1OlxcdC5jcHVfb25saW5lXFx0XFx0PSBzY2hlZF9leHRfb3BzX19jcHVfb25saW5lLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwNjpcXHQuY3B1X29mZmxpbmVcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2NwdV9vZmZsaW5lLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwNzpcXHQuaW5pdF9jaWRzXFx0XFx0PSBzY2hlZF9leHRfb3BzX19pbml0X2NpZHMsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA4OlxcdC5pbml0XFx0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19pbml0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwOTpcXHQuZXhpdFxcdFxcdFxcdD0gc2NoZWRfZXh0X29wc19fZXhpdCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMTA6XFx0LmR1bXBcXHRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2R1bXAsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjExOlxcdC5kdW1wX2NwdVxcdFxcdD0gc2NoZWRfZXh0X29wc19fZHVtcF9jcHUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjEyOlxcdC5kdW1wX3Rhc2tcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2R1bXBfdGFzayxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMTMtfTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMTQtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjE1OnN0YXRpYyBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgYnBmX3NjaGVkX2V4dF9vcHMgPSB7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjE2LVxcdC52ZXJpZmllcl9vcHMgPSBcXHUwMDI2YnBmX3NjeF92ZXJpZmllcl9vcHMsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMjMtXFx0LnZhbGlkYXRlID0gYnBmX3NjeF92YWxpZGF0ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMjQ6XFx0Lm5hbWUgPSBcXFwic2NoZWRfZXh0X29wc1xcXCIsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjI1LVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIyNjpcXHQuY2ZpX3N0dWJzID0gXFx1MDAyNl9fYnBmX29wc19zY2hlZF9leHRfb3BzXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjI3LX07XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMzQtICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjM1OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfY2lkX19zZXRfY21hc2soc3RydWN0IHRhc2tfc3RydWN0ICpwLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIzNi1cXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHNjeF9jbWFzayAqY21hc2spIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjM3OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3N1Yl9jYXBzX3VwZGF0ZWQoY29uc3Qgc3RydWN0IHNjeF9jbWFzayAqY21hc2ssIHU2NCBjYXBzKSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIzODpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19zdWJfZWNhcHNfdXBkYXRlZChzMzIgY2lkLCB1NjQgYmVmb3JlLCB1NjQgYWZ0ZXIpIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjM5LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MDpzdGF0aWMgc3RydWN0IHNjaGVkX2V4dF9vcHNfY2lkIF9fYnBmX29wc19zY2hlZF9leHRfb3BzX2NpZCA9IHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNDE6XFx0LnNlbGVjdF9jaWRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3NlbGVjdF9jcHUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjQyOlxcdC5lbnF1ZXVlXFx0XFx0PSBzY2hlZF9leHRfb3BzX19lbnF1ZXVlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MzpcXHQuZGVxdWV1ZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fZGVxdWV1ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNDQ6XFx0LmRpc3BhdGNoXFx0XFx0PSBzY2hlZF9leHRfb3BzX19kaXNwYXRjaCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNDU6XFx0LnRpY2tcXHRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3RpY2ssXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjQ2OlxcdC5ydW5uYWJsZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fcnVubmFibGUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjQ3OlxcdC5ydW5uaW5nXFx0XFx0PSBzY2hlZF9leHRfb3BzX19ydW5uaW5nLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0ODpcXHQuc3RvcHBpbmdcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3N0b3BwaW5nLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0OTpcXHQucXVpZXNjZW50XFx0XFx0PSBzY2hlZF9leHRfb3BzX19xdWllc2NlbnQsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjUwOlxcdC55aWVsZFxcdFxcdFxcdD0gc2NoZWRfZXh0X29wc19feWllbGQsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjUxOlxcdC5jb3JlX3NjaGVkX2JlZm9yZVxcdD0gc2NoZWRfZXh0X29wc19fY29yZV9zY2hlZF9iZWZvcmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjUyOlxcdC5zZXRfd2VpZ2h0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19zZXRfd2VpZ2h0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1MzpcXHQuc2V0X2NtYXNrXFx0XFx0PSBzY2hlZF9leHRfb3BzX2NpZF9fc2V0X2NtYXNrLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1NDpcXHQudXBkYXRlX2lkbGVcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3VwZGF0ZV9pZGxlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1NTpcXHQuaW5pdF90YXNrXFx0XFx0PSBzY2hlZF9leHRfb3BzX19pbml0X3Rhc2ssXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjU2OlxcdC5leGl0X3Rhc2tcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2V4aXRfdGFzayxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTc6XFx0LmVuYWJsZVxcdFxcdFxcdD0gc2NoZWRfZXh0X29wc19fZW5hYmxlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1ODpcXHQuZGlzYWJsZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fZGlzYWJsZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyNTktI2lmZGVmIENPTkZJR19FWFRfR1JPVVBfU0NIRURcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjA6XFx0LmNwdWN0bF9pbml0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfaW5pdCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjE6XFx0LmNwdWN0bF9leGl0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfZXhpdCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjI6XFx0LmNwdWN0bF9wcmVwX21vdmVcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9wcmVwX21vdmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjYzOlxcdC5jcHVjdGxfbW92ZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX21vdmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjY0OlxcdC5jcHVjdGxfY2FuY2VsX21vdmVcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9jYW5jZWxfbW92ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjU6XFx0LmNwdWN0bF9zZXRfd2VpZ2h0XFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X3dlaWdodCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjY6XFx0LmNwdWN0bF9zZXRfYmFuZHdpZHRoXFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2JhbmR3aWR0aCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjc6XFx0LmNwdWN0bF9zZXRfaWRsZVxcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX3NldF9pZGxlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI2OC0jZW5kaWZcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjk6XFx0LnN1Yl9hdHRhY2hcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3N1Yl9hdHRhY2gsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjcwOlxcdC5zdWJfZGV0YWNoXFx0XFx0PSBzY2hlZF9leHRfb3BzX19zdWJfZGV0YWNoLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3MTpcXHQuc3ViX2NhcHNfdXBkYXRlZFxcdD0gc2NoZWRfZXh0X29wc19fc3ViX2NhcHNfdXBkYXRlZCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNzI6XFx0LnN1Yl9lY2Fwc191cGRhdGVkXFx0PSBzY2hlZF9leHRfb3BzX19zdWJfZWNhcHNfdXBkYXRlZCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNzM6XFx0LmNpZF9vbmxpbmVcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2NwdV9vbmxpbmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4Mjc0OlxcdC5jaWRfb2ZmbGluZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fY3B1X29mZmxpbmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4Mjc1OlxcdC5pbml0X2NpZHNcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2luaXRfY2lkcyxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNzY6XFx0LmluaXRcXHRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2luaXQsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4Mjc3OlxcdC5leGl0XFx0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19leGl0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3ODpcXHQuZHVtcFxcdFxcdFxcdD0gc2NoZWRfZXh0X29wc19fZHVtcCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNzk6XFx0LmR1bXBfY2lkXFx0XFx0PSBzY2hlZF9leHRfb3BzX19kdW1wX2NwdSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyODA6XFx0LmR1bXBfdGFza1xcdFxcdD0gc2NoZWRfZXh0X29wc19fZHVtcF90YXNrLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI4MS19O1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04Mjg3LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI4ODpzdGF0aWMgc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzIGJwZl9zY2hlZF9leHRfb3BzX2NpZCA9IHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyODktXFx0LnZlcmlmaWVyX29wcyA9IFxcdTAwMjZicGZfc2N4X2NpZF92ZXJpZmllcl9vcHMsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyOTYtXFx0LnZhbGlkYXRlID0gYnBmX3NjeF92YWxpZGF0ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyOTc6XFx0Lm5hbWUgPSBcXFwic2NoZWRfZXh0X29wc19jaWRcXFwiLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI5OC1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyOTk6XFx0LmNmaV9zdHVicyA9IFxcdTAwMjZfX2JwZl9vcHNfc2NoZWRfZXh0X29wc19jaWRcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgzMDAtfTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA2MzI9c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHNjeF9rZnVuY19zZXRfYW55ID0ge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDYzOS0gKiBjcHUtZm9ybSBrZnVuY3MgdGhhdCBhcmUgZm9yYmlkZGVuIGZyb20gY2lkLWZvcm0gc2NoZWR1bGVyc1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA2NDA6ICogKGJwZl9zY2hlZF9leHRfb3BzX2NpZCkuIFByb2dyYW1zIHRhcmdldGluZyB0aGUgY2lkIHN0cnVjdF9vcHMgdHlwZSBtdXN0XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY0MS0gKiB1c2UgdGhlIGNpZC1mb3JtIGFsdGVybmF0aXZlIChjaWQvY21hc2sga2Z1bmNzKS5cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA3MzM9aW50IHNjeF9rZnVuY19jb250ZXh0X2ZpbHRlcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBrZnVuY19pZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA3NzAtXFx0ICpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNzcxOlxcdCAqIEJvdGggYnBmX3NjaGVkX2V4dF9vcHMgKGNwdS1mb3JtKSBhbmQgYnBmX3NjaGVkX2V4dF9vcHNfY2lkXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc3Mi1cXHQgKiAoY2lkLWZvcm0pIGFyZSB2YWxpZCBTQ1ggc3RydWN0X29wcy4gTWVtYmVyIG9mZnNldHMgbWF0Y2ggYmV0d2Vlblxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc3Ni1cXHQgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNzc3OlxcdGlmIChwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZXN0X29wcyAhPSBcXHUwMDI2YnBmX3NjaGVkX2V4dF9vcHMgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNzc4OlxcdCAgICBwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZXN0X29wcyAhPSBcXHUwMDI2YnBmX3NjaGVkX2V4dF9vcHNfY2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA3NzktXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNzg2LVxcdCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA3ODc6XFx0aWYgKHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlc3Rfb3BzID09IFxcdTAwMjZicGZfc2NoZWRfZXh0X29wc19jaWQgXFx1MDAyNlxcdTAwMjYgaW5fY3B1X29ubHkpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc4OC1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA4MTM9c3RhdGljIGludCBfX2luaXQgc2N4X2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MTctXFx0LypcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODE4OlxcdCAqIHNjaGVkX2V4dF9vcHNfY2lkIG1pcnJvcnMgc2NoZWRfZXh0X29wcyB1cCB0byBhbmQgaW5jbHVkaW5nIEBwcml2Llxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MTktXFx0ICogQm90aCBicGZfc2N4X2luaXRfbWVtYmVyKCkgYW5kIGJwZl9zY3hfY2hlY2tfbWVtYmVyKCkgdXNlIG9mZnNldHNcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODIwOlxcdCAqIGZyb20gc3RydWN0IHNjaGVkX2V4dF9vcHM7IHNjaGVkX2V4dF9vcHNfY2lkIHJlbGllcyBvbiB0aG9zZSBvZmZzZXRzXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDgyMS1cXHQgKiBtYXRjaGluZyBmb3IgdGhlIHNoYXJlZCBmaWVsZHMuIENhdGNoIGFueSBkcmlmdCBhdCBib290Llxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDgyMy0jZGVmaW5lIENJRF9PRkZTRVRfTUFUQ0goY3B1X2ZpZWxkLCBjaWRfZmllbGQpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA4MjQ6XFx0QlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBjcHVfZmllbGQpICE9XFx0XFx0XFxcXFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA4MjU6XFx0XFx0ICAgICBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWQsIGNpZF9maWVsZCkpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDgyNi1cXHQvKiBkYXRhIGZpZWxkcyB1c2VkIGJ5IGJwZl9zY3hfaW5pdF9tZW1iZXIoKSAqL1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDg4NS1cXHQgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODg2OlxcdEJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWQsIF9fZW5kKSAhPVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA4ODc6XFx0XFx0ICAgICBvZmZzZXRvZmVuZChzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgcHJpdikpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4ODgtI3VuZGVmIENJRF9PRkZTRVRfTUFUQ0hcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA5MzMtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDkzNDpcXHRyZXQgPSByZWdpc3Rlcl9icGZfc3RydWN0X29wcyhcXHUwMDI2YnBmX3NjaGVkX2V4dF9vcHMsIHNjaGVkX2V4dF9vcHMpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA5MzUtXFx0aWYgKHJldCkge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDkzOS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwOTQwOlxcdHJldCA9IHJlZ2lzdGVyX2JwZl9zdHJ1Y3Rfb3BzKFxcdTAwMjZicGZfc2NoZWRfZXh0X29wc19jaWQsIHNjaGVkX2V4dF9vcHNfY2lkKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwOTQxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTMwMD1zdGF0aWMgYm9vbCBsbGNfbnVtYV9taXNtYXRjaCh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMzQ0LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjM0NTp2b2lkIHNjeF9pZGxlX3VwZGF0ZV9zZWxjcHVfdG9wb2xvZ3koc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcylcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0zNDYte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM9ODAxPXZvaWQgX19zY3hfdXBkYXRlX2lkbGUoc3RydWN0IHJxICpycSwgYm9vbCBpZGxlLCBib29sIGRvX25vdGlmeSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTgzNy1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzo4Mzg6c3RhdGljIHZvaWQgcmVzZXRfaWRsZV9tYXNrcyhzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTgzOS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy04NTktXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6ODYwOnZvaWQgc2N4X2lkbGVfZW5hYmxlKHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtODYxLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTkxMz1zdGF0aWMgYm9vbCBjaGVja19idWlsdGluX2lkbGVfZW5hYmxlZChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy05MjItLypcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzo5MjM6ICogRGV0ZXJtaW5lIHdoZXRoZXIgQHAgaXMgYSBtaWdyYXRpb24tZGlzYWJsZWQgdGFzayBpbiB0aGUgY29udGV4dCBvZiBCUEZcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy05MjQtICogY29kZS5cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oPTE1PXN0cnVjdCBjcHVtYXNrO1xcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oOjE2OnN0cnVjdCBzY2hlZF9leHRfb3BzO1xcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oLTE3LXN0cnVjdCB0YXNrX3N0cnVjdDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oPTIwPWV4dGVybiBzdHJ1Y3QgYnRmX2lkX3NldDggc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1O1xcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oLTIxLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oOjIyOnZvaWQgc2N4X2lkbGVfdXBkYXRlX3NlbGNwdV90b3BvbG9neShzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaC0yMy12b2lkIHNjeF9pZGxlX2luaXRfbWFza3Modm9pZCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaD0yNT1zMzIgc2N4X3NlbGVjdF9jcHVfZGZsKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgczMyIHByZXZfY3B1LCB1NjQgd2FrZV9mbGFncyxcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaC0yNi1cXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdXNfYWxsb3dlZCwgdTY0IGZsYWdzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaDoyNzp2b2lkIHNjeF9pZGxlX2VuYWJsZShzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaC0yOC12b2lkIHNjeF9pZGxlX2Rpc2FibGUodm9pZCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtNDEtXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjQyOiNkZWZpbmUgU0NYX09QX0lEWChvcClcXHRcXHQob2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIG9wKSAvIHNpemVvZih2b2lkICgqKSh2b2lkKSkpXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTQzLSNkZWZpbmUgU0NYX01PRkZfSURYKG1vZmYpXFx0KChtb2ZmKSAvIHNpemVvZih2b2lkICgqKSh2b2lkKSkpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTAxPXN0cnVjdCBzY3hfZXhpdF9pbmZvIHtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMzAtXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEzMTovKiBzY2hlZF9leHRfb3BzLmZsYWdzICovXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEzMi1lbnVtIHNjeF9vcHNfZmxhZ3Mge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTMwMD1zdHJ1Y3Qgc2N4X3N1Yl9hdHRhY2hfYXJncyB7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjMwMTpcXHRzdHJ1Y3Qgc2NoZWRfZXh0X29wc1xcdCpvcHM7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMwMi1cXHRjaGFyXFx0XFx0XFx0KmNncm91cF9wYXRoO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTMwNj1zdHJ1Y3Qgc2N4X3N1Yl9kZXRhY2hfYXJncyB7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjMwNzpcXHRzdHJ1Y3Qgc2NoZWRfZXh0X29wc1xcdCpvcHM7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMwOC1cXHRjaGFyXFx0XFx0XFx0KmNncm91cF9wYXRoO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMxMS0vKipcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MzEyOiAqIHN0cnVjdCBzY2hlZF9leHRfb3BzIC0gT3BlcmF0aW9uIHRhYmxlIGZvciBCUEYgc2NoZWR1bGVyIGltcGxlbWVudGF0aW9uXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMxMy0gKlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMxOC0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MzE5OnN0cnVjdCBzY2hlZF9leHRfb3BzIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMzIwLVxcdC8qKlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTk2OC1cXHQgKiBNdXN0IGJlIGEgbm9uLXplcm8gdmFsaWQgQlBGIG9iamVjdCBuYW1lIGluY2x1ZGluZyBvbmx5IGlzYWxudW0oKSxcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6OTY5OlxcdCAqICdfJyBhbmQgJy4nIGNoYXJzLiBTaG93cyB1cCBpbiBrZXJuZWwuc2NoZWRfZXh0X29wcyBzeXNjdGwgd2hpbGUgdGhlXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTk3MC1cXHQgKiBCUEYgc2NoZWR1bGVyIGlzIGVuYWJsZWQuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtOTc4LVxcdCAqIERlcHJlY2F0ZWQgY2FsbGJhY2tzLiBLZXB0IGF0IHRoZSBlbmQgb2YgdGhlIHN0cnVjdCBzbyB0aGUgY2lkLWZvcm1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6OTc5OlxcdCAqIHN0cnVjdCAoc2NoZWRfZXh0X29wc19jaWQpIGNhbiBvbWl0IHRoZW0gd2l0aG91dCBhZmZlY3RpbmcgdGhlXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTk4MC1cXHQgKiBzaGFyZWQgZmllbGQgb2Zmc2V0cy4gVXNlIFNDWF9FTlFfSU1NRUQgaW5zdGVhZC4gU2l0dGluZyBwYXN0XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAxMC0vKipcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTAxMTogKiBzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWQgLSBjaWQtZm9ybSBhbHRlcm5hdGl2ZSB0byBzdHJ1Y3Qgc2NoZWRfZXh0X29wc1xcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDEyLSAqXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMTM6ICogTWlycm9ycyBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyB3aXRoIGNwdS9jcHVtYXNrIHN1YnN0aXR1dGVkIHdpdGggY2lkL2NtYXNrXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMTQ6ICogd2hlcmUgYXBwbGljYWJsZS4gTGF5b3V0IHVwIHRvIGFuZCBpbmNsdWRpbmcgQHByaXYgbWF0Y2hlcyBzY2hlZF9leHRfb3BzXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwMTUtICogYnl0ZS1mb3ItYnl0ZSAodmVyaWZpZWQgYnkgQlVJTERfQlVHX09OIGNoZWNrcyBhdCBzY3hfaW5pdCgpIHRpbWUpIHNvXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAxNy0gKiBhbmQgYnBmX3NjeF9jaGVja19tZW1iZXIoKS4gVGhlIGRlcHJlY2F0ZWQgY3B1X2FjcXVpcmUvY3B1X3JlbGVhc2VcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTAxODogKiBjYWxsYmFja3MgYXQgdGhlIHRhaWwgb2Ygc2NoZWRfZXh0X29wcyBhcmUgb21pdHRlZCBoZXJlIGVudGlyZWx5Llxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDE5LSAqXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMjA6ICogRGlmZmVyZW5jZXMgZnJvbSBzY2hlZF9leHRfb3BzOlxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDIxLSAqICAgLSBzZWxlY3RfY3B1ICAgICAgIC1cXHUwMDNlIHNlbGVjdF9jaWQgKHJldHVybnMgY2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwMjgtICogICAtIGNncm91cF8qICAgICAgICAgLVxcdTAwM2UgY3B1Y3RsXyogKHRoZXkgdHJhY2sgdGhlIGNncm91cCBjcHUgY29udHJvbGxlcilcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTAyOTogKiAgIC0gY3B1X2FjcXVpcmUvY3B1X3JlbGVhc2UgIC1cXHUwMDNlIG5vdCBwcmVzZW50IChkZXByZWNhdGVkIGluIHNjaGVkX2V4dF9vcHMpXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwMzAtICpcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDM0LSAqXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMzU6ICogU2VlIHNjaGVkX2V4dF9vcHMgZm9yIGNhbGxiYWNrIGRvY3VtZW50YXRpb24uXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwMzYtICovXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMzc6c3RydWN0IHNjaGVkX2V4dF9vcHNfY2lkIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAzOC1cXHRzMzIgKCpzZWxlY3RfY2lkKShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHMzMiBwcmV2X2NpZCwgdTY0IHdha2VfZmxhZ3MpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwODUtXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwODY6XFx0LyogRGF0YSBmaWVsZHMgLSBtdXN0IG1hdGNoIHNjaGVkX2V4dF9vcHMgbGF5b3V0IGV4YWN0bHkgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTA4Ny1cXHR1MzIgZGlzcGF0Y2hfbWF4X2JhdGNoO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTE1MTU9c3RydWN0IHNjeF9zY2hlZCB7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTUyMy1cXHR1bmlvbiB7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE1MjQ6XFx0XFx0c3RydWN0IHNjaGVkX2V4dF9vcHNcXHRcXHRvcHM7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE1MjU6XFx0XFx0c3RydWN0IHNjaGVkX2V4dF9vcHNfY2lkXFx0b3BzX2NpZDtcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTUyNi1cXHR9O1xcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxNTI3OlxcdGJvb2xcXHRcXHRcXHRpc19jaWRfdHlwZTtcXHQvKiB0cnVlIGlmIHJlZ2lzdGVyZWQgdmlhIGJwZl9zY2hlZF9leHRfb3BzX2NpZCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNTI4LVxcdGJvb2xcXHRcXHRcXHRkZWFkO1xcdFxcdC8qIHNldCBhZnRlciBvcHMuZXhpdCgpLCBnYXRlcyBzY3hfcHJvZ19zY2hlZCgpICovXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTk5Mj1zdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE5OTQtXFx0dW5pb24ge1xcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxOTk1OlxcdFxcdHN0cnVjdCBzY2hlZF9leHRfb3BzXFx0XFx0Km9wcztcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTk5NjpcXHRcXHRzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWRcXHQqb3BzX2NpZDtcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTk5Ny1cXHR9O1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTIwNzM9c3RydWN0IHNjeF9zY2hlZCAqc2N4X2FsbG9jX2FuZF9hZGRfc2NoZWQoc3RydWN0IHNjeF9lbmFibGVfY21kICpjbWQsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMjA3NS1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBzY3hfc2NoZWQgKnBhcmVudCk7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjIwNzY6aW50IHNjeF92YWxpZGF0ZV9vcHMoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBjb25zdCBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMjA3Ny1pbnQgc2N4X3NjaGVkX3N5c2ZzX2FkZChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTIzODg9c3RhdGljIGlubGluZSBzdHJ1Y3Qgc2N4X3NjaGVkICpzY3hfcHJvZ19zY2hlZChjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTIzODkte1xcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoyMzkwOlxcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHM7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTIzOTEtXFx0c3RydWN0IHNjeF9zY2hlZCAqc2NoLCAqcm9vdDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM9NDc9c3RydWN0IHNjeF9zY2hlZCAqc2N4X3NraXBfc3VidHJlZV9wcmUoc3RydWN0IHNjeF9zY2hlZCAqcG9zLCBzdHJ1Y3Qgc2N4X3NjaGVkICpyb290KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9zdWIuYy01NS1cXHR3aGlsZSAocG9zICE9IHJvb3QpIHtcXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjU2OlxcdFxcdG5leHQgPSBsaXN0X25leHRfb3JfbnVsbF9yY3UoXFx1MDAyNnNjeF9wYXJlbnQocG9zKS1cXHUwMDNlY2hpbGRyZW4sIFxcdTAwMjZwb3MtXFx1MDAzZXNpYmxpbmcsXFxua2VybmVsL3NjaGVkL2V4dC9zdWIuYy01Ny1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzY3hfc2NoZWQsIHNpYmxpbmcpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9zdWIuYz01MzI9c3RhdGljIHZvaWQgc2N4X3Jlc2N1ZV90aW1lcmZuKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcilcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtNTUyLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM6NTUzOlxcdFxcdC8qIHRoZXJlJ3MgZW5vdWdoIGJ1ZGdldCB0byBzdGFydCByZXNjdWluZyB0aGUgbmV4dCBvbmUgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTU1NC1cXHRcXHRwID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2cnEtXFx1MDAzZXNjeC5yZXNjdWUuZHNxLmxpc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM9MTcwNz12b2lkIHNjeF9zdWJfZW5hYmxlX3dvcmtmbihzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9zdWIuYy0xNzA5LVxcdHN0cnVjdCBzY3hfZW5hYmxlX2NtZCAqY21kID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBzY3hfZW5hYmxlX2NtZCwgd29yayk7XFxua2VybmVsL3NjaGVkL2V4dC9zdWIuYzoxNzEwOlxcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMgPSBjbWQtXFx1MDAzZW9wcztcXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTE3MTEtXFx0c3RydWN0IGNncm91cCAqY2dycDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9mYWlyLmM9NzA5NT1zdGF0aWMgdm9pZCBfX2Nmc2JfY3NkX3VudGhyb3R0bGUodm9pZCAqYXJnKVxcbi0tXFxua2VybmVsL3NjaGVkL2ZhaXIuYy03MTA0LVxcdCAqIHVwZGF0ZV9ycV9jbG9jaygpIGluIHVudGhyb3R0bGVfY2ZzX3JxKCkuXFxua2VybmVsL3NjaGVkL2ZhaXIuYzo3MTA1OlxcdCAqIERvIGl0IG9uY2UgYW5kIHNraXAgdGhlIHBvdGVudGlhbCBuZXh0IG9uZXMuXFxua2VybmVsL3NjaGVkL2ZhaXIuYy03MTA2LVxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzo1Ni45NTYzODU1NjVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2NjAzODA1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBkZXZlbG9wbWVudDpcblxuKipJbml0aWFsIEludmVzdGlnYXRpb24gaW50byB0aGUgRVhUIFNjaGVkdWxlciBDbGFzcyoqXG5cblJpZ2h0LCBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AgaXMgdGhlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgRVhUIHNjaGVkdWxlciBjbGFzcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgc28gYENPTkZJR19TQ0hFRF9DTEFTU19FWFRgIG11c3QgYmUgdGhlIGd1YXJkIHRoYXQgZW5hYmxlcyBpdC5cIiBNYWtlcyBwZXJmZWN0IHNlbnNlLiBMZXQncyB2ZXJpZnkgdGhhdCBxdWlja2x5LiBJJ2xsIGp1bXAgb3ZlciB0byBga2VybmVsL3NjaGVkL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBpbnRlcmVzdGluZyBkZXRhaWxzIGFib3V0IGhvdyBpdCdzIGRlZmluZWQgYW5kIG90aGVyIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJ1aWxkIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgc2NoZWR1bGVyIGNhbiBiZSBlbmFibGVkLiBJIGFtIHN1cmUgdGhlcmUgYXJlIG90aGVyIHBpZWNlcyB0byBpbnZlc3RpZ2F0ZSwgYnV0IHRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MTgzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MDAuNzIyNDI2OTM0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI1MDQ1MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MDAuNzcwNjgwMDY0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODYzNDE5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgU2NoZWR1bGluZyBDbGFzcyBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZyBJIG5lZWQgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBTQ0hFRF9DTEFTU19FWFRgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZmlyc3QgcGxhY2UgSSdkIGNoZWNrIGlzIGxpa2VseSBnb2luZyB0byBiZSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFRoZSBtb3N0IG9idmlvdXMgY2FuZGlkYXRlcyB3b3VsZCBiZSBga2VybmVsL0tjb25maWcucHJlZW1wdGAgb3IgcGVyaGFwcyBgaW5pdC9LY29uZmlnYC4gVGhlc2UgZmlsZXMgYXJlIHdoZXJlIHRoZSBtYWluIHNjaGVkdWxpbmctcmVsYXRlZCBmZWF0dXJlcyBhbmQgb3B0aW9ucyB1c3VhbGx5IHJlc2lkZS4gSSdsbCBzdGFydCB0aGVyZSBhbmQgc2VlIGlmIEkgY2FuIGxvY2F0ZSB0aGUgZGVmaW5pdGlvbiBvciBhdCBsZWFzdCBmaWd1cmUgb3V0IHdoaWNoIEtjb25maWcgb3B0aW9uIGVuYWJsZXMgdGhpcyBgU0NIRURfQ0xBU1NfRVhUYC4gSXQgaXMgd2hlcmUgdGhlIG1haW4gc2NoZWR1bGluZy1yZWxhdGVkIGZlYXR1cmVzIGFuZCBvcHRpb25zIHVzdWFsbHkgcmVzaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQ0MSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjA0LjA1NzAyMzk4NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMDI0NTMwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0NIRURfQ0xBU1NfRVhUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvS2NvbmZpZy5wcmVlbXB0PTE1MT1jb25maWcgU0NIRURfQ09SRVxcbi0tXFxua2VybmVsL0tjb25maWcucHJlZW1wdC0xNjgtXFxua2VybmVsL0tjb25maWcucHJlZW1wdDoxNjk6Y29uZmlnIFNDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTcwLVxcdGJvb2wgXFxcIkV4dGVuc2libGUgU2NoZWR1bGluZyBDbGFzc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MDUuNjc3MjczNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc4NTA5MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NoZWR1bGVyIEV4dGVuc2lvbiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIG1haW4gY29uZmlndXJhdGlvbiB2YXJpYWJsZSBmb3IgdGhpcyBleHRlbnNpb24gaXMgYFNDSEVEX0NMQVNTX0VYVGAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEJ1dCwgaGFuZyBvbiwgdGhlcmUgbWlnaHQgYmUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCwgc28gbGV0J3Mga2VlcCBhbiBleWUgb3V0IGZvciB0aG9zZSBhcyB3ZSBkaWcgZGVlcGVyLlxuXG5UaGUgY29kZSBtb2RpZmljYXRpb25zIGFyZSBoYXBwZW5pbmcgaW4gYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgYSBzY2hlZHVsZXIgZXh0ZW5zaW9uLiBTcGVjaWZpY2FsbHksIHRoZSBmdW5jdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24gcmlnaHQgbm93IGlzIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gSSdsbCBuZWVkIHRvIGp1bXAgZGlyZWN0bHkgdG8gdGhhdCBmdW5jdGlvbiB3aXRoaW4gYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgIGFuZCBnZXQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBpdCdzIGRvaW5nLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoaXMgZXh0ZW5zaW9uIGxpa2VseSBsaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc1MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjA5LjI1NTc4NTE2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MjQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ1MjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQ1MjA6XFx0XFx0XFx0XFx0aWYgKCFkcnUpXFxuNDUyMTpcXHRcXHRcXHRcXHRcXHRyZXR1cm47XFxuNDUyMjpcXHRcXG40NTIzOlxcdFxcdFxcdFxcdGRzcV9wY3B1ID0gY29udGFpbmVyX29mKGRydSwgc3RydWN0IHNjeF9kc3FfcGNwdSxcXG40NTI0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRlZmVycmVkX3JlZW5xX3VzZXIpO1xcbjQ1MjU6XFx0XFx0XFx0XFx0ZHNxID0gZHNxX3BjcHUtXFx1MDAzZWRzcTtcXG40NTI2OlxcdFxcdFxcdFxcdHJlZW5xX2ZsYWdzID0gZHJ1LVxcdTAwM2VmbGFncztcXG40NTI3OlxcdFxcdFxcdFxcdFdSSVRFX09OQ0UoZHJ1LVxcdTAwM2VmbGFncywgMCk7XFxuNDUyODpcXHRcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZkcnUtXFx1MDAzZW5vZGUpO1xcbjQ1Mjk6XFx0XFx0XFx0fVxcbjQ1MzA6XFx0XFxuNDUzMTpcXHRcXHRcXHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cXG40NTMyOlxcdFxcdFxcdHNtcF9tYigpO1xcbjQ1MzM6XFx0XFxuNDUzNDpcXHRcXHRcXHQvKiBkZXN0cm95X2RzcSgpIG1heSByYWNlIGFuZCBpbnZhbGlkYXRlIEBkc3E7IHNraXAgKi9cXG40NTM1OlxcdFxcdFxcdGlmICh1bmxpa2VseShkc3EtXFx1MDAzZWlkIFxcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKVxcbjQ1MzY6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuNDUzNzpcXHRcXHRcXHRyZWVucV91c2VyKHJxLCBkc3EsIHJlZW5xX2ZsYWdzKTtcXG40NTM4OlxcdFxcdH1cXG40NTM5OlxcdH1cXG40NTQwOlxcdFxcbjQ1NDE6XFx0c3RhdGljIHZvaWQgcnVuX2RlZmVycmVkKHN0cnVjdCBycSAqcnEpXFxuNDU0MjpcXHR7XFxuNDU0MzpcXHRcXHRwcm9jZXNzX2Rkc3BfZGVmZXJyZWRfbG9jYWxzKHJxKTtcXG40NTQ0OlxcdFxcbjQ1NDU6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZycS1cXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX2xvY2FscykpXFxuNDU0NjpcXHRcXHRcXHRwcm9jZXNzX2RlZmVycmVkX3JlZW5xX2xvY2FscyhycSk7XFxuNDU0NzpcXHRcXG40NTQ4OlxcdFxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2cnEtXFx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2VycykpXFxuNDU0OTpcXHRcXHRcXHRwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHJxKTtcXG40NTUwOlxcdFxcbjQ1NTE6XFx0XFx0c2N4X3JlZW5xX3JlamVjdChycSk7XFxuNDU1MjpcXHR9XFxuNDU1MzpcXHRcXG40NTU0OlxcdCNpZmRlZiBDT05GSUdfTk9fSFpfRlVMTFxcbjQ1NTU6XFx0Ym9vbCBzY3hfY2FuX3N0b3BfdGljayhzdHJ1Y3QgcnEgKnJxKVxcbjQ1NTY6XFx0e1xcbjQ1NTc6XFx0XFx0c3RydWN0IHRhc2tfc3RydWN0ICpwID0gcnEtXFx1MDAzZWN1cnI7XFxuNDU1ODpcXHRcXHRzdHJ1Y3Qgc2N4X3NjaGVkICpzY2ggPSBzY3hfdGFza19zY2hlZChwKTtcXG40NTU5OlxcdFxcbjQ1NjA6XFx0XFx0aWYgKHAtXFx1MDAzZXNjaGVkX2NsYXNzICE9IFxcdTAwMjZleHRfc2NoZWRfY2xhc3MpXFxuNDU2MTpcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG40NTYyOlxcdFxcbjQ1NjM6XFx0XFx0LypcXG40NTY0OlxcdFxcdCAqIEBycS1cXHUwMDNlY3VyciBtYXkgc3RpbGwgcmVmZXJlbmNlIGFuIG91dGdvaW5nIEVYVCB0YXNrIGFmdGVyIGl0IGhhcyBiZWVuXFxuNDU2NTpcXHRcXHQgKiBkZXF1ZXVlZC4gSWYgbm8gRVhUIHRhc2tzIGFyZSBhY2NvdW50ZWQgb24gQHJxLCBpZ25vcmUgaXRzIHN0YWxlXFxuNDU2NjpcXHRcXHQgKiBzbGljZSBzdGF0ZS4gSWYgYW5vdGhlciB0YXNrIGlzIGRpc3BhdGNoZWQgZnJvbSBhIERTUSxcXG40NTY3OlxcdFxcdCAqIHNldF9uZXh0X3Rhc2tfc2N4KCkgd2lsbCB1cGRhdGUgdGhlIGRlcGVuZGVuY3kgZm9yIHRoZSBpbmNvbWluZyB0YXNrLlxcbjQ1Njg6XFx0XFx0ICovXFxuNDU2OTpcXHRcXHRpZiAoIXJxLVxcdTAwM2VzY3gubnJfcnVubmluZylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MDkuMjU2MTU5NDRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMTAzMTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipUcmFjaW5nIHRoZSBFeGVjdXRpb24gUGF0aCBvZiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGdldHMgaW52b2tlZC4gSXQgbG9va3MgbGlrZSBpdCdzIGNhbGxlZCBmcm9tIGBydW5fZGVmZXJyZWRgLCB3aGljaCBpcyBhIGNvbW1vbiBwYXR0ZXJuIGZvciBkZWZlcnJlZCB3b3JrIGluIHRoaXMgZW52aXJvbm1lbnQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hlcmUgZG9lcyAqYHJ1bl9kZWZlcnJlZGAqIGl0c2VsZiBnZXQgY2FsbGVkPyBJcyBpdCBzb2xlbHkgZnJvbSBgc2N4X2JwZl9raWNrX2NwdWAgYW5kIHRoaW5ncyBsaWtlIGl0LCBvciBhcmUgdGhlcmUgb3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBJIG5lZWQgdG8gY29uc2lkZXI/IEkgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBncmFwaCBmb3IgYHJ1bl9kZWZlcnJlZGAgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiBpdHMgZXhlY3V0aW9uIHBhdGhzLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSB0cmlnZ2VycyBmb3IgdGhlIGRlZmVycmVkIHJlLWVucXVldWUgb2YgdXNlcnMsIHdoaWNoIGlzIGNsZWFybHkgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBvdmVyYWxsIGZsb3cuIExldCdzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIHRob3NlIGNhbGwgc2l0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzgyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDoxMy4wNzcxOTM2OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NjgzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnVuX2RlZmVycmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz0yNTM9TU9EVUxFX1BBUk1fREVTQyhieXBhc3NfbGJfaW50dl91cywgXFxcImJ5cGFzcyBsb2FkIGJhbGFuY2UgaW50ZXJ2YWwgaW4gbWljcm9zZWNvbmRzICgwIChkaXNhYmxlKSB0byAxMHMpXFxcIik7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI1OS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjI2MDpzdGF0aWMgdm9pZCBydW5fZGVmZXJyZWQoc3RydWN0IHJxICpycSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yNjEtc3RhdGljIGJvb2wgdGFza19kZWFkX2FuZF9kb25lKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk3OT1zdGF0aWMgdm9pZCBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuKHN0cnVjdCBycSAqcnEpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODAte1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTgxOlxcdHJ1bl9kZWZlcnJlZChycSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODItfVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05ODQ9c3RhdGljIHZvaWQgZGVmZXJyZWRfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODgtXFx0cmF3X3NwaW5fcnFfbG9jayhycSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5ODk6XFx0cnVuX2RlZmVycmVkKHJxKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk5MC1cXHRyYXdfc3Bpbl9ycV91bmxvY2socnEpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNTI0PXN0YXRpYyB2b2lkIHRhc2tfd29rZW5fc2N4KHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MjUte1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzUyNjpcXHRydW5fZGVmZXJyZWQocnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzUyNy19XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1MDU9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTQwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDU0MTpzdGF0aWMgdm9pZCBydW5fZGVmZXJyZWQoc3RydWN0IHJxICpycSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1NDIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDoxMy4xMjA4NjgwNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTQwNTc5ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgZnVuY3Rpb24gaXMgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQncyBjYWxsZWQgZnJvbSBgcnVuX2RlZmVycmVkYCwgd2hpY2ggaXRzZWxmIGlzIGludm9rZWQgYnkgYHRhc2tfd29rZW5fc2N4YCwgYGRlZmVycmVkX2lycV93b3JrZm5gLCBhbmQgYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gLiBUaGVzZSBlbnRyeSBwb2ludHMgYXJlIGFsbCB0cmlnZ2VyZWQgd2hlbiBgU0NIRURfQ0xBU1NfRVhUYCBpcyBlbmFibGVkIGFuZCBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkLiBHaXZlbiBpdHMgcGxhY2UgaW4gYSBjb3JlIHNjaGVkdWxlciBjaGFuZ2UsIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG5vbmV0aGVsZXNzLCBmdXp6aW5nIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIHRhcmdldC5cblxuVGhlIGNydWNpYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIEknbGwgbmVlZCBhcmUgYFNDSEVEX0NMQVNTX0VYVGAuIEFoLCByaWdodCwgQlBGIGlzIGEgcHJlcmVxdWlzaXRlIHRvIGxvYWQgdGhlIHNjaGVkdWxlciwgc28gSSdsbCBhbHNvIG5lZWQgYEJQRl9TWVNDQUxMYCBlbmFibGVkIGFzIHdlbGwuIEp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJ2xsIGRvdWJsZS1jaGVjayBga2VybmVsL0tjb25maWcucHJlZW1wdGAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgU0NIRURfQ0xBU1NfRVhUYC4gR290dGEgZG90IHRoZSBJJ3MgYW5kIGNyb3NzIHRoZSBUJ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NTc5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjIyLjI2MTQ1MDkyNFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI0NTU1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvS2NvbmZpZy5wcmVlbXB0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9LY29uZmlnLnByZWVtcHQ9MTUxPWNvbmZpZyBTQ0hFRF9DT1JFXFxuLS1cXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE2OC1cXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0OjE2OTpjb25maWcgU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL0tjb25maWcucHJlZW1wdC0xNzAtXFx0Ym9vbCBcXFwiRXh0ZW5zaWJsZSBTY2hlZHVsaW5nIENsYXNzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDoyMi4zMDM5MTE0MzRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2MjQ4NjYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJlZW1wdGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwuIFdoZXJlIHdvdWxkIEkgc3RhcnQ/IEFscmlnaHQsIGxldCdzIGhlYWQgc3RyYWlnaHQgZm9yIGBrZXJuZWwvS2NvbmZpZy5wcmVlbXB0YC4gVGhhdCdzIHVzdWFsbHkgdGhlIGdvLXRvIGZpbGUgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHByZWVtcHRpdmUgY29uZmlndXJhdGlvbnMuIFNwZWNpZmljYWxseSwgYXJvdW5kIGxpbmUgMTY5IOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBtYWluIGBDT05GSUdfUFJFRU1QVGAgYW5kIGl0cyBhc3NvY2lhdGVkIHN1Yi1vcHRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGVyZS4gSSBhbnRpY2lwYXRlIGEgZGlzY3Vzc2lvbiBhYm91dCB0aGUgZGlmZmVyZW50IHByZWVtcHRpb24gbW9kZWxzLCBzdWNoIGFzIHZvbHVudGFyeSwgZnVsbCwgYW5kIHRoZSByZWFsdGltZSBvcHRpb25zLiBJ4oCZbGwgYmUgbG9va2luZyBmb3IgdGhlIGRlcGVuZGVuY2llcyBpdCBoYXMgYW5kIGhvdyB0aG9zZSBhcmUgc2V0IHVwLiBJJ20ga2VlbiB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiBob3cgdGhlIGtlcm5lbCdzIHByZWVtcHRpb24gYmVoYXZpb3IgaXMgY29udHJvbGxlZCBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBGcm9tIHRoZXJlLCBJIGNhbiBhbmFseXplIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGxhdGVuY3kgYW5kIHNjaGVkdWxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDk1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MjUuODY2NDAwNzk0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9LY29uZmlnLnByZWVtcHRcIixcbiAgXCJGaXJzdExpbmVcIjogMTY5LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTY5OlxcdGNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcXG4gMTcwOlxcdFxcdGJvb2wgXFxcIkV4dGVuc2libGUgU2NoZWR1bGluZyBDbGFzc1xcXCJcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBERUJVR19JTkZPX0JURlxcbiAxNzI6XFx0XFx0c2VsZWN0IFNUQUNLVFJBQ0UgaWYgU1RBQ0tUUkFDRV9TVVBQT1JUXFxuIDE3MzpcXHRcXHRoZWxwXFxuIDE3NDpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgYSBuZXcgc2NoZWR1bGVyIGNsYXNzIHNjaGVkX2V4dCAoU0NYKSwgd2hpY2hcXG4gMTc1OlxcdFxcdCAgYWxsb3dzIHNjaGVkdWxpbmcgcG9saWNpZXMgdG8gYmUgaW1wbGVtZW50ZWQgYXMgQlBGIHByb2dyYW1zIHRvXFxuIDE3NjpcXHRcXHQgIGFjaGlldmUgdGhlIGZvbGxvd2luZzpcXG4gMTc3OlxcdFxcbiAxNzg6XFx0XFx0ICAtIEVhc2Ugb2YgZXhwZXJpbWVudGF0aW9uIGFuZCBleHBsb3JhdGlvbjogRW5hYmxpbmcgcmFwaWRcXG4gMTc5OlxcdFxcdCAgICBpdGVyYXRpb24gb2YgbmV3IHNjaGVkdWxpbmcgcG9saWNpZXMuXFxuIDE4MDpcXHRcXHQgIC0gQ3VzdG9taXphdGlvbjogQnVpbGRpbmcgYXBwbGljYXRpb24tc3BlY2lmaWMgc2NoZWR1bGVycyB3aGljaFxcbiAxODE6XFx0XFx0ICAgIGltcGxlbWVudCBwb2xpY2llcyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZSB0byBnZW5lcmFsLXB1cnBvc2VcXG4gMTgyOlxcdFxcdCAgICBzY2hlZHVsZXJzLlxcbiAxODM6XFx0XFx0ICAtIFJhcGlkIHNjaGVkdWxlciBkZXBsb3ltZW50czogTm9uLWRpc3J1cHRpdmUgc3dhcCBvdXRzIG9mXFxuIDE4NDpcXHRcXHQgICAgc2NoZWR1bGluZyBwb2xpY2llcyBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cy5cXG4gMTg1OlxcdFxcbiAxODY6XFx0XFx0ICBzY2hlZF9leHQgbGV2ZXJhZ2VzIEJQRiBzdHJ1Y3Rfb3BzIGZlYXR1cmUgdG8gZGVmaW5lIGEgc3RydWN0dXJlXFxuIDE4NzpcXHRcXHQgIHdoaWNoIGV4cG9ydHMgZnVuY3Rpb24gY2FsbGJhY2tzIGFuZCBmbGFncyB0byBCUEYgcHJvZ3JhbXMgdGhhdFxcbiAxODg6XFx0XFx0ICB3aXNoIHRvIGltcGxlbWVudCBzY2hlZHVsaW5nIHBvbGljaWVzLiBUaGUgc3RydWN0X29wcyBzdHJ1Y3R1cmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MjUuODY2NDYyODU0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODY0OTE2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtlcm5lbCBTY2hlZHVsZXIgRW5oYW5jZW1lbnRzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgbmV3IGtlcm5lbCBjb2RlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBzY2hlZHVsZXIgaW1wcm92ZW1lbnRzLiBJIHNlZSBzb21lIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kOiBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGFuZCBgREVCVUdfSU5GT19CVEZgLiBBbHJpZ2h0LCBnaXZlbiB0aG9zZSwgSSB0aGluayB3ZSBkZWZpbml0ZWx5IG5lZWQgdG8gYWRkIGBTQ0hFRF9DTEFTU19FWFRgIHRvIHRoZSBFbmFibGVDb25maWdzLiBUaGF0IGZlZWxzIHJpZ2h0LiBOb3csIGxldCdzIGNvbnNpZGVyIEZvY3VzU3ltYm9scy4uLiBJIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2lyY2xlIGJhY2sgdG8gdGhhdCBsYXRlci5cblxuVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGZ1bmN0aW9uLiBJdCdzIG1hcmtlZCBhcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJIHNob3VsZCB0cmFjayBkb3duIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIGhvdyBpdCdzIGludGVncmF0ZWQuIExldCdzIHNlZS4uLiBgdGFza193b2tlbl9zY3hgIGlzIHN0YXRpYywgYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gIGlzIGFsc28gc3RhdGljLCBhbmQgc28gaXMgYGRlZmVycmVkX2lycV93b3JrZm5gLiBIbW0sIGFsbCB0aGUgb25lcyBJIGluaXRpYWxseSBzZWUgYXJlIHN0YXRpYywgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJdCdzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgYXJlYSwgc28gbGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIHVzYWdlIG9mIGB0YXNrX3dva2VuX3NjeGAuIFRoaXMgd2lsbCBnaXZlIG1lIHNvbWUgY29udGV4dCwgYW5kIHRoZW4gSSBjYW4gcmUtZXhhbWluZSB0aGUgb3RoZXJzLiBUaGlzIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2OTEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDozMC4yNTI5NTY4MDFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzQzOTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRhc2tfd29rZW5fc2N4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDI1PXN0YXRpYyB2b2lkIHNjaGVkdWxlX2RlZmVycmVkX2xvY2tlZChzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDI5LVxcdC8qXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDMwOlxcdCAqIElmIGluIHRoZSBtaWRkbGUgb2Ygd2FraW5nIHVwIGEgdGFzaywgdGFza193b2tlbl9zY3goKSB3aWxsIGJlIGNhbGxlZFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTAzMS1cXHQgKiBhZnRlcndhcmRzIHdoaWNoIHdpbGwgdGhlbiBydW4gdGhlIGRlZmVycmVkIGFjdGlvbnMsIG5vIG5lZWQgdG9cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzQ1MT1zdGF0aWMgaW50IHNlbGVjdF90YXNrX3JxX3NjeChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBwcmV2X2NwdSwgaW50IHdha2VfZmxhZ3MpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MjMtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNTI0OnN0YXRpYyB2b2lkIHRhc2tfd29rZW5fc2N4KHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MjUte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00OTIwPURFRklORV9TQ0hFRF9DTEFTUyhleHQpID0ge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTMzLVxcdC5zZWxlY3RfdGFza19ycVxcdFxcdD0gc2VsZWN0X3Rhc2tfcnFfc2N4LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDkzNDpcXHQudGFza193b2tlblxcdFxcdD0gdGFza193b2tlbl9zY3gsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTM1LVxcdC5zZXRfY3B1c19hbGxvd2VkXFx0PSBzZXRfY3B1c19hbGxvd2VkX3NjeCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MzAuMjk2MzAyNzMxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODk0NjU0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBTY2hlZHVsZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGllY2Ugb2YgY29kZSwgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0J3MgcGFydCBvZiB0aGUgYGV4dGAgc2NoZWQgY2xhc3MuIFRoYXQncyBhIGtleSBwaWVjZSBvZiBjb250ZXh0LiBOb3csIHdoYXQncyByZWxhdGVkIHRvIHRoaXM/IEkgaGF2ZSB0byBjb25zaWRlciB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFdoYXQgaXMgdGhpcyBtb2R1bGUgc3VwcG9zZWQgdG8gZG8/IFdoYXQncyB0aGUgc2NoZWR1bGluZyBzdHJhdGVneSBpdCBlbXBsb3lzPyBXaGF0IG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0gaW50ZXJhY3Qgd2l0aCBpdD8gUmlnaHQgbm93LCBteSBtaW5kIGdvZXMgdG8gYSBzcGVjaWZpYyBmdW5jdGlvbiAtIGBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuYC4gSXMgdGhpcyByZWxldmFudD8gSXMgdGhpcyAqdGhlKiB3b3JrIGZ1bmN0aW9uLCBvciBpcyBpdCByZWxhdGVkLCBvciBhIHBhcnQgb2YgYSBsYXJnZXIsIGNvb3JkaW5hdGVkIHNldCBvZiBmdW5jdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgc3lzdGVtLCBhbmQgdGhhdCdzIHRoZSBuZXh0IHN0ZXAgSSBoYXZlIHRvIHRha2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTI5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MzMuNTg1NzcxODEyWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzAyNDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz05Njk9Ym9vbCBzY3hfY3B1X3ZhbGlkKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgczMyIGNwdSwgY29uc3QgY2hhciAqd2hlcmUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3OC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk3OTpzdGF0aWMgdm9pZCBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuKHN0cnVjdCBycSAqcnEpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODAte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0yOTUwPXN0YXRpYyBpbmxpbmUgdm9pZCBtYXliZV9xdWV1ZV9iYWxhbmNlX2NhbGxiYWNrKHN0cnVjdCBycSAqcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI5NTctXFx0cXVldWVfYmFsYW5jZV9jYWxsYmFjayhycSwgXFx1MDAyNnJxLVxcdTAwM2VzY3guZGVmZXJyZWRfYmFsX2NiLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mjk1ODpcXHRcXHRcXHRcXHRkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI5NTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjMzLjYyODgwMTA3MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzUwMTYxMTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSd2ZSBkZXNjcmliZWQ6XG5cbioqQ29uc2lkZXJpbmcgRGVmZXJyZWQgSW50ZXJydXB0IEhhbmRsZXJzKipcblxuQWxyaWdodCwgbGV0J3MgdGhpbmsgdGhpcyB0aHJvdWdoLiBNeSBmb2N1cyBpcyBhbHdheXMgb24gb3B0aW1pemVkIGtlcm5lbCBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSBhcm91bmQgaW50ZXJydXB0IGhhbmRsaW5nLiBJJ20gZGVlcCBpbiB0aGUgd2VlZHMgcmlnaHQgbm93LCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBhcHByb2FjaCBmb3IgYSBwYXJ0aWN1bGFyIHByb2JsZW0uIEFuZCByaWdodCBub3csIHRoZSBxdWVzdGlvbiB0aGF0J3MganVtcGluZyB0byB0aGUgZm9yZWZyb250IGlzOiB3aGF0IGFib3V0IGBkZWZlcnJlZF9pcnFfd29ya2ZuYD8gSXMgdGhpcyBmdW5jdGlvbiwgZGVzaWduZWQgdG8gZGVmZXIgaW50ZXJydXB0LXJlbGF0ZWQgd29yaywgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoZSBqb2IgaGVyZT8gSXQgc2VlbXMgbGlrZSBpdCBjb3VsZCBvZmZlciBhIHBhdGggdG93YXJkIG1vcmUgcHJlZGljdGFibGUgcGVyZm9ybWFuY2UsIGFuZCBhIHdheSB0byBhdm9pZCBhbnkgcG90ZW50aWFsIGJsb2NraW5nIHdpdGhpbiB0aGUgaW50ZXJydXB0IGNvbnRleHQuIEkgbmVlZCB0byB3ZWlnaCB0aGUgcHJvcyBhbmQgY29ucyBjYXJlZnVsbHksIGNvbnNpZGVyaW5nIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgZGF0YSBpbnZvbHZlZC4gV2hhdCdzIHRoZSBsYXRlbmN5IGltcGFjdCBvZiB1c2luZyB0aGlzIHBhcnRpY3VsYXIgZGVmZXJyZWQgd29yayBtZWNoYW5pc20/IEFuZCB3aGF0J3MgdGhlIHRocmVhZGluZyBtb2RlbCBoZXJlPyBJcyBpdCBhcHByb3ByaWF0ZSBmb3IgdGhlIHRhc2sgYXQgaGFuZD8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIHN1aXRhYmlsaXR5LiBJIG5lZWQgdG8gZGl2ZSBkZWVwZXIgaW50byBpdHMgaW1wbGVtZW50YXRpb24gYW5kIGJlbmNobWFyayBpdCBhZ2FpbnN0IG90aGVyIG9wdGlvbnMgdG8gc2VlIGlmIHRoaXMgaXMgdGhlIGJlc3QsIG1vc3QgZWxlZ2FudCwgYW5kIG1vc3QgcGVyZm9ybWFudCBzb2x1dGlvbi4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAwMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjM3Ljk3ODk2NDc0WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzg5NTg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZlcnJlZF9pcnFfd29ya2ZuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz05Nzk9c3RhdGljIHZvaWQgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbihzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODMtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5ODQ6c3RhdGljIHZvaWQgZGVmZXJyZWRfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTg1LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODU3Nj12b2lkIF9faW5pdCBpbml0X3NjaGVkX2V4dF9jbGFzcyh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NjA4LVxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZycS1cXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg2MDk6XFx0XFx0cnEtXFx1MDAzZXNjeC5kZWZlcnJlZF9pcnFfd29yayA9IElSUV9XT1JLX0lOSVRfSEFSRChkZWZlcnJlZF9pcnFfd29ya2ZuKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2MTAtXFx0XFx0cnEtXFx1MDAzZXNjeC5raWNrX2NwdXNfaXJxX3dvcmsgPSBJUlFfV09SS19JTklUX0hBUkQoa2lja19jcHVzX2lycV93b3JrZm4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDozOC4wMjI4NjM1M1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY4MDE1NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipBbmFseXppbmcgYHJ1bl9kZWZlcnJlZGAgQ2FsbHNpdGVzKipcblxuQWxyaWdodCwgbGV0J3MgdHJhY2UgdGhpcy4gU28gYHJ1bl9kZWZlcnJlZGAgZ2V0cyBjYWxsZWQgZnJvbSAqdGhlc2UqIHBsYWNlcy4gT2theSwgZ290IGl0LiBIbW0sIG5vdyB3aGF0J3MgdGhlIG1vc3QgcHJvZHVjdGl2ZSBhcHByb2FjaCB0byBkaWcgaW4gaGVyZSwgd2hlcmUgdG8gZm9jdXM/IEhtbW0sIGlzIHRoZXJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiBhbW9uZ3N0IGFsbCB0aGVzZSBjYWxscyB0aGF0IHdlIGNhbiByZWFsbHkgZHJpbGwgaW50bz8gSSB0aGluayB0aGF0J3MgdGhlIGJlc3Qgd2F5IHRvIG1vdmUgZm9yd2FyZC4gTGV0J3Mgc2VlIGlmIHdlIGNhbiB1c2UgYHNjeF9icGZfa2lja19jcHVgIHRvIG1vdmUgZm9yd2FyZCBpbiBvdXIgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1NzAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDo0MC45OTA4ODE5ODJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTgxNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjeF9icGZfa2lja19jcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTg3MDU9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQwLSAqICVTQ1hfU0xJQ0VfSU5GLCBAcCBuZXZlciBleHBpcmVzIGFuZCB0aGUgQlBGIHNjaGVkdWxlciBtdXN0IGtpY2sgdGhlIENQVSB3aXRoXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NzQxOiAqIHNjeF9icGZfa2lja19jcHUoKSB0byB0cmlnZ2VyIHNjaGVkdWxpbmcuXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQyLSAqXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk0MjU9dm9pZCBzY3hfa2lja19jcHUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzMzIgY3B1LCB1NjQgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0MzUtXFx0aWYgKHVubGlrZWx5KGluX25taSgpKSkge1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTQzNjpcXHRcXHRzY3hfZXJyb3Ioc2NoLCBcXFwic2N4X2JwZl9raWNrX2NwdSgpIGNhbGxlZCBmcm9tIE5NSVxcXCIpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTQzNy1cXHRcXHRyZXR1cm47XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0OTEtLyoqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NDkyOiAqIHNjeF9icGZfa2lja19jcHUgLSBUcmlnZ2VyIHJlc2NoZWR1bGUgb24gYSBDUFVcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0OTMtICogQGNwdTogY3B1IHRvIGtpY2tcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUwMS0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk1MDI6X19icGZfa2Z1bmMgdm9pZCBzY3hfYnBmX2tpY2tfY3B1KHMzMiBjcHUsIHU2NCBmbGFncywgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUwMy17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1MTctICpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk1MTg6ICogY2lkLWFkZHJlc3NlZCBlcXVpdmFsZW50IG9mIHNjeF9icGZfa2lja19jcHUoKS4gQW4gaW52YWxpZCBAY2lkIGFib3J0cyB0aGVcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1MTktICogc2NoZWR1bGVyIHZpYSBzY3hfY2lkX3RvX2NwdSgpLiBDYXBzIGFyZSBlbmZvcmNlZCBvbiB0aGUgZGVsaXZlcnkgcGF0aDogYVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDU4Nj1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX3NldF9kc3FfdnRpbWUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA1ODc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfa2lja19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDU4OC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NpZCwgS0ZfSU1QTElDSVRfQVJHUylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA2NTI9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2NwdV9vbmx5KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA2NTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfa2lja19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY1NC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX2NwdSwgS0ZfUkNVKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDo0MS4wMzU0Njc0NzFaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5ODg4ODk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGNvZGU6XG5cbioqVGhpbmtpbmcgVGhyb3VnaCB0aGUgU2NoZWR1bGVyIGFuZCBEZWZlcnJlZCBXb3JrKipcblxuT2theSwgc28gYHNjeF9icGZfa2lja19jcHVgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGluaXRpYXRlcyBhIENQVSByZXNjaGVkdWxlLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgaW1wbGljYXRpb25zLiBNeSBwcmltYXJ5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgYWxzbyB0cmlnZ2VycyBgcnVuX2RlZmVycmVkYC4gSSBrbm93IGBzY3hfa2lja19jcHVgIGlzIGludm9sdmVkIGhlcmUsIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uJ3MgaW1wbGVtZW50YXRpb24gdG8gYmUgY2VydGFpbi4gTGV0IG1lIHN0YXJ0IHRoZXJlIGFuZCBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBwYXRoLiBJIG5lZWQgdG8ga25vdyBwcmVjaXNlbHkgd2hhdCdzIGRlZmVycmVkIGFuZCBob3cuIFVuZGVyc3RhbmRpbmcgdGhlIGludGVycGxheSBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBpcyBjcnVjaWFsIGZvci4uLiBbdGhlIHVzZXIgY2FuIGZpbGwgaW4gdGhlIHB1cnBvc2UgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0XS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1NjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDo0NS4yMzQzNTk5MVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0MzY0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N4X2tpY2tfY3B1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz01OTMzPXN0YXRpYyB2b2lkIHVuYnlwYXNzX3Jlbm90aWZ5X2lkbGUoc3RydWN0IHJxICpycSwgc3RydWN0IHNjeF9zY2hlZCAqcG9zLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01OTcyLSAqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1OTczOiAqIC0gc2N4X2tpY2tfY3B1KCkgaXMgZGlzYWJsZWQgdG8gYXZvaWQgaXJxX3dvcmsgbWFsZnVuY3Rpb24gZHVyaW5nIFBNXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01OTc0LSAqICAgb3BlcmF0aW9ucy5cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODQ0Mj1zdGF0aWMgdm9pZCBraWNrX2NwdXNfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NDU4LVxcdC8qXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NDU5OlxcdCAqIFdhbGsgc2NoZWRzIHdpdGggcGVuZGluZyBraWNrcyBvbiB0aGlzIGNwdS4gc2N4X2tpY2tfY3B1KCkgYWRkcyB0b1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODQ2MC1cXHQgKiB0aGUgbGlzdCB1bmRlciBsb2NhbF9pcnFfc2F2ZSgpIGFuZCBvbmx5IHRoaXMgaXJxX3dvcmsgY29uc3VtZXMgaXQuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk0MTE9X19icGZfa2Z1bmMgYm9vbCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCB2dGltZSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTQyNC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk0MjU6dm9pZCBzY3hfa2lja19jcHUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzMzIgY3B1LCB1NjQgZmxhZ3MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NDI2LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTUwMj1fX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfa2lja19jcHUoczMyIGNwdSwgdTY0IGZsYWdzLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1MDgtXFx0aWYgKGxpa2VseShzY2gpIFxcdTAwMjZcXHUwMDI2IHNjeF9jcHVfdmFsaWQoc2NoLCBjcHUsIE5VTEwpKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTUwOTpcXHRcXHRzY3hfa2lja19jcHUoc2NoLCBjcHUsIGZsYWdzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1MTAtfVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NTI0PV9fYnBmX2tmdW5jIHZvaWQgc2N4X2JwZl9raWNrX2NpZChzMzIgY2lkLCB1NjQgZmxhZ3MsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUzNS1cXHRcXHRyZXR1cm47XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NTM2OlxcdHNjeF9raWNrX2NwdShzY2gsIGNwdSwgZmxhZ3MpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUzNy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjQ1LjI3NzgwMDU4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDk1MzM1MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZWZlcnJlZCBSZS1lbnF1ZXVlIFByb2Nlc3MgaW4gdGhlIEtlcm5lbCoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHJlLWVucXVldWUgcHJvY2VzcyB3b3Jrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBhbmQgY2hlY2sgdGhlIGBzY3hfYnBmX2Rpc3BhdGNoYCBmdW5jdGlvbiBvciBzb21ldGhpbmcgc2ltaWxhci4gV2hlcmUgaXMgdGhlIG1hZ2ljIGhhcHBlbmluZz8gT2theSwgSSBzZWUgdGhhdCBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgaXMgdGhlIGtleS4gQnV0IHdoYXQgdHJpZ2dlcnMgdGhhdCBmdW5jdGlvbj8gSXQgbG9va3MgbGlrZSBgcnVuX2RlZmVycmVkYCBpcyByZXNwb25zaWJsZSBmb3IgcHJvY2Vzc2luZyBgcnEtXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzYC4gSSdtIGdldHRpbmcgY2xvc2VyLi4uIFNvIG5vdyB0aGUgcXVlc3Rpb24gaXM6IHdoZXJlIGFyZSBpdGVtcyBpbml0aWFsbHkgKmFkZGVkKiB0byB0aGlzIGBkZWZlcnJlZF9yZWVucV91c2Vyc2Agc3RydWN0dXJlPyBUaGF0J3MgdGhlIG1pc3NpbmcgcGllY2Ugb2YgdGhlIHB1enpsZSBJIG5lZWQgdG8gZmluZCB0aGUgY2F1c2Ugb2YgdGhlIHByb2JsZW0uIFRpbWUgdG8gZGlnIGRlZXBlci4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQ0NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjQ5LjMyNzMzNjg3OFoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyODU1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVmZXJyZWRfcmVlbnFfdXNlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNjU9dm9pZCBzY2hlZHVsZV9kc3FfcmVlbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTExNi1cXHRcXHQvKlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTExNzpcXHRcXHQgKiBQYWlycyB3aXRoIHNtcF9tYigpIGluIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBhbmRcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMTgtXFx0XFx0ICogZ3VhcmFudGVlcyB0aGF0IHRoZXJlIGlzIGEgcmVlbnFfdXNlcigpIGFmdGVyd2FyZHMuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMjctXFx0XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmRydS1cXHUwMDNlbm9kZSkpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMTI4OlxcdFxcdFxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZkcnUtXFx1MDAzZW5vZGUsIFxcdTAwMjZycS1cXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMjktXFx0XFx0XFx0V1JJVEVfT05DRShkcnUtXFx1MDAzZWZsYWdzLCBkcnUtXFx1MDAzZWZsYWdzIHwgcmVlbnFfZmxhZ3MpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NDM0PXN0YXRpYyB2b2lkIHJlZW5xX3VzZXIoc3RydWN0IHJxICpycSwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EsIHU2NCByZWVucV9mbGFncylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUwNC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1MDU6c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUwNi17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MTQtXFx0XFx0XFx0c3RydWN0IHNjeF9kZWZlcnJlZF9yZWVucV91c2VyICpkcnUgPVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDUxNTpcXHRcXHRcXHRcXHRsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXFx1MDAyNnJxLVxcdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTE2LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2N4X2RlZmVycmVkX3JlZW5xX3VzZXIsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1NDE9c3RhdGljIHZvaWQgcnVuX2RlZmVycmVkKHN0cnVjdCBycSAqcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1NDctXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NTQ4OlxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2cnEtXFx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2VycykpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NTQ5OlxcdFxcdHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMocnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDU1MC1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODU3Nj12b2lkIF9faW5pdCBpbml0X3NjaGVkX2V4dF9jbGFzcyh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NjA3LVxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZycS1cXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX2xvY2Fscyk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NjA4OlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZycS1cXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2MDktXFx0XFx0cnEtXFx1MDAzZXNjeC5kZWZlcnJlZF9pcnFfd29yayA9IElSUV9XT1JLX0lOSVRfSEFSRChkZWZlcnJlZF9pcnFfd29ya2ZuKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6NDkuMzcxNjI1MTY4WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNzgyNDEwMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOlxuXG4qKkFuYWx5emluZyB0aGUgUmUtZW5xdWV1ZSBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyBgc2NoZWR1bGVfZHNxX3JlZW5xYCBpcyBjbGVhcmx5IG1lYW50IHRvIGFkZCBzb21ldGhpbmcgdG8gYGRlZmVycmVkX3JlZW5xX3VzZXJzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IFwic29tZXRoaW5nXCIgaXMsIGFuZCBtb3JlIGltcG9ydGFudGx5LCB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2Ygd2h5IHdlJ3JlIGRlZmVycmluZyByZS1lbnF1ZXVpbmcgaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGF0IHZhcmlhYmxlIG5hbWUsIGBkZWZlcnJlZF9yZWVucV91c2Vyc2AsIGltcGxpZXMgdGhlcmUgYXJlIHVzZXJzLiBTbywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aGF0IGNyaXRlcmlhIG11c3QgYSB1c2VyIG1lZXQgdG8gYmUgZGVmZXJyZWQ/IElzIHRoZSBpc3N1ZSByZWxhdGVkIHRvIGNhcGFjaXR5LCB0cmFuc2llbnQgZXJyb3JzLCBvciBhIG1vcmUgY29tcGxleCBidXNpbmVzcyBydWxlP1xuXG5NeSBpbW1lZGlhdGUgZm9sbG93LXVwIHF1ZXN0aW9uIGlzLCB3aGVyZSBpbiB0aGUgY29kZWJhc2UgaXMgYHNjaGVkdWxlX2RzcV9yZWVucWAgYWN0dWFsbHkgYmVpbmcgKmNhbGxlZCo/IEZpbmRpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2VyIGNvbmRpdGlvbnMgZm9yIHRoaXMgZGVmZXJyZWQgcmUtZW5xdWV1ZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgaWRlbnRpZnkgdGhlIHNjZW5hcmlvcyB0aGF0IGxlYWQgdG8gY2FsbGluZyB0aGF0IGZ1bmN0aW9uLiBJcyBpdCBwYXJ0IG9mIGEgcmV0cnkgbG9naWMsIGEgcmF0ZS1saW1pdGluZyBtZWNoYW5pc20sIG9yIHNvbWV0aGluZyBlbnRpcmVseSBkaWZmZXJlbnQ/IFdpdGhvdXQgdGhhdCBjb250ZXh0LCBJIGNhbid0IGRldGVybWluZSBpZiB0aGlzIG1lY2hhbmlzbSBpcyBvcHRpbWFsLCBlZmZpY2llbnQsIG9yIHBvdGVudGlhbGx5IGludHJvZHVjaW5nIHByb2JsZW1zLiBJIG5lZWQgdG8gZm9sbG93IHRoZSBjYWxsIHN0YWNrIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93IG9mIGNvbnRyb2wuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NDU3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6NTQuNjQ5ODY4MTY0WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY2Mjg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hlZHVsZV9kc3FfcmVlbnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMjU9c3RhdGljIHZvaWQgc2NoZWR1bGVfZGVmZXJyZWRfbG9ja2VkKHN0cnVjdCBycSAqcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNjQtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDY1OnZvaWQgc2NoZWR1bGVfZHNxX3JlZW5xKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY2LVxcdFxcdFxcdHU2NCByZWVucV9mbGFncywgc3RydWN0IHJxICpsb2NrZWRfcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQzODk9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV9sb2NhbHMoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDQyMC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ0MjE6XFx0XFx0Lyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NDIyLVxcdFxcdHNtcF9tYigpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NTA1PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUzMC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1MzE6XFx0XFx0Lyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTMyLVxcdFxcdHNtcF9tYigpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NzQyPV9fYnBmX2tmdW5jIHZvaWQgc2N4X2JwZl9kc3FfcmVlbnEodTY0IGRzcV9pZCwgdTY0IHJlZW5xX2ZsYWdzLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzYzLVxcdGRzcSA9IGZpbmRfZHNxX2Zvcl9kaXNwYXRjaChzY2gsIHRoaXNfcnEoKSwgZHNxX2lkLCBzbXBfcHJvY2Vzc29yX2lkKCkpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc2NDpcXHRzY2hlZHVsZV9kc3FfcmVlbnEoc2NoLCBkc3EsIHJlZW5xX2ZsYWdzLCBzY3hfbG9ja2VkX3JxKCkpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc2NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjU0LjY5NDUzMzY1M1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA2NjA2NDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHNjeF9icGZfZHNxX3JlZW5xYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBpdCBjYWxscyBgc2NoZWR1bGVfZHNxX3JlZW5xYCwgYW5kIEkgc2VlIGl0J3MgZGVmaW5lZCBhcyBhIEJQRiBrZnVuYy4gVGhpcyBpcyBpbnRlcmVzdGluZy4gVGhpcyBtZWFucyBhIEJQRiBwcm9ncmFtIGNhbiBjYWxsIGBzY3hfYnBmX2RzcV9yZWVucWAsIHdoaWNoIGluIHR1cm4gYWRkcyBzb21ldGhpbmcgdG8gYGRlZmVycmVkX3JlZW5xX3VzZXJzYC4gVGhlbiwgbGF0ZXIsIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBjb21lcyBhbG9uZyBhbmQgcHJvY2Vzc2VzIHRob3NlIHVzZXJzIHZpYSBgcnVuX2RlZmVycmVkYC5cblxuTXkgaW50dWl0aW9uIGlzIHNjcmVhbWluZyBcInBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiFcIiBiZWNhdXNlIEkgc2VlIGEgc2l0dWF0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCAqbWlnaHQqIGludmFsaWRhdGUgdGhlIGBkc3FgIG9iamVjdCAqYmVmb3JlKiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgZ2V0cyBhIGNoYW5jZSB0byBydW4uIFRoYXQncyBwcmVjaXNlbHkgdGhlIHR5cGUgb2Ygc2NlbmFyaW8gSSdtIGxvb2tpbmcgZm9yLiBTbywgYHNjeF9icGZfZHNxX3JlZW5xYCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGEgRm9jdXNTeW1ib2wsIGFuZCwgc2luY2UgaXQncyBhIGtmdW5jLCBpdCdzIGEgZ3JlYXQgZW50cnkgcG9pbnQgdG8gc3RhcnQgbG9va2luZyBhdC5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBpdCdzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCB3b3VsZCBiZSBhbiBvYnZpb3VzIGJsb2NrZXIgdG8gbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1Mjg4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjU5LjUwMTE0MzAxWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzYxMjQ5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N4X2JwZl9kc3FfcmVlbnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk3MDM9X19icGZfa2Z1bmMgc3RydWN0IHRhc2tfc3RydWN0ICpzY3hfYnBmX2RzcV9wZWVrKHU2NCBkc3FfaWQsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3MjctLyoqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzI4OiAqIHNjeF9icGZfZHNxX3JlZW5xIC0gUmUtZW5xdWV1ZSB0YXNrcyBvbiBhIERTUVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyOS0gKiBAZHNxX2lkOiBEU1EgdG8gcmUtZW5xdWV1ZVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzQxLSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc0MjpfX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZHNxX3JlZW5xKHU2NCBkc3FfaWQsIHU2NCByZWVucV9mbGFncyxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3NDMtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05Nzc0LSAqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5Nzc1OiAqIFRoaXMgaXMgbm93IGEgc3BlY2lhbCBjYXNlIG9mIHNjeF9icGZfZHNxX3JlZW5xKCkgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc3Ni0gKiBmdXR1cmUuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk3Nzg9X19icGZfa2Z1bmMgdm9pZCBzY3hfYnBmX3JlZW5xdWV1ZV9sb2NhbF9fX3YyKGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3Nzkte1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc4MDpcXHRzY3hfYnBmX2RzcV9yZWVucShTQ1hfRFNRX0xPQ0FMLCAwLCBhdXgpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc4MS19XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNTkxPUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9wZWVrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVX1BST1RFQ1RFRCB8IEtGX1JFVF9OVUxMKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA1OTI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3JlZW5xLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA1OTMtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsX19fdjIsIEtGX0lNUExJQ0lUX0FSR1MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA1OjAwLjEzNzI3Mjg0OFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTY4ODAyOTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFNRIERlc3RydWN0aW9uIFJhY2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERTUSBpc3N1ZSBhbmQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgeWVzLCBgc2N4X2JwZl9kc3FfcmVlbnFgIGlzIGRlZmluaXRlbHkgYSBrZnVuYywgYW5kIGNydWNpYWxseSwgaXQncyBub24tc3RhdGljLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHJlY2FsbCBhbm90aGVyIG9uZSByZWxhdGVkIHRvIHJlLWVucXVldWVpbmcgaXMgYHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsX19fdjJgLiBOb3csIHRoZSBwcm9ibGVtIGRlc2NyaXB0aW9uIGlzIHNwZWNpZmljYWxseSBwb2ludGluZyBhdCBhIHJhY2UgY29uZGl0aW9uIGR1cmluZyBgZGVzdHJveV9kc3EoKWAuIFJpZ2h0LCB0aGF0IGZ1bmN0aW9uIGdldHMgaW52b2tlZCB3aGVuIGEgRFNRIGlzLCB3ZWxsLCBkZXN0cm95ZWQuIFNlZW1zIGxvZ2ljYWwuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGZvciBgZGVzdHJveV9kc3EoKWAgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kIHRoYXQgbWlnaHQgYmUgY2F1c2luZyB0aGlzIHJhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBtZWNoYW5pY3Mgb2YgaXRzIG9wZXJhdGlvbiB0byBpZGVudGlmeSB0aGUgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYzOTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNTowNS4zMDYwNzg5NDNaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzM1MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlc3Ryb3lfZHNxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz00NTA1PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUzMy1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1MzQ6XFx0XFx0LyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTM1LVxcdFxcdGlmICh1bmxpa2VseShkc3EtXFx1MDAzZWlkIFxcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01MDE5PXN0YXRpYyBERUZJTkVfSVJRX1dPUksoZnJlZV9kc3FfaXJxX3dvcmssIGZyZWVfZHNxX2lycV93b3JrZm4pO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAyMC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjUwMjE6c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAyMi17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTUyMzA9c3RhdGljIHZvaWQgc2N4X3NjaGVkX2ZyZWVfcmN1X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01Mjk1LVxcdFxcdHdoaWxlICghSVNfRVJSX09SX05VTEwoKGRzcSA9IHJoYXNodGFibGVfd2Fsa19uZXh0KFxcdTAwMjZyaHRfaXRlcikpKSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjUyOTY6XFx0XFx0XFx0ZGVzdHJveV9kc3Eoc2NoLCBkc3EtXFx1MDAzZWlkKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUyOTctXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk1NDc9X19icGZfa2Z1bmMgczMyIHNjeF9icGZfZHNxX25yX3F1ZXVlZCh1NjQgZHNxX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1ODQtLyoqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NTg1OiAqIHNjeF9icGZfZGVzdHJveV9kc3EgLSBEZXN0cm95IGEgY3VzdG9tIERTUVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU4Ni0gKiBAZHNxX2lkOiBEU1EgdG8gZGVzdHJveVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTkzLSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTU5NDpfX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZGVzdHJveV9kc3EodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU5NS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk2MDAtXFx0aWYgKHNjaClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk2MDE6XFx0XFx0ZGVzdHJveV9kc3Eoc2NoLCBkc3FfaWQpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTYwMi19XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNTg5PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9ucl9xdWV1ZWQsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDU5MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kZXN0cm95X2RzcSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNTkxLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9wZWVrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVX1BST1RFQ1RFRCB8IEtGX1JFVF9OVUxMKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNTowNS4zNTA0MTczNDNaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE0OTE1Nzg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSYWNlIENvbmRpdGlvbiBpbiB0aGUgRXh0ZW5zaWJsZSBTY2hlZHVsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgZml4IHJlbGF0ZWQgdG8gdGhlIGV4dGVuc2libGUgc2NoZWR1bGVyIChzY2hlZF9leHQpIGFuZCBhIGN1c3RvbSBkaXNwYXRjaCBxdWV1ZSAoRFNRKS4gSXQgbG9va3MgbGlrZSBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyByZXNwb25zaWJsZSBmb3IgZGVzdHJveWluZyB0aGUgRFNRLiBUaGUgY29yZSBpc3N1ZSBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIHRoaXMgZGVzdHJ1Y3Rpb24gcHJvY2VzcyBhbmQgdGhlIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucyBtYW5hZ2VkIGJ5IGBzY3hfYnBmX2RzcV9yZWVucWAuXG5cblRoZXJlZm9yZSwgbXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2UgdHdvIGZ1bmN0aW9uczogYHNjeF9icGZfZHNxX3JlZW5xYCBhbmQgYHNjeF9icGZfZGVzdHJveV9kc3FgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXkncmUgYmVoYXZpbmcgY29ycmVjdGx5IGluIHRoZSBmYWNlIG9mIGVhY2ggb3RoZXIuIEkndmUgYWxyZWFkeSBjb25maXJtZWQgdGhleSBhcmUgYm90aCBub24tc3RhdGljIGFuZCBleHBvcnRlZCwgc3BlY2lmaWNhbGx5IGBfX2JwZl9rZnVuY2AsIG1lYW5pbmcgdGhleSBhcmUgYWNjZXNzaWJsZSB0byBCUEYgY29kZSwgYW5kIHRoZXJlZm9yZSB0aGlzIHJhY2UgaXMgYSBnZW51aW5lIGNvbmNlcm4uXG5cbkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIGNyaXRpY2FsIHJhY2UgY29uZGl0aW9uIHdpdGhpbiB0aGUgY29yZSBzY2hlZHVsaW5nIGxvZ2ljIG9mIHNjaGVkX2V4dC4gVGhpcyBpcyB0aGUgcGxhY2UgdG8gYmUsIHRvIGxvb2sgdG8gYmUgZnV6emluZy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgaW4gdXNlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQuIFdlIGRlZmluaXRlbHkgbmVlZCBgU0NIRURfQ0xBU1NfRVhUYC4gYEJQRl9TWVNDQUxMYCBhbmQgYERFQlVHX0lORk9fQlRGYCBhcmUgdXN1YWxseSBzdGFuZGFyZCBmb3IgYW55IEJQRiBmdXp6aW5nIHNldHVwIGFueXdheSwgc28gSSdsbCBhc3N1bWUgdGhvc2UgYXJlIGluIHBsYWNlLiBUaGVyZWZvcmUsIGBTQ0hFRF9DTEFTU19FWFRgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiB0byBlbmFibGUsIGFuZCBJJ2xsIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IGZ1cnRoZXIgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzUyMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNToxMi40OTk1NzczMjNaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODM3ODcxNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL0tjb25maWcucHJlZW1wdD0xNTE9Y29uZmlnIFNDSEVEX0NPUkVcXG4tLVxcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTY4LVxcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQ6MTY5OmNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3MC1cXHRib29sIFxcXCJFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA1OjEzLjk4MzM3MjA5OVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTY5MzA5ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NoZWR1bGVyIENsYXNzIEV4dGVuc2lvbiBSYWNlIENvbmRpdGlvbioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMuIElzIGBTQ0hFRF9DTEFTU19FWFRgIHRydWx5IHRoZSAqb25seSogc2NoZWR1bGVyIGNsYXNzIGV4dGVuc2lvbiB3ZSBuZWVkIHRvIGNvbnNpZGVyIGhlcmU/IFllcywgdGhhdCBjaGVja3Mgb3V0LiBHb29kLiBOb3csIGxldCdzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGlzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gVGltZSB0byByZXZpZXcgdGhlIGBGb2N1c1N5bWJvbHNgLlxuXG5SaWdodCwgc28gd2UgaGF2ZSBgc2N4X2JwZl9kc3FfcmVlbnFgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAuIFRob3NlIGFyZSB0aGUgQlBGIGtmdW5jcyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIHdob2xlIGlzc3VlLiBXZSBuZWVkIHRvIGJlIHByZWNpc2UgYWJvdXQgaG93IHRoZXkgaW50ZXJhY3QgYW5kIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXR5IGxpZXMuXG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIHNlcXVlbmNlOiBGaXJzdCwgYHNjeF9icGZfZHNxX3JlZW5xYCBnZXRzIGNhbGxlZC4gVGhpcyBmdW5jdGlvbiBhZGRzIGEgYHNjeF9kZWZlcnJlZF9yZWVucV91c2VyYCB0byBgcnEtXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzYC4gVGhhdCdzIHRoZSBlbnF1ZXVpbmcgc2lkZS4gVGhlbiwgY29uY3VycmVudGx5LCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgY2FsbGVkLiBBaCwgcmlnaHQuIFRoaXMgZGVzdHJveXMgdGhlIERTUS4gVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBEU1EncyBJRCB0byBgU0NYX0RTUV9GTEFHX0JVSUxUSU5gLi4uIGhvbGQgb24sIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IHBhcnQuIEFoLCB0aGUgcGF0Y2ggbm90ZXMgY2xlYXJseSBpbmRpY2F0ZSB0aGF0IHRoZSBEU1EncyBJRCBpcyBzZXQgYnkgYGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU5gLiBCZXN0IHRvIHZlcmlmeSBleGFjdGx5IHdoYXQgYGRlc3Ryb3lfZHNxYCBkb2VzIGludGVybmFsbHksIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg0MjYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDU6MTkuMTUyNjg0OTA1WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NDY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwMjEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjUwMjE6XFx0c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxcbjUwMjI6XFx0e1xcbjUwMjM6XFx0XFx0c3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3E7XFxuNTAyNDpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbjUwMjU6XFx0XFxuNTAyNjpcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuNTAyNzpcXHRcXG41MDI4OlxcdFxcdGRzcSA9IGZpbmRfdXNlcl9kc3Eoc2NoLCBkc3FfaWQpO1xcbjUwMjk6XFx0XFx0aWYgKCFkc3EpXFxuNTAzMDpcXHRcXHRcXHRnb3RvIG91dF91bmxvY2tfcmN1O1xcbjUwMzE6XFx0XFxuNTAzMjpcXHRcXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRzcS1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbjUwMzM6XFx0XFxuNTAzNDpcXHRcXHRpZiAoZHNxLVxcdTAwM2Vucikge1xcbjUwMzU6XFx0XFx0XFx0c2N4X2Vycm9yKHNjaCwgXFxcImF0dGVtcHRpbmcgdG8gZGVzdHJveSBpbi11c2UgZHNxIDB4JTAxNmxseCAobnI9JXUpXFxcIixcXG41MDM2OlxcdFxcdFxcdFxcdCAgZHNxLVxcdTAwM2VpZCwgZHNxLVxcdTAwM2Vucik7XFxuNTAzNzpcXHRcXHRcXHRnb3RvIG91dF91bmxvY2tfZHNxO1xcbjUwMzg6XFx0XFx0fVxcbjUwMzk6XFx0XFxuNTA0MDpcXHRcXHRpZiAocmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcXHUwMDI2c2NoLVxcdTAwM2Vkc3FfaGFzaCwgXFx1MDAyNmRzcS1cXHUwMDNlaGFzaF9ub2RlLFxcbjUwNDE6XFx0XFx0XFx0XFx0XFx0ICAgZHNxX2hhc2hfcGFyYW1zKSlcXG41MDQyOlxcdFxcdFxcdGdvdG8gb3V0X3VubG9ja19kc3E7XFxuNTA0MzpcXHRcXG41MDQ0OlxcdFxcdC8qXFxuNTA0NTpcXHRcXHQgKiBNYXJrIGRlYWQgYnkgaW52YWxpZGF0aW5nIC1cXHUwMDNlaWQgdG8gcHJldmVudCBzY3hfZGlzcGF0Y2hfZW5xdWV1ZSgpIGZyb21cXG41MDQ2OlxcdFxcdCAqIHF1ZXVlaW5nIG1vcmUgdGFza3MuIEFzIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIGFueXdoZXJlLFxcbjUwNDc6XFx0XFx0ICogZnJlZWluZyBpcyBib3VuY2VkIHRocm91Z2ggYW4gaXJxIHdvcmsgdG8gYXZvaWQgbmVzdGluZyBSQ1VcXG41MDQ4OlxcdFxcdCAqIG9wZXJhdGlvbnMgaW5zaWRlIHNjaGVkdWxlciBsb2Nrcy5cXG41MDQ5OlxcdFxcdCAqL1xcbjUwNTA6XFx0XFx0ZHNxLVxcdTAwM2VpZCA9IFNDWF9EU1FfSU5WQUxJRDtcXG41MDUxOlxcdFxcdGlmIChsbGlzdF9hZGQoXFx1MDAyNmRzcS1cXHUwMDNlZnJlZV9ub2RlLCBcXHUwMDI2ZHNxc190b19mcmVlKSlcXG41MDUyOlxcdFxcdFxcdGlycV93b3JrX3F1ZXVlKFxcdTAwMjZmcmVlX2RzcV9pcnFfd29yayk7XFxuNTA1MzpcXHRcXG41MDU0OlxcdG91dF91bmxvY2tfZHNxOlxcbjUwNTU6XFx0XFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRzcS1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbjUwNTY6XFx0b3V0X3VubG9ja19yY3U6XFxuNTA1NzpcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG41MDU4OlxcdH1cXG41MDU5OlxcdFxcbjUwNjA6XFx0I2lmZGVmIENPTkZJR19FWFRfR1JPVVBfU0NIRURcXG41MDYxOlxcdHN0YXRpYyB2b2lkIHNjeF9jZ3JvdXBfZXhpdChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxuNTA2MjpcXHR7XFxuNTA2MzpcXHRcXHRzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqY3NzO1xcbjUwNjQ6XFx0XFxuNTA2NTpcXHRcXHQvKlxcbjUwNjY6XFx0XFx0ICogc2N4X3RnX29uL29mZmxpbmUoKSBhcmUgZXhjbHVkZWQgdGhyb3VnaCBjZ3JvdXBfbG9jaygpLiBJZiB3ZSB3YWxrXFxuNTA2NzpcXHRcXHQgKiBjZ3JvdXBzIGFuZCBleGl0IGFsbCB0aGUgaW5pdGVkIG9uZXMsIGFsbCBvbmxpbmUgY2dyb3VwcyBhcmUgZXhpdGVkLlxcbjUwNjg6XFx0XFx0ICovXFxuNTA2OTpcXHRcXHRjc3NfZm9yX2VhY2hfZGVzY2VuZGFudF9wb3N0KGNzcywgXFx1MDAyNnJvb3RfdGFza19ncm91cC5jc3MpIHtcXG41MDcwOlxcdFxcdFxcdHN0cnVjdCB0YXNrX2dyb3VwICp0ZyA9IGNzc190Zyhjc3MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNToxOS4xNTMwNjE5MDVaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMDg4NTYxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgZGVzdHJveV9kc3FgIEZ1bmN0aW9uIGFuZCBJbnZhbGlkYXRpbmcgdGhlIERhdGEgU3RydWN0dXJlIElkZW50aWZpZXIqKlxuXG5SaWdodCwgc28gYGRlc3Ryb3lfZHNxYCBpcyBjbGVhcmx5IHNldHRpbmcgYGRzcS1cdTAwM2VpZCA9IFNDWF9EU1FfSU5WQUxJRGAuIE1ha2VzIHNlbnNlOyB3ZSdyZSBpbnZhbGlkYXRpbmcgdGhlIGRhdGEgc3RydWN0dXJlIGFmdGVyIGRlc3RydWN0aW9uLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBpbW1lZGlhdGVseSB2ZXJpZnkgd2hhdCBgU0NYX0RTUV9JTlZBTElEYCBhY3R1YWxseSAqaXMqLiBJcyBpdCAtMT8gMD8gU29tZSBsYXJnZSwgaW1wcm9iYWJsZSBudW1iZXI/IFVuZGVyc3RhbmRpbmcgdGhhdCBjb25zdGFudCBpcyBjcml0aWNhbCB0byBlbnN1cmluZyB3ZSBkb24ndCBhY2NpZGVudGFsbHkgcmV1c2UgdGhlIG5vdy1kZXN0cm95ZWQgYGRzcWAgaGFuZGxlIHdpdGhvdXQgcHJvcGVyIHJlLWluaXRpYWxpemF0aW9uLCBvciB3b3JzZSwgdGhhdCBpdCBkb2Vzbid0IGNvbGxpZGUgd2l0aCBzb21lIHZhbGlkIGRhdGEgc3RydWN0dXJlLiBJdCdzIHRoZSBseW5jaHBpbiBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3kgaGVyZSBhbmQgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IHZlcmlmaWFibGUgYnkgdGhlIHRlYW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODI1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNToyMy4wNzM5NDk1NDRaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTU1MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlNDWF9EU1FfSU5WQUxJRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTYyMj1zdGF0aWMgdm9pZCBzY3hfZGlzcGF0Y2hfZW5xdWV1ZShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBycSAqcnEsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2NDAtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxNjQxOlxcdFxcdGlmICh1bmxpa2VseShkc3EtXFx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2NDItXFx0XFx0XFx0c2N4X2Vycm9yKHNjaCwgXFxcImF0dGVtcHRpbmcgdG8gZGlzcGF0Y2ggdG8gYSBkZXN0cm95ZWQgZHNxXFxcIik7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTE4ODg9c3RhdGljIHZvaWQgbWFya19kaXJlY3RfZGlzcGF0Y2goc3RydWN0IHNjeF9zY2hlZCAqc2NoLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTExLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTkxMjpcXHRXQVJOX09OX09OQ0UocC1cXHUwMDNlc2N4LmRkc3BfZHNxX2lkICE9IFNDWF9EU1FfSU5WQUxJRCk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTEzLVxcdFdBUk5fT05fT05DRShwLVxcdTAwM2VzY3guZGRzcF9lbnFfZmxhZ3MpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xOTM2PXN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9kaXJlY3RfZGlzcGF0Y2goc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTkzNy17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxOTM4OlxcdHAtXFx1MDAzZXNjeC5kZHNwX2RzcV9pZCA9IFNDWF9EU1FfSU5WQUxJRDtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE5MzktXFx0cC1cXHUwMDNlc2N4LmRkc3BfZW5xX2ZsYWdzID0gMDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MjAxMD12b2lkIHNjeF9kb19lbnF1ZXVlX3Rhc2soc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1NjQgZW5xX2ZsYWdzLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yMDYyLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjA2MzpcXHRpZiAocC1cXHUwMDNlc2N4LmRkc3BfZHNxX2lkICE9IFNDWF9EU1FfSU5WQUxJRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwNjQtXFx0XFx0Z290byBkaXJlY3Q7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwOTYtXFx0KmRkc3BfdGFza3AgPSBOVUxMO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjA5NzpcXHRpZiAocC1cXHUwMDNlc2N4LmRkc3BfZHNxX2lkICE9IFNDWF9EU1FfSU5WQUxJRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwOTgtXFx0XFx0Z290byBkaXJlY3Q7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM5NTY9dm9pZCBpbml0X3NjeF9lbnRpdHkoc3RydWN0IHNjaGVkX2V4dF9lbnRpdHkgKnNjeClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk2NS1cXHRzY3gtXFx1MDAzZXJ1bm5hYmxlX2F0ID0gamlmZmllcztcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM5NjY6XFx0c2N4LVxcdTAwM2VkZHNwX2RzcV9pZCA9IFNDWF9EU1FfSU5WQUxJRDtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NjctXFx0c2N4LVxcdTAwM2VzbGljZSA9IFNDWF9TTElDRV9ERkw7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTUwMjE9c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MDQ5LVxcdCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NTA1MDpcXHRkc3EtXFx1MDAzZWlkID0gU0NYX0RTUV9JTlZBTElEO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTA1MS1cXHRpZiAobGxpc3RfYWRkKFxcdTAwMjZkc3EtXFx1MDAzZWZyZWVfbm9kZSwgXFx1MDAyNmRzcXNfdG9fZnJlZSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA1OjIzLjEyMDUwNzI2NFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQ0MTk5NzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBgU0NYX0RTUV9JTlZBTElEYCBjb25zdGFudCBpcyBkZWZpbmVkLiBLbm93aW5nIHRoZSBMaW51eCBrZXJuZWwsIHRoZSBsaWtlbHkgY2FuZGlkYXRlcyBhcmUgaW4gdGhlIGhlYWRlciBmaWxlcyBmb3Igc2NoZWR1bGVyIGV4dGVuc2lvbnMuIEkgc2hvdWxkIGNoZWNrIGBpbmNsdWRlL3VhcGkvbGludXgvc2NoZWQvZXh0LmhgIGZpcnN0LCBhcyB0aGF0IHVzdWFsbHkgY29udGFpbnMgdGhlIHVzZXItc3BhY2UgYWNjZXNzaWJsZSBkZWZpbml0aW9ucy4gSWYgaXQncyBub3QgdGhlcmUsIHRoZW4gSSdsbCBkZWx2ZSBkZWVwZXIgaW50byB0aGUga2VybmVsJ3MgaW50ZXJuYWwgc3RydWN0dXJlcyBhbmQgbG9vayBpbiBga2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHByb2dyZXNzaW9uIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHVzYWdlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5NTUsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNToyNi4xNjQ3MTA1NjVaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjQ4NzgzMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU0NYX0RTUV9JTlZBTElEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oPTUzPWVudW0gc2N4X2RzcV9pZF9mbGFncyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oLTU2LVxcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0Lmg6NTc6XFx0U0NYX0RTUV9JTlZBTElEXFx0XFx0PSBTQ1hfRFNRX0ZMQUdfQlVJTFRJTiB8IDAsXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC01OC1cXHRTQ1hfRFNRX0dMT0JBTFxcdFxcdD0gU0NYX0RTUV9GTEFHX0JVSUxUSU4gfCAxLFxcbi0tXFxuaW5pdC9pbml0X3Rhc2suYz0xMDU9c3RydWN0IHRhc2tfc3RydWN0IGluaXRfdGFzayBfX2FsaWduZWQoTDFfQ0FDSEVfQllURVMpID0ge1xcbi0tXFxuaW5pdC9pbml0X3Rhc2suYy0xNTAtXFx0XFx0LnJ1bm5hYmxlX2F0XFx0PSBJTklUSUFMX0pJRkZJRVMsXFxuaW5pdC9pbml0X3Rhc2suYzoxNTE6XFx0XFx0LmRkc3BfZHNxX2lkXFx0PSBTQ1hfRFNRX0lOVkFMSUQsXFxuaW5pdC9pbml0X3Rhc2suYy0xNTItXFx0XFx0LnNsaWNlXFx0XFx0PSBTQ1hfU0xJQ0VfREZMLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xNjIyPXN0YXRpYyB2b2lkIHNjeF9kaXNwYXRjaF9lbnF1ZXVlKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHJxICpycSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTY0MC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE2NDE6XFx0XFx0aWYgKHVubGlrZWx5KGRzcS1cXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEKSkge1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTY0Mi1cXHRcXHRcXHRzY3hfZXJyb3Ioc2NoLCBcXFwiYXR0ZW1wdGluZyB0byBkaXNwYXRjaCB0byBhIGRlc3Ryb3llZCBkc3FcXFwiKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTg4OD1zdGF0aWMgdm9pZCBtYXJrX2RpcmVjdF9kaXNwYXRjaChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE5MTEtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxOTEyOlxcdFdBUk5fT05fT05DRShwLVxcdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE5MTMtXFx0V0FSTl9PTl9PTkNFKHAtXFx1MDAzZXNjeC5kZHNwX2VucV9mbGFncyk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTE5MzY9c3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2RpcmVjdF9kaXNwYXRjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTM3LXtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE5Mzg6XFx0cC1cXHUwMDNlc2N4LmRkc3BfZHNxX2lkID0gU0NYX0RTUV9JTlZBTElEO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTkzOS1cXHRwLVxcdTAwM2VzY3guZGRzcF9lbnFfZmxhZ3MgPSAwO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0yMDEwPXZvaWQgc2N4X2RvX2VucXVldWVfdGFzayhzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBlbnFfZmxhZ3MsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwNjItXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoyMDYzOlxcdGlmIChwLVxcdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjA2NC1cXHRcXHRnb3RvIGRpcmVjdDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjA5Ni1cXHQqZGRzcF90YXNrcCA9IE5VTEw7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoyMDk3OlxcdGlmIChwLVxcdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjA5OC1cXHRcXHRnb3RvIGRpcmVjdDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9Mzk1Nj12b2lkIGluaXRfc2N4X2VudGl0eShzdHJ1Y3Qgc2NoZWRfZXh0X2VudGl0eSAqc2N4KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zOTY1LVxcdHNjeC1cXHUwMDNlcnVubmFibGVfYXQgPSBqaWZmaWVzO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mzk2NjpcXHRzY3gtXFx1MDAzZWRkc3BfZHNxX2lkID0gU0NYX0RTUV9JTlZBTElEO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk2Ny1cXHRzY3gtXFx1MDAzZXNsaWNlID0gU0NYX1NMSUNFX0RGTDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTAyMT1zdGF0aWMgdm9pZCBkZXN0cm95X2RzcShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHU2NCBkc3FfaWQpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUwNDktXFx0ICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1MDUwOlxcdGRzcS1cXHUwMDNlaWQgPSBTQ1hfRFNRX0lOVkFMSUQ7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MDUxLVxcdGlmIChsbGlzdF9hZGQoXFx1MDAyNmRzcS1cXHUwMDNlZnJlZV9ub2RlLCBcXHUwMDI2ZHNxc190b19mcmVlKSlcXG4tLVxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtX2RlZnMuYXV0b2dlbi5oLTYwLSNkZWZpbmUgSEFWRV9TQ1hfRFNRX0ZMQUdfTE9DQUxfT05cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvZW51bV9kZWZzLmF1dG9nZW4uaDo2MTojZGVmaW5lIEhBVkVfU0NYX0RTUV9JTlZBTElEXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1fZGVmcy5hdXRvZ2VuLmgtNjItI2RlZmluZSBIQVZFX1NDWF9EU1FfR0xPQkFMXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvZW51bXMuYXV0b2dlbi5icGYuaD00Mz1jb25zdCB2b2xhdGlsZSB1NjQgX19TQ1hfRFNRX0ZMQUdfTE9DQUxfT04gX193ZWFrO1xcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1zLmF1dG9nZW4uYnBmLmgtNDUtXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1zLmF1dG9nZW4uYnBmLmg6NDY6Y29uc3Qgdm9sYXRpbGUgdTY0IF9fU0NYX0RTUV9JTlZBTElEIF9fd2VhaztcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvZW51bXMuYXV0b2dlbi5icGYuaDo0NzojZGVmaW5lIFNDWF9EU1FfSU5WQUxJRCBfX1NDWF9EU1FfSU5WQUxJRFxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmJwZi5oLTQ4LVxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1zLmF1dG9nZW4uaC0yMC1cXHRTQ1hfRU5VTV9TRVQoc2tlbCwgc2N4X2RzcV9pZF9mbGFncywgU0NYX0RTUV9GTEFHX0xPQ0FMX09OKTsgXFxcXFxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmg6MjE6XFx0U0NYX0VOVU1fU0VUKHNrZWwsIHNjeF9kc3FfaWRfZmxhZ3MsIFNDWF9EU1FfSU5WQUxJRCk7IFxcXFxcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvZW51bXMuYXV0b2dlbi5oLTIyLVxcdFNDWF9FTlVNX1NFVChza2VsLCBzY3hfZHNxX2lkX2ZsYWdzLCBTQ1hfRFNRX0dMT0JBTCk7IFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDU6MjcuNjI5NTk1ODcxWiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MDY4NTgzODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgU0NYX0RTUV9JTlZBTElEYCBCdWcqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBTQ1hfRFNRX0lOVkFMSURgIGhhcyB0aGUgYFNDWF9EU1FfRkxBR19CVUlMVElOYCBmbGFnIHNldC4gVGhpcyBtZWFucyB0aGF0IHdoZW4gd2UgcGVyZm9ybSB0aGUgYml0d2lzZSBBTkQgb3BlcmF0aW9uLCBgZHNxLVx1MDAzZWlkIFx1MDAyNiBTQ1hfRFNRX0ZMQUdfQlVJTFRJTmAgd2lsbCBldmFsdWF0ZSB0byB0cnVlIGZvciBgU0NYX0RTUV9JTlZBTElEYC4gVGhlIHBhdGNoIGNvcnJlY3RseSByZWNvZ25pemVzIHRoaXMgd2l0aCBgaWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKWAgYW5kIHRoZW4gc2tpcHMgdGhlIGludmFsaWQgcXVldWUuIFRoaXMgc2VlbXMgdG8gYWxpZ24gcGVyZmVjdGx5IHdpdGggdGhlIHJlcG9ydGVkIGJ1Zy4gSSB0aGluayBJJ3ZlIGdvdCBpdC5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCwgdGhlIFwiRm9jdXNTeW1ib2xzXCIgYXMgSSBsaWtlIHRvIGNhbGwgdGhlbS4gQmFzZWQgb24gdGhpcywgaXQgbG9va3MgbGlrZSBgc2N4X2JwZl9kc3FfcmVlbnFgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYXJlIHdoZXJlIHRoZSBhY3Rpb24gaGFwcGVucy5cblxuV2FpdCwgYHNjeF9icGZfZHNxX3JlZW5xYCBpcyBhIGtmdW5jISBUaGF0IG1lYW5zIGl0IGNhbiBiZSBjYWxsZWQgZGlyZWN0bHkgZnJvbSBCUEYgY29kZSB3aGljaCBpcyBpbXBvcnRhbnQsIGJ1dCB3aGF0IGVsc2U/XG5cbmBkZXN0cm95X2RzcWAgaXMgc3RhdGljLCBidXQgaXQncyBjYWxsZWQgZnJvbSBgc2N4X2JwZl9kZXN0cm95X2RzcWAuIFRoZW4gd2UgaGF2ZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AsIHdoaWNoIGlzIGFsc28gc3RhdGljLCBidXQgdGhhdCdzIGNhbGxlZCBmcm9tIGBydW5fZGVmZXJyZWRgLiBJIGhhdmUgdG8gdHJhY2UgaG93IGBydW5fZGVmZXJyZWRgIGlzIGNhbGxlZCwgYW5kIHRoYXQgbG9va3MgbGlrZSBgdGFza193b2tlbl9zY3hgLCBgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbmAsIGFuZCBgZGVmZXJyZWRfaXJxX3dvcmtmbmAuIE9rYXksIHNvLCB3aXRoIHRoZXNlIGNvbm5lY3Rpb25zLCBgc2N4X2JwZl9kc3FfcmVlbnFgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYXJlIGRlZmluaXRlbHkgdGhlIHJpZ2h0IEZvY3VzU3ltYm9scy4gVGhlIHdheSB0aGVzZSB0aGluZ3MgYXJlIGNhbGxlZCBzZWVtcyB0byBleHBsYWluIHRoZSBpc3N1ZS5cblxuTGV0J3MgZG8gYSBmaW5hbCBjaGVjazogSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBgc2N4X2JwZl9kc3FfcmVlbnFgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIGFkZGluZyB0byBgZGVmZXJyZWRfcmVlbnFfdXNlcnNgLiBJIHNlZSB0aGF0IGBzY2hlZHVsZV9kc3FfcmVlbnFgIGRvZXMgYWRkIHRvIHRoaXMgbGlzdC4gQW5kLCB0aGFua2Z1bGx5LCBgc2NoZWR1bGVfZHNxX3JlZW5xYCBpcyBjYWxsZWQgZGlyZWN0bHkgYnkgYHNjeF9icGZfZHNxX3JlZW5xYC4gUGVyZmVjdCEgTm8gb3RoZXIgb2J2aW91cyBjYWxsZXJzLiBJIHRoaW5rIEknbSBjb25maWRlbnQgYWJvdXQgdGhlc2UgRm9jdXNTeW1ib2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjcxOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNTozNC4zMzY0NTYzMzJaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjA3MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjaGVkdWxlX2RzcV9yZWVucVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTAyNT1zdGF0aWMgdm9pZCBzY2hlZHVsZV9kZWZlcnJlZF9sb2NrZWQoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA2NC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNjU6dm9pZCBzY2hlZHVsZV9kc3FfcmVlbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNjYtXFx0XFx0XFx0dTY0IHJlZW5xX2ZsYWdzLCBzdHJ1Y3QgcnEgKmxvY2tlZF9ycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDM4OT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX2xvY2FscyhzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NDIwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDQyMTpcXHRcXHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ0MjItXFx0XFx0c21wX21iKCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1MDU9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTMwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDUzMTpcXHRcXHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MzItXFx0XFx0c21wX21iKCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk3NDI9X19icGZfa2Z1bmMgdm9pZCBzY3hfYnBmX2RzcV9yZWVucSh1NjQgZHNxX2lkLCB1NjQgcmVlbnFfZmxhZ3MsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3NjMtXFx0ZHNxID0gZmluZF9kc3FfZm9yX2Rpc3BhdGNoKHNjaCwgdGhpc19ycSgpLCBkc3FfaWQsIHNtcF9wcm9jZXNzb3JfaWQoKSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzY0OlxcdHNjaGVkdWxlX2RzcV9yZWVucShzY2gsIGRzcSwgcmVlbnFfZmxhZ3MsIHNjeF9sb2NrZWRfcnEoKSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzY1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDU6MzQuMzgxNjY3MzIyWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NTM4MTEyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqUmVmaW5pbmcgdGhlIEZvY3VzOiBBIFF1aWNrIFJlY2FwIGFuZCBDb25maXJtYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIHplcm9lZCBpbiBvbiB0aGUga2V5IGZ1bmN0aW9ucyBkcml2aW5nIHRoaXMgYmVoYXZpb3I6IGBzY3hfYnBmX2RzcV9yZWVucWAgaXMgdGhlIGNyaXRpY2FsIG9uZSwgYXMgaXQncyB0aGUgc29sZSBjYWxsZXIgb2YgYHNjaGVkdWxlX2RzcV9yZWVucWAsIHdoaWNoIGlzIHRoZSBiZWhhdmlvciBJIHdhbnQgdG8gdW5kZXJzdGFuZC4gVGhpcywgY29tYmluZWQgd2l0aCBgc2N4X2JwZl9kZXN0cm95X2RzcWAsIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMgaGFwcGVuLiBHaXZlbiB0aGF0LCBJJ20gZmFpcmx5IGNlcnRhaW4gdGhvc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdGhlIGltcG9ydGFudCBgRm9jdXNTeW1ib2xzYC4gQW5kIHRoZSByZWxldmFudCBgRW5hYmxlQ29uZmlnc2AgcmVtYWlucyBhcyBgU0NIRURfQ0xBU1NfRVhUYCwgdGhhdCBpcyB3aGVyZSB0aGUgZnVuY3Rpb25hbGl0eSBpcy4gTm93LCBiZWZvcmUgSSBtb3ZlIG9uLCBpdCdzIGp1c3QgYSBtYXR0ZXIgb2YgYSBmaW5hbCB2ZXJpZmljYXRpb24gdXNpbmcgdGhlIHNldC1yZXN1bHRzIHRvb2wuIEEgcXVpY2ssIGxhc3QgZG91YmxlLWNoZWNrIHdpbGwgZ2l2ZSBtZSBhZGRpdGlvbmFsIGNvbmZpZGVuY2UgaW4gdGhlIHJlc3VsdHMgYmVmb3JlIEkgZGlnIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxMzEsIk91dHB1dFRva2VucyI6MTI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDU6NDAuMDM1NDgxNjQ2WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3OTk1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNDSEVEX0NMQVNTX0VYVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjeF9icGZfZHNxX3JlZW5xXCIsXG4gICAgXCJzY3hfYnBmX2Rlc3Ryb3lfZHNxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNDSEVEX0NMQVNTX0VYVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjeF9icGZfZHNxX3JlZW5xXCIsXG4gICAgXCJzY3hfYnBmX2Rlc3Ryb3lfZHNxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNTo0MC4xMDgyODgzNTZaIiwiU2VxIjo2MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4OTMzNzM5ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNTo0MC4xMDg3OTI1NTZaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Njg5Mjg2NjIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBCVUdfT04oKSB3aXRoIGEgY29uZGl0aW9uYWwgY2hlY2sgYW5kIGEgYGNvbnRpbnVlYCBzdGF0ZW1lbnQgdG8gaGFuZGxlIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1pZ2h0IGludmFsaWRhdGUgYSBkaXNwYXRjaCBxdWV1ZSAoYGRzcWApLiBUaGlzIGNoYW5nZSBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYyAoQlVHX09OKSBhbmQgaGFuZGxlcyB0aGUgcmFjZSBncmFjZWZ1bGx5LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIG9yIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIHJhY2UgY29uZGl0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGRmNzRhNWU0ODdiNjQ0ZjY5OWEyMjViYmFmNWQ2OTA2NGU1YTM1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA5OjAzOjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmNcbmluZGV4IDBiYmUxNDRjOTgxMTEuLjYwNGEwNWRhNDFiOTMgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG4rKysgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG5AQCAtNDUzMSw3ICs0NTMxLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxuIFx0XHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cbiBcdFx0c21wX21iKCk7XG4gXG4tXHRcdEJVR19PTihkc3EtXHUwMDNlaWQgXHUwMDI2IFNDWF9EU1FfRkxBR19CVUlMVElOKTtcbitcdFx0LyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovXG4rXHRcdGlmICh1bmxpa2VseShkc3EtXHUwMDNlaWQgXHUwMDI2IFNDWF9EU1FfRkxBR19CVUlMVElOKSlcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0cmVlbnFfdXNlcihycSwgZHNxLCByZWVucV9mbGFncyk7XG4gXHR9XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDU6NDAuMTA4NzkzNjE2WiIsIlNlcSI6NjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4OTI4Mzg1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFNjaGVkdWxlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYC4gSXQncyB0d2Vha2luZyB0aGUgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGF0IHRoZXkncmUgcmVwbGFjaW5nIGEgYEJVR19PTmAgY2hlY2sgd2l0aCBhIGNvbmRpdGlvbmFsIHNraXAuIFNwZWNpZmljYWxseSwgYEJVR19PTihkc3EtXHUwMDNlaWQgXHUwMDI2IFNDWF9EU1FfRkxBR19CVUlMVElOKTtgIGlzIG5vdyBhbiBgaWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKSBjb250aW51ZTtgLiBTZWVtcyBsaWtlIGEgYnVnIGZpeCwgcmlnaHQ/IFRoZSBjb21tZW50IGluZGljYXRlcyBpdCdzIHRvIGFkZHJlc3MgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWlnaHQgaW52YWxpZGF0ZSBgZHNxYCBieSBzZXR0aW5nIHRoZSBgU0NYX0RTUV9GTEFHX0JVSUxUSU5gIGZsYWcuIEVzc2VudGlhbGx5LCBpdCB3YXMgY3Jhc2hpbmcgd2l0aCBhIGBCVUdfT05gIGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uLiBJdCdzIG5vdCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgZ29vZC4gRGVmaW5pdGVseSBkb2Vzbid0IGludHJvZHVjZSBhbnksIHNvIEknbGwgc2V0IE5lZWRzS01TQU4gdG8gZmFsc2UuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBPa2F5LCB0aGUgY29kZSByZWFkcyBgZHNxYC4gSWYgaXQncyBpbnZhbGlkYXRlZCwgdGhhdCAqY291bGQqIGJlIGEgdXNlLWFmdGVyLWZyZWUsIGFuZCBLQVNBTiB3b3VsZCBub3JtYWxseSBjYXRjaCB0aGF0LiBXYWl0LCBidXQgYGRlc3Ryb3lfZHNxKClgIGludmFsaWRhdGVzIGl0IGJ5IHNldHRpbmcgdGhlIGZsYWc/IEhtbS4uLiBubywgbm8sIHRoZSBwYXRjaCBpdHNlbGYganVzdCBjaGFuZ2VzIGEgYEJVR19PTmAgdG8gYSBza2lwLiBTbyB0aGUgZnVuY3Rpb24gd2lsbCBqdXN0IHNraXAgYSBzcGVjaWZpYyBEU1EgaWYgdGhlIHJhY2UgY29uZGl0aW9uIGhhcyBvY2N1cnJlZC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW52b2x2ZWQgYXQgYWxsLiBMb29rcyBzb2xpZC4gSSdsbCBjYWxsIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE4LCJPdXRwdXRUb2tlbnMiOjEzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA1OjQ3LjAwMTYzNTY0N1oiLCJTZXEiOjY0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBCVUdfT04oKSB3aXRoIGEgY29uZGl0aW9uYWwgY2hlY2sgYW5kIGEgYGNvbnRpbnVlYCBzdGF0ZW1lbnQgdG8gaGFuZGxlIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1pZ2h0IGludmFsaWRhdGUgYSBkaXNwYXRjaCBxdWV1ZSAoYGRzcWApLiBUaGlzIGNoYW5nZSBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYyAoQlVHX09OKSBhbmQgaGFuZGxlcyB0aGUgcmFjZSBncmFjZWZ1bGx5LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIG9yIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIHJhY2UgY29uZGl0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBCVUdfT04oKSB3aXRoIGEgY29uZGl0aW9uYWwgY2hlY2sgYW5kIGEgYGNvbnRpbnVlYCBzdGF0ZW1lbnQgdG8gaGFuZGxlIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1pZ2h0IGludmFsaWRhdGUgYSBkaXNwYXRjaCBxdWV1ZSAoYGRzcWApLiBUaGlzIGNoYW5nZSBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYyAoQlVHX09OKSBhbmQgaGFuZGxlcyB0aGUgcmFjZSBncmFjZWZ1bGx5LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIG9yIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIHJhY2UgY29uZGl0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kdrn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-11 08:13:20 +0000 UTC FinishedAt: 2026-08-11 09:05:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3d08ff75a47a3e7e2ab45a3bcab6723b4d906422", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SCHED_CLASS_EXT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3d08ff75a47a3e7e2ab45a3bcab6723b4d906422", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SCHED_CLASS_EXT" ], "series_id": "f438a239-e8aa-4404-9c7c-2026feb24e1b" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "scx_bpf_dsq_reenq", "scx_bpf_destroy_dsq" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NDSEVEX0NMQVNTX0VYVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjeF9icGZfZHNxX3JlZW5xJiMzNDssCiAgICAmIzM0O3NjeF9icGZfZGVzdHJveV9kc3EmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIEJVR19PTigpIHdpdGggYSBjb25kaXRpb25hbCBjaGVjayBhbmQgYSBgY29udGludWVgIHN0YXRlbWVudCB0byBoYW5kbGUgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWlnaHQgaW52YWxpZGF0ZSBhIGRpc3BhdGNoIHF1ZXVlIChgZHNxYCkuIFRoaXMgY2hhbmdlIHByZXZlbnRzIGEga2VybmVsIHBhbmljIChCVUdfT04pIGFuZCBoYW5kbGVzIHRoZSByYWNlIGdyYWNlZnVsbHkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgb3IgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgcmFjZSBjb25kaXRpb24gd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGRmNzRhNWU0ODdiNjQ0ZjY5OWEyMjViYmFmNWQ2OTA2NGU1YTM1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA5OjAzOjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG5pbmRleCAwYmJlMTQ0Yzk4MTExLi42MDRhMDVkYTQxYjkzIDEwMDY0NFxuLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuQEAgLTQ1MzEsNyAmIzQzOzQ1MzEsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXG4gXHRcdC8qIHNlZSBzY2hlZHVsZV9kc3FfcmVlbnEoKSAqL1xuIFx0XHRzbXBfbWIoKTtcbiBcbi1cdFx0QlVHX09OKGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pO1xuJiM0MztcdFx0LyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovXG4mIzQzO1x0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkIFx1MDAyNiBTQ1hfRFNRX0ZMQUdfQlVJTFRJTikpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRyZWVucV91c2VyKHJxLCBkc3EsIHJlZW5xX2ZsYWdzKTtcbiBcdH1cbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NDSEVEX0NMQVNTX0VYVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjeF9icGZfZHNxX3JlZW5xJiMzNDssCiAgICAmIzM0O3NjeF9icGZfZGVzdHJveV9kc3EmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGRmNzRhNWU0ODdiNjQ0ZjY5OWEyMjViYmFmNWQ2OTA2NGU1YTM1YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDA5OjAzOjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMKaW5kZXggMGJiZTE0NGM5ODExMS4uNjA0YTA1ZGE0MWI5MyAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jCkBAIC00NTMxLDcgJiM0Mzs0NTMxLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKQogCQkvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi8KIAkJc21wX21iKCk7CiAKLQkJQlVHX09OKGRzcS0mZ3Q7aWQgJmFtcDsgU0NYX0RTUV9GTEFHX0JVSUxUSU4pOwomIzQzOwkJLyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovCiYjNDM7CQlpZiAodW5saWtlbHkoZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTikpCiYjNDM7CQkJY29udGludWU7CiAJCXJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpOwogCX0KIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyMQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcml0aWNhbCBTY2hlZHVsZXIgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgZnVuY3Rpb24uIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBidXQgaW1wb3J0YW50IGNoYW5nZTogdGhleSYjMzk7dmUgcmVwbGFjZWQgYSBoYXJkIGBCVUdfT05gIHdpdGggYSBtb3JlIGdyYWNlZnVsIGNvbmRpdGlvbmFsIGBjb250aW51ZWAuIFRoZSBvbGQgY29kZSB3YXMgcG90ZW50aWFsbHkgY2F1c2luZyBhIGNyYXNoLCBhIHJhY2UgY29uZGl0aW9uIHRoYXQgd291bGQgdHJpZ2dlciB0aGF0IGBCVUdfT05gIHdoZW4gYGRzcS0mZ3Q7aWRgIGhhZCB0aGUgYFNDWF9EU1FfRkxBR19CVUlMVElOYCBmbGFnIHNldC4gVGhlIG5ldyBsb2dpYyBkZXRlY3RzIHRoaXMgcmFjZSwgYW5kIHNpbXBseSBza2lwcyB0aGF0IGVsZW1lbnQsIHByZXZlbnRpbmcgdGhlIHBhbmljLgoKVGhpcyB0ZWxscyBtZSB0aGVyZSYjMzk7cyBhIGNvbmN1cnJlbmN5IGlzc3VlLiBUaGUgc3lzdGVtIG1pZ2h0IGJlIGF0dGVtcHRpbmcgdG8gd29yayB3aXRoIGEgYGRzcWAgb2JqZWN0IChsaWtlbHkgYSAmIzM0O2RlZmVycmVkIHNjaGVkdWxpbmcgcXVldWUmIzM0OykgdGhhdCYjMzk7cyBiZWluZyBpbnZhbGlkYXRlZCBvciBkZXN0cm95ZWQgY29uY3VycmVudGx5LCBsaWtlbHkgYnkgYSBjYWxsIHRvIGBkZXN0cm95X2RzcSgpYC4gVGhhdCByYWNlIGhhcyBiZWVuIGZvdW5kIGFuZCBmaXhlZCAtIGdvb2QuIFRoaXMgbWVhbnMgdGhlcmUgd2FzIGEgd2luZG93IHdoZXJlIHdlIGNvdWxkIGRlcmVmZXJlbmNlIGEgZGFuZ2xpbmcgcG9pbnRlciwgd2hpY2ggaXMgbmV2ZXIgZ29vZC4KClNpbmNlIHRoaXMgYWZmZWN0cyB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MsIGBzY2hlZF9leHRgLCBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gcmVzcG9uc2libGUgZm9yIGVuYWJsaW5nIHRoaXMgZmVhdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIHRhcmdldCBzeXN0ZW0gaXMgZXZlbiB1c2luZyB0aGlzIGNvZGUgcGF0aCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gSXQmIzM5O3MgYSBjcml0aWNhbCBhcmVhLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIHNlYXJjaCB0aGUga2VybmVsIGNvbmZpZ3MgZm9yIGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNDSEVEX0VYVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTM3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIGdlYXJlZCB0b3dhcmRzIGEgdXNlciB3aG8ga25vd3MgdGhlaXIgc3R1ZmY6CgoqKkh1bnRpbmcgRG93biBUaG9zZSBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCB0aW1lIHRvIHRyYWNrIGRvd24gdGhvc2UgcHJlZW1wdGlvbi1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQg4oCTIGl0ICpzaG91bGQqIGNvbnRhaW4gdGhlIGtleSBzZXR0aW5ncy4gQnV0LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBjb3ZlciBhbGwgdGhlIGJhc2VzLCBJJiMzOTtsbCBhbHNvIGdsYW5jZSBhdCBgaW5pdC9LY29uZmlnYC4gWW91IG5ldmVyIGtub3csIHNvbWUgaW5pdGlhbGl6YXRpb24tcmVsYXRlZCBvcHRpb25zICptaWdodCogdG91Y2ggb24gcHJlZW1wdGlvbiwgb3IgbWF5YmUgdGhlcmUgYXJlIHNvbWUgaW5jbHVkZXMgaW4gdGhlcmUgdGhhdCBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBjb25zaWRlcmluZy4gQW5kIG9mIGNvdXJzZSwgSSBzaG91bGQgYWxzbyBpbW1lZGlhdGVseSBjaGVjayBga2VybmVsL3NjaGVkL0tjb25maWdgLiBQcmVlbXB0aW9uIGlzIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBzY2hlZHVsZXIsIHNvIHRoYXQmIzM5O3MgYW5vdGhlciB2ZXJ5IGxpa2VseSBsb2NhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBkaWcgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0NIRURfRVhUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzkyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyByZWxhdGVkIHRvIGBjb25maWcgU0NIRURfQ0xBU1NfRVhUYCwgYnV0IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbi4gQmVzdCB3YXkgdG8gY29uZmlybSB0aGF0IGlzIHRvIGxvb2sgYXQgdGhlIHNvdXJjZSBjb2RlLiBJIHNob3VsZCBkZWx2ZSBpbnRvIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCBhbmQgc2VlIGlmIHRoZSBjb21waWxhdGlvbiBvZiBpdHMgY29udGVudHMgaXMgYWN0dWFsbHkgY29udGluZ2VudCB1cG9uIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24uIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBiYXJraW5nIHVwIHRoZSB3cm9uZyB0cmVlIGhlcmUgYmVmb3JlIEkgZGlnIGFueSBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBTY2hlZHVsZXImIzM5O3MgTWFrZXVwKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyByZWxhdGVkIHRvICYjMzQ7ZXh0LCYjMzQ7IHByb2JhYmx5IHNvbWUgZXh0ZW5zaW9uIG9yIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBzY2hlZHVsZXIgY29kZS4gTXkgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCBmb3IgdGhlIGBrZXJuZWwvc2NoZWQvYCBkaXJlY3Rvcnkg4oCTIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBzY2hlZHVsaW5nIGxvZ2ljIHJlc2lkZXMuIEdpdmVuIHRoYXQgaXQmIzM5O3MgbGlrZWx5IGEgY29uZmlndXJhdGlvbiBvciBidWlsZC1yZWxhdGVkIHNldHRpbmcsIHRoZSBgTWFrZWZpbGVgIGluIHRoYXQgZGlyZWN0b3J5IHNlZW1zIGxpa2UgdGhlIG1vc3QgcHJvYmFibGUgc3RhcnRpbmcgcG9pbnQuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwbGFjZSB0byBjaGVjayBmb3IgYW55IGJ1aWxkIG9wdGlvbnMgb3IgbW9kdWxlIGluY2x1c2lvbnMgcmVsYXRlZCB0byB0aGUgc2NoZWR1bGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gYGtlcm5lbC9zY2hlZC9NYWtlZmlsZWAuIEhvcGVmdWxseSwgYGV4dGAgd2lsbCBlaXRoZXIgYmUgZGlyZWN0bHkgbWVudGlvbmVkIG9yIGxlYWQgbWUgdG8gdGhlIHJpZ2h0IGZpbGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvTWFrZWZpbGU9OD1jY2ZsYWdzLXkgJiM0Mzs9ICQoY2FsbCBjYy1kaXNhYmxlLXdhcm5pbmcsIHVudXNlZC1idXQtc2V0LXZhcmlhYmxlKVxuLS1cbmtlcm5lbC9zY2hlZC9NYWtlZmlsZS0xMC0jIFRoZXNlIGZpbGVzIGFyZSBkaXNhYmxlZCBiZWNhdXNlIHRoZXkgcHJvZHVjZSBub24taW50ZXJlc3RpbmcgZmxha3kgY292ZXJhZ2Vcbmtlcm5lbC9zY2hlZC9NYWtlZmlsZToxMTojIHRoYXQgaXMgbm90IGEgZnVuY3Rpb24gb2Ygc3lzY2FsbCBpbnB1dHMuIEUuZy4gaW52b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlcy5cbmtlcm5lbC9zY2hlZC9NYWtlZmlsZS0xMi1LQ09WX0lOU1RSVU1FTlQgOj0gblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjgyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgS2VybmVsIFNvdXJjZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgdGhyb3VnaCB0aGlzIGtlcm5lbCBjb2RlIGFuZCBJIGp1c3Qgc2F3IGEgcmVmZXJlbmNlIHRvIGBleHQuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgc291cmNlIGZpbGUgYWN0dWFsbHkgbGl2ZXMgd2l0aGluIHRoaXMgc3ByYXdsaW5nIHByb2plY3QuIEl0ICpzaG91bGQqIGJlIGluIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCwgYnV0IHlvdSBjYW4mIzM5O3QgYXNzdW1lIGFueXRoaW5nIGluIHRoaXMgZW52aXJvbm1lbnQuIEJlc3QgcHJhY3RpY2UgZGljdGF0ZXMgdGhhdCBJIHZlcmlmeSB0aGlzIGJ5IGNoZWNraW5nIHRoZSBjb3JyZXNwb25kaW5nIGBNYWtlZmlsZWAuIEkgbmVlZCB0byBjb25maXJtIHdoZXJlIHRoaXMgY29tcG9uZW50IGlzIGRlY2xhcmVkIHNvIEkgY2FuIGJldHRlciB1bmRlcnN0YW5kIGl0cyBjb21waWxhdGlvbiBhbmQgbGlua2FnZS4gVGltZSB0byBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9NYWtlZmlsZWAuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIGhhcyB0byBzYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ5NAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIEJhY2sgaW50byB0aGUgU2NoZWR1bGVyIE1ha2VmaWxlKioKCk9rYXksIEkgbmVlZCB0byByZXZpc2l0IGBrZXJuZWwvc2NoZWQvTWFrZWZpbGVgLiBJIGhhZCBhIG5hZ2dpbmcgZmVlbGluZyBhYm91dCBzb21ldGhpbmcgaW4gdGhlcmUsIGEgcG90ZW50aWFsIG9wdGltaXphdGlvbiBvciBhIHN1YnRsZSBjb25maWd1cmF0aW9uIGlzc3VlIHRoYXQgSSB3YW50IHRvIGRvdWJsZS1jaGVjay4gSXQmIzM5O3MgdGltZSB0byByZWZyZXNoIG15IG1lbnRhbCBtYXAgb2YgdGhhdCBzcGVjaWZpYyBidWlsZCBwcm9jZXNzIGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSBpbXBvcnRhbnQgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIHJlbGF0ZWQgdG8gbXkgY3VycmVudCBhcmVhIG9mIGZvY3VzLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGJ1aWxkIHN5c3RlbSBpcyBiZWhhdmluZyBhcyBJIGV4cGVjdCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgZmluZXIgcG9pbnRzIG9mIHRoZSBzY2hlZHVsZXIuIEkmIzM5O20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IG9uIGhvdyBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgbWlnaHQgaW5mbHVlbmNlIHRoZSBsaW5raW5nIG9yIGNvbXBpbGF0aW9uIG9mIGNlcnRhaW4gbW9kdWxlcywgb3IgZXZlbiBpbXBhY3QgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgYmFzZWQgb24gdGhlIGZsYWdzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoYXQgcXVpY2sgc2NhbiByZXZlYWxzIGFueXRoaW5nIEkgbWlnaHQgaGF2ZSBtaXNzZWQgZWFybGllci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBTY2hlZHVsZXIgRXh0ZW5zaW9uIEJ1aWxkIFByb2Nlc3MqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2NoZWR1bGVyIGV4dGVuc2lvbnMgYXJlIGJlaW5nIGJ1aWx0LiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGtlcm5lbC9zY2hlZC9leHQvTWFrZWZpbGVgLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgYnVpbGQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBpbiB0aGVyZS4gVGhhdCYjMzk7cyB0aGUgdHlwaWNhbCBwbGFjZSBmb3IgaGFuZGxpbmcgb2JqZWN0IGZpbGUgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcgd2l0aGluIHRoYXQgcGFydCBvZiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGlzIE1ha2VmaWxlIGhvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBmaWxlIGRvZXMgbm90IGV4aXN0PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDt0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkwMgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIGEgS2VybmVsIFNjaGVkdWxlciBDaGFuZ2UqKgoKT2theSwgc28gdGhlIGRpZmYgbWVudGlvbnMgYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgLiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXMgaG93IHRoaXMgYGV4dC5jYCBmaWxlIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgdGhlIHNjaGVkdWxlciB3aXRoaW4gdGhlIGtlcm5lbC4gSSBzaG91bGQgaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGBrZXJuZWwvc2NoZWQvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgY2FuIGZpbmQgdGhlIGRlcGVuZGVuY3kgZ3JhcGggYW5kIGJ1aWxkIGluc3RydWN0aW9ucyBmb3Igc2NoZWR1bGVyIGNvbXBvbmVudHMuIEl0IHdpbGwgc2hvdyBtZSBob3cgYGV4dC5jYCBpcyBpbmNsdWRlZCBhbmQgaWYgaXTigJlzIGEgbW9kdWxlLCBwYXJ0IG9mIHRoZSBjb3JlLCBvciBzb21ldGhpbmcgZWxzZS4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgcHJvY2VzcyBpcyBjcnVjaWFsIGZvciB0cmFjaW5nIHRoZSBjb2RlJiMzOTtzIGludGVncmF0aW9uIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBUaGF0IE1ha2VmaWxlIGlzIG15IGZpcnN0IHN0b3AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvY29yZS5jPTcwMTI9ZmluZF9wcm94eV90YXNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqZG9ub3IsIHN0cnVjdCBycV9mbGFncyAqcmYpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy03MDQwLSAqXG5rZXJuZWwvc2NoZWQvY29yZS5jOjcwNDE6ICogICAgICAgICAtIGluIHN5c2NhbGwgb3IgZXhjZXB0aW9uIGNvbnRleHQsIGF0IHRoZSBuZXh0IG91dG1vc3Rcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzA0Mi0gKiAgICAgICAgICAgcHJlZW1wdF9lbmFibGUoKS4gKHRoaXMgbWlnaHQgYmUgYXMgc29vbiBhcyB0aGUgd2FrZV91cCgpJiMzOTtzXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYz04MzY2PXZvaWQgc2NoZWRfc2V0bnVtYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBuaWQpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy04Mzc1LS8qXG5rZXJuZWwvc2NoZWQvY29yZS5jOjgzNzY6ICogSW52b2tlZCBvbiB0aGUgb3V0Z29pbmcgQ1BVIGluIGNvbnRleHQgb2YgdGhlIENQVSBob3RwbHVnIHRocmVhZFxua2VybmVsL3NjaGVkL2NvcmUuYy04Mzc3LSAqIGFmdGVyIGVuc3VyaW5nIHRoYXQgdGhlcmUgYXJlIG5vIHVzZXIgc3BhY2UgdGFza3MgbGVmdCBvbiB0aGUgQ1BVLlxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9MTA2MzM9dm9pZCBjYWxsX3RyYWNlX3NjaGVkX3VwZGF0ZV9ucl9ydW5uaW5nKHN0cnVjdCBycSAqcnEsIGludCBjb3VudClcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTEwNzU3LSAqIHRoZSBmaXh1cCBmdW5jdGlvbi4gSWYgaXQgd2FzIGluaXRpYXRlZCBieSBhIGFmZmluaXR5IGNoYW5nZSwgdGhlbiBpdCYjMzk7c1xua2VybmVsL3NjaGVkL2NvcmUuYzoxMDc1ODogKiBydW4gZWl0aGVyIGluIHRoZSBkZWZlcnJlZCB1cGRhdGUgZnVuY3Rpb24gaW4gY29udGV4dCBvZiBhIHdvcmtxdWV1ZSBvclxua2VybmVsL3NjaGVkL2NvcmUuYy0xMDc1OS0gKiBieSBhIHRhc2sgd2hpY2ggZm9ya3MgYSBuZXcgb25lIG9yIGJ5IGEgdGFzayB3aGljaCBleGl0cy4gV2hhdGV2ZXJcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTcwMzk9c3RydWN0IHNjeF9zY2hlZCAqc2N4X2FsbG9jX2FuZF9hZGRfc2NoZWQoc3RydWN0IHNjeF9lbmFibGVfY21kICpjbWQsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MDQyLXtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzA0MzpcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMgPSBjbWQtXHUwMDNlb3BzO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MDQ0LVx0c3RydWN0IHNjeF9zY2hlZCAqc2NoO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzE1NC1cdCAqIENvcHkgb3BzIHRocm91Z2ggdGhlIHJpZ2h0IHVuaW9uIHZpZXcuIEZvciBjaWQtZm9ybSB0aGUgc291cmNlIGlzXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjcxNTU6XHQgKiBzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWQgd2hpY2ggbGFja3MgdGhlIHRyYWlsaW5nIGNwdV9hY3F1aXJlL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MTU2LVx0ICogY3B1X3JlbGVhc2U7IHRob3NlIHN0YXkgemVybyBmcm9tIGt6YWxsb2MuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz03Mjk4PXN0YXRpYyBpbnQgY2hlY2tfaG90cGx1Z19zZXEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3Mjk5Olx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTczMDAte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzMyMS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzMyMjppbnQgc2N4X3ZhbGlkYXRlX29wcyhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIGNvbnN0IHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTczMjMte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NzM4Mj1zdGF0aWMgdm9pZCBzY3hfcm9vdF9lbmFibGVfd29ya2ZuKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03Mzg0LVx0c3RydWN0IHNjeF9lbmFibGVfY21kICpjbWQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHNjeF9lbmFibGVfY21kLCB3b3JrKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzM4NTpcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMgPSBjbWQtXHUwMDNlb3BzO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy03Mzg2LVx0c3RydWN0IGNncm91cCAqY2dycCA9IHJvb3RfY2dyb3VwKCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz03OTE0PXN0YXRpYyBpbnQgYnBmX3NjeF9pbml0X21lbWJlcihjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTE3LXtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzkxODpcdGNvbnN0IHN0cnVjdCBzY2hlZF9leHRfb3BzICp1b3BzID0gdWRhdGE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5MTk6XHRzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzID0ga2RhdGE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5MjAtXHR1MzIgbW9mZiA9IF9fYnRmX21lbWJlcl9iaXRfb2Zmc2V0KHQsIG1lbWJlcikgLyA4O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkyMy1cdHN3aXRjaCAobW9mZikge1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTI0Olx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgZGlzcGF0Y2hfbWF4X2JhdGNoKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkyNS1cdFx0aWYgKCoodTMyICopKHVkYXRhICYjNDM7IG1vZmYpIFx1MDAzZSBJTlRfTUFYKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkyOC1cdFx0cmV0dXJuIDE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5Mjk6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBmbGFncyk6XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5MzAtXHRcdGlmICgqKHU2NCAqKSh1ZGF0YSAmIzQzOyBtb2ZmKSBcdTAwMjYgflNDWF9PUFNfQUxMX0ZMQUdTKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkzMy1cdFx0cmV0dXJuIDE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5MzQ6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBuYW1lKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkzNS1cdFx0cmV0ID0gYnBmX29ial9uYW1lX2NweShvcHMtXHUwMDNlbmFtZSwgdW9wcy1cdTAwM2VuYW1lLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk0MS1cdFx0cmV0dXJuIDE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5NDI6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCB0aW1lb3V0X21zKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk0My1cdFx0aWYgKG1zZWNzX3RvX2ppZmZpZXMoKih1MzIgKikodWRhdGEgJiM0MzsgbW9mZikpIFx1MDAzZVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk0Ny1cdFx0cmV0dXJuIDE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5NDg6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBleGl0X2R1bXBfbGVuKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk0OS1cdFx0b3BzLVx1MDAzZWV4aXRfZHVtcF9sZW4gPVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk1MS1cdFx0cmV0dXJuIDE7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5NTI6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBob3RwbHVnX3NlcSk6XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTMtXHRcdG9wcy1cdTAwM2Vob3RwbHVnX3NlcSA9ICoodTY0ICopKHVkYXRhICYjNDM7IG1vZmYpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTU0LVx0XHRyZXR1cm4gMTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk1NTpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGNpZF9zaGFyZF9zaXplKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk1Ni1cdFx0b3BzLVx1MDAzZWNpZF9zaGFyZF9zaXplID0gKih1MzIgKikodWRhdGEgJiM0MzsgbW9mZik7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTctXHRcdHJldHVybiAxO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTU4Olx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgcmVzY3VlX2JhbmR3aWR0aF9wcHQpOiB7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTktXHRcdHUzMiBid19wcHQgPSAqKHUzMiAqKSh1ZGF0YSAmIzQzOyBtb2ZmKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NjUtXHR9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5NjY6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCByZXNjdWVfcXVhbnR1bV91cyk6IHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk2Ny1cdFx0dTMyIHF1YW50dW1fdXMgPSAqKHUzMiAqKSh1ZGF0YSAmIzQzOyBtb2ZmKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NzYtI2lmZGVmIENPTkZJR19FWFRfU1VCX1NDSEVEXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5Nzc6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfY2dyb3VwX2lkKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk3OC1cdFx0b3BzLVx1MDAzZXN1Yl9jZ3JvdXBfaWQgPSAqKHU2NCAqKSh1ZGF0YSAmIzQzOyBtb2ZmKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTc5ODY9c3RhdGljIGludCBicGZfc2N4X2NoZWNrX21lbWJlcihjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTkyLVx0c3dpdGNoIChtb2ZmKSB7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTM6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBpbml0X3Rhc2spOlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTk0LSNpZmRlZiBDT05GSUdfRVhUX0dST1VQX1NDSEVEXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTU6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBjZ3JvdXBfaW5pdCk6XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTY6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBjZ3JvdXBfZXhpdCk6XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTc6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBjZ3JvdXBfcHJlcF9tb3ZlKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk5OC0jZW5kaWZcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk5OTpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGNwdV9vbmxpbmUpOlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDAwOlx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgY3B1X29mZmxpbmUpOlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDAxOlx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgaW5pdF9jaWRzKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAwMjpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGluaXQpOlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDAzOlx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgZXhpdCk6XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgwMDQ6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfYXR0YWNoKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAwNTpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIHN1Yl9kZXRhY2gpOlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDA2LVx0XHRicmVhaztcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgwMjEtXHRzd2l0Y2ggKG1vZmYpIHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAyMjpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGRpc3BhdGNoKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODAyMy1cdFx0cHJvZy1cdTAwM2VhdXgtXHUwMDNlcHJpdl9zdGFja19yZXF1ZXN0ZWQgPSB0cnVlO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODAyNS1cdFx0YnJlYWs7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgwMjY6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfY2Fwc191cGRhdGVkKTpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODAyNy1cdFx0cHJvZy1cdTAwM2VhdXgtXHUwMDNlcHJpdl9zdGFja19yZXF1ZXN0ZWQgPSB0cnVlO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODA5Nj1zdGF0aWMgdm9pZCBicGZfc2N4X3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgwOTcte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDk4Olx0c3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcyA9IGtkYXRhO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDk5LVx0c3RydWN0IHNjeF9zY2hlZCAqc2NoID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChvcHMtXHUwMDNlcHJpdiwgdHJ1ZSk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz04MTI2PXN0YXRpYyBpbnQgYnBmX3NjeF92YWxpZGF0ZSh2b2lkICprZGF0YSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgxMzAtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzE6c3RhdGljIHMzMiBzY2hlZF9leHRfb3BzX19zZWxlY3RfY3B1KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgczMyIHByZXZfY3B1LCB1NjQgd2FrZV9mbGFncykgeyByZXR1cm4gLUVJTlZBTDsgfVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTMyOnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2VucXVldWUoc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1NjQgZW5xX2ZsYWdzKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTMzOnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2RlcXVldWUoc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1NjQgZW5xX2ZsYWdzKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTM0OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Rpc3BhdGNoKHMzMiBwcmV2X2NwdSwgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2X19udWxsYWJsZSkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODEzNTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX190aWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODEzNjpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19ydW5uYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBlbnFfZmxhZ3MpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzc6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fcnVubmluZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzg6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fc3RvcHBpbmcoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBib29sIHJ1bm5hYmxlKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTM5OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3F1aWVzY2VudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBkZXFfZmxhZ3MpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDA6c3RhdGljIGJvb2wgc2NoZWRfZXh0X29wc19feWllbGQoc3RydWN0IHRhc2tfc3RydWN0ICpmcm9tLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRvX19udWxsYWJsZSkgeyByZXR1cm4gZmFsc2U7IH1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0MTpzdGF0aWMgYm9vbCBzY2hlZF9leHRfb3BzX19jb3JlX3NjaGVkX2JlZm9yZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKmEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqYikgeyByZXR1cm4gZmFsc2U7IH1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0MjpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19zZXRfd2VpZ2h0KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTMyIHdlaWdodCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0MzpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19zZXRfY3B1bWFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTQ0OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3VwZGF0ZV9pZGxlKHMzMiBjcHUsIGJvb2wgaWRsZSkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0NTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jcHVfYWNxdWlyZShzMzIgY3B1LCBzdHJ1Y3Qgc2N4X2NwdV9hY3F1aXJlX2FyZ3MgKmFyZ3MpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDY6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY3B1X3JlbGVhc2UoczMyIGNwdSwgc3RydWN0IHNjeF9jcHVfcmVsZWFzZV9hcmdzICphcmdzKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTQ3OnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19faW5pdF90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHNjeF9pbml0X3Rhc2tfYXJncyAqYXJncykgeyByZXR1cm4gLUVJTlZBTDsgfVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTQ4OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2V4aXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBzY3hfZXhpdF90YXNrX2FyZ3MgKmFyZ3MpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDk6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZW5hYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1MDpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODE1MS0jaWZkZWYgQ09ORklHX0VYVF9HUk9VUF9TQ0hFRFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTUyOnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19fY2dyb3VwX2luaXQoc3RydWN0IGNncm91cCAqY2dycCwgc3RydWN0IHNjeF9jZ3JvdXBfaW5pdF9hcmdzICphcmdzKSB7IHJldHVybiAtRUlOVkFMOyB9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNTM6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY2dyb3VwX2V4aXQoc3RydWN0IGNncm91cCAqY2dycCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1NDpzdGF0aWMgczMyIHNjaGVkX2V4dF9vcHNfX2Nncm91cF9wcmVwX21vdmUoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3QgY2dyb3VwICpmcm9tLCBzdHJ1Y3QgY2dyb3VwICp0bykgeyByZXR1cm4gLUVJTlZBTDsgfVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTU1OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Nncm91cF9tb3ZlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IGNncm91cCAqZnJvbSwgc3RydWN0IGNncm91cCAqdG8pIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNTY6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY2dyb3VwX2NhbmNlbF9tb3ZlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IGNncm91cCAqZnJvbSwgc3RydWN0IGNncm91cCAqdG8pIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNTc6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY2dyb3VwX3NldF93ZWlnaHQoc3RydWN0IGNncm91cCAqY2dycCwgdTMyIHdlaWdodCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1ODpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2JhbmR3aWR0aChzdHJ1Y3QgY2dyb3VwICpjZ3JwLCB1NjQgcGVyaW9kX3VzLCB1NjQgcXVvdGFfdXMsIHU2NCBidXJzdF91cykge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1OTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2lkbGUoc3RydWN0IGNncm91cCAqY2dycCwgYm9vbCBpZGxlKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MTYwLSNlbmRpZlx0LyogQ09ORklHX0VYVF9HUk9VUF9TQ0hFRCAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTYxOnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19fc3ViX2F0dGFjaChzdHJ1Y3Qgc2N4X3N1Yl9hdHRhY2hfYXJncyAqYXJncykgeyByZXR1cm4gLUVJTlZBTDsgfVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTYyOnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3N1Yl9kZXRhY2goc3RydWN0IHNjeF9zdWJfZGV0YWNoX2FyZ3MgKmFyZ3MpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNjM6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY3B1X29ubGluZShzMzIgY3B1KSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTY0OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2NwdV9vZmZsaW5lKHMzMiBjcHUpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNjU6c3RhdGljIHMzMiBzY2hlZF9leHRfb3BzX19pbml0X2NpZHModm9pZCkgeyByZXR1cm4gLUVJTlZBTDsgfVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTY2OnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19faW5pdCh2b2lkKSB7IHJldHVybiAtRUlOVkFMOyB9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNjc6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZXhpdChzdHJ1Y3Qgc2N4X2V4aXRfaW5mbyAqaW5mbykge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2ODpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19kdW1wKHN0cnVjdCBzY3hfZHVtcF9jdHggKmN0eCkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2OTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19kdW1wX2NwdShzdHJ1Y3Qgc2N4X2R1bXBfY3R4ICpjdHgsIHMzMiBjcHUsIGJvb2wgaWRsZSkge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE3MDpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19kdW1wX3Rhc2soc3RydWN0IHNjeF9kdW1wX2N0eCAqY3R4LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgxNzEtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzI6c3RhdGljIHN0cnVjdCBzY2hlZF9leHRfb3BzIF9fYnBmX29wc19zY2hlZF9leHRfb3BzID0ge1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTczOlx0LnNlbGVjdF9jcHVcdFx0PSBzY2hlZF9leHRfb3BzX19zZWxlY3RfY3B1LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTc0Olx0LmVucXVldWVcdFx0PSBzY2hlZF9leHRfb3BzX19lbnF1ZXVlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTc1Olx0LmRlcXVldWVcdFx0PSBzY2hlZF9leHRfb3BzX19kZXF1ZXVlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTc2Olx0LmRpc3BhdGNoXHRcdD0gc2NoZWRfZXh0X29wc19fZGlzcGF0Y2gsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzc6XHQudGlja1x0XHRcdD0gc2NoZWRfZXh0X29wc19fdGljayxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE3ODpcdC5ydW5uYWJsZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX3J1bm5hYmxlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTc5Olx0LnJ1bm5pbmdcdFx0PSBzY2hlZF9leHRfb3BzX19ydW5uaW5nLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTgwOlx0LnN0b3BwaW5nXHRcdD0gc2NoZWRfZXh0X29wc19fc3RvcHBpbmcsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxODE6XHQucXVpZXNjZW50XHRcdD0gc2NoZWRfZXh0X29wc19fcXVpZXNjZW50LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTgyOlx0LnlpZWxkXHRcdFx0PSBzY2hlZF9leHRfb3BzX195aWVsZCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE4MzpcdC5jb3JlX3NjaGVkX2JlZm9yZVx0PSBzY2hlZF9leHRfb3BzX19jb3JlX3NjaGVkX2JlZm9yZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE4NDpcdC5zZXRfd2VpZ2h0XHRcdD0gc2NoZWRfZXh0X29wc19fc2V0X3dlaWdodCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE4NTpcdC5zZXRfY3B1bWFza1x0XHQ9IHNjaGVkX2V4dF9vcHNfX3NldF9jcHVtYXNrLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg2Olx0LnVwZGF0ZV9pZGxlXHRcdD0gc2NoZWRfZXh0X29wc19fdXBkYXRlX2lkbGUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxODc6XHQuY3B1X2FjcXVpcmVcdFx0PSBzY2hlZF9leHRfb3BzX19jcHVfYWNxdWlyZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE4ODpcdC5jcHVfcmVsZWFzZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX2NwdV9yZWxlYXNlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg5Olx0LmluaXRfdGFza1x0XHQ9IHNjaGVkX2V4dF9vcHNfX2luaXRfdGFzayxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5MDpcdC5leGl0X3Rhc2tcdFx0PSBzY2hlZF9leHRfb3BzX19leGl0X3Rhc2ssXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTE6XHQuZW5hYmxlXHRcdFx0PSBzY2hlZF9leHRfb3BzX19lbmFibGUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTI6XHQuZGlzYWJsZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX2Rpc2FibGUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgxOTMtI2lmZGVmIENPTkZJR19FWFRfR1JPVVBfU0NIRURcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5NDpcdC5jZ3JvdXBfaW5pdFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9pbml0LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTk1Olx0LmNncm91cF9leGl0XHRcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX2V4aXQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTY6XHQuY2dyb3VwX3ByZXBfbW92ZVx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfcHJlcF9tb3ZlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTk3Olx0LmNncm91cF9tb3ZlXHRcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX21vdmUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTg6XHQuY2dyb3VwX2NhbmNlbF9tb3ZlXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9jYW5jZWxfbW92ZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5OTpcdC5jZ3JvdXBfc2V0X3dlaWdodFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X3dlaWdodCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwMDpcdC5jZ3JvdXBfc2V0X2JhbmR3aWR0aFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2JhbmR3aWR0aCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwMTpcdC5jZ3JvdXBfc2V0X2lkbGVcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX3NldF9pZGxlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjAyLSNlbmRpZlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjAzOlx0LnN1Yl9hdHRhY2hcdFx0PSBzY2hlZF9leHRfb3BzX19zdWJfYXR0YWNoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA0Olx0LnN1Yl9kZXRhY2hcdFx0PSBzY2hlZF9leHRfb3BzX19zdWJfZGV0YWNoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA1Olx0LmNwdV9vbmxpbmVcdFx0PSBzY2hlZF9leHRfb3BzX19jcHVfb25saW5lLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA2Olx0LmNwdV9vZmZsaW5lXHRcdD0gc2NoZWRfZXh0X29wc19fY3B1X29mZmxpbmUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMDc6XHQuaW5pdF9jaWRzXHRcdD0gc2NoZWRfZXh0X29wc19faW5pdF9jaWRzLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA4Olx0LmluaXRcdFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2luaXQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMDk6XHQuZXhpdFx0XHRcdD0gc2NoZWRfZXh0X29wc19fZXhpdCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIxMDpcdC5kdW1wXHRcdFx0PSBzY2hlZF9leHRfb3BzX19kdW1wLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjExOlx0LmR1bXBfY3B1XHRcdD0gc2NoZWRfZXh0X29wc19fZHVtcF9jcHUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMTI6XHQuZHVtcF90YXNrXHRcdD0gc2NoZWRfZXh0X29wc19fZHVtcF90YXNrLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjEzLX07XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMTQtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMTU6c3RhdGljIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfc2NoZWRfZXh0X29wcyA9IHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIxNi1cdC52ZXJpZmllcl9vcHMgPSBcdTAwMjZicGZfc2N4X3ZlcmlmaWVyX29wcyxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMjMtXHQudmFsaWRhdGUgPSBicGZfc2N4X3ZhbGlkYXRlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjI0Olx0Lm5hbWUgPSBcJiMzNDtzY2hlZF9leHRfb3BzXCYjMzQ7LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjI1LVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMjY6XHQuY2ZpX3N0dWJzID0gXHUwMDI2X19icGZfb3BzX3NjaGVkX2V4dF9vcHNcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIyNy19O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIzNC0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIzNTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX2NpZF9fc2V0X2NtYXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIzNi1cdFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBzY3hfY21hc2sgKmNtYXNrKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjM3OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3N1Yl9jYXBzX3VwZGF0ZWQoY29uc3Qgc3RydWN0IHNjeF9jbWFzayAqY21hc2ssIHU2NCBjYXBzKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjM4OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3N1Yl9lY2Fwc191cGRhdGVkKHMzMiBjaWQsIHU2NCBiZWZvcmUsIHU2NCBhZnRlcikge31cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIzOS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MDpzdGF0aWMgc3RydWN0IHNjaGVkX2V4dF9vcHNfY2lkIF9fYnBmX29wc19zY2hlZF9leHRfb3BzX2NpZCA9IHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MTpcdC5zZWxlY3RfY2lkXHRcdD0gc2NoZWRfZXh0X29wc19fc2VsZWN0X2NwdSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MjpcdC5lbnF1ZXVlXHRcdD0gc2NoZWRfZXh0X29wc19fZW5xdWV1ZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MzpcdC5kZXF1ZXVlXHRcdD0gc2NoZWRfZXh0X29wc19fZGVxdWV1ZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0NDpcdC5kaXNwYXRjaFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2Rpc3BhdGNoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjQ1Olx0LnRpY2tcdFx0XHQ9IHNjaGVkX2V4dF9vcHNfX3RpY2ssXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNDY6XHQucnVubmFibGVcdFx0PSBzY2hlZF9leHRfb3BzX19ydW5uYWJsZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0NzpcdC5ydW5uaW5nXHRcdD0gc2NoZWRfZXh0X29wc19fcnVubmluZyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0ODpcdC5zdG9wcGluZ1x0XHQ9IHNjaGVkX2V4dF9vcHNfX3N0b3BwaW5nLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjQ5Olx0LnF1aWVzY2VudFx0XHQ9IHNjaGVkX2V4dF9vcHNfX3F1aWVzY2VudCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1MDpcdC55aWVsZFx0XHRcdD0gc2NoZWRfZXh0X29wc19feWllbGQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTE6XHQuY29yZV9zY2hlZF9iZWZvcmVcdD0gc2NoZWRfZXh0X29wc19fY29yZV9zY2hlZF9iZWZvcmUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTI6XHQuc2V0X3dlaWdodFx0XHQ9IHNjaGVkX2V4dF9vcHNfX3NldF93ZWlnaHQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTM6XHQuc2V0X2NtYXNrXHRcdD0gc2NoZWRfZXh0X29wc19jaWRfX3NldF9jbWFzayxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1NDpcdC51cGRhdGVfaWRsZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX3VwZGF0ZV9pZGxlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjU1Olx0LmluaXRfdGFza1x0XHQ9IHNjaGVkX2V4dF9vcHNfX2luaXRfdGFzayxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1NjpcdC5leGl0X3Rhc2tcdFx0PSBzY2hlZF9leHRfb3BzX19leGl0X3Rhc2ssXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTc6XHQuZW5hYmxlXHRcdFx0PSBzY2hlZF9leHRfb3BzX19lbmFibGUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTg6XHQuZGlzYWJsZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX2Rpc2FibGUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyNTktI2lmZGVmIENPTkZJR19FWFRfR1JPVVBfU0NIRURcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI2MDpcdC5jcHVjdGxfaW5pdFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9pbml0LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjYxOlx0LmNwdWN0bF9leGl0XHRcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX2V4aXQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjI6XHQuY3B1Y3RsX3ByZXBfbW92ZVx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfcHJlcF9tb3ZlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjYzOlx0LmNwdWN0bF9tb3ZlXHRcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX21vdmUsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjQ6XHQuY3B1Y3RsX2NhbmNlbF9tb3ZlXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9jYW5jZWxfbW92ZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI2NTpcdC5jcHVjdGxfc2V0X3dlaWdodFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X3dlaWdodCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI2NjpcdC5jcHVjdGxfc2V0X2JhbmR3aWR0aFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2JhbmR3aWR0aCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI2NzpcdC5jcHVjdGxfc2V0X2lkbGVcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX3NldF9pZGxlLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjY4LSNlbmRpZlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjY5Olx0LnN1Yl9hdHRhY2hcdFx0PSBzY2hlZF9leHRfb3BzX19zdWJfYXR0YWNoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjcwOlx0LnN1Yl9kZXRhY2hcdFx0PSBzY2hlZF9leHRfb3BzX19zdWJfZGV0YWNoLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjcxOlx0LnN1Yl9jYXBzX3VwZGF0ZWRcdD0gc2NoZWRfZXh0X29wc19fc3ViX2NhcHNfdXBkYXRlZCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3MjpcdC5zdWJfZWNhcHNfdXBkYXRlZFx0PSBzY2hlZF9leHRfb3BzX19zdWJfZWNhcHNfdXBkYXRlZCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3MzpcdC5jaWRfb25saW5lXHRcdD0gc2NoZWRfZXh0X29wc19fY3B1X29ubGluZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3NDpcdC5jaWRfb2ZmbGluZVx0XHQ9IHNjaGVkX2V4dF9vcHNfX2NwdV9vZmZsaW5lLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4Mjc1Olx0LmluaXRfY2lkc1x0XHQ9IHNjaGVkX2V4dF9vcHNfX2luaXRfY2lkcyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3NjpcdC5pbml0XHRcdFx0PSBzY2hlZF9leHRfb3BzX19pbml0LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4Mjc3Olx0LmV4aXRcdFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2V4aXQsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNzg6XHQuZHVtcFx0XHRcdD0gc2NoZWRfZXh0X29wc19fZHVtcCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3OTpcdC5kdW1wX2NpZFx0XHQ9IHNjaGVkX2V4dF9vcHNfX2R1bXBfY3B1LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjgwOlx0LmR1bXBfdGFza1x0XHQ9IHNjaGVkX2V4dF9vcHNfX2R1bXBfdGFzayxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI4MS19O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI4Ny0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI4ODpzdGF0aWMgc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzIGJwZl9zY2hlZF9leHRfb3BzX2NpZCA9IHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI4OS1cdC52ZXJpZmllcl9vcHMgPSBcdTAwMjZicGZfc2N4X2NpZF92ZXJpZmllcl9vcHMsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04Mjk2LVx0LnZhbGlkYXRlID0gYnBmX3NjeF92YWxpZGF0ZSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI5NzpcdC5uYW1lID0gXCYjMzQ7c2NoZWRfZXh0X29wc19jaWRcJiMzNDssXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyOTgtXHQub3duZXIgPSBUSElTX01PRFVMRSxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI5OTpcdC5jZmlfc3R1YnMgPSBcdTAwMjZfX2JwZl9vcHNfc2NoZWRfZXh0X29wc19jaWRcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODMwMC19O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA2MzI9c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHNjeF9rZnVuY19zZXRfYW55ID0ge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA2MzktICogY3B1LWZvcm0ga2Z1bmNzIHRoYXQgYXJlIGZvcmJpZGRlbiBmcm9tIGNpZC1mb3JtIHNjaGVkdWxlcnNcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA2NDA6ICogKGJwZl9zY2hlZF9leHRfb3BzX2NpZCkuIFByb2dyYW1zIHRhcmdldGluZyB0aGUgY2lkIHN0cnVjdF9vcHMgdHlwZSBtdXN0XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNjQxLSAqIHVzZSB0aGUgY2lkLWZvcm0gYWx0ZXJuYXRpdmUgKGNpZC9jbWFzayBrZnVuY3MpLlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA3MzM9aW50IHNjeF9rZnVuY19jb250ZXh0X2ZpbHRlcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBrZnVuY19pZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNzcwLVx0ICpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA3NzE6XHQgKiBCb3RoIGJwZl9zY2hlZF9leHRfb3BzIChjcHUtZm9ybSkgYW5kIGJwZl9zY2hlZF9leHRfb3BzX2NpZFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc3Mi1cdCAqIChjaWQtZm9ybSkgYXJlIHZhbGlkIFNDWCBzdHJ1Y3Rfb3BzLiBNZW1iZXIgb2Zmc2V0cyBtYXRjaCBiZXR3ZWVuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc3Ni1cdCAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDc3NzpcdGlmIChwcm9nLVx1MDAzZWF1eC1cdTAwM2VzdF9vcHMgIT0gXHUwMDI2YnBmX3NjaGVkX2V4dF9vcHMgXHUwMDI2XHUwMDI2XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNzc4Olx0ICAgIHByb2ctXHUwMDNlYXV4LVx1MDAzZXN0X29wcyAhPSBcdTAwMjZicGZfc2NoZWRfZXh0X29wc19jaWQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNzc5LVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNzg2LVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNzg3Olx0aWYgKHByb2ctXHUwMDNlYXV4LVx1MDAzZXN0X29wcyA9PSBcdTAwMjZicGZfc2NoZWRfZXh0X29wc19jaWQgXHUwMDI2XHUwMDI2IGluX2NwdV9vbmx5KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc4OC1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDgxMz1zdGF0aWMgaW50IF9faW5pdCBzY3hfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MTctXHQvKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDgxODpcdCAqIHNjaGVkX2V4dF9vcHNfY2lkIG1pcnJvcnMgc2NoZWRfZXh0X29wcyB1cCB0byBhbmQgaW5jbHVkaW5nIEBwcml2Llxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDgxOS1cdCAqIEJvdGggYnBmX3NjeF9pbml0X21lbWJlcigpIGFuZCBicGZfc2N4X2NoZWNrX21lbWJlcigpIHVzZSBvZmZzZXRzXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODIwOlx0ICogZnJvbSBzdHJ1Y3Qgc2NoZWRfZXh0X29wczsgc2NoZWRfZXh0X29wc19jaWQgcmVsaWVzIG9uIHRob3NlIG9mZnNldHNcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MjEtXHQgKiBtYXRjaGluZyBmb3IgdGhlIHNoYXJlZCBmaWVsZHMuIENhdGNoIGFueSBkcmlmdCBhdCBib290LlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MjMtI2RlZmluZSBDSURfT0ZGU0VUX01BVENIKGNwdV9maWVsZCwgY2lkX2ZpZWxkKVx0XHRcdFx0XHRcXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDgyNDpcdEJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgY3B1X2ZpZWxkKSAhPVx0XHRcXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDgyNTpcdFx0ICAgICBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWQsIGNpZF9maWVsZCkpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwODI2LVx0LyogZGF0YSBmaWVsZHMgdXNlZCBieSBicGZfc2N4X2luaXRfbWVtYmVyKCkgKi9cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwODg1LVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODg2Olx0QlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZCwgX19lbmQpICE9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODg3Olx0XHQgICAgIG9mZnNldG9mZW5kKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBwcml2KSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwODg4LSN1bmRlZiBDSURfT0ZGU0VUX01BVENIXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDkzMy1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA5MzQ6XHRyZXQgPSByZWdpc3Rlcl9icGZfc3RydWN0X29wcyhcdTAwMjZicGZfc2NoZWRfZXh0X29wcywgc2NoZWRfZXh0X29wcyk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwOTM1LVx0aWYgKHJldCkge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA5MzktXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwOTQwOlx0cmV0ID0gcmVnaXN0ZXJfYnBmX3N0cnVjdF9vcHMoXHUwMDI2YnBmX3NjaGVkX2V4dF9vcHNfY2lkLCBzY2hlZF9leHRfb3BzX2NpZCk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwOTQxLVx0aWYgKHJldCkge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTMwMD1zdGF0aWMgYm9vbCBsbGNfbnVtYV9taXNtYXRjaCh2b2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTM0NC0gKi9cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjM0NTp2b2lkIHNjeF9pZGxlX3VwZGF0ZV9zZWxjcHVfdG9wb2xvZ3koc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcylcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTM0Ni17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM9ODAxPXZvaWQgX19zY3hfdXBkYXRlX2lkbGUoc3RydWN0IHJxICpycSwgYm9vbCBpZGxlLCBib29sIGRvX25vdGlmeSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy04MzctXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzo4Mzg6c3RhdGljIHZvaWQgcmVzZXRfaWRsZV9tYXNrcyhzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtODM5LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy04NTktXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzo4NjA6dm9pZCBzY3hfaWRsZV9lbmFibGUoc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcylcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTg2MS17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM9OTEzPXN0YXRpYyBib29sIGNoZWNrX2J1aWx0aW5faWRsZV9lbmFibGVkKHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy05MjItLypcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjkyMzogKiBEZXRlcm1pbmUgd2hldGhlciBAcCBpcyBhIG1pZ3JhdGlvbi1kaXNhYmxlZCB0YXNrIGluIHRoZSBjb250ZXh0IG9mIEJQRlxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtOTI0LSAqIGNvZGUuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmg9MTU9c3RydWN0IGNwdW1hc2s7XG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaDoxNjpzdHJ1Y3Qgc2NoZWRfZXh0X29wcztcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oLTE3LXN0cnVjdCB0YXNrX3N0cnVjdDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaD0yMD1leHRlcm4gc3RydWN0IGJ0Zl9pZF9zZXQ4IHNjeF9rZnVuY19pZHNfc2VsZWN0X2NwdTtcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oLTIxLVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmg6MjI6dm9pZCBzY3hfaWRsZV91cGRhdGVfc2VsY3B1X3RvcG9sb2d5KHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMpO1xua2VybmVsL3NjaGVkL2V4dC9pZGxlLmgtMjMtdm9pZCBzY3hfaWRsZV9pbml0X21hc2tzKHZvaWQpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oPTI1PXMzMiBzY3hfc2VsZWN0X2NwdV9kZmwoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzMzIgcHJldl9jcHUsIHU2NCB3YWtlX2ZsYWdzLFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmgtMjYtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1c19hbGxvd2VkLCB1NjQgZmxhZ3MpO1xua2VybmVsL3NjaGVkL2V4dC9pZGxlLmg6Mjc6dm9pZCBzY3hfaWRsZV9lbmFibGUoc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcyk7XG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaC0yOC12b2lkIHNjeF9pZGxlX2Rpc2FibGUodm9pZCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTQxLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjQyOiNkZWZpbmUgU0NYX09QX0lEWChvcClcdFx0KG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBvcCkgLyBzaXplb2Yodm9pZCAoKikodm9pZCkpKVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTQzLSNkZWZpbmUgU0NYX01PRkZfSURYKG1vZmYpXHQoKG1vZmYpIC8gc2l6ZW9mKHZvaWQgKCopKHZvaWQpKSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTAxPXN0cnVjdCBzY3hfZXhpdF9pbmZvIHtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTMwLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEzMTovKiBzY2hlZF9leHRfb3BzLmZsYWdzICovXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTMyLWVudW0gc2N4X29wc19mbGFncyB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTMwMD1zdHJ1Y3Qgc2N4X3N1Yl9hdHRhY2hfYXJncyB7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MzAxOlx0c3RydWN0IHNjaGVkX2V4dF9vcHNcdCpvcHM7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMzAyLVx0Y2hhclx0XHRcdCpjZ3JvdXBfcGF0aDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MzA2PXN0cnVjdCBzY3hfc3ViX2RldGFjaF9hcmdzIHtcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDozMDc6XHRzdHJ1Y3Qgc2NoZWRfZXh0X29wc1x0Km9wcztcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0zMDgtXHRjaGFyXHRcdFx0KmNncm91cF9wYXRoO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0zMTEtLyoqXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MzEyOiAqIHN0cnVjdCBzY2hlZF9leHRfb3BzIC0gT3BlcmF0aW9uIHRhYmxlIGZvciBCUEYgc2NoZWR1bGVyIGltcGxlbWVudGF0aW9uXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMzEzLSAqXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMxOC0gKi9cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDozMTk6c3RydWN0IHNjaGVkX2V4dF9vcHMge1xua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMyMC1cdC8qKlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC05NjgtXHQgKiBNdXN0IGJlIGEgbm9uLXplcm8gdmFsaWQgQlBGIG9iamVjdCBuYW1lIGluY2x1ZGluZyBvbmx5IGlzYWxudW0oKSxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDo5Njk6XHQgKiAmIzM5O18mIzM5OyBhbmQgJiMzOTsuJiMzOTsgY2hhcnMuIFNob3dzIHVwIGluIGtlcm5lbC5zY2hlZF9leHRfb3BzIHN5c2N0bCB3aGlsZSB0aGVcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC05NzAtXHQgKiBCUEYgc2NoZWR1bGVyIGlzIGVuYWJsZWQuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTk3OC1cdCAqIERlcHJlY2F0ZWQgY2FsbGJhY2tzLiBLZXB0IGF0IHRoZSBlbmQgb2YgdGhlIHN0cnVjdCBzbyB0aGUgY2lkLWZvcm1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDo5Nzk6XHQgKiBzdHJ1Y3QgKHNjaGVkX2V4dF9vcHNfY2lkKSBjYW4gb21pdCB0aGVtIHdpdGhvdXQgYWZmZWN0aW5nIHRoZVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTk4MC1cdCAqIHNoYXJlZCBmaWVsZCBvZmZzZXRzLiBVc2UgU0NYX0VOUV9JTU1FRCBpbnN0ZWFkLiBTaXR0aW5nIHBhc3Rcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAxMC0vKipcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxMDExOiAqIHN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZCAtIGNpZC1mb3JtIGFsdGVybmF0aXZlIHRvIHN0cnVjdCBzY2hlZF9leHRfb3BzXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAxMi0gKlxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMTM6ICogTWlycm9ycyBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyB3aXRoIGNwdS9jcHVtYXNrIHN1YnN0aXR1dGVkIHdpdGggY2lkL2NtYXNrXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTAxNDogKiB3aGVyZSBhcHBsaWNhYmxlLiBMYXlvdXQgdXAgdG8gYW5kIGluY2x1ZGluZyBAcHJpdiBtYXRjaGVzIHNjaGVkX2V4dF9vcHNcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDE1LSAqIGJ5dGUtZm9yLWJ5dGUgKHZlcmlmaWVkIGJ5IEJVSUxEX0JVR19PTiBjaGVja3MgYXQgc2N4X2luaXQoKSB0aW1lKSBzb1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDE3LSAqIGFuZCBicGZfc2N4X2NoZWNrX21lbWJlcigpLiBUaGUgZGVwcmVjYXRlZCBjcHVfYWNxdWlyZS9jcHVfcmVsZWFzZVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMTg6ICogY2FsbGJhY2tzIGF0IHRoZSB0YWlsIG9mIHNjaGVkX2V4dF9vcHMgYXJlIG9taXR0ZWQgaGVyZSBlbnRpcmVseS5cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDE5LSAqXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTAyMDogKiBEaWZmZXJlbmNlcyBmcm9tIHNjaGVkX2V4dF9vcHM6XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAyMS0gKiAgIC0gc2VsZWN0X2NwdSAgICAgICAtXHUwMDNlIHNlbGVjdF9jaWQgKHJldHVybnMgY2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDI4LSAqICAgLSBjZ3JvdXBfKiAgICAgICAgIC1cdTAwM2UgY3B1Y3RsXyogKHRoZXkgdHJhY2sgdGhlIGNncm91cCBjcHUgY29udHJvbGxlcilcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxMDI5OiAqICAgLSBjcHVfYWNxdWlyZS9jcHVfcmVsZWFzZSAgLVx1MDAzZSBub3QgcHJlc2VudCAoZGVwcmVjYXRlZCBpbiBzY2hlZF9leHRfb3BzKVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwMzAtICpcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAzNC0gKlxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMzU6ICogU2VlIHNjaGVkX2V4dF9vcHMgZm9yIGNhbGxiYWNrIGRvY3VtZW50YXRpb24uXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAzNi0gKi9cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxMDM3OnN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZCB7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAzOC1cdHMzMiAoKnNlbGVjdF9jaWQpKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgczMyIHByZXZfY2lkLCB1NjQgd2FrZV9mbGFncyk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwODUtXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTA4NjpcdC8qIERhdGEgZmllbGRzIC0gbXVzdCBtYXRjaCBzY2hlZF9leHRfb3BzIGxheW91dCBleGFjdGx5ICovXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTA4Ny1cdHUzMiBkaXNwYXRjaF9tYXhfYmF0Y2g7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTE1MTU9c3RydWN0IHNjeF9zY2hlZCB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE1MjMtXHR1bmlvbiB7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTUyNDpcdFx0c3RydWN0IHNjaGVkX2V4dF9vcHNcdFx0b3BzO1xua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE1MjU6XHRcdHN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZFx0b3BzX2NpZDtcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNTI2LVx0fTtcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxNTI3Olx0Ym9vbFx0XHRcdGlzX2NpZF90eXBlO1x0LyogdHJ1ZSBpZiByZWdpc3RlcmVkIHZpYSBicGZfc2NoZWRfZXh0X29wc19jaWQgKi9cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNTI4LVx0Ym9vbFx0XHRcdGRlYWQ7XHRcdC8qIHNldCBhZnRlciBvcHMuZXhpdCgpLCBnYXRlcyBzY3hfcHJvZ19zY2hlZCgpICovXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTE5OTI9c3RydWN0IHNjeF9lbmFibGVfY21kIHtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTk5NC1cdHVuaW9uIHtcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxOTk1Olx0XHRzdHJ1Y3Qgc2NoZWRfZXh0X29wc1x0XHQqb3BzO1xua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE5OTY6XHRcdHN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZFx0Km9wc19jaWQ7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTk5Ny1cdH07XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTIwNzM9c3RydWN0IHNjeF9zY2hlZCAqc2N4X2FsbG9jX2FuZF9hZGRfc2NoZWQoc3RydWN0IHNjeF9lbmFibGVfY21kICpjbWQsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTIwNzUtXHRcdFx0XHRcdCAgc3RydWN0IHNjeF9zY2hlZCAqcGFyZW50KTtcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoyMDc2OmludCBzY3hfdmFsaWRhdGVfb3BzKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgY29uc3Qgc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcyk7XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMjA3Ny1pbnQgc2N4X3NjaGVkX3N5c2ZzX2FkZChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaD0yMzg4PXN0YXRpYyBpbmxpbmUgc3RydWN0IHNjeF9zY2hlZCAqc2N4X3Byb2dfc2NoZWQoY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTIzODkte1xua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjIzOTA6XHRzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzO1xua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTIzOTEtXHRzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsICpyb290O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM9NDc9c3RydWN0IHNjeF9zY2hlZCAqc2N4X3NraXBfc3VidHJlZV9wcmUoc3RydWN0IHNjeF9zY2hlZCAqcG9zLCBzdHJ1Y3Qgc2N4X3NjaGVkICpyb290KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtNTUtXHR3aGlsZSAocG9zICE9IHJvb3QpIHtcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM6NTY6XHRcdG5leHQgPSBsaXN0X25leHRfb3JfbnVsbF9yY3UoXHUwMDI2c2N4X3BhcmVudChwb3MpLVx1MDAzZWNoaWxkcmVuLCBcdTAwMjZwb3MtXHUwMDNlc2libGluZyxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtNTctXHRcdFx0XHRcdCAgICAgc3RydWN0IHNjeF9zY2hlZCwgc2libGluZyk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9zdWIuYz01MzI9c3RhdGljIHZvaWQgc2N4X3Jlc2N1ZV90aW1lcmZuKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcilcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTU1Mi1cbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM6NTUzOlx0XHQvKiB0aGVyZSYjMzk7cyBlbm91Z2ggYnVkZ2V0IHRvIHN0YXJ0IHJlc2N1aW5nIHRoZSBuZXh0IG9uZSAqL1xua2VybmVsL3NjaGVkL2V4dC9zdWIuYy01NTQtXHRcdHAgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNnJxLVx1MDAzZXNjeC5yZXNjdWUuZHNxLmxpc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jPTE3MDc9dm9pZCBzY3hfc3ViX2VuYWJsZV93b3JrZm4oc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTE3MDktXHRzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQgKmNtZCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQsIHdvcmspO1xua2VybmVsL3NjaGVkL2V4dC9zdWIuYzoxNzEwOlx0c3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcyA9IGNtZC1cdTAwM2VvcHM7XG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTE3MTEtXHRzdHJ1Y3QgY2dyb3VwICpjZ3JwO1xuLS1cbmtlcm5lbC9zY2hlZC9mYWlyLmM9NzA5NT1zdGF0aWMgdm9pZCBfX2Nmc2JfY3NkX3VudGhyb3R0bGUodm9pZCAqYXJnKVxuLS1cbmtlcm5lbC9zY2hlZC9mYWlyLmMtNzEwNC1cdCAqIHVwZGF0ZV9ycV9jbG9jaygpIGluIHVudGhyb3R0bGVfY2ZzX3JxKCkuXG5rZXJuZWwvc2NoZWQvZmFpci5jOjcxMDU6XHQgKiBEbyBpdCBvbmNlIGFuZCBza2lwIHRoZSBwb3RlbnRpYWwgbmV4dCBvbmVzLlxua2VybmVsL3NjaGVkL2ZhaXIuYy03MTA2LVx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MTgzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBkZXZlbG9wbWVudDoKCioqSW5pdGlhbCBJbnZlc3RpZ2F0aW9uIGludG8gdGhlIEVYVCBTY2hlZHVsZXIgQ2xhc3MqKgoKUmlnaHQsIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCBpcyB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBFWFQgc2NoZWR1bGVyIGNsYXNzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBzbyBgQ09ORklHX1NDSEVEX0NMQVNTX0VYVGAgbXVzdCBiZSB0aGUgZ3VhcmQgdGhhdCBlbmFibGVzIGl0LiYjMzQ7IE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIExldCYjMzk7cyB2ZXJpZnkgdGhhdCBxdWlja2x5LiBJJiMzOTtsbCBqdW1wIG92ZXIgdG8gYGtlcm5lbC9zY2hlZC9LY29uZmlnYCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgaW50ZXJlc3RpbmcgZGV0YWlscyBhYm91dCBob3cgaXQmIzM5O3MgZGVmaW5lZCBhbmQgb3RoZXIgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBzY2hlZHVsZXIgY2FuIGJlIGVuYWJsZWQuIEkgYW0gc3VyZSB0aGVyZSBhcmUgb3RoZXIgcGllY2VzIHRvIGludmVzdGlnYXRlLCBidXQgdGhpcyBpcyB0aGUgZmlyc3Qgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0NIRURfQ0xBU1NfRVhUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQ0MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkRpZ2dpbmcgaW50byB0aGUgU2NoZWR1bGluZyBDbGFzcyBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYFNDSEVEX0NMQVNTX0VYVGAuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtkIGNoZWNrIGlzIGxpa2VseSBnb2luZyB0byBiZSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFRoZSBtb3N0IG9idmlvdXMgY2FuZGlkYXRlcyB3b3VsZCBiZSBga2VybmVsL0tjb25maWcucHJlZW1wdGAgb3IgcGVyaGFwcyBgaW5pdC9LY29uZmlnYC4gVGhlc2UgZmlsZXMgYXJlIHdoZXJlIHRoZSBtYWluIHNjaGVkdWxpbmctcmVsYXRlZCBmZWF0dXJlcyBhbmQgb3B0aW9ucyB1c3VhbGx5IHJlc2lkZS4gSSYjMzk7bGwgc3RhcnQgdGhlcmUgYW5kIHNlZSBpZiBJIGNhbiBsb2NhdGUgdGhlIGRlZmluaXRpb24gb3IgYXQgbGVhc3QgZmlndXJlIG91dCB3aGljaCBLY29uZmlnIG9wdGlvbiBlbmFibGVzIHRoaXMgYFNDSEVEX0NMQVNTX0VYVGAuIEl0IGlzIHdoZXJlIHRoZSBtYWluIHNjaGVkdWxpbmctcmVsYXRlZCBmZWF0dXJlcyBhbmQgb3B0aW9ucyB1c3VhbGx5IHJlc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNDSEVEX0NMQVNTX0VYVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvS2NvbmZpZy5wcmVlbXB0PTE1MT1jb25maWcgU0NIRURfQ09SRVxuLS1cbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTY4LVxua2VybmVsL0tjb25maWcucHJlZW1wdDoxNjk6Y29uZmlnIFNDSEVEX0NMQVNTX0VYVFxua2VybmVsL0tjb25maWcucHJlZW1wdC0xNzAtXHRib29sIFwmIzM0O0V4dGVuc2libGUgU2NoZWR1bGluZyBDbGFzc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjc1MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NoZWR1bGVyIEV4dGVuc2lvbiBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZm9yIHRoaXMgZXh0ZW5zaW9uIGlzIGBTQ0hFRF9DTEFTU19FWFRgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gQnV0LCBoYW5nIG9uLCB0aGVyZSBtaWdodCBiZSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkLCBzbyBsZXQmIzM5O3Mga2VlcCBhbiBleWUgb3V0IGZvciB0aG9zZSBhcyB3ZSBkaWcgZGVlcGVyLgoKVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgaGFwcGVuaW5nIGluIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIGEgc2NoZWR1bGVyIGV4dGVuc2lvbi4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb24gSSBuZWVkIHRvIGZvY3VzIG9uIHJpZ2h0IG5vdyBpcyBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIEkmIzM5O2xsIG5lZWQgdG8ganVtcCBkaXJlY3RseSB0byB0aGF0IGZ1bmN0aW9uIHdpdGhpbiBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AgYW5kIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGl0JiMzOTtzIGRvaW5nLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoaXMgZXh0ZW5zaW9uIGxpa2VseSBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQ1MjA6XHRcdFx0XHRpZiAoIWRydSlcbjQ1MjE6XHRcdFx0XHRcdHJldHVybjtcbjQ1MjI6XHRcbjQ1MjM6XHRcdFx0XHRkc3FfcGNwdSA9IGNvbnRhaW5lcl9vZihkcnUsIHN0cnVjdCBzY3hfZHNxX3BjcHUsXG40NTI0Olx0XHRcdFx0XHRcdFx0ZGVmZXJyZWRfcmVlbnFfdXNlcik7XG40NTI1Olx0XHRcdFx0ZHNxID0gZHNxX3BjcHUtXHUwMDNlZHNxO1xuNDUyNjpcdFx0XHRcdHJlZW5xX2ZsYWdzID0gZHJ1LVx1MDAzZWZsYWdzO1xuNDUyNzpcdFx0XHRcdFdSSVRFX09OQ0UoZHJ1LVx1MDAzZWZsYWdzLCAwKTtcbjQ1Mjg6XHRcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNmRydS1cdTAwM2Vub2RlKTtcbjQ1Mjk6XHRcdFx0fVxuNDUzMDpcdFxuNDUzMTpcdFx0XHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cbjQ1MzI6XHRcdFx0c21wX21iKCk7XG40NTMzOlx0XG40NTM0Olx0XHRcdC8qIGRlc3Ryb3lfZHNxKCkgbWF5IHJhY2UgYW5kIGludmFsaWRhdGUgQGRzcTsgc2tpcCAqL1xuNDUzNTpcdFx0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkIFx1MDAyNiBTQ1hfRFNRX0ZMQUdfQlVJTFRJTikpXG40NTM2Olx0XHRcdFx0Y29udGludWU7XG40NTM3Olx0XHRcdHJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpO1xuNDUzODpcdFx0fVxuNDUzOTpcdH1cbjQ1NDA6XHRcbjQ1NDE6XHRzdGF0aWMgdm9pZCBydW5fZGVmZXJyZWQoc3RydWN0IHJxICpycSlcbjQ1NDI6XHR7XG40NTQzOlx0XHRwcm9jZXNzX2Rkc3BfZGVmZXJyZWRfbG9jYWxzKHJxKTtcbjQ1NDQ6XHRcbjQ1NDU6XHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfbG9jYWxzKSlcbjQ1NDY6XHRcdFx0cHJvY2Vzc19kZWZlcnJlZF9yZWVucV9sb2NhbHMocnEpO1xuNDU0NzpcdFxuNDU0ODpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnJxLVx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2VycykpXG40NTQ5Olx0XHRcdHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMocnEpO1xuNDU1MDpcdFxuNDU1MTpcdFx0c2N4X3JlZW5xX3JlamVjdChycSk7XG40NTUyOlx0fVxuNDU1MzpcdFxuNDU1NDpcdCNpZmRlZiBDT05GSUdfTk9fSFpfRlVMTFxuNDU1NTpcdGJvb2wgc2N4X2Nhbl9zdG9wX3RpY2soc3RydWN0IHJxICpycSlcbjQ1NTY6XHR7XG40NTU3Olx0XHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAgPSBycS1cdTAwM2VjdXJyO1xuNDU1ODpcdFx0c3RydWN0IHNjeF9zY2hlZCAqc2NoID0gc2N4X3Rhc2tfc2NoZWQocCk7XG40NTU5Olx0XG40NTYwOlx0XHRpZiAocC1cdTAwM2VzY2hlZF9jbGFzcyAhPSBcdTAwMjZleHRfc2NoZWRfY2xhc3MpXG40NTYxOlx0XHRcdHJldHVybiB0cnVlO1xuNDU2MjpcdFxuNDU2MzpcdFx0LypcbjQ1NjQ6XHRcdCAqIEBycS1cdTAwM2VjdXJyIG1heSBzdGlsbCByZWZlcmVuY2UgYW4gb3V0Z29pbmcgRVhUIHRhc2sgYWZ0ZXIgaXQgaGFzIGJlZW5cbjQ1NjU6XHRcdCAqIGRlcXVldWVkLiBJZiBubyBFWFQgdGFza3MgYXJlIGFjY291bnRlZCBvbiBAcnEsIGlnbm9yZSBpdHMgc3RhbGVcbjQ1NjY6XHRcdCAqIHNsaWNlIHN0YXRlLiBJZiBhbm90aGVyIHRhc2sgaXMgZGlzcGF0Y2hlZCBmcm9tIGEgRFNRLFxuNDU2NzpcdFx0ICogc2V0X25leHRfdGFza19zY3goKSB3aWxsIHVwZGF0ZSB0aGUgZGVwZW5kZW5jeSBmb3IgdGhlIGluY29taW5nIHRhc2suXG40NTY4Olx0XHQgKi9cbjQ1Njk6XHRcdGlmICghcnEtXHUwMDNlc2N4Lm5yX3J1bm5pbmcpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NzgyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipUcmFjaW5nIHRoZSBFeGVjdXRpb24gUGF0aCBvZiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBnZXRzIGludm9rZWQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHJ1bl9kZWZlcnJlZGAsIHdoaWNoIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIGRlZmVycmVkIHdvcmsgaW4gdGhpcyBlbnZpcm9ubWVudC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGVyZSBkb2VzICpgcnVuX2RlZmVycmVkYCogaXRzZWxmIGdldCBjYWxsZWQ/IElzIGl0IHNvbGVseSBmcm9tIGBzY3hfYnBmX2tpY2tfY3B1YCBhbmQgdGhpbmdzIGxpa2UgaXQsIG9yIGFyZSB0aGVyZSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIEkgbmVlZCB0byBjb25zaWRlcj8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsIGdyYXBoIGZvciBgcnVuX2RlZmVycmVkYCB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBleGVjdXRpb24gcGF0aHMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHRyaWdnZXJzIGZvciB0aGUgZGVmZXJyZWQgcmUtZW5xdWV1ZSBvZiB1c2Vycywgd2hpY2ggaXMgY2xlYXJseSBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIG92ZXJhbGwgZmxvdy4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIHRob3NlIGNhbGwgc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J1bl9kZWZlcnJlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz0yNTM9TU9EVUxFX1BBUk1fREVTQyhieXBhc3NfbGJfaW50dl91cywgXCYjMzQ7YnlwYXNzIGxvYWQgYmFsYW5jZSBpbnRlcnZhbCBpbiBtaWNyb3NlY29uZHMgKDAgKGRpc2FibGUpIHRvIDEwcylcJiMzNDspO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjU5LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoyNjA6c3RhdGljIHZvaWQgcnVuX2RlZmVycmVkKHN0cnVjdCBycSAqcnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yNjEtc3RhdGljIGJvb2wgdGFza19kZWFkX2FuZF9kb25lKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05Nzk9c3RhdGljIHZvaWQgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbihzdHJ1Y3QgcnEgKnJxKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODAte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5ODE6XHRydW5fZGVmZXJyZWQocnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODItfVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTg0PXN0YXRpYyB2b2lkIGRlZmVycmVkX2lycV93b3JrZm4oc3RydWN0IGlycV93b3JrICppcnFfd29yaylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk4OC1cdHJhd19zcGluX3JxX2xvY2socnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5ODk6XHRydW5fZGVmZXJyZWQocnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy05OTAtXHRyYXdfc3Bpbl9ycV91bmxvY2socnEpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzUyND1zdGF0aWMgdm9pZCB0YXNrX3dva2VuX3NjeChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MjUte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNTI2Olx0cnVuX2RlZmVycmVkKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzUyNy19XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NTA1PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1NDAtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1NDE6c3RhdGljIHZvaWQgcnVuX2RlZmVycmVkKHN0cnVjdCBycSAqcnEpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1NDIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODU3OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgRnVuY3Rpb24qKgoKT2theSwgc28gdGhlIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBmdW5jdGlvbiBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgcnVuX2RlZmVycmVkYCwgd2hpY2ggaXRzZWxmIGlzIGludm9rZWQgYnkgYHRhc2tfd29rZW5fc2N4YCwgYGRlZmVycmVkX2lycV93b3JrZm5gLCBhbmQgYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gLiBUaGVzZSBlbnRyeSBwb2ludHMgYXJlIGFsbCB0cmlnZ2VyZWQgd2hlbiBgU0NIRURfQ0xBU1NfRVhUYCBpcyBlbmFibGVkIGFuZCBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkLiBHaXZlbiBpdHMgcGxhY2UgaW4gYSBjb3JlIHNjaGVkdWxlciBjaGFuZ2UsIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG5vbmV0aGVsZXNzLCBmdXp6aW5nIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIHRhcmdldC4KClRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJJiMzOTtsbCBuZWVkIGFyZSBgU0NIRURfQ0xBU1NfRVhUYC4gQWgsIHJpZ2h0LCBCUEYgaXMgYSBwcmVyZXF1aXNpdGUgdG8gbG9hZCB0aGUgc2NoZWR1bGVyLCBzbyBJJiMzOTtsbCBhbHNvIG5lZWQgYEJQRl9TWVNDQUxMYCBlbmFibGVkIGFzIHdlbGwuIEp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBmb3IgYFNDSEVEX0NMQVNTX0VYVGAuIEdvdHRhIGRvdCB0aGUgSSYjMzk7cyBhbmQgY3Jvc3MgdGhlIFQmIzM5O3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQ0hFRF9DTEFTU19FWFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvS2NvbmZpZy5wcmVlbXB0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9LY29uZmlnLnByZWVtcHQ9MTUxPWNvbmZpZyBTQ0hFRF9DT1JFXG4tLVxua2VybmVsL0tjb25maWcucHJlZW1wdC0xNjgtXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0OjE2OTpjb25maWcgU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3MC1cdGJvb2wgXCYjMzQ7RXh0ZW5zaWJsZSBTY2hlZHVsaW5nIENsYXNzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDk1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByZWVtcHRpb24gY29uZmlndXJhdGlvbiBvcHRpb25zIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBXaGVyZSB3b3VsZCBJIHN0YXJ0PyBBbHJpZ2h0LCBsZXQmIzM5O3MgaGVhZCBzdHJhaWdodCBmb3IgYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgLiBUaGF0JiMzOTtzIHVzdWFsbHkgdGhlIGdvLXRvIGZpbGUgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHByZWVtcHRpdmUgY29uZmlndXJhdGlvbnMuIFNwZWNpZmljYWxseSwgYXJvdW5kIGxpbmUgMTY5IOKAkyB0aGF0JiMzOTtzIG9mdGVuIHdoZXJlIHRoZSBjb3JlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gSSBleHBlY3QgdG8gZmluZCB0aGUgbWFpbiBgQ09ORklHX1BSRUVNUFRgIGFuZCBpdHMgYXNzb2NpYXRlZCBzdWItb3B0aW9ucyBvciBkZXBlbmRlbmNpZXMgdGhlcmUuIEkgYW50aWNpcGF0ZSBhIGRpc2N1c3Npb24gYWJvdXQgdGhlIGRpZmZlcmVudCBwcmVlbXB0aW9uIG1vZGVscywgc3VjaCBhcyB2b2x1bnRhcnksIGZ1bGwsIGFuZCB0aGUgcmVhbHRpbWUgb3B0aW9ucy4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIHRoZSBkZXBlbmRlbmNpZXMgaXQgaGFzIGFuZCBob3cgdGhvc2UgYXJlIHNldCB1cC4gSSYjMzk7bSBrZWVuIHRvIGdldCBhIHNvbGlkIGdyYXNwIG9mIGhvdyB0aGUga2VybmVsJiMzOTtzIHByZWVtcHRpb24gYmVoYXZpb3IgaXMgY29udHJvbGxlZCBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBGcm9tIHRoZXJlLCBJIGNhbiBhbmFseXplIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGxhdGVuY3kgYW5kIHNjaGVkdWxpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL0tjb25maWcucHJlZW1wdCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTY5Olx0Y29uZmlnIFNDSEVEX0NMQVNTX0VYVFxuIDE3MDpcdFx0Ym9vbCBcJiMzNDtFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcJiMzNDtcbiAxNzE6XHRcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXHUwMDI2XHUwMDI2IEJQRl9KSVQgXHUwMDI2XHUwMDI2IERFQlVHX0lORk9fQlRGXG4gMTcyOlx0XHRzZWxlY3QgU1RBQ0tUUkFDRSBpZiBTVEFDS1RSQUNFX1NVUFBPUlRcbiAxNzM6XHRcdGhlbHBcbiAxNzQ6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBhIG5ldyBzY2hlZHVsZXIgY2xhc3Mgc2NoZWRfZXh0IChTQ1gpLCB3aGljaFxuIDE3NTpcdFx0ICBhbGxvd3Mgc2NoZWR1bGluZyBwb2xpY2llcyB0byBiZSBpbXBsZW1lbnRlZCBhcyBCUEYgcHJvZ3JhbXMgdG9cbiAxNzY6XHRcdCAgYWNoaWV2ZSB0aGUgZm9sbG93aW5nOlxuIDE3NzpcdFxuIDE3ODpcdFx0ICAtIEVhc2Ugb2YgZXhwZXJpbWVudGF0aW9uIGFuZCBleHBsb3JhdGlvbjogRW5hYmxpbmcgcmFwaWRcbiAxNzk6XHRcdCAgICBpdGVyYXRpb24gb2YgbmV3IHNjaGVkdWxpbmcgcG9saWNpZXMuXG4gMTgwOlx0XHQgIC0gQ3VzdG9taXphdGlvbjogQnVpbGRpbmcgYXBwbGljYXRpb24tc3BlY2lmaWMgc2NoZWR1bGVycyB3aGljaFxuIDE4MTpcdFx0ICAgIGltcGxlbWVudCBwb2xpY2llcyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZSB0byBnZW5lcmFsLXB1cnBvc2VcbiAxODI6XHRcdCAgICBzY2hlZHVsZXJzLlxuIDE4MzpcdFx0ICAtIFJhcGlkIHNjaGVkdWxlciBkZXBsb3ltZW50czogTm9uLWRpc3J1cHRpdmUgc3dhcCBvdXRzIG9mXG4gMTg0Olx0XHQgICAgc2NoZWR1bGluZyBwb2xpY2llcyBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cy5cbiAxODU6XHRcbiAxODY6XHRcdCAgc2NoZWRfZXh0IGxldmVyYWdlcyBCUEYgc3RydWN0X29wcyBmZWF0dXJlIHRvIGRlZmluZSBhIHN0cnVjdHVyZVxuIDE4NzpcdFx0ICB3aGljaCBleHBvcnRzIGZ1bmN0aW9uIGNhbGxiYWNrcyBhbmQgZmxhZ3MgdG8gQlBGIHByb2dyYW1zIHRoYXRcbiAxODg6XHRcdCAgd2lzaCB0byBpbXBsZW1lbnQgc2NoZWR1bGluZyBwb2xpY2llcy4gVGhlIHN0cnVjdF9vcHMgc3RydWN0dXJlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NjkxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLZXJuZWwgU2NoZWR1bGVyIEVuaGFuY2VtZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgbmV3IGtlcm5lbCBjb2RlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBzY2hlZHVsZXIgaW1wcm92ZW1lbnRzLiBJIHNlZSBzb21lIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kOiBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGFuZCBgREVCVUdfSU5GT19CVEZgLiBBbHJpZ2h0LCBnaXZlbiB0aG9zZSwgSSB0aGluayB3ZSBkZWZpbml0ZWx5IG5lZWQgdG8gYWRkIGBTQ0hFRF9DTEFTU19FWFRgIHRvIHRoZSBFbmFibGVDb25maWdzLiBUaGF0IGZlZWxzIHJpZ2h0LiBOb3csIGxldCYjMzk7cyBjb25zaWRlciBGb2N1c1N5bWJvbHMuLi4gSSBuZWVkIHRvIHJlbWVtYmVyIHRvIGNpcmNsZSBiYWNrIHRvIHRoYXQgbGF0ZXIuCgpUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgZnVuY3Rpb24uIEl0JiMzOTtzIG1hcmtlZCBhcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJIHNob3VsZCB0cmFjayBkb3duIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkLiBMZXQmIzM5O3Mgc2VlLi4uIGB0YXNrX3dva2VuX3NjeGAgaXMgc3RhdGljLCBgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbmAgaXMgYWxzbyBzdGF0aWMsIGFuZCBzbyBpcyBgZGVmZXJyZWRfaXJxX3dvcmtmbmAuIEhtbSwgYWxsIHRoZSBvbmVzIEkgaW5pdGlhbGx5IHNlZSBhcmUgc3RhdGljLCBidXQgSSBuZWVkIHRvIGJlIHN1cmUuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgYXJlYSwgc28gbGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSB1c2FnZSBvZiBgdGFza193b2tlbl9zY3hgLiBUaGlzIHdpbGwgZ2l2ZSBtZSBzb21lIGNvbnRleHQsIGFuZCB0aGVuIEkgY2FuIHJlLWV4YW1pbmUgdGhlIG90aGVycy4gVGhpcyBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rhc2tfd29rZW5fc2N4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMjU9c3RhdGljIHZvaWQgc2NoZWR1bGVfZGVmZXJyZWRfbG9ja2VkKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDI5LVx0Lypcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzMDpcdCAqIElmIGluIHRoZSBtaWRkbGUgb2Ygd2FraW5nIHVwIGEgdGFzaywgdGFza193b2tlbl9zY3goKSB3aWxsIGJlIGNhbGxlZFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDMxLVx0ICogYWZ0ZXJ3YXJkcyB3aGljaCB3aWxsIHRoZW4gcnVuIHRoZSBkZWZlcnJlZCBhY3Rpb25zLCBubyBuZWVkIHRvXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNDUxPXN0YXRpYyBpbnQgc2VsZWN0X3Rhc2tfcnFfc2N4KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHByZXZfY3B1LCBpbnQgd2FrZV9mbGFncylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MjMtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM1MjQ6c3RhdGljIHZvaWQgdGFza193b2tlbl9zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNTI1LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ5MjA9REVGSU5FX1NDSEVEX0NMQVNTKGV4dCkgPSB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTMzLVx0LnNlbGVjdF90YXNrX3JxXHRcdD0gc2VsZWN0X3Rhc2tfcnFfc2N4LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0OTM0Olx0LnRhc2tfd29rZW5cdFx0PSB0YXNrX3dva2VuX3NjeCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkzNS1cdC5zZXRfY3B1c19hbGxvd2VkXHQ9IHNldF9jcHVzX2FsbG93ZWRfc2N4LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDUyOQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBTY2hlZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwaWVjZSBvZiBjb2RlLCBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgaXQmIzM5O3MgcGFydCBvZiB0aGUgYGV4dGAgc2NoZWQgY2xhc3MuIFRoYXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgY29udGV4dC4gTm93LCB3aGF0JiMzOTtzIHJlbGF0ZWQgdG8gdGhpcz8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gV2hhdCBpcyB0aGlzIG1vZHVsZSBzdXBwb3NlZCB0byBkbz8gV2hhdCYjMzk7cyB0aGUgc2NoZWR1bGluZyBzdHJhdGVneSBpdCBlbXBsb3lzPyBXaGF0IG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0gaW50ZXJhY3Qgd2l0aCBpdD8gUmlnaHQgbm93LCBteSBtaW5kIGdvZXMgdG8gYSBzcGVjaWZpYyBmdW5jdGlvbiAtIGBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuYC4gSXMgdGhpcyByZWxldmFudD8gSXMgdGhpcyAqdGhlKiB3b3JrIGZ1bmN0aW9uLCBvciBpcyBpdCByZWxhdGVkLCBvciBhIHBhcnQgb2YgYSBsYXJnZXIsIGNvb3JkaW5hdGVkIHNldCBvZiBmdW5jdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgc3lzdGVtLCBhbmQgdGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwIEkgaGF2ZSB0byB0YWtlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk2OT1ib29sIHNjeF9jcHVfdmFsaWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzMzIgY3B1LCBjb25zdCBjaGFyICp3aGVyZSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3OC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc5OnN0YXRpYyB2b2lkIGRlZmVycmVkX2JhbF9jYl93b3JrZm4oc3RydWN0IHJxICpycSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTgwLXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTI5NTA9c3RhdGljIGlubGluZSB2b2lkIG1heWJlX3F1ZXVlX2JhbGFuY2VfY2FsbGJhY2soc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI5NTctXHRxdWV1ZV9iYWxhbmNlX2NhbGxiYWNrKHJxLCBcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfYmFsX2NiLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoyOTU4Olx0XHRcdFx0ZGVmZXJyZWRfYmFsX2NiX3dvcmtmbik7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI5NTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDAyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSYjMzk7dmUgZGVzY3JpYmVkOgoKKipDb25zaWRlcmluZyBEZWZlcnJlZCBJbnRlcnJ1cHQgSGFuZGxlcnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gTXkgZm9jdXMgaXMgYWx3YXlzIG9uIG9wdGltaXplZCBrZXJuZWwgcGVyZm9ybWFuY2UsIGVzcGVjaWFsbHkgYXJvdW5kIGludGVycnVwdCBoYW5kbGluZy4gSSYjMzk7bSBkZWVwIGluIHRoZSB3ZWVkcyByaWdodCBub3csIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGFwcHJvYWNoIGZvciBhIHBhcnRpY3VsYXIgcHJvYmxlbS4gQW5kIHJpZ2h0IG5vdywgdGhlIHF1ZXN0aW9uIHRoYXQmIzM5O3MganVtcGluZyB0byB0aGUgZm9yZWZyb250IGlzOiB3aGF0IGFib3V0IGBkZWZlcnJlZF9pcnFfd29ya2ZuYD8gSXMgdGhpcyBmdW5jdGlvbiwgZGVzaWduZWQgdG8gZGVmZXIgaW50ZXJydXB0LXJlbGF0ZWQgd29yaywgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoZSBqb2IgaGVyZT8gSXQgc2VlbXMgbGlrZSBpdCBjb3VsZCBvZmZlciBhIHBhdGggdG93YXJkIG1vcmUgcHJlZGljdGFibGUgcGVyZm9ybWFuY2UsIGFuZCBhIHdheSB0byBhdm9pZCBhbnkgcG90ZW50aWFsIGJsb2NraW5nIHdpdGhpbiB0aGUgaW50ZXJydXB0IGNvbnRleHQuIEkgbmVlZCB0byB3ZWlnaCB0aGUgcHJvcyBhbmQgY29ucyBjYXJlZnVsbHksIGNvbnNpZGVyaW5nIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgZGF0YSBpbnZvbHZlZC4gV2hhdCYjMzk7cyB0aGUgbGF0ZW5jeSBpbXBhY3Qgb2YgdXNpbmcgdGhpcyBwYXJ0aWN1bGFyIGRlZmVycmVkIHdvcmsgbWVjaGFuaXNtPyBBbmQgd2hhdCYjMzk7cyB0aGUgdGhyZWFkaW5nIG1vZGVsIGhlcmU/IElzIGl0IGFwcHJvcHJpYXRlIGZvciB0aGUgdGFzayBhdCBoYW5kPyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgc3VpdGFiaWxpdHkuIEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgYmVuY2htYXJrIGl0IGFnYWluc3Qgb3RoZXIgb3B0aW9ucyB0byBzZWUgaWYgdGhpcyBpcyB0aGUgYmVzdCwgbW9zdCBlbGVnYW50LCBhbmQgbW9zdCBwZXJmb3JtYW50IHNvbHV0aW9uLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmVycmVkX2lycV93b3JrZm4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTc5PXN0YXRpYyB2b2lkIGRlZmVycmVkX2JhbF9jYl93b3JrZm4oc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk4My1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTg0OnN0YXRpYyB2b2lkIGRlZmVycmVkX2lycV93b3JrZm4oc3RydWN0IGlycV93b3JrICppcnFfd29yaylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTg1LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTg1NzY9dm9pZCBfX2luaXQgaW5pdF9zY2hlZF9leHRfY2xhc3Modm9pZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2MDgtXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnJxLVx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2Vycyk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg2MDk6XHRcdHJxLVx1MDAzZXNjeC5kZWZlcnJlZF9pcnFfd29yayA9IElSUV9XT1JLX0lOSVRfSEFSRChkZWZlcnJlZF9pcnFfd29ya2ZuKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODYxMC1cdFx0cnEtXHUwMDNlc2N4LmtpY2tfY3B1c19pcnFfd29yayA9IElSUV9XT1JLX0lOSVRfSEFSRChraWNrX2NwdXNfaXJxX3dvcmtmbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTcwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQW5hbHl6aW5nIGBydW5fZGVmZXJyZWRgIENhbGxzaXRlcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdHJhY2UgdGhpcy4gU28gYHJ1bl9kZWZlcnJlZGAgZ2V0cyBjYWxsZWQgZnJvbSAqdGhlc2UqIHBsYWNlcy4gT2theSwgZ290IGl0LiBIbW0sIG5vdyB3aGF0JiMzOTtzIHRoZSBtb3N0IHByb2R1Y3RpdmUgYXBwcm9hY2ggdG8gZGlnIGluIGhlcmUsIHdoZXJlIHRvIGZvY3VzPyBIbW1tLCBpcyB0aGVyZSBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gYW1vbmdzdCBhbGwgdGhlc2UgY2FsbHMgdGhhdCB3ZSBjYW4gcmVhbGx5IGRyaWxsIGludG8/IEkgdGhpbmsgdGhhdCYjMzk7cyB0aGUgYmVzdCB3YXkgdG8gbW92ZSBmb3J3YXJkLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiB1c2UgYHNjeF9icGZfa2lja19jcHVgIHRvIG1vdmUgZm9yd2FyZCBpbiBvdXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N4X2JwZl9raWNrX2NwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz04NzA1PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg3NDAtICogJVNDWF9TTElDRV9JTkYsIEBwIG5ldmVyIGV4cGlyZXMgYW5kIHRoZSBCUEYgc2NoZWR1bGVyIG11c3Qga2ljayB0aGUgQ1BVIHdpdGhcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODc0MTogKiBzY3hfYnBmX2tpY2tfY3B1KCkgdG8gdHJpZ2dlciBzY2hlZHVsaW5nLlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQyLSAqXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NDI1PXZvaWQgc2N4X2tpY2tfY3B1KHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgczMyIGNwdSwgdTY0IGZsYWdzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTQzNS1cdGlmICh1bmxpa2VseShpbl9ubWkoKSkpIHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTQzNjpcdFx0c2N4X2Vycm9yKHNjaCwgXCYjMzQ7c2N4X2JwZl9raWNrX2NwdSgpIGNhbGxlZCBmcm9tIE5NSVwmIzM0Oyk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0MzctXHRcdHJldHVybjtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0OTEtLyoqXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk0OTI6ICogc2N4X2JwZl9raWNrX2NwdSAtIFRyaWdnZXIgcmVzY2hlZHVsZSBvbiBhIENQVVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NDkzLSAqIEBjcHU6IGNwdSB0byBraWNrXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTAxLSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NTAyOl9fYnBmX2tmdW5jIHZvaWQgc2N4X2JwZl9raWNrX2NwdShzMzIgY3B1LCB1NjQgZmxhZ3MsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUwMy17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTE3LSAqXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk1MTg6ICogY2lkLWFkZHJlc3NlZCBlcXVpdmFsZW50IG9mIHNjeF9icGZfa2lja19jcHUoKS4gQW4gaW52YWxpZCBAY2lkIGFib3J0cyB0aGVcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUxOS0gKiBzY2hlZHVsZXIgdmlhIHNjeF9jaWRfdG9fY3B1KCkuIENhcHMgYXJlIGVuZm9yY2VkIG9uIHRoZSBkZWxpdmVyeSBwYXRoOiBhXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDU4Nj1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX3NldF9kc3FfdnRpbWUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDU4NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA1ODgtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfa2lja19jaWQsIEtGX0lNUExJQ0lUX0FSR1MpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDY1Mj1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNjUzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2tpY2tfY3B1LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY1NC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX2NwdSwgS0ZfUkNVKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjU2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGNvZGU6CgoqKlRoaW5raW5nIFRocm91Z2ggdGhlIFNjaGVkdWxlciBhbmQgRGVmZXJyZWQgV29yayoqCgpPa2F5LCBzbyBgc2N4X2JwZl9raWNrX2NwdWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaW5pdGlhdGVzIGEgQ1BVIHJlc2NoZWR1bGUsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBpbXBsaWNhdGlvbnMuIE15IHByaW1hcnkgcXVlc3Rpb24gaXMgd2hldGhlciBpdCBhbHNvIHRyaWdnZXJzIGBydW5fZGVmZXJyZWRgLiBJIGtub3cgYHNjeF9raWNrX2NwdWAgaXMgaW52b2x2ZWQgaGVyZSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24mIzM5O3MgaW1wbGVtZW50YXRpb24gdG8gYmUgY2VydGFpbi4gTGV0IG1lIHN0YXJ0IHRoZXJlIGFuZCBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBwYXRoLiBJIG5lZWQgdG8ga25vdyBwcmVjaXNlbHkgd2hhdCYjMzk7cyBkZWZlcnJlZCBhbmQgaG93LiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMgaXMgY3J1Y2lhbCBmb3IuLi4gW3RoZSB1c2VyIGNhbiBmaWxsIGluIHRoZSBwdXJwb3NlIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dF0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjeF9raWNrX2NwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz01OTMzPXN0YXRpYyB2b2lkIHVuYnlwYXNzX3Jlbm90aWZ5X2lkbGUoc3RydWN0IHJxICpycSwgc3RydWN0IHNjeF9zY2hlZCAqcG9zLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTk3Mi0gKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1OTczOiAqIC0gc2N4X2tpY2tfY3B1KCkgaXMgZGlzYWJsZWQgdG8gYXZvaWQgaXJxX3dvcmsgbWFsZnVuY3Rpb24gZHVyaW5nIFBNXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU5NzQtICogICBvcGVyYXRpb25zLlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODQ0Mj1zdGF0aWMgdm9pZCBraWNrX2NwdXNfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODQ1OC1cdC8qXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg0NTk6XHQgKiBXYWxrIHNjaGVkcyB3aXRoIHBlbmRpbmcga2lja3Mgb24gdGhpcyBjcHUuIHNjeF9raWNrX2NwdSgpIGFkZHMgdG9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODQ2MC1cdCAqIHRoZSBsaXN0IHVuZGVyIGxvY2FsX2lycV9zYXZlKCkgYW5kIG9ubHkgdGhpcyBpcnFfd29yayBjb25zdW1lcyBpdC5cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk0MTE9X19icGZfa2Z1bmMgYm9vbCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCB2dGltZSxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0MjQtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk0MjU6dm9pZCBzY3hfa2lja19jcHUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzMzIgY3B1LCB1NjQgZmxhZ3MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0MjYte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTUwMj1fX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfa2lja19jcHUoczMyIGNwdSwgdTY0IGZsYWdzLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTA4LVx0aWYgKGxpa2VseShzY2gpIFx1MDAyNlx1MDAyNiBzY3hfY3B1X3ZhbGlkKHNjaCwgY3B1LCBOVUxMKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTUwOTpcdFx0c2N4X2tpY2tfY3B1KHNjaCwgY3B1LCBmbGFncyk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1MTAtfVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTUyND1fX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfa2lja19jaWQoczMyIGNpZCwgdTY0IGZsYWdzLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTM1LVx0XHRyZXR1cm47XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk1MzY6XHRzY3hfa2lja19jcHUoc2NoLCBjcHUsIGZsYWdzKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUzNy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNDQ1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIERlZmVycmVkIFJlLWVucXVldWUgUHJvY2VzcyBpbiB0aGUgS2VybmVsKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHJlLWVucXVldWUgcHJvY2VzcyB3b3Jrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBhbmQgY2hlY2sgdGhlIGBzY3hfYnBmX2Rpc3BhdGNoYCBmdW5jdGlvbiBvciBzb21ldGhpbmcgc2ltaWxhci4gV2hlcmUgaXMgdGhlIG1hZ2ljIGhhcHBlbmluZz8gT2theSwgSSBzZWUgdGhhdCBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgaXMgdGhlIGtleS4gQnV0IHdoYXQgdHJpZ2dlcnMgdGhhdCBmdW5jdGlvbj8gSXQgbG9va3MgbGlrZSBgcnVuX2RlZmVycmVkYCBpcyByZXNwb25zaWJsZSBmb3IgcHJvY2Vzc2luZyBgcnEtJmd0O3NjeC5kZWZlcnJlZF9yZWVucV91c2Vyc2AuIEkmIzM5O20gZ2V0dGluZyBjbG9zZXIuLi4gU28gbm93IHRoZSBxdWVzdGlvbiBpczogd2hlcmUgYXJlIGl0ZW1zIGluaXRpYWxseSAqYWRkZWQqIHRvIHRoaXMgYGRlZmVycmVkX3JlZW5xX3VzZXJzYCBzdHJ1Y3R1cmU/IFRoYXQmIzM5O3MgdGhlIG1pc3NpbmcgcGllY2Ugb2YgdGhlIHB1enpsZSBJIG5lZWQgdG8gZmluZCB0aGUgY2F1c2Ugb2YgdGhlIHByb2JsZW0uIFRpbWUgdG8gZGlnIGRlZXBlci4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZlcnJlZF9yZWVucV91c2VycyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDY1PXZvaWQgc2NoZWR1bGVfZHNxX3JlZW5xKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMTE2LVx0XHQvKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMTE3Olx0XHQgKiBQYWlycyB3aXRoIHNtcF9tYigpIGluIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBhbmRcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTExOC1cdFx0ICogZ3VhcmFudGVlcyB0aGF0IHRoZXJlIGlzIGEgcmVlbnFfdXNlcigpIGFmdGVyd2FyZHMuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMTI3LVx0XHRcdGlmIChsaXN0X2VtcHR5KFx1MDAyNmRydS1cdTAwM2Vub2RlKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTEyODpcdFx0XHRcdGxpc3RfbW92ZV90YWlsKFx1MDAyNmRydS1cdTAwM2Vub2RlLCBcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMTI5LVx0XHRcdFdSSVRFX09OQ0UoZHJ1LVx1MDAzZWZsYWdzLCBkcnUtXHUwMDNlZmxhZ3MgfCByZWVucV9mbGFncyk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NDM0PXN0YXRpYyB2b2lkIHJlZW5xX3VzZXIoc3RydWN0IHJxICpycSwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EsIHU2NCByZWVucV9mbGFncylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MDQtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1MDU6c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTA2LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MTQtXHRcdFx0c3RydWN0IHNjeF9kZWZlcnJlZF9yZWVucV91c2VyICpkcnUgPVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NTE1Olx0XHRcdFx0bGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNnJxLVx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2Vycyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUxNi1cdFx0XHRcdFx0XHRcdCBzdHJ1Y3Qgc2N4X2RlZmVycmVkX3JlZW5xX3VzZXIsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NTQxPXN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDU0Ny1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDU0ODpcdGlmICghbGlzdF9lbXB0eShcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMpKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NTQ5Olx0XHRwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDU1MC1cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTg1NzY9dm9pZCBfX2luaXQgaW5pdF9zY2hlZF9leHRfY2xhc3Modm9pZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2MDctXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnJxLVx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV9sb2NhbHMpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NjA4Olx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NjA5LVx0XHRycS1cdTAwM2VzY3guZGVmZXJyZWRfaXJxX3dvcmsgPSBJUlFfV09SS19JTklUX0hBUkQoZGVmZXJyZWRfaXJxX3dvcmtmbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDU3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIHRoZSBSZS1lbnF1ZXVlIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBgc2NoZWR1bGVfZHNxX3JlZW5xYCBpcyBjbGVhcmx5IG1lYW50IHRvIGFkZCBzb21ldGhpbmcgdG8gYGRlZmVycmVkX3JlZW5xX3VzZXJzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0ICYjMzQ7c29tZXRoaW5nJiMzNDsgaXMsIGFuZCBtb3JlIGltcG9ydGFudGx5LCB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2Ygd2h5IHdlJiMzOTtyZSBkZWZlcnJpbmcgcmUtZW5xdWV1aW5nIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhhdCB2YXJpYWJsZSBuYW1lLCBgZGVmZXJyZWRfcmVlbnFfdXNlcnNgLCBpbXBsaWVzIHRoZXJlIGFyZSB1c2Vycy4gU28sIG15IGluaXRpYWwgdGhvdWdodCBpcywgd2hhdCBjcml0ZXJpYSBtdXN0IGEgdXNlciBtZWV0IHRvIGJlIGRlZmVycmVkPyBJcyB0aGUgaXNzdWUgcmVsYXRlZCB0byBjYXBhY2l0eSwgdHJhbnNpZW50IGVycm9ycywgb3IgYSBtb3JlIGNvbXBsZXggYnVzaW5lc3MgcnVsZT8KCk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgcXVlc3Rpb24gaXMsIHdoZXJlIGluIHRoZSBjb2RlYmFzZSBpcyBgc2NoZWR1bGVfZHNxX3JlZW5xYCBhY3R1YWxseSBiZWluZyAqY2FsbGVkKj8gRmluZGluZyB0aGUgY2FsbCBzaXRlcyB3aWxsIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHRyaWdnZXIgY29uZGl0aW9ucyBmb3IgdGhpcyBkZWZlcnJlZCByZS1lbnF1ZXVlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBpZGVudGlmeSB0aGUgc2NlbmFyaW9zIHRoYXQgbGVhZCB0byBjYWxsaW5nIHRoYXQgZnVuY3Rpb24uIElzIGl0IHBhcnQgb2YgYSByZXRyeSBsb2dpYywgYSByYXRlLWxpbWl0aW5nIG1lY2hhbmlzbSwgb3Igc29tZXRoaW5nIGVudGlyZWx5IGRpZmZlcmVudD8gV2l0aG91dCB0aGF0IGNvbnRleHQsIEkgY2FuJiMzOTt0IGRldGVybWluZSBpZiB0aGlzIG1lY2hhbmlzbSBpcyBvcHRpbWFsLCBlZmZpY2llbnQsIG9yIHBvdGVudGlhbGx5IGludHJvZHVjaW5nIHByb2JsZW1zLiBJIG5lZWQgdG8gZm9sbG93IHRoZSBjYWxsIHN0YWNrIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93IG9mIGNvbnRyb2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjaGVkdWxlX2RzcV9yZWVucSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDI1PXN0YXRpYyB2b2lkIHNjaGVkdWxlX2RlZmVycmVkX2xvY2tlZChzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA2NC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA2NTp2b2lkIHNjaGVkdWxlX2RzcV9yZWVucShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY2LVx0XHRcdHU2NCByZWVucV9mbGFncywgc3RydWN0IHJxICpsb2NrZWRfcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00Mzg5PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfbG9jYWxzKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NDIwLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NDIxOlx0XHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDQyMi1cdFx0c21wX21iKCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NTA1PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MzAtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1MzE6XHRcdC8qIHNlZSBzY2hlZHVsZV9kc3FfcmVlbnEoKSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTMyLVx0XHRzbXBfbWIoKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk3NDI9X19icGZfa2Z1bmMgdm9pZCBzY3hfYnBmX2RzcV9yZWVucSh1NjQgZHNxX2lkLCB1NjQgcmVlbnFfZmxhZ3MsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzYzLVx0ZHNxID0gZmluZF9kc3FfZm9yX2Rpc3BhdGNoKHNjaCwgdGhpc19ycSgpLCBkc3FfaWQsIHNtcF9wcm9jZXNzb3JfaWQoKSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk3NjQ6XHRzY2hlZHVsZV9kc3FfcmVlbnEoc2NoLCBkc3EsIHJlZW5xX2ZsYWdzLCBzY3hfbG9ja2VkX3JxKCkpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzY1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyODgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBzY3hfYnBmX2RzcV9yZWVucWAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXQgY2FsbHMgYHNjaGVkdWxlX2RzcV9yZWVucWAsIGFuZCBJIHNlZSBpdCYjMzk7cyBkZWZpbmVkIGFzIGEgQlBGIGtmdW5jLiBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGlzIG1lYW5zIGEgQlBGIHByb2dyYW0gY2FuIGNhbGwgYHNjeF9icGZfZHNxX3JlZW5xYCwgd2hpY2ggaW4gdHVybiBhZGRzIHNvbWV0aGluZyB0byBgZGVmZXJyZWRfcmVlbnFfdXNlcnNgLiBUaGVuLCBsYXRlciwgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGNvbWVzIGFsb25nIGFuZCBwcm9jZXNzZXMgdGhvc2UgdXNlcnMgdmlhIGBydW5fZGVmZXJyZWRgLgoKTXkgaW50dWl0aW9uIGlzIHNjcmVhbWluZyAmIzM0O3BvdGVudGlhbCByYWNlIGNvbmRpdGlvbiEmIzM0OyBiZWNhdXNlIEkgc2VlIGEgc2l0dWF0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCAqbWlnaHQqIGludmFsaWRhdGUgdGhlIGBkc3FgIG9iamVjdCAqYmVmb3JlKiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgZ2V0cyBhIGNoYW5jZSB0byBydW4uIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHRoZSB0eXBlIG9mIHNjZW5hcmlvIEkmIzM5O20gbG9va2luZyBmb3IuIFNvLCBgc2N4X2JwZl9kc3FfcmVlbnFgIGlzIGRlZmluaXRlbHkgYSBnb29kIGNhbmRpZGF0ZSBmb3IgYSBGb2N1c1N5bWJvbCwgYW5kLCBzaW5jZSBpdCYjMzk7cyBhIGtmdW5jLCBpdCYjMzk7cyBhIGdyZWF0IGVudHJ5IHBvaW50IHRvIHN0YXJ0IGxvb2tpbmcgYXQuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgd291bGQgYmUgYW4gb2J2aW91cyBibG9ja2VyIHRvIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3hfYnBmX2RzcV9yZWVucSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYz05NzAzPV9fYnBmX2tmdW5jIHN0cnVjdCB0YXNrX3N0cnVjdCAqc2N4X2JwZl9kc3FfcGVlayh1NjQgZHNxX2lkLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyNy0vKipcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTcyODogKiBzY3hfYnBmX2RzcV9yZWVucSAtIFJlLWVucXVldWUgdGFza3Mgb24gYSBEU1Fcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyOS0gKiBAZHNxX2lkOiBEU1EgdG8gcmUtZW5xdWV1ZVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc0MS0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc0MjpfX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZHNxX3JlZW5xKHU2NCBkc3FfaWQsIHU2NCByZWVucV9mbGFncyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc0My1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3NzQtICpcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc3NTogKiBUaGlzIGlzIG5vdyBhIHNwZWNpYWwgY2FzZSBvZiBzY3hfYnBmX2RzcV9yZWVucSgpIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGVcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc3Ni0gKiBmdXR1cmUuXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05Nzc4PV9fYnBmX2tmdW5jIHZvaWQgc2N4X2JwZl9yZWVucXVldWVfbG9jYWxfX192Mihjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3Nzkte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzgwOlx0c2N4X2JwZl9kc3FfcmVlbnEoU0NYX0RTUV9MT0NBTCwgMCwgYXV4KTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc4MS19XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDU5MT1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfcGVlaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVV9QUk9URUNURUQgfCBLRl9SRVRfTlVMTClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA1OTI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3JlZW5xLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDU5My1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9yZWVucXVldWVfbG9jYWxfX192MiwgS0ZfSU1QTElDSVRfQVJHUylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzOTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERTUSBEZXN0cnVjdGlvbiBSYWNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIERTUSBpc3N1ZSBhbmQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgeWVzLCBgc2N4X2JwZl9kc3FfcmVlbnFgIGlzIGRlZmluaXRlbHkgYSBrZnVuYywgYW5kIGNydWNpYWxseSwgaXQmIzM5O3Mgbm9uLXN0YXRpYy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgcmVjYWxsIGFub3RoZXIgb25lIHJlbGF0ZWQgdG8gcmUtZW5xdWV1ZWluZyBpcyBgc2N4X2JwZl9yZWVucXVldWVfbG9jYWxfX192MmAuIE5vdywgdGhlIHByb2JsZW0gZGVzY3JpcHRpb24gaXMgc3BlY2lmaWNhbGx5IHBvaW50aW5nIGF0IGEgcmFjZSBjb25kaXRpb24gZHVyaW5nIGBkZXN0cm95X2RzcSgpYC4gUmlnaHQsIHRoYXQgZnVuY3Rpb24gZ2V0cyBpbnZva2VkIHdoZW4gYSBEU1EgaXMsIHdlbGwsIGRlc3Ryb3llZC4gU2VlbXMgbG9naWNhbC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBkZXN0cm95X2RzcSgpYCBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kIHRoYXQgbWlnaHQgYmUgY2F1c2luZyB0aGlzIHJhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBtZWNoYW5pY3Mgb2YgaXRzIG9wZXJhdGlvbiB0byBpZGVudGlmeSB0aGUgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVzdHJveV9kc3EmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDUwNT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTMzLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NTM0Olx0XHQvKiBkZXN0cm95X2RzcSgpIG1heSByYWNlIGFuZCBpbnZhbGlkYXRlIEBkc3E7IHNraXAgKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUzNS1cdFx0aWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTAxOT1zdGF0aWMgREVGSU5FX0lSUV9XT1JLKGZyZWVfZHNxX2lycV93b3JrLCBmcmVlX2RzcV9pcnFfd29ya2ZuKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAyMC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NTAyMTpzdGF0aWMgdm9pZCBkZXN0cm95X2RzcShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHU2NCBkc3FfaWQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUwMjIte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTIzMD1zdGF0aWMgdm9pZCBzY3hfc2NoZWRfZnJlZV9yY3Vfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01Mjk1LVx0XHR3aGlsZSAoIUlTX0VSUl9PUl9OVUxMKChkc3EgPSByaGFzaHRhYmxlX3dhbGtfbmV4dChcdTAwMjZyaHRfaXRlcikpKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NTI5NjpcdFx0XHRkZXN0cm95X2RzcShzY2gsIGRzcS1cdTAwM2VpZCk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUyOTctXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NTQ3PV9fYnBmX2tmdW5jIHMzMiBzY3hfYnBmX2RzcV9ucl9xdWV1ZWQodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU4NC0vKipcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTU4NTogKiBzY3hfYnBmX2Rlc3Ryb3lfZHNxIC0gRGVzdHJveSBhIGN1c3RvbSBEU1Fcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU4Ni0gKiBAZHNxX2lkOiBEU1EgdG8gZGVzdHJveVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU5My0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTU5NDpfX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZGVzdHJveV9kc3EodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTk1LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk2MDAtXHRpZiAoc2NoKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NjAxOlx0XHRkZXN0cm95X2RzcShzY2gsIGRzcV9pZCk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk2MDItfVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA1ODk9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX25yX3F1ZXVlZCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA1OTA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZGVzdHJveV9kc3EsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNTkxLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9wZWVrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVX1BST1RFQ1RFRCB8IEtGX1JFVF9OVUxMKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzUyMwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQ1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSYWNlIENvbmRpdGlvbiBpbiB0aGUgRXh0ZW5zaWJsZSBTY2hlZHVsZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBmaXggcmVsYXRlZCB0byB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgKHNjaGVkX2V4dCkgYW5kIGEgY3VzdG9tIGRpc3BhdGNoIHF1ZXVlIChEU1EpLiBJdCBsb29rcyBsaWtlIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgZGVzdHJveWluZyB0aGUgRFNRLiBUaGUgY29yZSBpc3N1ZSBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIHRoaXMgZGVzdHJ1Y3Rpb24gcHJvY2VzcyBhbmQgdGhlIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucyBtYW5hZ2VkIGJ5IGBzY3hfYnBmX2RzcV9yZWVucWAuCgpUaGVyZWZvcmUsIG15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZXNlIHR3byBmdW5jdGlvbnM6IGBzY3hfYnBmX2RzcV9yZWVucWAgYW5kIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGV5JiMzOTtyZSBiZWhhdmluZyBjb3JyZWN0bHkgaW4gdGhlIGZhY2Ugb2YgZWFjaCBvdGhlci4gSSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgdGhleSBhcmUgYm90aCBub24tc3RhdGljIGFuZCBleHBvcnRlZCwgc3BlY2lmaWNhbGx5IGBfX2JwZl9rZnVuY2AsIG1lYW5pbmcgdGhleSBhcmUgYWNjZXNzaWJsZSB0byBCUEYgY29kZSwgYW5kIHRoZXJlZm9yZSB0aGlzIHJhY2UgaXMgYSBnZW51aW5lIGNvbmNlcm4uCgpFc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBjcml0aWNhbCByYWNlIGNvbmRpdGlvbiB3aXRoaW4gdGhlIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBvZiBzY2hlZF9leHQuIFRoaXMgaXMgdGhlIHBsYWNlIHRvIGJlLCB0byBsb29rIHRvIGJlIGZ1enppbmcuIFRoaXMgaXMgcGFydGljdWxhcmx5IHJlbGV2YW50IHdoZW4gYSBCUEYgc2NoZWR1bGVyIGlzIGluIHVzZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQuIFdlIGRlZmluaXRlbHkgbmVlZCBgU0NIRURfQ0xBU1NfRVhUYC4gYEJQRl9TWVNDQUxMYCBhbmQgYERFQlVHX0lORk9fQlRGYCBhcmUgdXN1YWxseSBzdGFuZGFyZCBmb3IgYW55IEJQRiBmdXp6aW5nIHNldHVwIGFueXdheSwgc28gSSYjMzk7bGwgYXNzdW1lIHRob3NlIGFyZSBpbiBwbGFjZS4gVGhlcmVmb3JlLCBgU0NIRURfQ0xBU1NfRVhUYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlLCBhbmQgSSYjMzk7bGwga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgZnVydGhlciBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQ0hFRF9DTEFTU19FWFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL0tjb25maWcucHJlZW1wdD0xNTE9Y29uZmlnIFNDSEVEX0NPUkVcbi0tXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE2OC1cbmtlcm5lbC9LY29uZmlnLnByZWVtcHQ6MTY5OmNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTcwLVx0Ym9vbCBcJiMzNDtFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0MjYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTY2hlZHVsZXIgQ2xhc3MgRXh0ZW5zaW9uIFJhY2UgQ29uZGl0aW9uKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLiBJcyBgU0NIRURfQ0xBU1NfRVhUYCB0cnVseSB0aGUgKm9ubHkqIHNjaGVkdWxlciBjbGFzcyBleHRlbnNpb24gd2UgbmVlZCB0byBjb25zaWRlciBoZXJlPyBZZXMsIHRoYXQgY2hlY2tzIG91dC4gR29vZC4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoaXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLiBUaW1lIHRvIHJldmlldyB0aGUgYEZvY3VzU3ltYm9sc2AuCgpSaWdodCwgc28gd2UgaGF2ZSBgc2N4X2JwZl9kc3FfcmVlbnFgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAuIFRob3NlIGFyZSB0aGUgQlBGIGtmdW5jcyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIHdob2xlIGlzc3VlLiBXZSBuZWVkIHRvIGJlIHByZWNpc2UgYWJvdXQgaG93IHRoZXkgaW50ZXJhY3QgYW5kIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXR5IGxpZXMuCgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgc2VxdWVuY2U6IEZpcnN0LCBgc2N4X2JwZl9kc3FfcmVlbnFgIGdldHMgY2FsbGVkLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBgc2N4X2RlZmVycmVkX3JlZW5xX3VzZXJgIHRvIGBycS0mZ3Q7c2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzYC4gVGhhdCYjMzk7cyB0aGUgZW5xdWV1aW5nIHNpZGUuIFRoZW4sIGNvbmN1cnJlbnRseSwgYHNjeF9icGZfZGVzdHJveV9kc3FgIGlzIGNhbGxlZC4gQWgsIHJpZ2h0LiBUaGlzIGRlc3Ryb3lzIHRoZSBEU1EuIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgRFNRJiMzOTtzIElEIHRvIGBTQ1hfRFNRX0ZMQUdfQlVJTFRJTmAuLi4gaG9sZCBvbiwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgcGFydC4gQWgsIHRoZSBwYXRjaCBub3RlcyBjbGVhcmx5IGluZGljYXRlIHRoYXQgdGhlIERTUSYjMzk7cyBJRCBpcyBzZXQgYnkgYGRzcS0mZ3Q7aWQgJmFtcDsgU0NYX0RTUV9GTEFHX0JVSUxUSU5gLiBCZXN0IHRvIHZlcmlmeSBleGFjdGx5IHdoYXQgYGRlc3Ryb3lfZHNxYCBkb2VzIGludGVybmFsbHksIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAyMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1MDIxOlx0c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxuNTAyMjpcdHtcbjUwMjM6XHRcdHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxO1xuNTAyNDpcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbjUwMjU6XHRcbjUwMjY6XHRcdHJjdV9yZWFkX2xvY2soKTtcbjUwMjc6XHRcbjUwMjg6XHRcdGRzcSA9IGZpbmRfdXNlcl9kc3Eoc2NoLCBkc3FfaWQpO1xuNTAyOTpcdFx0aWYgKCFkc3EpXG41MDMwOlx0XHRcdGdvdG8gb3V0X3VubG9ja19yY3U7XG41MDMxOlx0XG41MDMyOlx0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZHNxLVx1MDAzZWxvY2ssIGZsYWdzKTtcbjUwMzM6XHRcbjUwMzQ6XHRcdGlmIChkc3EtXHUwMDNlbnIpIHtcbjUwMzU6XHRcdFx0c2N4X2Vycm9yKHNjaCwgXCYjMzQ7YXR0ZW1wdGluZyB0byBkZXN0cm95IGluLXVzZSBkc3EgMHglMDE2bGx4IChucj0ldSlcJiMzNDssXG41MDM2Olx0XHRcdFx0ICBkc3EtXHUwMDNlaWQsIGRzcS1cdTAwM2Vucik7XG41MDM3Olx0XHRcdGdvdG8gb3V0X3VubG9ja19kc3E7XG41MDM4Olx0XHR9XG41MDM5Olx0XG41MDQwOlx0XHRpZiAocmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcdTAwMjZzY2gtXHUwMDNlZHNxX2hhc2gsIFx1MDAyNmRzcS1cdTAwM2VoYXNoX25vZGUsXG41MDQxOlx0XHRcdFx0XHQgICBkc3FfaGFzaF9wYXJhbXMpKVxuNTA0MjpcdFx0XHRnb3RvIG91dF91bmxvY2tfZHNxO1xuNTA0MzpcdFxuNTA0NDpcdFx0LypcbjUwNDU6XHRcdCAqIE1hcmsgZGVhZCBieSBpbnZhbGlkYXRpbmcgLVx1MDAzZWlkIHRvIHByZXZlbnQgc2N4X2Rpc3BhdGNoX2VucXVldWUoKSBmcm9tXG41MDQ2Olx0XHQgKiBxdWV1ZWluZyBtb3JlIHRhc2tzLiBBcyB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnl3aGVyZSxcbjUwNDc6XHRcdCAqIGZyZWVpbmcgaXMgYm91bmNlZCB0aHJvdWdoIGFuIGlycSB3b3JrIHRvIGF2b2lkIG5lc3RpbmcgUkNVXG41MDQ4Olx0XHQgKiBvcGVyYXRpb25zIGluc2lkZSBzY2hlZHVsZXIgbG9ja3MuXG41MDQ5Olx0XHQgKi9cbjUwNTA6XHRcdGRzcS1cdTAwM2VpZCA9IFNDWF9EU1FfSU5WQUxJRDtcbjUwNTE6XHRcdGlmIChsbGlzdF9hZGQoXHUwMDI2ZHNxLVx1MDAzZWZyZWVfbm9kZSwgXHUwMDI2ZHNxc190b19mcmVlKSlcbjUwNTI6XHRcdFx0aXJxX3dvcmtfcXVldWUoXHUwMDI2ZnJlZV9kc3FfaXJxX3dvcmspO1xuNTA1MzpcdFxuNTA1NDpcdG91dF91bmxvY2tfZHNxOlxuNTA1NTpcdFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZHNxLVx1MDAzZWxvY2ssIGZsYWdzKTtcbjUwNTY6XHRvdXRfdW5sb2NrX3JjdTpcbjUwNTc6XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuNTA1ODpcdH1cbjUwNTk6XHRcbjUwNjA6XHQjaWZkZWYgQ09ORklHX0VYVF9HUk9VUF9TQ0hFRFxuNTA2MTpcdHN0YXRpYyB2b2lkIHNjeF9jZ3JvdXBfZXhpdChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG41MDYyOlx0e1xuNTA2MzpcdFx0c3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcztcbjUwNjQ6XHRcbjUwNjU6XHRcdC8qXG41MDY2Olx0XHQgKiBzY3hfdGdfb24vb2ZmbGluZSgpIGFyZSBleGNsdWRlZCB0aHJvdWdoIGNncm91cF9sb2NrKCkuIElmIHdlIHdhbGtcbjUwNjc6XHRcdCAqIGNncm91cHMgYW5kIGV4aXQgYWxsIHRoZSBpbml0ZWQgb25lcywgYWxsIG9ubGluZSBjZ3JvdXBzIGFyZSBleGl0ZWQuXG41MDY4Olx0XHQgKi9cbjUwNjk6XHRcdGNzc19mb3JfZWFjaF9kZXNjZW5kYW50X3Bvc3QoY3NzLCBcdTAwMjZyb290X3Rhc2tfZ3JvdXAuY3NzKSB7XG41MDcwOlx0XHRcdHN0cnVjdCB0YXNrX2dyb3VwICp0ZyA9IGNzc190Zyhjc3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTgyNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYGRlc3Ryb3lfZHNxYCBGdW5jdGlvbiBhbmQgSW52YWxpZGF0aW5nIHRoZSBEYXRhIFN0cnVjdHVyZSBJZGVudGlmaWVyKioKClJpZ2h0LCBzbyBgZGVzdHJveV9kc3FgIGlzIGNsZWFybHkgc2V0dGluZyBgZHNxLSZndDtpZCA9IFNDWF9EU1FfSU5WQUxJRGAuIE1ha2VzIHNlbnNlOyB3ZSYjMzk7cmUgaW52YWxpZGF0aW5nIHRoZSBkYXRhIHN0cnVjdHVyZSBhZnRlciBkZXN0cnVjdGlvbi4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gaW1tZWRpYXRlbHkgdmVyaWZ5IHdoYXQgYFNDWF9EU1FfSU5WQUxJRGAgYWN0dWFsbHkgKmlzKi4gSXMgaXQgLTE/IDA/IFNvbWUgbGFyZ2UsIGltcHJvYmFibGUgbnVtYmVyPyBVbmRlcnN0YW5kaW5nIHRoYXQgY29uc3RhbnQgaXMgY3JpdGljYWwgdG8gZW5zdXJpbmcgd2UgZG9uJiMzOTt0IGFjY2lkZW50YWxseSByZXVzZSB0aGUgbm93LWRlc3Ryb3llZCBgZHNxYCBoYW5kbGUgd2l0aG91dCBwcm9wZXIgcmUtaW5pdGlhbGl6YXRpb24sIG9yIHdvcnNlLCB0aGF0IGl0IGRvZXNuJiMzOTt0IGNvbGxpZGUgd2l0aCBzb21lIHZhbGlkIGRhdGEgc3RydWN0dXJlLiBJdCYjMzk7cyB0aGUgbHluY2hwaW4gb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN0cmF0ZWd5IGhlcmUgYW5kIHNob3VsZCBiZSBpbW1lZGlhdGVseSB2ZXJpZmlhYmxlIGJ5IHRoZSB0ZWFtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTQ1hfRFNRX0lOVkFMSUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTYyMj1zdGF0aWMgdm9pZCBzY3hfZGlzcGF0Y2hfZW5xdWV1ZShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBycSAqcnEsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjQwLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxNjQxOlx0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpIHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTY0Mi1cdFx0XHRzY3hfZXJyb3Ioc2NoLCBcJiMzNDthdHRlbXB0aW5nIHRvIGRpc3BhdGNoIHRvIGEgZGVzdHJveWVkIGRzcVwmIzM0Oyk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xODg4PXN0YXRpYyB2b2lkIG1hcmtfZGlyZWN0X2Rpc3BhdGNoKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE5MTEtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE5MTI6XHRXQVJOX09OX09OQ0UocC1cdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTkxMy1cdFdBUk5fT05fT05DRShwLVx1MDAzZXNjeC5kZHNwX2VucV9mbGFncyk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xOTM2PXN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9kaXJlY3RfZGlzcGF0Y2goc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTM3LXtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTkzODpcdHAtXHUwMDNlc2N4LmRkc3BfZHNxX2lkID0gU0NYX0RTUV9JTlZBTElEO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTM5LVx0cC1cdTAwM2VzY3guZGRzcF9lbnFfZmxhZ3MgPSAwO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MjAxMD12b2lkIHNjeF9kb19lbnF1ZXVlX3Rhc2soc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1NjQgZW5xX2ZsYWdzLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjA2Mi1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjA2MzpcdGlmIChwLVx1MDAzZXNjeC5kZHNwX2RzcV9pZCAhPSBTQ1hfRFNRX0lOVkFMSUQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwNjQtXHRcdGdvdG8gZGlyZWN0O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjA5Ni1cdCpkZHNwX3Rhc2twID0gTlVMTDtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjA5NzpcdGlmIChwLVx1MDAzZXNjeC5kZHNwX2RzcV9pZCAhPSBTQ1hfRFNRX0lOVkFMSUQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwOTgtXHRcdGdvdG8gZGlyZWN0O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9Mzk1Nj12b2lkIGluaXRfc2N4X2VudGl0eShzdHJ1Y3Qgc2NoZWRfZXh0X2VudGl0eSAqc2N4KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk2NS1cdHNjeC1cdTAwM2VydW5uYWJsZV9hdCA9IGppZmZpZXM7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM5NjY6XHRzY3gtXHUwMDNlZGRzcF9kc3FfaWQgPSBTQ1hfRFNRX0lOVkFMSUQ7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NjctXHRzY3gtXHUwMDNlc2xpY2UgPSBTQ1hfU0xJQ0VfREZMO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTAyMT1zdGF0aWMgdm9pZCBkZXN0cm95X2RzcShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHU2NCBkc3FfaWQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MDQ5LVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjUwNTA6XHRkc3EtXHUwMDNlaWQgPSBTQ1hfRFNRX0lOVkFMSUQ7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUwNTEtXHRpZiAobGxpc3RfYWRkKFx1MDAyNmRzcS1cdTAwM2VmcmVlX25vZGUsIFx1MDAyNmRzcXNfdG9fZnJlZSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTU1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBgU0NYX0RTUV9JTlZBTElEYCBjb25zdGFudCBpcyBkZWZpbmVkLiBLbm93aW5nIHRoZSBMaW51eCBrZXJuZWwsIHRoZSBsaWtlbHkgY2FuZGlkYXRlcyBhcmUgaW4gdGhlIGhlYWRlciBmaWxlcyBmb3Igc2NoZWR1bGVyIGV4dGVuc2lvbnMuIEkgc2hvdWxkIGNoZWNrIGBpbmNsdWRlL3VhcGkvbGludXgvc2NoZWQvZXh0LmhgIGZpcnN0LCBhcyB0aGF0IHVzdWFsbHkgY29udGFpbnMgdGhlIHVzZXItc3BhY2UgYWNjZXNzaWJsZSBkZWZpbml0aW9ucy4gSWYgaXQmIzM5O3Mgbm90IHRoZXJlLCB0aGVuIEkmIzM5O2xsIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgaW50ZXJuYWwgc3RydWN0dXJlcyBhbmQgbG9vayBpbiBga2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHByb2dyZXNzaW9uIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHVzYWdlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NDWF9EU1FfSU5WQUxJRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oPTUzPWVudW0gc2N4X2RzcV9pZF9mbGFncyB7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC01Ni1cbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0Lmg6NTc6XHRTQ1hfRFNRX0lOVkFMSURcdFx0PSBTQ1hfRFNRX0ZMQUdfQlVJTFRJTiB8IDAsXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oLTU4LVx0U0NYX0RTUV9HTE9CQUxcdFx0PSBTQ1hfRFNRX0ZMQUdfQlVJTFRJTiB8IDEsXG4tLVxuaW5pdC9pbml0X3Rhc2suYz0xMDU9c3RydWN0IHRhc2tfc3RydWN0IGluaXRfdGFzayBfX2FsaWduZWQoTDFfQ0FDSEVfQllURVMpID0ge1xuLS1cbmluaXQvaW5pdF90YXNrLmMtMTUwLVx0XHQucnVubmFibGVfYXRcdD0gSU5JVElBTF9KSUZGSUVTLFxuaW5pdC9pbml0X3Rhc2suYzoxNTE6XHRcdC5kZHNwX2RzcV9pZFx0PSBTQ1hfRFNRX0lOVkFMSUQsXG5pbml0L2luaXRfdGFzay5jLTE1Mi1cdFx0LnNsaWNlXHRcdD0gU0NYX1NMSUNFX0RGTCxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTE2MjI9c3RhdGljIHZvaWQgc2N4X2Rpc3BhdGNoX2VucXVldWUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgcnEgKnJxLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTY0MC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTY0MTpcdFx0aWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKSB7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2NDItXHRcdFx0c2N4X2Vycm9yKHNjaCwgXCYjMzQ7YXR0ZW1wdGluZyB0byBkaXNwYXRjaCB0byBhIGRlc3Ryb3llZCBkc3FcJiMzNDspO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTg4OD1zdGF0aWMgdm9pZCBtYXJrX2RpcmVjdF9kaXNwYXRjaChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTExLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxOTEyOlx0V0FSTl9PTl9PTkNFKHAtXHUwMDNlc2N4LmRkc3BfZHNxX2lkICE9IFNDWF9EU1FfSU5WQUxJRCk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE5MTMtXHRXQVJOX09OX09OQ0UocC1cdTAwM2VzY3guZGRzcF9lbnFfZmxhZ3MpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTkzNj1zdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfZGlyZWN0X2Rpc3BhdGNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTkzNy17XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE5Mzg6XHRwLVx1MDAzZXNjeC5kZHNwX2RzcV9pZCA9IFNDWF9EU1FfSU5WQUxJRDtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTkzOS1cdHAtXHUwMDNlc2N4LmRkc3BfZW5xX2ZsYWdzID0gMDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTIwMTA9dm9pZCBzY3hfZG9fZW5xdWV1ZV90YXNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGVucV9mbGFncyxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwNjItXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjIwNjM6XHRpZiAocC1cdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yMDY0LVx0XHRnb3RvIGRpcmVjdDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwOTYtXHQqZGRzcF90YXNrcCA9IE5VTEw7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjIwOTc6XHRpZiAocC1cdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yMDk4LVx0XHRnb3RvIGRpcmVjdDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM5NTY9dm9pZCBpbml0X3NjeF9lbnRpdHkoc3RydWN0IHNjaGVkX2V4dF9lbnRpdHkgKnNjeClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NjUtXHRzY3gtXHUwMDNlcnVubmFibGVfYXQgPSBqaWZmaWVzO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozOTY2Olx0c2N4LVx1MDAzZWRkc3BfZHNxX2lkID0gU0NYX0RTUV9JTlZBTElEO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zOTY3LVx0c2N4LVx1MDAzZXNsaWNlID0gU0NYX1NMSUNFX0RGTDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTUwMjE9c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTA0OS1cdCAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1MDUwOlx0ZHNxLVx1MDAzZWlkID0gU0NYX0RTUV9JTlZBTElEO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MDUxLVx0aWYgKGxsaXN0X2FkZChcdTAwMjZkc3EtXHUwMDNlZnJlZV9ub2RlLCBcdTAwMjZkc3FzX3RvX2ZyZWUpKVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtX2RlZnMuYXV0b2dlbi5oLTYwLSNkZWZpbmUgSEFWRV9TQ1hfRFNRX0ZMQUdfTE9DQUxfT05cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtX2RlZnMuYXV0b2dlbi5oOjYxOiNkZWZpbmUgSEFWRV9TQ1hfRFNRX0lOVkFMSURcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtX2RlZnMuYXV0b2dlbi5oLTYyLSNkZWZpbmUgSEFWRV9TQ1hfRFNRX0dMT0JBTFxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmJwZi5oPTQzPWNvbnN0IHZvbGF0aWxlIHU2NCBfX1NDWF9EU1FfRkxBR19MT0NBTF9PTiBfX3dlYWs7XG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1zLmF1dG9nZW4uYnBmLmgtNDUtXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvZW51bXMuYXV0b2dlbi5icGYuaDo0Njpjb25zdCB2b2xhdGlsZSB1NjQgX19TQ1hfRFNRX0lOVkFMSUQgX193ZWFrO1xudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1zLmF1dG9nZW4uYnBmLmg6NDc6I2RlZmluZSBTQ1hfRFNRX0lOVkFMSUQgX19TQ1hfRFNRX0lOVkFMSURcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmJwZi5oLTQ4LVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmgtMjAtXHRTQ1hfRU5VTV9TRVQoc2tlbCwgc2N4X2RzcV9pZF9mbGFncywgU0NYX0RTUV9GTEFHX0xPQ0FMX09OKTsgXFxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmg6MjE6XHRTQ1hfRU5VTV9TRVQoc2tlbCwgc2N4X2RzcV9pZF9mbGFncywgU0NYX0RTUV9JTlZBTElEKTsgXFxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmgtMjItXHRTQ1hfRU5VTV9TRVQoc2tlbCwgc2N4X2RzcV9pZF9mbGFncywgU0NYX0RTUV9HTE9CQUwpOyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjcxOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBTQ1hfRFNRX0lOVkFMSURgIEJ1ZyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBTQ1hfRFNRX0lOVkFMSURgIGhhcyB0aGUgYFNDWF9EU1FfRkxBR19CVUlMVElOYCBmbGFnIHNldC4gVGhpcyBtZWFucyB0aGF0IHdoZW4gd2UgcGVyZm9ybSB0aGUgYml0d2lzZSBBTkQgb3BlcmF0aW9uLCBgZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTmAgd2lsbCBldmFsdWF0ZSB0byB0cnVlIGZvciBgU0NYX0RTUV9JTlZBTElEYC4gVGhlIHBhdGNoIGNvcnJlY3RseSByZWNvZ25pemVzIHRoaXMgd2l0aCBgaWYgKHVubGlrZWx5KGRzcS0mZ3Q7aWQgJmFtcDsgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKWAgYW5kIHRoZW4gc2tpcHMgdGhlIGludmFsaWQgcXVldWUuIFRoaXMgc2VlbXMgdG8gYWxpZ24gcGVyZmVjdGx5IHdpdGggdGhlIHJlcG9ydGVkIGJ1Zy4gSSB0aGluayBJJiMzOTt2ZSBnb3QgaXQuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCwgdGhlICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDsgYXMgSSBsaWtlIHRvIGNhbGwgdGhlbS4gQmFzZWQgb24gdGhpcywgaXQgbG9va3MgbGlrZSBgc2N4X2JwZl9kc3FfcmVlbnFgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYXJlIHdoZXJlIHRoZSBhY3Rpb24gaGFwcGVucy4KCldhaXQsIGBzY3hfYnBmX2RzcV9yZWVucWAgaXMgYSBrZnVuYyEgVGhhdCBtZWFucyBpdCBjYW4gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gQlBGIGNvZGUgd2hpY2ggaXMgaW1wb3J0YW50LCBidXQgd2hhdCBlbHNlPwoKYGRlc3Ryb3lfZHNxYCBpcyBzdGF0aWMsIGJ1dCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgc2N4X2JwZl9kZXN0cm95X2RzcWAuIFRoZW4gd2UgaGF2ZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AsIHdoaWNoIGlzIGFsc28gc3RhdGljLCBidXQgdGhhdCYjMzk7cyBjYWxsZWQgZnJvbSBgcnVuX2RlZmVycmVkYC4gSSBoYXZlIHRvIHRyYWNlIGhvdyBgcnVuX2RlZmVycmVkYCBpcyBjYWxsZWQsIGFuZCB0aGF0IGxvb2tzIGxpa2UgYHRhc2tfd29rZW5fc2N4YCwgYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gLCBhbmQgYGRlZmVycmVkX2lycV93b3JrZm5gLiBPa2F5LCBzbywgd2l0aCB0aGVzZSBjb25uZWN0aW9ucywgYHNjeF9icGZfZHNxX3JlZW5xYCBhbmQgYHNjeF9icGZfZGVzdHJveV9kc3FgIGFyZSBkZWZpbml0ZWx5IHRoZSByaWdodCBGb2N1c1N5bWJvbHMuIFRoZSB3YXkgdGhlc2UgdGhpbmdzIGFyZSBjYWxsZWQgc2VlbXMgdG8gZXhwbGFpbiB0aGUgaXNzdWUuCgpMZXQmIzM5O3MgZG8gYSBmaW5hbCBjaGVjazogSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBgc2N4X2JwZl9kc3FfcmVlbnFgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIGFkZGluZyB0byBgZGVmZXJyZWRfcmVlbnFfdXNlcnNgLiBJIHNlZSB0aGF0IGBzY2hlZHVsZV9kc3FfcmVlbnFgIGRvZXMgYWRkIHRvIHRoaXMgbGlzdC4gQW5kLCB0aGFua2Z1bGx5LCBgc2NoZWR1bGVfZHNxX3JlZW5xYCBpcyBjYWxsZWQgZGlyZWN0bHkgYnkgYHNjeF9icGZfZHNxX3JlZW5xYC4gUGVyZmVjdCEgTm8gb3RoZXIgb2J2aW91cyBjYWxsZXJzLiBJIHRoaW5rIEkmIzM5O20gY29uZmlkZW50IGFib3V0IHRoZXNlIEZvY3VzU3ltYm9scy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoZWR1bGVfZHNxX3JlZW5xJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMjU9c3RhdGljIHZvaWQgc2NoZWR1bGVfZGVmZXJyZWRfbG9ja2VkKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY0LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDY1OnZvaWQgc2NoZWR1bGVfZHNxX3JlZW5xKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNjYtXHRcdFx0dTY0IHJlZW5xX2ZsYWdzLCBzdHJ1Y3QgcnEgKmxvY2tlZF9ycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQzODk9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV9sb2NhbHMoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ0MjAtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ0MjE6XHRcdC8qIHNlZSBzY2hlZHVsZV9kc3FfcmVlbnEoKSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NDIyLVx0XHRzbXBfbWIoKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1MDU9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUzMC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDUzMTpcdFx0Lyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MzItXHRcdHNtcF9tYigpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTc0Mj1fX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZHNxX3JlZW5xKHU2NCBkc3FfaWQsIHU2NCByZWVucV9mbGFncyxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3NjMtXHRkc3EgPSBmaW5kX2RzcV9mb3JfZGlzcGF0Y2goc2NoLCB0aGlzX3JxKCksIGRzcV9pZCwgc21wX3Byb2Nlc3Nvcl9pZCgpKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc2NDpcdHNjaGVkdWxlX2RzcV9yZWVucShzY2gsIGRzcSwgcmVlbnFfZmxhZ3MsIHNjeF9sb2NrZWRfcnEoKSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3NjUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDEzMQoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKlJlZmluaW5nIHRoZSBGb2N1czogQSBRdWljayBSZWNhcCBhbmQgQ29uZmlybWF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIHplcm9lZCBpbiBvbiB0aGUga2V5IGZ1bmN0aW9ucyBkcml2aW5nIHRoaXMgYmVoYXZpb3I6IGBzY3hfYnBmX2RzcV9yZWVucWAgaXMgdGhlIGNyaXRpY2FsIG9uZSwgYXMgaXQmIzM5O3MgdGhlIHNvbGUgY2FsbGVyIG9mIGBzY2hlZHVsZV9kc3FfcmVlbnFgLCB3aGljaCBpcyB0aGUgYmVoYXZpb3IgSSB3YW50IHRvIHVuZGVyc3RhbmQuIFRoaXMsIGNvbWJpbmVkIHdpdGggYHNjeF9icGZfZGVzdHJveV9kc3FgLCBzZWVtcyB0byBiZSB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb25zIGhhcHBlbi4gR2l2ZW4gdGhhdCwgSSYjMzk7bSBmYWlybHkgY2VydGFpbiB0aG9zZSB0d28gZnVuY3Rpb25zIGFyZSB0aGUgaW1wb3J0YW50IGBGb2N1c1N5bWJvbHNgLiBBbmQgdGhlIHJlbGV2YW50IGBFbmFibGVDb25maWdzYCByZW1haW5zIGFzIGBTQ0hFRF9DTEFTU19FWFRgLCB0aGF0IGlzIHdoZXJlIHRoZSBmdW5jdGlvbmFsaXR5IGlzLiBOb3csIGJlZm9yZSBJIG1vdmUgb24sIGl0JiMzOTtzIGp1c3QgYSBtYXR0ZXIgb2YgYSBmaW5hbCB2ZXJpZmljYXRpb24gdXNpbmcgdGhlIHNldC1yZXN1bHRzIHRvb2wuIEEgcXVpY2ssIGxhc3QgZG91YmxlLWNoZWNrIHdpbGwgZ2l2ZSBtZSBhZGRpdGlvbmFsIGNvbmZpZGVuY2UgaW4gdGhlIHJlc3VsdHMgYmVmb3JlIEkgZGlnIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NDSEVEX0NMQVNTX0VYVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjeF9icGZfZHNxX3JlZW5xJiMzNDssCiAgICAmIzM0O3NjeF9icGZfZGVzdHJveV9kc3EmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTQ0hFRF9DTEFTU19FWFQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3hfYnBmX2RzcV9yZWVucSYjMzQ7LAogICAgJiMzNDtzY3hfYnBmX2Rlc3Ryb3lfZHNxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4dGVuc2libGUgc2NoZWR1bGVyIGNsYXNzIChzY2hlZF9leHQpIHdoZXJlIGEgY3VzdG9tIGRpc3BhdGNoIHF1ZXVlIChEU1EpIGNvdWxkIGJlIGRlc3Ryb3llZCB3aGlsZSB0aGVyZSBhcmUgc3RpbGwgcGVuZGluZyBkZWZlcnJlZCByZS1lbnF1ZXVlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBjb3JlIHNjaGVkdWxpbmcgbG9naWMgZml4IHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gYSBCUEYgc2NoZWR1bGVyIGlzIGxvYWRlZCBhbmQgdXNlcyBjdXN0b20gRFNRcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDk6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIEJVR19PTigpIHdpdGggYSBjb25kaXRpb25hbCBjaGVjayBhbmQgYSBgY29udGludWVgIHN0YXRlbWVudCB0byBoYW5kbGUgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWlnaHQgaW52YWxpZGF0ZSBhIGRpc3BhdGNoIHF1ZXVlIChgZHNxYCkuIFRoaXMgY2hhbmdlIHByZXZlbnRzIGEga2VybmVsIHBhbmljIChCVUdfT04pIGFuZCBoYW5kbGVzIHRoZSByYWNlIGdyYWNlZnVsbHkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgb3IgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgcmFjZSBjb25kaXRpb24gd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGRmNzRhNWU0ODdiNjQ0ZjY5OWEyMjViYmFmNWQ2OTA2NGU1YTM1YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDA5OjAzOjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMKaW5kZXggMGJiZTE0NGM5ODExMS4uNjA0YTA1ZGE0MWI5MyAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jCkBAIC00NTMxLDcgJiM0Mzs0NTMxLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKQogCQkvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi8KIAkJc21wX21iKCk7CiAKLQkJQlVHX09OKGRzcS0mZ3Q7aWQgJmFtcDsgU0NYX0RTUV9GTEFHX0JVSUxUSU4pOwomIzQzOwkJLyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovCiYjNDM7CQlpZiAodW5saWtlbHkoZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTikpCiYjNDM7CQkJY29udGludWU7CiAJCXJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpOwogCX0KIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA5OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTgKCQkJCQkJCW91dHB1dDogMTMxCgkJCQkJCQl0aG91Z2h0czogMzI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBTY2hlZHVsZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYC4gSXQmIzM5O3MgdHdlYWtpbmcgdGhlIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhhdCB0aGV5JiMzOTtyZSByZXBsYWNpbmcgYSBgQlVHX09OYCBjaGVjayB3aXRoIGEgY29uZGl0aW9uYWwgc2tpcC4gU3BlY2lmaWNhbGx5LCBgQlVHX09OKGRzcS0mZ3Q7aWQgJmFtcDsgU0NYX0RTUV9GTEFHX0JVSUxUSU4pO2AgaXMgbm93IGFuIGBpZiAodW5saWtlbHkoZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTikpIGNvbnRpbnVlO2AuIFNlZW1zIGxpa2UgYSBidWcgZml4LCByaWdodD8gVGhlIGNvbW1lbnQgaW5kaWNhdGVzIGl0JiMzOTtzIHRvIGFkZHJlc3MgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWlnaHQgaW52YWxpZGF0ZSBgZHNxYCBieSBzZXR0aW5nIHRoZSBgU0NYX0RTUV9GTEFHX0JVSUxUSU5gIGZsYWcuIEVzc2VudGlhbGx5LCBpdCB3YXMgY3Jhc2hpbmcgd2l0aCBhIGBCVUdfT05gIGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uLiBJdCYjMzk7cyBub3QgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIGdvb2QuIERlZmluaXRlbHkgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSwgc28gSSYjMzk7bGwgc2V0IE5lZWRzS01TQU4gdG8gZmFsc2UuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIHRob3VnaC4gT2theSwgdGhlIGNvZGUgcmVhZHMgYGRzcWAuIElmIGl0JiMzOTtzIGludmFsaWRhdGVkLCB0aGF0ICpjb3VsZCogYmUgYSB1c2UtYWZ0ZXItZnJlZSwgYW5kIEtBU0FOIHdvdWxkIG5vcm1hbGx5IGNhdGNoIHRoYXQuIFdhaXQsIGJ1dCBgZGVzdHJveV9kc3EoKWAgaW52YWxpZGF0ZXMgaXQgYnkgc2V0dGluZyB0aGUgZmxhZz8gSG1tLi4uIG5vLCBubywgdGhlIHBhdGNoIGl0c2VsZiBqdXN0IGNoYW5nZXMgYSBgQlVHX09OYCB0byBhIHNraXAuIFNvIHRoZSBmdW5jdGlvbiB3aWxsIGp1c3Qgc2tpcCBhIHNwZWNpZmljIERTUSBpZiB0aGUgcmFjZSBjb25kaXRpb24gaGFzIG9jY3VycmVkLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnZvbHZlZCBhdCBhbGwuIExvb2tzIHNvbGlkLiBJJiMzOTtsbCBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIEJVR19PTigpIHdpdGggYSBjb25kaXRpb25hbCBjaGVjayBhbmQgYSBgY29udGludWVgIHN0YXRlbWVudCB0byBoYW5kbGUgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWlnaHQgaW52YWxpZGF0ZSBhIGRpc3BhdGNoIHF1ZXVlIChgZHNxYCkuIFRoaXMgY2hhbmdlIHByZXZlbnRzIGEga2VybmVsIHBhbmljIChCVUdfT04pIGFuZCBoYW5kbGVzIHRoZSByYWNlIGdyYWNlZnVsbHkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgb3IgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgcmFjZSBjb25kaXRpb24gd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGEgQlVHX09OKCkgd2l0aCBhIGNvbmRpdGlvbmFsIGNoZWNrIGFuZCBhIGBjb250aW51ZWAgc3RhdGVtZW50IHRvIGhhbmRsZSBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCBtaWdodCBpbnZhbGlkYXRlIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKS4gVGhpcyBjaGFuZ2UgcHJldmVudHMgYSBrZXJuZWwgcGFuaWMgKEJVR19PTikgYW5kIGhhbmRsZXMgdGhlIHJhY2UgZ3JhY2VmdWxseS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBvciBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlcyByZWxhdGVkIHRvIHRoZSByYWNlIGNvbmRpdGlvbiB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzoyOC45ODE5MDU5MzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgwMTk3NjUyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0NIRURfQ0xBU1NfRVhUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N4X2JwZl9kc3FfcmVlbnFcIixcbiAgICBcInNjeF9icGZfZGVzdHJveV9kc3FcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgQlVHX09OKCkgd2l0aCBhIGNvbmRpdGlvbmFsIGNoZWNrIGFuZCBhIGBjb250aW51ZWAgc3RhdGVtZW50IHRvIGhhbmRsZSBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCBtaWdodCBpbnZhbGlkYXRlIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKS4gVGhpcyBjaGFuZ2UgcHJldmVudHMgYSBrZXJuZWwgcGFuaWMgKEJVR19PTikgYW5kIGhhbmRsZXMgdGhlIHJhY2UgZ3JhY2VmdWxseS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBvciBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlcyByZWxhdGVkIHRvIHRoZSByYWNlIGNvbmRpdGlvbiB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIGV4dGVuc2libGUgc2NoZWR1bGVyIGNsYXNzIChzY2hlZF9leHQpIHdoZXJlIGEgY3VzdG9tIGRpc3BhdGNoIHF1ZXVlIChEU1EpIGNvdWxkIGJlIGRlc3Ryb3llZCB3aGlsZSB0aGVyZSBhcmUgc3RpbGwgcGVuZGluZyBkZWZlcnJlZCByZS1lbnF1ZXVlIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBjb3JlIHNjaGVkdWxpbmcgbG9naWMgZml4IHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gYSBCUEYgc2NoZWR1bGVyIGlzIGxvYWRlZCBhbmQgdXNlcyBjdXN0b20gRFNRcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDM6MjguOTgxOTEwODYzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyNTA3ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGRmNzRhNWU0ODdiNjQ0ZjY5OWEyMjViYmFmNWQ2OTA2NGU1YTM1YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxMSAwOTowMzoyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jIGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xcbmluZGV4IDBiYmUxNDRjOTgxMTEuLjYwNGEwNWRhNDFiOTMgMTAwNjQ0XFxuLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuY1xcbisrKyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmNcXG5AQCAtNDUzMSw3ICs0NTMxLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxcbiBcXHRcXHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cXG4gXFx0XFx0c21wX21iKCk7XFxuIFxcbi1cXHRcXHRCVUdfT04oZHNxLVxcdTAwM2VpZCBcXHUwMDI2IFNDWF9EU1FfRkxBR19CVUlMVElOKTtcXG4rXFx0XFx0LyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovXFxuK1xcdFxcdGlmICh1bmxpa2VseShkc3EtXFx1MDAzZWlkIFxcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0cmVlbnFfdXNlcihycSwgZHNxLCByZWVucV9mbGFncyk7XFxuIFxcdH1cXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzozMC4xNTUwNTk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTI5OTUzMjI0NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNDSEVEX0NMQVNTX0VYVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjeF9icGZfZHNxX3JlZW5xXCIsXG4gICAgXCJzY3hfYnBmX2Rlc3Ryb3lfZHNxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4ZGY3NGE1ZTQ4N2I2NDRmNjk5YTIyNWJiYWY1ZDY5MDY0ZTVhMzVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDk6MDM6MjcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jIGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuaW5kZXggMGJiZTE0NGM5ODExMS4uNjA0YTA1ZGE0MWI5MyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9zY2hlZC9leHQvZXh0LmNcbisrKyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmNcbkBAIC00NTMxLDcgKzQ1MzEsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXG4gXHRcdC8qIHNlZSBzY2hlZHVsZV9kc3FfcmVlbnEoKSAqL1xuIFx0XHRzbXBfbWIoKTtcbiBcbi1cdFx0QlVHX09OKGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pO1xuK1x0XHQvKiBkZXN0cm95X2RzcSgpIG1heSByYWNlIGFuZCBpbnZhbGlkYXRlIEBkc3E7IHNraXAgKi9cbitcdFx0aWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKVxuK1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRyZWVucV91c2VyKHJxLCBkc3EsIHJlZW5xX2ZsYWdzKTtcbiBcdH1cbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzozMC4xNTUwNjA4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NzE4OTI0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgU2NoZWR1bGVyIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBmdW5jdGlvbi4gSXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYnV0IGltcG9ydGFudCBjaGFuZ2U6IHRoZXkndmUgcmVwbGFjZWQgYSBoYXJkIGBCVUdfT05gIHdpdGggYSBtb3JlIGdyYWNlZnVsIGNvbmRpdGlvbmFsIGBjb250aW51ZWAuIFRoZSBvbGQgY29kZSB3YXMgcG90ZW50aWFsbHkgY2F1c2luZyBhIGNyYXNoLCBhIHJhY2UgY29uZGl0aW9uIHRoYXQgd291bGQgdHJpZ2dlciB0aGF0IGBCVUdfT05gIHdoZW4gYGRzcS1cdTAwM2VpZGAgaGFkIHRoZSBgU0NYX0RTUV9GTEFHX0JVSUxUSU5gIGZsYWcgc2V0LiBUaGUgbmV3IGxvZ2ljIGRldGVjdHMgdGhpcyByYWNlLCBhbmQgc2ltcGx5IHNraXBzIHRoYXQgZWxlbWVudCwgcHJldmVudGluZyB0aGUgcGFuaWMuXG5cblRoaXMgdGVsbHMgbWUgdGhlcmUncyBhIGNvbmN1cnJlbmN5IGlzc3VlLiBUaGUgc3lzdGVtIG1pZ2h0IGJlIGF0dGVtcHRpbmcgdG8gd29yayB3aXRoIGEgYGRzcWAgb2JqZWN0IChsaWtlbHkgYSBcImRlZmVycmVkIHNjaGVkdWxpbmcgcXVldWVcIikgdGhhdCdzIGJlaW5nIGludmFsaWRhdGVkIG9yIGRlc3Ryb3llZCBjb25jdXJyZW50bHksIGxpa2VseSBieSBhIGNhbGwgdG8gYGRlc3Ryb3lfZHNxKClgLiBUaGF0IHJhY2UgaGFzIGJlZW4gZm91bmQgYW5kIGZpeGVkIC0gZ29vZC4gVGhpcyBtZWFucyB0aGVyZSB3YXMgYSB3aW5kb3cgd2hlcmUgd2UgY291bGQgZGVyZWZlcmVuY2UgYSBkYW5nbGluZyBwb2ludGVyLCB3aGljaCBpcyBuZXZlciBnb29kLlxuXG5TaW5jZSB0aGlzIGFmZmVjdHMgdGhlIGV4dGVuc2libGUgc2NoZWR1bGVyIGNsYXNzLCBgc2NoZWRfZXh0YCwgSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGlzIGZlYXR1cmUuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIHRhcmdldCBzeXN0ZW0gaXMgZXZlbiB1c2luZyB0aGlzIGNvZGUgcGF0aCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gSXQncyBhIGNyaXRpY2FsIGFyZWEsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBidWlsZC10aW1lIGRlcGVuZGVuY2llcy4gSSdsbCBzZWFyY2ggdGhlIGtlcm5lbCBjb25maWdzIGZvciBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjM0LjkyNjk1NjE3NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzg0OTA3MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDM6MzQuOTcwODEzNzQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk2OTc5MjMzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBnZWFyZWQgdG93YXJkcyBhIHVzZXIgd2hvIGtub3dzIHRoZWlyIHN0dWZmOlxuXG4qKkh1bnRpbmcgRG93biBUaG9zZSBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gdHJhY2sgZG93biB0aG9zZSBwcmVlbXB0aW9uLXJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBga2VybmVsL0tjb25maWcucHJlZW1wdGAuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBpdCAqc2hvdWxkKiBjb250YWluIHRoZSBrZXkgc2V0dGluZ3MuIEJ1dCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY292ZXIgYWxsIHRoZSBiYXNlcywgSSdsbCBhbHNvIGdsYW5jZSBhdCBgaW5pdC9LY29uZmlnYC4gWW91IG5ldmVyIGtub3csIHNvbWUgaW5pdGlhbGl6YXRpb24tcmVsYXRlZCBvcHRpb25zICptaWdodCogdG91Y2ggb24gcHJlZW1wdGlvbiwgb3IgbWF5YmUgdGhlcmUgYXJlIHNvbWUgaW5jbHVkZXMgaW4gdGhlcmUgdGhhdCBJJ20gbm90IGltbWVkaWF0ZWx5IGNvbnNpZGVyaW5nLiBBbmQgb2YgY291cnNlLCBJIHNob3VsZCBhbHNvIGltbWVkaWF0ZWx5IGNoZWNrIGBrZXJuZWwvc2NoZWQvS2NvbmZpZ2AuIFByZWVtcHRpb24gaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHNjaGVkdWxlciwgc28gdGhhdCdzIGFub3RoZXIgdmVyeSBsaWtlbHkgbG9jYXRpb24uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBkaWcgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzcsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzozNy45NDA2MDc4ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MDg0ODEwNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjM5LjU4MTQ2OTg4M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NDUzMTY1ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLiBJJ20gcHJldHR5IHN1cmUgaXQncyByZWxhdGVkIHRvIGBjb25maWcgU0NIRURfQ0xBU1NfRVhUYCwgYnV0IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbi4gQmVzdCB3YXkgdG8gY29uZmlybSB0aGF0IGlzIHRvIGxvb2sgYXQgdGhlIHNvdXJjZSBjb2RlLiBJIHNob3VsZCBkZWx2ZSBpbnRvIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCBhbmQgc2VlIGlmIHRoZSBjb21waWxhdGlvbiBvZiBpdHMgY29udGVudHMgaXMgYWN0dWFsbHkgY29udGluZ2VudCB1cG9uIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24uIEdvdHRhIG1ha2Ugc3VyZSBJJ20gbm90IGJhcmtpbmcgdXAgdGhlIHdyb25nIHRyZWUgaGVyZSBiZWZvcmUgSSBkaWcgYW55IGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjQyLjMyNjc4OTQ2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjgzNzE0MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzo0Mi4zNjk2MzE3MDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTA2NjkwMDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgU2NoZWR1bGVyJ3MgTWFrZXVwKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gXCJleHQsXCIgcHJvYmFibHkgc29tZSBleHRlbnNpb24gb3IgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIHNjaGVkdWxlciBjb2RlLiBNeSBpbnN0aW5jdCBpcyB0byBoZWFkIHN0cmFpZ2h0IGZvciB0aGUgYGtlcm5lbC9zY2hlZC9gIGRpcmVjdG9yeSDigJMgdGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgc2NoZWR1bGluZyBsb2dpYyByZXNpZGVzLiBHaXZlbiB0aGF0IGl0J3MgbGlrZWx5IGEgY29uZmlndXJhdGlvbiBvciBidWlsZC1yZWxhdGVkIHNldHRpbmcsIHRoZSBgTWFrZWZpbGVgIGluIHRoYXQgZGlyZWN0b3J5IHNlZW1zIGxpa2UgdGhlIG1vc3QgcHJvYmFibGUgc3RhcnRpbmcgcG9pbnQuIEl0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIHRvIGNoZWNrIGZvciBhbnkgYnVpbGQgb3B0aW9ucyBvciBtb2R1bGUgaW5jbHVzaW9ucyByZWxhdGVkIHRvIHRoZSBzY2hlZHVsZXIuIExldCdzIHNlZSB3aGF0J3MgaW4gYGtlcm5lbC9zY2hlZC9NYWtlZmlsZWAuIEhvcGVmdWxseSwgYGV4dGAgd2lsbCBlaXRoZXIgYmUgZGlyZWN0bHkgbWVudGlvbmVkIG9yIGxlYWQgbWUgdG8gdGhlIHJpZ2h0IGZpbGUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzQsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzo0NC44NzYzMjM5NDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyOTE5MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL01ha2VmaWxlPTg9Y2NmbGFncy15ICs9ICQoY2FsbCBjYy1kaXNhYmxlLXdhcm5pbmcsIHVudXNlZC1idXQtc2V0LXZhcmlhYmxlKVxcbi0tXFxua2VybmVsL3NjaGVkL01ha2VmaWxlLTEwLSMgVGhlc2UgZmlsZXMgYXJlIGRpc2FibGVkIGJlY2F1c2UgdGhleSBwcm9kdWNlIG5vbi1pbnRlcmVzdGluZyBmbGFreSBjb3ZlcmFnZVxcbmtlcm5lbC9zY2hlZC9NYWtlZmlsZToxMTojIHRoYXQgaXMgbm90IGEgZnVuY3Rpb24gb2Ygc3lzY2FsbCBpbnB1dHMuIEUuZy4gaW52b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlcy5cXG5rZXJuZWwvc2NoZWQvTWFrZWZpbGUtMTItS0NPVl9JTlNUUlVNRU5UIDo9IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDM6NDQuOTE5MjUwNTc4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzQwNTIwNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgS2VybmVsIFNvdXJjZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIHRocm91Z2ggdGhpcyBrZXJuZWwgY29kZSBhbmQgSSBqdXN0IHNhdyBhIHJlZmVyZW5jZSB0byBgZXh0LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGVyZSB0aGF0IHNvdXJjZSBmaWxlIGFjdHVhbGx5IGxpdmVzIHdpdGhpbiB0aGlzIHNwcmF3bGluZyBwcm9qZWN0LiBJdCAqc2hvdWxkKiBiZSBpbiBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AsIGJ1dCB5b3UgY2FuJ3QgYXNzdW1lIGFueXRoaW5nIGluIHRoaXMgZW52aXJvbm1lbnQuIEJlc3QgcHJhY3RpY2UgZGljdGF0ZXMgdGhhdCBJIHZlcmlmeSB0aGlzIGJ5IGNoZWNraW5nIHRoZSBjb3JyZXNwb25kaW5nIGBNYWtlZmlsZWAuIEkgbmVlZCB0byBjb25maXJtIHdoZXJlIHRoaXMgY29tcG9uZW50IGlzIGRlY2xhcmVkIHNvIEkgY2FuIGJldHRlciB1bmRlcnN0YW5kIGl0cyBjb21waWxhdGlvbiBhbmQgbGlua2FnZS4gVGltZSB0byBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9NYWtlZmlsZWAuIExldCdzIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gaGFzIHRvIHNheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI4MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjQ3Ljk5MzMwNTczWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQ3NjY3OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDM6NDguMDM2Nzg5NTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3NjYzNDY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgQmFjayBpbnRvIHRoZSBTY2hlZHVsZXIgTWFrZWZpbGUqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gcmV2aXNpdCBga2VybmVsL3NjaGVkL01ha2VmaWxlYC4gSSBoYWQgYSBuYWdnaW5nIGZlZWxpbmcgYWJvdXQgc29tZXRoaW5nIGluIHRoZXJlLCBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3IgYSBzdWJ0bGUgY29uZmlndXJhdGlvbiBpc3N1ZSB0aGF0IEkgd2FudCB0byBkb3VibGUtY2hlY2suIEl0J3MgdGltZSB0byByZWZyZXNoIG15IG1lbnRhbCBtYXAgb2YgdGhhdCBzcGVjaWZpYyBidWlsZCBwcm9jZXNzIGFuZCBtYWtlIHN1cmUgSSBoYXZlbid0IG92ZXJsb29rZWQgYW55IGltcG9ydGFudCBkZXBlbmRlbmNpZXMgb3IgY29uZGl0aW9uYWwgbG9naWMgcmVsYXRlZCB0byBteSBjdXJyZW50IGFyZWEgb2YgZm9jdXMuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgYnVpbGQgc3lzdGVtIGlzIGJlaGF2aW5nIGFzIEkgZXhwZWN0LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBmaW5lciBwb2ludHMgb2YgdGhlIHNjaGVkdWxlci4gSSdtIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiBob3cgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGluZmx1ZW5jZSB0aGUgbGlua2luZyBvciBjb21waWxhdGlvbiBvZiBjZXJ0YWluIG1vZHVsZXMsIG9yIGV2ZW4gaW1wYWN0IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIGJhc2VkIG9uIHRoZSBmbGFncy4gTGV0J3Mgc2VlIGlmIHRoYXQgcXVpY2sgc2NhbiByZXZlYWxzIGFueXRoaW5nIEkgbWlnaHQgaGF2ZSBtaXNzZWQgZWFybGllci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ5NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjUxLjAxMzQyNjM3MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwNjc3MDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dC9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzo1MS4wNTU1MDQ4ODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzMjcyMTQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIFNjaGVkdWxlciBFeHRlbnNpb24gQnVpbGQgUHJvY2VzcyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHNjaGVkdWxlciBleHRlbnNpb25zIGFyZSBiZWluZyBidWlsdC4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBrZXJuZWwvc2NoZWQvZXh0L01ha2VmaWxlYC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgYnVpbGQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBpbiB0aGVyZS4gVGhhdCdzIHRoZSB0eXBpY2FsIHBsYWNlIGZvciBoYW5kbGluZyBvYmplY3QgZmlsZSBjb21waWxhdGlvbiBhbmQgbGlua2luZyB3aXRoaW4gdGhhdCBwYXJ0IG9mIHRoZSBrZXJuZWwuIExldCdzIHNlZSB3aGF0IHNlY3JldHMgdGhpcyBNYWtlZmlsZSBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcyMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjUzLjk4ODIyODc2M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTY2MCwiRXJyb3IiOiJ0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9zY2hlZC9leHQvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcInRoZSBmaWxlIGRvZXMgbm90IGV4aXN0XCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjAzOjUzLjk4ODI3NDc3M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIzNjIwNzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBhIEtlcm5lbCBTY2hlZHVsZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIGRpZmYgbWVudGlvbnMgYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgLiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXMgaG93IHRoaXMgYGV4dC5jYCBmaWxlIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgdGhlIHNjaGVkdWxlciB3aXRoaW4gdGhlIGtlcm5lbC4gSSBzaG91bGQgaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGBrZXJuZWwvc2NoZWQvTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgSSBjYW4gZmluZCB0aGUgZGVwZW5kZW5jeSBncmFwaCBhbmQgYnVpbGQgaW5zdHJ1Y3Rpb25zIGZvciBzY2hlZHVsZXIgY29tcG9uZW50cy4gSXQgd2lsbCBzaG93IG1lIGhvdyBgZXh0LmNgIGlzIGluY2x1ZGVkIGFuZCBpZiBpdOKAmXMgYSBtb2R1bGUsIHBhcnQgb2YgdGhlIGNvcmUsIG9yIHNvbWV0aGluZyBlbHNlLiBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBwcm9jZXNzIGlzIGNydWNpYWwgZm9yIHRyYWNpbmcgdGhlIGNvZGUncyBpbnRlZ3JhdGlvbiBhbmQgcG90ZW50aWFsIGltcGFjdC4gVGhhdCBNYWtlZmlsZSBpcyBteSBmaXJzdCBzdG9wLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTAyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzo1Ni45MTE5MDYwOTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDcyMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2NvcmUuYz03MDEyPWZpbmRfcHJveHlfdGFzayhzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmRvbm9yLCBzdHJ1Y3QgcnFfZmxhZ3MgKnJmKVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYy03MDQwLSAqXFxua2VybmVsL3NjaGVkL2NvcmUuYzo3MDQxOiAqICAgICAgICAgLSBpbiBzeXNjYWxsIG9yIGV4Y2VwdGlvbiBjb250ZXh0LCBhdCB0aGUgbmV4dCBvdXRtb3N0XFxua2VybmVsL3NjaGVkL2NvcmUuYy03MDQyLSAqICAgICAgICAgICBwcmVlbXB0X2VuYWJsZSgpLiAodGhpcyBtaWdodCBiZSBhcyBzb29uIGFzIHRoZSB3YWtlX3VwKCknc1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz04MzY2PXZvaWQgc2NoZWRfc2V0bnVtYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBuaWQpXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTgzNzUtLypcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjgzNzY6ICogSW52b2tlZCBvbiB0aGUgb3V0Z29pbmcgQ1BVIGluIGNvbnRleHQgb2YgdGhlIENQVSBob3RwbHVnIHRocmVhZFxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtODM3Ny0gKiBhZnRlciBlbnN1cmluZyB0aGF0IHRoZXJlIGFyZSBubyB1c2VyIHNwYWNlIHRhc2tzIGxlZnQgb24gdGhlIENQVS5cXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM9MTA2MzM9dm9pZCBjYWxsX3RyYWNlX3NjaGVkX3VwZGF0ZV9ucl9ydW5uaW5nKHN0cnVjdCBycSAqcnEsIGludCBjb3VudClcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtMTA3NTctICogdGhlIGZpeHVwIGZ1bmN0aW9uLiBJZiBpdCB3YXMgaW5pdGlhdGVkIGJ5IGEgYWZmaW5pdHkgY2hhbmdlLCB0aGVuIGl0J3NcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjEwNzU4OiAqIHJ1biBlaXRoZXIgaW4gdGhlIGRlZmVycmVkIHVwZGF0ZSBmdW5jdGlvbiBpbiBjb250ZXh0IG9mIGEgd29ya3F1ZXVlIG9yXFxua2VybmVsL3NjaGVkL2NvcmUuYy0xMDc1OS0gKiBieSBhIHRhc2sgd2hpY2ggZm9ya3MgYSBuZXcgb25lIG9yIGJ5IGEgdGFzayB3aGljaCBleGl0cy4gV2hhdGV2ZXJcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NzAzOT1zdHJ1Y3Qgc2N4X3NjaGVkICpzY3hfYWxsb2NfYW5kX2FkZF9zY2hlZChzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQgKmNtZCxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzA0Mi17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3MDQzOlxcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMgPSBjbWQtXFx1MDAzZW9wcztcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTcwNDQtXFx0c3RydWN0IHNjeF9zY2hlZCAqc2NoO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MTU0LVxcdCAqIENvcHkgb3BzIHRocm91Z2ggdGhlIHJpZ2h0IHVuaW9uIHZpZXcuIEZvciBjaWQtZm9ybSB0aGUgc291cmNlIGlzXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3MTU1OlxcdCAqIHN0cnVjdCBzY2hlZF9leHRfb3BzX2NpZCB3aGljaCBsYWNrcyB0aGUgdHJhaWxpbmcgY3B1X2FjcXVpcmUvXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MTU2LVxcdCAqIGNwdV9yZWxlYXNlOyB0aG9zZSBzdGF5IHplcm8gZnJvbSBremFsbG9jLlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz03Mjk4PXN0YXRpYyBpbnQgY2hlY2tfaG90cGx1Z19zZXEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzI5OTpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzMwMC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTczMjEtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3MzIyOmludCBzY3hfdmFsaWRhdGVfb3BzKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgY29uc3Qgc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTczMjMte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz03MzgyPXN0YXRpYyB2b2lkIHNjeF9yb290X2VuYWJsZV93b3JrZm4oc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzM4NC1cXHRzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQgKmNtZCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQsIHdvcmspO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzM4NTpcXHRzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzID0gY21kLVxcdTAwM2VvcHM7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03Mzg2LVxcdHN0cnVjdCBjZ3JvdXAgKmNncnAgPSByb290X2Nncm91cCgpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz03OTE0PXN0YXRpYyBpbnQgYnBmX3NjeF9pbml0X21lbWJlcihjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5MTcte1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzkxODpcXHRjb25zdCBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqdW9wcyA9IHVkYXRhO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzkxOTpcXHRzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzID0ga2RhdGE7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTIwLVxcdHUzMiBtb2ZmID0gX19idGZfbWVtYmVyX2JpdF9vZmZzZXQodCwgbWVtYmVyKSAvIDg7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5MjMtXFx0c3dpdGNoIChtb2ZmKSB7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTI0OlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGRpc3BhdGNoX21heF9iYXRjaCk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTI1LVxcdFxcdGlmICgqKHUzMiAqKSh1ZGF0YSArIG1vZmYpIFxcdTAwM2UgSU5UX01BWClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkyOC1cXHRcXHRyZXR1cm4gMTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5Mjk6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgZmxhZ3MpOlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkzMC1cXHRcXHRpZiAoKih1NjQgKikodWRhdGEgKyBtb2ZmKSBcXHUwMDI2IH5TQ1hfT1BTX0FMTF9GTEFHUylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkzMy1cXHRcXHRyZXR1cm4gMTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5MzQ6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgbmFtZSk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTM1LVxcdFxcdHJldCA9IGJwZl9vYmpfbmFtZV9jcHkob3BzLVxcdTAwM2VuYW1lLCB1b3BzLVxcdTAwM2VuYW1lLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTQxLVxcdFxcdHJldHVybiAxO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk0MjpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCB0aW1lb3V0X21zKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NDMtXFx0XFx0aWYgKG1zZWNzX3RvX2ppZmZpZXMoKih1MzIgKikodWRhdGEgKyBtb2ZmKSkgXFx1MDAzZVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTQ3LVxcdFxcdHJldHVybiAxO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk0ODpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBleGl0X2R1bXBfbGVuKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NDktXFx0XFx0b3BzLVxcdTAwM2VleGl0X2R1bXBfbGVuID1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk1MS1cXHRcXHRyZXR1cm4gMTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5NTI6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgaG90cGx1Z19zZXEpOlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk1My1cXHRcXHRvcHMtXFx1MDAzZWhvdHBsdWdfc2VxID0gKih1NjQgKikodWRhdGEgKyBtb2ZmKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTQtXFx0XFx0cmV0dXJuIDE7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTU1OlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGNpZF9zaGFyZF9zaXplKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTYtXFx0XFx0b3BzLVxcdTAwM2VjaWRfc2hhcmRfc2l6ZSA9ICoodTMyICopKHVkYXRhICsgbW9mZik7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTU3LVxcdFxcdHJldHVybiAxO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk1ODpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCByZXNjdWVfYmFuZHdpZHRoX3BwdCk6IHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NTktXFx0XFx0dTMyIGJ3X3BwdCA9ICoodTMyICopKHVkYXRhICsgbW9mZik7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NjUtXFx0fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk2NjpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCByZXNjdWVfcXVhbnR1bV91cyk6IHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NjctXFx0XFx0dTMyIHF1YW50dW1fdXMgPSAqKHUzMiAqKSh1ZGF0YSArIG1vZmYpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03OTc2LSNpZmRlZiBDT05GSUdfRVhUX1NVQl9TQ0hFRFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk3NzpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfY2dyb3VwX2lkKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5NzgtXFx0XFx0b3BzLVxcdTAwM2VzdWJfY2dyb3VwX2lkID0gKih1NjQgKikodWRhdGEgKyBtb2ZmKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9Nzk4Nj1zdGF0aWMgaW50IGJwZl9zY3hfY2hlY2tfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk5Mi1cXHRzd2l0Y2ggKG1vZmYpIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTM6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgaW5pdF90YXNrKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5OTQtI2lmZGVmIENPTkZJR19FWFRfR1JPVVBfU0NIRURcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTU6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgY2dyb3VwX2luaXQpOlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Nzk5NjpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBjZ3JvdXBfZXhpdCk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTk3OlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGNncm91cF9wcmVwX21vdmUpOlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzk5OC0jZW5kaWZcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc5OTk6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgY3B1X29ubGluZSk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDAwOlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGNwdV9vZmZsaW5lKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgwMDE6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgaW5pdF9jaWRzKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgwMDI6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgaW5pdCk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDAzOlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIGV4aXQpOlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAwNDpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfYXR0YWNoKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgwMDU6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgc3ViX2RldGFjaCk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDA2LVxcdFxcdGJyZWFrO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDIxLVxcdHN3aXRjaCAobW9mZikge1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAyMjpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBkaXNwYXRjaCk6XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDIzLVxcdFxcdHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlcHJpdl9zdGFja19yZXF1ZXN0ZWQgPSB0cnVlO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MDI1LVxcdFxcdGJyZWFrO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODAyNjpcXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBzdWJfY2Fwc191cGRhdGVkKTpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgwMjctXFx0XFx0cHJvZy1cXHUwMDNlYXV4LVxcdTAwM2Vwcml2X3N0YWNrX3JlcXVlc3RlZCA9IHRydWU7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTgwOTY9c3RhdGljIHZvaWQgYnBmX3NjeF91bnJlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODA5Ny17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MDk4OlxcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMgPSBrZGF0YTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgwOTktXFx0c3RydWN0IHNjeF9zY2hlZCAqc2NoID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChvcHMtXFx1MDAzZXByaXYsIHRydWUpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz04MTI2PXN0YXRpYyBpbnQgYnBmX3NjeF92YWxpZGF0ZSh2b2lkICprZGF0YSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODEzMC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzE6c3RhdGljIHMzMiBzY2hlZF9leHRfb3BzX19zZWxlY3RfY3B1KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgczMyIHByZXZfY3B1LCB1NjQgd2FrZV9mbGFncykgeyByZXR1cm4gLUVJTlZBTDsgfVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODEzMjpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19lbnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGVucV9mbGFncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzM6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZGVxdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBlbnFfZmxhZ3MpIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTM0OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Rpc3BhdGNoKHMzMiBwcmV2X2NwdSwgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2X19udWxsYWJsZSkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzU6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fdGljayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTM2OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3J1bm5hYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGVucV9mbGFncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzc6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fcnVubmluZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTM4OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3N0b3BwaW5nKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgYm9vbCBydW5uYWJsZSkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxMzk6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fcXVpZXNjZW50KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGRlcV9mbGFncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDA6c3RhdGljIGJvb2wgc2NoZWRfZXh0X29wc19feWllbGQoc3RydWN0IHRhc2tfc3RydWN0ICpmcm9tLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRvX19udWxsYWJsZSkgeyByZXR1cm4gZmFsc2U7IH1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDE6c3RhdGljIGJvb2wgc2NoZWRfZXh0X29wc19fY29yZV9zY2hlZF9iZWZvcmUoc3RydWN0IHRhc2tfc3RydWN0ICphLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmIpIHsgcmV0dXJuIGZhbHNlOyB9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTQyOnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3NldF93ZWlnaHQoc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1MzIgd2VpZ2h0KSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0MzpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19zZXRfY3B1bWFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrKSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0NDpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX191cGRhdGVfaWRsZShzMzIgY3B1LCBib29sIGlkbGUpIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTQ1OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2NwdV9hY3F1aXJlKHMzMiBjcHUsIHN0cnVjdCBzY3hfY3B1X2FjcXVpcmVfYXJncyAqYXJncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDY6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY3B1X3JlbGVhc2UoczMyIGNwdSwgc3RydWN0IHNjeF9jcHVfcmVsZWFzZV9hcmdzICphcmdzKSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE0NzpzdGF0aWMgczMyIHNjaGVkX2V4dF9vcHNfX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBzY3hfaW5pdF90YXNrX2FyZ3MgKmFyZ3MpIHsgcmV0dXJuIC1FSU5WQUw7IH1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDg6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZXhpdF90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHNjeF9leGl0X3Rhc2tfYXJncyAqYXJncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNDk6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZW5hYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNTA6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZGlzYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MTUxLSNpZmRlZiBDT05GSUdfRVhUX0dST1VQX1NDSEVEXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTUyOnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19fY2dyb3VwX2luaXQoc3RydWN0IGNncm91cCAqY2dycCwgc3RydWN0IHNjeF9jZ3JvdXBfaW5pdF9hcmdzICphcmdzKSB7IHJldHVybiAtRUlOVkFMOyB9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTUzOnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Nncm91cF9leGl0KHN0cnVjdCBjZ3JvdXAgKmNncnApIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTU0OnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19fY2dyb3VwX3ByZXBfbW92ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBjZ3JvdXAgKmZyb20sIHN0cnVjdCBjZ3JvdXAgKnRvKSB7IHJldHVybiAtRUlOVkFMOyB9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTU1OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Nncm91cF9tb3ZlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IGNncm91cCAqZnJvbSwgc3RydWN0IGNncm91cCAqdG8pIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTU2OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2Nncm91cF9jYW5jZWxfbW92ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBjZ3JvdXAgKmZyb20sIHN0cnVjdCBjZ3JvdXAgKnRvKSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1NzpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X3dlaWdodChzdHJ1Y3QgY2dyb3VwICpjZ3JwLCB1MzIgd2VpZ2h0KSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE1ODpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2JhbmR3aWR0aChzdHJ1Y3QgY2dyb3VwICpjZ3JwLCB1NjQgcGVyaW9kX3VzLCB1NjQgcXVvdGFfdXMsIHU2NCBidXJzdF91cykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNTk6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY2dyb3VwX3NldF9pZGxlKHN0cnVjdCBjZ3JvdXAgKmNncnAsIGJvb2wgaWRsZSkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgxNjAtI2VuZGlmXFx0LyogQ09ORklHX0VYVF9HUk9VUF9TQ0hFRCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2MTpzdGF0aWMgczMyIHNjaGVkX2V4dF9vcHNfX3N1Yl9hdHRhY2goc3RydWN0IHNjeF9zdWJfYXR0YWNoX2FyZ3MgKmFyZ3MpIHsgcmV0dXJuIC1FSU5WQUw7IH1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNjI6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fc3ViX2RldGFjaChzdHJ1Y3Qgc2N4X3N1Yl9kZXRhY2hfYXJncyAqYXJncykge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNjM6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fY3B1X29ubGluZShzMzIgY3B1KSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2NDpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19jcHVfb2ZmbGluZShzMzIgY3B1KSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2NTpzdGF0aWMgczMyIHNjaGVkX2V4dF9vcHNfX2luaXRfY2lkcyh2b2lkKSB7IHJldHVybiAtRUlOVkFMOyB9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTY2OnN0YXRpYyBzMzIgc2NoZWRfZXh0X29wc19faW5pdCh2b2lkKSB7IHJldHVybiAtRUlOVkFMOyB9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTY3OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2V4aXQoc3RydWN0IHNjeF9leGl0X2luZm8gKmluZm8pIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTY4OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX2R1bXAoc3RydWN0IHNjeF9kdW1wX2N0eCAqY3R4KSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE2OTpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19kdW1wX2NwdShzdHJ1Y3Qgc2N4X2R1bXBfY3R4ICpjdHgsIHMzMiBjcHUsIGJvb2wgaWRsZSkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzA6c3RhdGljIHZvaWQgc2NoZWRfZXh0X29wc19fZHVtcF90YXNrKHN0cnVjdCBzY3hfZHVtcF9jdHggKmN0eCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODE3MS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzI6c3RhdGljIHN0cnVjdCBzY2hlZF9leHRfb3BzIF9fYnBmX29wc19zY2hlZF9leHRfb3BzID0ge1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE3MzpcXHQuc2VsZWN0X2NwdVxcdFxcdD0gc2NoZWRfZXh0X29wc19fc2VsZWN0X2NwdSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzQ6XFx0LmVucXVldWVcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2VucXVldWUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTc1OlxcdC5kZXF1ZXVlXFx0XFx0PSBzY2hlZF9leHRfb3BzX19kZXF1ZXVlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE3NjpcXHQuZGlzcGF0Y2hcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2Rpc3BhdGNoLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE3NzpcXHQudGlja1xcdFxcdFxcdD0gc2NoZWRfZXh0X29wc19fdGljayxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzg6XFx0LnJ1bm5hYmxlXFx0XFx0PSBzY2hlZF9leHRfb3BzX19ydW5uYWJsZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxNzk6XFx0LnJ1bm5pbmdcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3J1bm5pbmcsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTgwOlxcdC5zdG9wcGluZ1xcdFxcdD0gc2NoZWRfZXh0X29wc19fc3RvcHBpbmcsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTgxOlxcdC5xdWllc2NlbnRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3F1aWVzY2VudCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxODI6XFx0LnlpZWxkXFx0XFx0XFx0PSBzY2hlZF9leHRfb3BzX195aWVsZCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxODM6XFx0LmNvcmVfc2NoZWRfYmVmb3JlXFx0PSBzY2hlZF9leHRfb3BzX19jb3JlX3NjaGVkX2JlZm9yZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxODQ6XFx0LnNldF93ZWlnaHRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3NldF93ZWlnaHQsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg1OlxcdC5zZXRfY3B1bWFza1xcdFxcdD0gc2NoZWRfZXh0X29wc19fc2V0X2NwdW1hc2ssXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg2OlxcdC51cGRhdGVfaWRsZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fdXBkYXRlX2lkbGUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg3OlxcdC5jcHVfYWNxdWlyZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fY3B1X2FjcXVpcmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg4OlxcdC5jcHVfcmVsZWFzZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fY3B1X3JlbGVhc2UsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTg5OlxcdC5pbml0X3Rhc2tcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2luaXRfdGFzayxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTA6XFx0LmV4aXRfdGFza1xcdFxcdD0gc2NoZWRfZXh0X29wc19fZXhpdF90YXNrLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5MTpcXHQuZW5hYmxlXFx0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19lbmFibGUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MTkyOlxcdC5kaXNhYmxlXFx0XFx0PSBzY2hlZF9leHRfb3BzX19kaXNhYmxlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODE5My0jaWZkZWYgQ09ORklHX0VYVF9HUk9VUF9TQ0hFRFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5NDpcXHQuY2dyb3VwX2luaXRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9pbml0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5NTpcXHQuY2dyb3VwX2V4aXRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9leGl0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5NjpcXHQuY2dyb3VwX3ByZXBfbW92ZVxcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX3ByZXBfbW92ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTc6XFx0LmNncm91cF9tb3ZlXFx0XFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfbW92ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgxOTg6XFx0LmNncm91cF9jYW5jZWxfbW92ZVxcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX2NhbmNlbF9tb3ZlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODE5OTpcXHQuY2dyb3VwX3NldF93ZWlnaHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9zZXRfd2VpZ2h0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwMDpcXHQuY2dyb3VwX3NldF9iYW5kd2lkdGhcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9zZXRfYmFuZHdpZHRoLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwMTpcXHQuY2dyb3VwX3NldF9pZGxlXFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2lkbGUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjAyLSNlbmRpZlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwMzpcXHQuc3ViX2F0dGFjaFxcdFxcdD0gc2NoZWRfZXh0X29wc19fc3ViX2F0dGFjaCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMDQ6XFx0LnN1Yl9kZXRhY2hcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3N1Yl9kZXRhY2gsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA1OlxcdC5jcHVfb25saW5lXFx0XFx0PSBzY2hlZF9leHRfb3BzX19jcHVfb25saW5lLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwNjpcXHQuY3B1X29mZmxpbmVcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2NwdV9vZmZsaW5lLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwNzpcXHQuaW5pdF9jaWRzXFx0XFx0PSBzY2hlZF9leHRfb3BzX19pbml0X2NpZHMsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjA4OlxcdC5pbml0XFx0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19pbml0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIwOTpcXHQuZXhpdFxcdFxcdFxcdD0gc2NoZWRfZXh0X29wc19fZXhpdCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMTA6XFx0LmR1bXBcXHRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2R1bXAsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjExOlxcdC5kdW1wX2NwdVxcdFxcdD0gc2NoZWRfZXh0X29wc19fZHVtcF9jcHUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjEyOlxcdC5kdW1wX3Rhc2tcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2R1bXBfdGFzayxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMTMtfTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMTQtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjE1OnN0YXRpYyBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgYnBmX3NjaGVkX2V4dF9vcHMgPSB7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjE2LVxcdC52ZXJpZmllcl9vcHMgPSBcXHUwMDI2YnBmX3NjeF92ZXJpZmllcl9vcHMsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMjMtXFx0LnZhbGlkYXRlID0gYnBmX3NjeF92YWxpZGF0ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyMjQ6XFx0Lm5hbWUgPSBcXFwic2NoZWRfZXh0X29wc1xcXCIsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjI1LVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIyNjpcXHQuY2ZpX3N0dWJzID0gXFx1MDAyNl9fYnBmX29wc19zY2hlZF9leHRfb3BzXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjI3LX07XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyMzQtICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjM1OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfY2lkX19zZXRfY21hc2soc3RydWN0IHRhc2tfc3RydWN0ICpwLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODIzNi1cXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHNjeF9jbWFzayAqY21hc2spIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjM3OnN0YXRpYyB2b2lkIHNjaGVkX2V4dF9vcHNfX3N1Yl9jYXBzX3VwZGF0ZWQoY29uc3Qgc3RydWN0IHNjeF9jbWFzayAqY21hc2ssIHU2NCBjYXBzKSB7fVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODIzODpzdGF0aWMgdm9pZCBzY2hlZF9leHRfb3BzX19zdWJfZWNhcHNfdXBkYXRlZChzMzIgY2lkLCB1NjQgYmVmb3JlLCB1NjQgYWZ0ZXIpIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04MjM5LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MDpzdGF0aWMgc3RydWN0IHNjaGVkX2V4dF9vcHNfY2lkIF9fYnBmX29wc19zY2hlZF9leHRfb3BzX2NpZCA9IHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNDE6XFx0LnNlbGVjdF9jaWRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3NlbGVjdF9jcHUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjQyOlxcdC5lbnF1ZXVlXFx0XFx0PSBzY2hlZF9leHRfb3BzX19lbnF1ZXVlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0MzpcXHQuZGVxdWV1ZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fZGVxdWV1ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNDQ6XFx0LmRpc3BhdGNoXFx0XFx0PSBzY2hlZF9leHRfb3BzX19kaXNwYXRjaCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNDU6XFx0LnRpY2tcXHRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3RpY2ssXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjQ2OlxcdC5ydW5uYWJsZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fcnVubmFibGUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjQ3OlxcdC5ydW5uaW5nXFx0XFx0PSBzY2hlZF9leHRfb3BzX19ydW5uaW5nLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0ODpcXHQuc3RvcHBpbmdcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3N0b3BwaW5nLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI0OTpcXHQucXVpZXNjZW50XFx0XFx0PSBzY2hlZF9leHRfb3BzX19xdWllc2NlbnQsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjUwOlxcdC55aWVsZFxcdFxcdFxcdD0gc2NoZWRfZXh0X29wc19feWllbGQsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjUxOlxcdC5jb3JlX3NjaGVkX2JlZm9yZVxcdD0gc2NoZWRfZXh0X29wc19fY29yZV9zY2hlZF9iZWZvcmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjUyOlxcdC5zZXRfd2VpZ2h0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19zZXRfd2VpZ2h0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1MzpcXHQuc2V0X2NtYXNrXFx0XFx0PSBzY2hlZF9leHRfb3BzX2NpZF9fc2V0X2NtYXNrLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1NDpcXHQudXBkYXRlX2lkbGVcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3VwZGF0ZV9pZGxlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1NTpcXHQuaW5pdF90YXNrXFx0XFx0PSBzY2hlZF9leHRfb3BzX19pbml0X3Rhc2ssXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjU2OlxcdC5leGl0X3Rhc2tcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2V4aXRfdGFzayxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNTc6XFx0LmVuYWJsZVxcdFxcdFxcdD0gc2NoZWRfZXh0X29wc19fZW5hYmxlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI1ODpcXHQuZGlzYWJsZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fZGlzYWJsZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyNTktI2lmZGVmIENPTkZJR19FWFRfR1JPVVBfU0NIRURcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjA6XFx0LmNwdWN0bF9pbml0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfaW5pdCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjE6XFx0LmNwdWN0bF9leGl0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfZXhpdCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjI6XFx0LmNwdWN0bF9wcmVwX21vdmVcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9wcmVwX21vdmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjYzOlxcdC5jcHVjdGxfbW92ZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX21vdmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjY0OlxcdC5jcHVjdGxfY2FuY2VsX21vdmVcXHQ9IHNjaGVkX2V4dF9vcHNfX2Nncm91cF9jYW5jZWxfbW92ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjU6XFx0LmNwdWN0bF9zZXRfd2VpZ2h0XFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X3dlaWdodCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjY6XFx0LmNwdWN0bF9zZXRfYmFuZHdpZHRoXFx0PSBzY2hlZF9leHRfb3BzX19jZ3JvdXBfc2V0X2JhbmR3aWR0aCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjc6XFx0LmNwdWN0bF9zZXRfaWRsZVxcdD0gc2NoZWRfZXh0X29wc19fY2dyb3VwX3NldF9pZGxlLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI2OC0jZW5kaWZcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNjk6XFx0LnN1Yl9hdHRhY2hcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX3N1Yl9hdHRhY2gsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4MjcwOlxcdC5zdWJfZGV0YWNoXFx0XFx0PSBzY2hlZF9leHRfb3BzX19zdWJfZGV0YWNoLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3MTpcXHQuc3ViX2NhcHNfdXBkYXRlZFxcdD0gc2NoZWRfZXh0X29wc19fc3ViX2NhcHNfdXBkYXRlZCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNzI6XFx0LnN1Yl9lY2Fwc191cGRhdGVkXFx0PSBzY2hlZF9leHRfb3BzX19zdWJfZWNhcHNfdXBkYXRlZCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNzM6XFx0LmNpZF9vbmxpbmVcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2NwdV9vbmxpbmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4Mjc0OlxcdC5jaWRfb2ZmbGluZVxcdFxcdD0gc2NoZWRfZXh0X29wc19fY3B1X29mZmxpbmUsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4Mjc1OlxcdC5pbml0X2NpZHNcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2luaXRfY2lkcyxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNzY6XFx0LmluaXRcXHRcXHRcXHQ9IHNjaGVkX2V4dF9vcHNfX2luaXQsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4Mjc3OlxcdC5leGl0XFx0XFx0XFx0PSBzY2hlZF9leHRfb3BzX19leGl0LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI3ODpcXHQuZHVtcFxcdFxcdFxcdD0gc2NoZWRfZXh0X29wc19fZHVtcCxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyNzk6XFx0LmR1bXBfY2lkXFx0XFx0PSBzY2hlZF9leHRfb3BzX19kdW1wX2NwdSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyODA6XFx0LmR1bXBfdGFza1xcdFxcdD0gc2NoZWRfZXh0X29wc19fZHVtcF90YXNrLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI4MS19O1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04Mjg3LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODI4ODpzdGF0aWMgc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzIGJwZl9zY2hlZF9leHRfb3BzX2NpZCA9IHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyODktXFx0LnZlcmlmaWVyX29wcyA9IFxcdTAwMjZicGZfc2N4X2NpZF92ZXJpZmllcl9vcHMsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgyOTYtXFx0LnZhbGlkYXRlID0gYnBmX3NjeF92YWxpZGF0ZSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyOTc6XFx0Lm5hbWUgPSBcXFwic2NoZWRfZXh0X29wc19jaWRcXFwiLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODI5OC1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjgyOTk6XFx0LmNmaV9zdHVicyA9IFxcdTAwMjZfX2JwZl9vcHNfc2NoZWRfZXh0X29wc19jaWRcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTgzMDAtfTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA2MzI9c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHNjeF9rZnVuY19zZXRfYW55ID0ge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDYzOS0gKiBjcHUtZm9ybSBrZnVuY3MgdGhhdCBhcmUgZm9yYmlkZGVuIGZyb20gY2lkLWZvcm0gc2NoZWR1bGVyc1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA2NDA6ICogKGJwZl9zY2hlZF9leHRfb3BzX2NpZCkuIFByb2dyYW1zIHRhcmdldGluZyB0aGUgY2lkIHN0cnVjdF9vcHMgdHlwZSBtdXN0XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY0MS0gKiB1c2UgdGhlIGNpZC1mb3JtIGFsdGVybmF0aXZlIChjaWQvY21hc2sga2Z1bmNzKS5cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA3MzM9aW50IHNjeF9rZnVuY19jb250ZXh0X2ZpbHRlcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBrZnVuY19pZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA3NzAtXFx0ICpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNzcxOlxcdCAqIEJvdGggYnBmX3NjaGVkX2V4dF9vcHMgKGNwdS1mb3JtKSBhbmQgYnBmX3NjaGVkX2V4dF9vcHNfY2lkXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc3Mi1cXHQgKiAoY2lkLWZvcm0pIGFyZSB2YWxpZCBTQ1ggc3RydWN0X29wcy4gTWVtYmVyIG9mZnNldHMgbWF0Y2ggYmV0d2Vlblxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc3Ni1cXHQgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNzc3OlxcdGlmIChwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZXN0X29wcyAhPSBcXHUwMDI2YnBmX3NjaGVkX2V4dF9vcHMgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNzc4OlxcdCAgICBwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZXN0X29wcyAhPSBcXHUwMDI2YnBmX3NjaGVkX2V4dF9vcHNfY2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA3NzktXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNzg2LVxcdCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA3ODc6XFx0aWYgKHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlc3Rfb3BzID09IFxcdTAwMjZicGZfc2NoZWRfZXh0X29wc19jaWQgXFx1MDAyNlxcdTAwMjYgaW5fY3B1X29ubHkpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDc4OC1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA4MTM9c3RhdGljIGludCBfX2luaXQgc2N4X2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MTctXFx0LypcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODE4OlxcdCAqIHNjaGVkX2V4dF9vcHNfY2lkIG1pcnJvcnMgc2NoZWRfZXh0X29wcyB1cCB0byBhbmQgaW5jbHVkaW5nIEBwcml2Llxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MTktXFx0ICogQm90aCBicGZfc2N4X2luaXRfbWVtYmVyKCkgYW5kIGJwZl9zY3hfY2hlY2tfbWVtYmVyKCkgdXNlIG9mZnNldHNcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODIwOlxcdCAqIGZyb20gc3RydWN0IHNjaGVkX2V4dF9vcHM7IHNjaGVkX2V4dF9vcHNfY2lkIHJlbGllcyBvbiB0aG9zZSBvZmZzZXRzXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDgyMS1cXHQgKiBtYXRjaGluZyBmb3IgdGhlIHNoYXJlZCBmaWVsZHMuIENhdGNoIGFueSBkcmlmdCBhdCBib290Llxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDgyMy0jZGVmaW5lIENJRF9PRkZTRVRfTUFUQ0goY3B1X2ZpZWxkLCBjaWRfZmllbGQpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA4MjQ6XFx0QlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBzY2hlZF9leHRfb3BzLCBjcHVfZmllbGQpICE9XFx0XFx0XFxcXFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA4MjU6XFx0XFx0ICAgICBvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWQsIGNpZF9maWVsZCkpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDgyNi1cXHQvKiBkYXRhIGZpZWxkcyB1c2VkIGJ5IGJwZl9zY3hfaW5pdF9tZW1iZXIoKSAqL1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDg4NS1cXHQgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODg2OlxcdEJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWQsIF9fZW5kKSAhPVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA4ODc6XFx0XFx0ICAgICBvZmZzZXRvZmVuZChzdHJ1Y3Qgc2NoZWRfZXh0X29wcywgcHJpdikpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4ODgtI3VuZGVmIENJRF9PRkZTRVRfTUFUQ0hcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA5MzMtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDkzNDpcXHRyZXQgPSByZWdpc3Rlcl9icGZfc3RydWN0X29wcyhcXHUwMDI2YnBmX3NjaGVkX2V4dF9vcHMsIHNjaGVkX2V4dF9vcHMpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA5MzUtXFx0aWYgKHJldCkge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDkzOS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwOTQwOlxcdHJldCA9IHJlZ2lzdGVyX2JwZl9zdHJ1Y3Rfb3BzKFxcdTAwMjZicGZfc2NoZWRfZXh0X29wc19jaWQsIHNjaGVkX2V4dF9vcHNfY2lkKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwOTQxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTMwMD1zdGF0aWMgYm9vbCBsbGNfbnVtYV9taXNtYXRjaCh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMzQ0LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjM0NTp2b2lkIHNjeF9pZGxlX3VwZGF0ZV9zZWxjcHVfdG9wb2xvZ3koc3RydWN0IHNjaGVkX2V4dF9vcHMgKm9wcylcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0zNDYte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM9ODAxPXZvaWQgX19zY3hfdXBkYXRlX2lkbGUoc3RydWN0IHJxICpycSwgYm9vbCBpZGxlLCBib29sIGRvX25vdGlmeSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTgzNy1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzo4Mzg6c3RhdGljIHZvaWQgcmVzZXRfaWRsZV9tYXNrcyhzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTgzOS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy04NTktXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6ODYwOnZvaWQgc2N4X2lkbGVfZW5hYmxlKHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtODYxLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTkxMz1zdGF0aWMgYm9vbCBjaGVja19idWlsdGluX2lkbGVfZW5hYmxlZChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy05MjItLypcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzo5MjM6ICogRGV0ZXJtaW5lIHdoZXRoZXIgQHAgaXMgYSBtaWdyYXRpb24tZGlzYWJsZWQgdGFzayBpbiB0aGUgY29udGV4dCBvZiBCUEZcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy05MjQtICogY29kZS5cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oPTE1PXN0cnVjdCBjcHVtYXNrO1xcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oOjE2OnN0cnVjdCBzY2hlZF9leHRfb3BzO1xcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oLTE3LXN0cnVjdCB0YXNrX3N0cnVjdDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oPTIwPWV4dGVybiBzdHJ1Y3QgYnRmX2lkX3NldDggc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1O1xcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oLTIxLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5oOjIyOnZvaWQgc2N4X2lkbGVfdXBkYXRlX3NlbGNwdV90b3BvbG9neShzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaC0yMy12b2lkIHNjeF9pZGxlX2luaXRfbWFza3Modm9pZCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaD0yNT1zMzIgc2N4X3NlbGVjdF9jcHVfZGZsKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgczMyIHByZXZfY3B1LCB1NjQgd2FrZV9mbGFncyxcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaC0yNi1cXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdXNfYWxsb3dlZCwgdTY0IGZsYWdzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaDoyNzp2b2lkIHNjeF9pZGxlX2VuYWJsZShzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuaC0yOC12b2lkIHNjeF9pZGxlX2Rpc2FibGUodm9pZCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtNDEtXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjQyOiNkZWZpbmUgU0NYX09QX0lEWChvcClcXHRcXHQob2Zmc2V0b2Yoc3RydWN0IHNjaGVkX2V4dF9vcHMsIG9wKSAvIHNpemVvZih2b2lkICgqKSh2b2lkKSkpXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTQzLSNkZWZpbmUgU0NYX01PRkZfSURYKG1vZmYpXFx0KChtb2ZmKSAvIHNpemVvZih2b2lkICgqKSh2b2lkKSkpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTAxPXN0cnVjdCBzY3hfZXhpdF9pbmZvIHtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMzAtXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEzMTovKiBzY2hlZF9leHRfb3BzLmZsYWdzICovXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEzMi1lbnVtIHNjeF9vcHNfZmxhZ3Mge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTMwMD1zdHJ1Y3Qgc2N4X3N1Yl9hdHRhY2hfYXJncyB7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjMwMTpcXHRzdHJ1Y3Qgc2NoZWRfZXh0X29wc1xcdCpvcHM7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMwMi1cXHRjaGFyXFx0XFx0XFx0KmNncm91cF9wYXRoO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTMwNj1zdHJ1Y3Qgc2N4X3N1Yl9kZXRhY2hfYXJncyB7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjMwNzpcXHRzdHJ1Y3Qgc2NoZWRfZXh0X29wc1xcdCpvcHM7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMwOC1cXHRjaGFyXFx0XFx0XFx0KmNncm91cF9wYXRoO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMxMS0vKipcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MzEyOiAqIHN0cnVjdCBzY2hlZF9leHRfb3BzIC0gT3BlcmF0aW9uIHRhYmxlIGZvciBCUEYgc2NoZWR1bGVyIGltcGxlbWVudGF0aW9uXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMxMy0gKlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTMxOC0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MzE5OnN0cnVjdCBzY2hlZF9leHRfb3BzIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMzIwLVxcdC8qKlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTk2OC1cXHQgKiBNdXN0IGJlIGEgbm9uLXplcm8gdmFsaWQgQlBGIG9iamVjdCBuYW1lIGluY2x1ZGluZyBvbmx5IGlzYWxudW0oKSxcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6OTY5OlxcdCAqICdfJyBhbmQgJy4nIGNoYXJzLiBTaG93cyB1cCBpbiBrZXJuZWwuc2NoZWRfZXh0X29wcyBzeXNjdGwgd2hpbGUgdGhlXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTk3MC1cXHQgKiBCUEYgc2NoZWR1bGVyIGlzIGVuYWJsZWQuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtOTc4LVxcdCAqIERlcHJlY2F0ZWQgY2FsbGJhY2tzLiBLZXB0IGF0IHRoZSBlbmQgb2YgdGhlIHN0cnVjdCBzbyB0aGUgY2lkLWZvcm1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6OTc5OlxcdCAqIHN0cnVjdCAoc2NoZWRfZXh0X29wc19jaWQpIGNhbiBvbWl0IHRoZW0gd2l0aG91dCBhZmZlY3RpbmcgdGhlXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTk4MC1cXHQgKiBzaGFyZWQgZmllbGQgb2Zmc2V0cy4gVXNlIFNDWF9FTlFfSU1NRUQgaW5zdGVhZC4gU2l0dGluZyBwYXN0XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAxMC0vKipcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTAxMTogKiBzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWQgLSBjaWQtZm9ybSBhbHRlcm5hdGl2ZSB0byBzdHJ1Y3Qgc2NoZWRfZXh0X29wc1xcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDEyLSAqXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMTM6ICogTWlycm9ycyBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyB3aXRoIGNwdS9jcHVtYXNrIHN1YnN0aXR1dGVkIHdpdGggY2lkL2NtYXNrXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMTQ6ICogd2hlcmUgYXBwbGljYWJsZS4gTGF5b3V0IHVwIHRvIGFuZCBpbmNsdWRpbmcgQHByaXYgbWF0Y2hlcyBzY2hlZF9leHRfb3BzXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwMTUtICogYnl0ZS1mb3ItYnl0ZSAodmVyaWZpZWQgYnkgQlVJTERfQlVHX09OIGNoZWNrcyBhdCBzY3hfaW5pdCgpIHRpbWUpIHNvXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAxNy0gKiBhbmQgYnBmX3NjeF9jaGVja19tZW1iZXIoKS4gVGhlIGRlcHJlY2F0ZWQgY3B1X2FjcXVpcmUvY3B1X3JlbGVhc2VcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTAxODogKiBjYWxsYmFja3MgYXQgdGhlIHRhaWwgb2Ygc2NoZWRfZXh0X29wcyBhcmUgb21pdHRlZCBoZXJlIGVudGlyZWx5Llxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDE5LSAqXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMjA6ICogRGlmZmVyZW5jZXMgZnJvbSBzY2hlZF9leHRfb3BzOlxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDIxLSAqICAgLSBzZWxlY3RfY3B1ICAgICAgIC1cXHUwMDNlIHNlbGVjdF9jaWQgKHJldHVybnMgY2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwMjgtICogICAtIGNncm91cF8qICAgICAgICAgLVxcdTAwM2UgY3B1Y3RsXyogKHRoZXkgdHJhY2sgdGhlIGNncm91cCBjcHUgY29udHJvbGxlcilcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTAyOTogKiAgIC0gY3B1X2FjcXVpcmUvY3B1X3JlbGVhc2UgIC1cXHUwMDNlIG5vdCBwcmVzZW50IChkZXByZWNhdGVkIGluIHNjaGVkX2V4dF9vcHMpXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwMzAtICpcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMDM0LSAqXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMzU6ICogU2VlIHNjaGVkX2V4dF9vcHMgZm9yIGNhbGxiYWNrIGRvY3VtZW50YXRpb24uXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwMzYtICovXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwMzc6c3RydWN0IHNjaGVkX2V4dF9vcHNfY2lkIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTAzOC1cXHRzMzIgKCpzZWxlY3RfY2lkKShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHMzMiBwcmV2X2NpZCwgdTY0IHdha2VfZmxhZ3MpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTEwODUtXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEwODY6XFx0LyogRGF0YSBmaWVsZHMgLSBtdXN0IG1hdGNoIHNjaGVkX2V4dF9vcHMgbGF5b3V0IGV4YWN0bHkgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTA4Ny1cXHR1MzIgZGlzcGF0Y2hfbWF4X2JhdGNoO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTE1MTU9c3RydWN0IHNjeF9zY2hlZCB7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTUyMy1cXHR1bmlvbiB7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE1MjQ6XFx0XFx0c3RydWN0IHNjaGVkX2V4dF9vcHNcXHRcXHRvcHM7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE1MjU6XFx0XFx0c3RydWN0IHNjaGVkX2V4dF9vcHNfY2lkXFx0b3BzX2NpZDtcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTUyNi1cXHR9O1xcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxNTI3OlxcdGJvb2xcXHRcXHRcXHRpc19jaWRfdHlwZTtcXHQvKiB0cnVlIGlmIHJlZ2lzdGVyZWQgdmlhIGJwZl9zY2hlZF9leHRfb3BzX2NpZCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNTI4LVxcdGJvb2xcXHRcXHRcXHRkZWFkO1xcdFxcdC8qIHNldCBhZnRlciBvcHMuZXhpdCgpLCBnYXRlcyBzY3hfcHJvZ19zY2hlZCgpICovXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTk5Mj1zdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE5OTQtXFx0dW5pb24ge1xcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxOTk1OlxcdFxcdHN0cnVjdCBzY2hlZF9leHRfb3BzXFx0XFx0Km9wcztcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTk5NjpcXHRcXHRzdHJ1Y3Qgc2NoZWRfZXh0X29wc19jaWRcXHQqb3BzX2NpZDtcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTk5Ny1cXHR9O1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTIwNzM9c3RydWN0IHNjeF9zY2hlZCAqc2N4X2FsbG9jX2FuZF9hZGRfc2NoZWQoc3RydWN0IHNjeF9lbmFibGVfY21kICpjbWQsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMjA3NS1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBzY3hfc2NoZWQgKnBhcmVudCk7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjIwNzY6aW50IHNjeF92YWxpZGF0ZV9vcHMoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBjb25zdCBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyAqb3BzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMjA3Ny1pbnQgc2N4X3NjaGVkX3N5c2ZzX2FkZChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTIzODg9c3RhdGljIGlubGluZSBzdHJ1Y3Qgc2N4X3NjaGVkICpzY3hfcHJvZ19zY2hlZChjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTIzODkte1xcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoyMzkwOlxcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHM7XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTIzOTEtXFx0c3RydWN0IHNjeF9zY2hlZCAqc2NoLCAqcm9vdDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM9NDc9c3RydWN0IHNjeF9zY2hlZCAqc2N4X3NraXBfc3VidHJlZV9wcmUoc3RydWN0IHNjeF9zY2hlZCAqcG9zLCBzdHJ1Y3Qgc2N4X3NjaGVkICpyb290KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9zdWIuYy01NS1cXHR3aGlsZSAocG9zICE9IHJvb3QpIHtcXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjU2OlxcdFxcdG5leHQgPSBsaXN0X25leHRfb3JfbnVsbF9yY3UoXFx1MDAyNnNjeF9wYXJlbnQocG9zKS1cXHUwMDNlY2hpbGRyZW4sIFxcdTAwMjZwb3MtXFx1MDAzZXNpYmxpbmcsXFxua2VybmVsL3NjaGVkL2V4dC9zdWIuYy01Ny1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzY3hfc2NoZWQsIHNpYmxpbmcpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9zdWIuYz01MzI9c3RhdGljIHZvaWQgc2N4X3Jlc2N1ZV90aW1lcmZuKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcilcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtNTUyLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM6NTUzOlxcdFxcdC8qIHRoZXJlJ3MgZW5vdWdoIGJ1ZGdldCB0byBzdGFydCByZXNjdWluZyB0aGUgbmV4dCBvbmUgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTU1NC1cXHRcXHRwID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2cnEtXFx1MDAzZXNjeC5yZXNjdWUuZHNxLmxpc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM9MTcwNz12b2lkIHNjeF9zdWJfZW5hYmxlX3dvcmtmbihzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9zdWIuYy0xNzA5LVxcdHN0cnVjdCBzY3hfZW5hYmxlX2NtZCAqY21kID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBzY3hfZW5hYmxlX2NtZCwgd29yayk7XFxua2VybmVsL3NjaGVkL2V4dC9zdWIuYzoxNzEwOlxcdHN0cnVjdCBzY2hlZF9leHRfb3BzICpvcHMgPSBjbWQtXFx1MDAzZW9wcztcXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTE3MTEtXFx0c3RydWN0IGNncm91cCAqY2dycDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9mYWlyLmM9NzA5NT1zdGF0aWMgdm9pZCBfX2Nmc2JfY3NkX3VudGhyb3R0bGUodm9pZCAqYXJnKVxcbi0tXFxua2VybmVsL3NjaGVkL2ZhaXIuYy03MTA0LVxcdCAqIHVwZGF0ZV9ycV9jbG9jaygpIGluIHVudGhyb3R0bGVfY2ZzX3JxKCkuXFxua2VybmVsL3NjaGVkL2ZhaXIuYzo3MTA1OlxcdCAqIERvIGl0IG9uY2UgYW5kIHNraXAgdGhlIHBvdGVudGlhbCBuZXh0IG9uZXMuXFxua2VybmVsL3NjaGVkL2ZhaXIuYy03MTA2LVxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowMzo1Ni45NTYzODU1NjVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2NjAzODA1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBkZXZlbG9wbWVudDpcblxuKipJbml0aWFsIEludmVzdGlnYXRpb24gaW50byB0aGUgRVhUIFNjaGVkdWxlciBDbGFzcyoqXG5cblJpZ2h0LCBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AgaXMgdGhlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgRVhUIHNjaGVkdWxlciBjbGFzcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgc28gYENPTkZJR19TQ0hFRF9DTEFTU19FWFRgIG11c3QgYmUgdGhlIGd1YXJkIHRoYXQgZW5hYmxlcyBpdC5cIiBNYWtlcyBwZXJmZWN0IHNlbnNlLiBMZXQncyB2ZXJpZnkgdGhhdCBxdWlja2x5LiBJJ2xsIGp1bXAgb3ZlciB0byBga2VybmVsL3NjaGVkL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBpbnRlcmVzdGluZyBkZXRhaWxzIGFib3V0IGhvdyBpdCdzIGRlZmluZWQgYW5kIG90aGVyIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJ1aWxkIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgc2NoZWR1bGVyIGNhbiBiZSBlbmFibGVkLiBJIGFtIHN1cmUgdGhlcmUgYXJlIG90aGVyIHBpZWNlcyB0byBpbnZlc3RpZ2F0ZSwgYnV0IHRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MTgzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MDAuNzIyNDI2OTM0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI1MDQ1MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MDAuNzcwNjgwMDY0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODYzNDE5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgU2NoZWR1bGluZyBDbGFzcyBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZyBJIG5lZWQgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBTQ0hFRF9DTEFTU19FWFRgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZmlyc3QgcGxhY2UgSSdkIGNoZWNrIGlzIGxpa2VseSBnb2luZyB0byBiZSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFRoZSBtb3N0IG9idmlvdXMgY2FuZGlkYXRlcyB3b3VsZCBiZSBga2VybmVsL0tjb25maWcucHJlZW1wdGAgb3IgcGVyaGFwcyBgaW5pdC9LY29uZmlnYC4gVGhlc2UgZmlsZXMgYXJlIHdoZXJlIHRoZSBtYWluIHNjaGVkdWxpbmctcmVsYXRlZCBmZWF0dXJlcyBhbmQgb3B0aW9ucyB1c3VhbGx5IHJlc2lkZS4gSSdsbCBzdGFydCB0aGVyZSBhbmQgc2VlIGlmIEkgY2FuIGxvY2F0ZSB0aGUgZGVmaW5pdGlvbiBvciBhdCBsZWFzdCBmaWd1cmUgb3V0IHdoaWNoIEtjb25maWcgb3B0aW9uIGVuYWJsZXMgdGhpcyBgU0NIRURfQ0xBU1NfRVhUYC4gSXQgaXMgd2hlcmUgdGhlIG1haW4gc2NoZWR1bGluZy1yZWxhdGVkIGZlYXR1cmVzIGFuZCBvcHRpb25zIHVzdWFsbHkgcmVzaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQ0MSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjA0LjA1NzAyMzk4NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMDI0NTMwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0NIRURfQ0xBU1NfRVhUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvS2NvbmZpZy5wcmVlbXB0PTE1MT1jb25maWcgU0NIRURfQ09SRVxcbi0tXFxua2VybmVsL0tjb25maWcucHJlZW1wdC0xNjgtXFxua2VybmVsL0tjb25maWcucHJlZW1wdDoxNjk6Y29uZmlnIFNDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTcwLVxcdGJvb2wgXFxcIkV4dGVuc2libGUgU2NoZWR1bGluZyBDbGFzc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MDUuNjc3MjczNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc4NTA5MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NoZWR1bGVyIEV4dGVuc2lvbiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIG1haW4gY29uZmlndXJhdGlvbiB2YXJpYWJsZSBmb3IgdGhpcyBleHRlbnNpb24gaXMgYFNDSEVEX0NMQVNTX0VYVGAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEJ1dCwgaGFuZyBvbiwgdGhlcmUgbWlnaHQgYmUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCwgc28gbGV0J3Mga2VlcCBhbiBleWUgb3V0IGZvciB0aG9zZSBhcyB3ZSBkaWcgZGVlcGVyLlxuXG5UaGUgY29kZSBtb2RpZmljYXRpb25zIGFyZSBoYXBwZW5pbmcgaW4gYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgYSBzY2hlZHVsZXIgZXh0ZW5zaW9uLiBTcGVjaWZpY2FsbHksIHRoZSBmdW5jdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24gcmlnaHQgbm93IGlzIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gSSdsbCBuZWVkIHRvIGp1bXAgZGlyZWN0bHkgdG8gdGhhdCBmdW5jdGlvbiB3aXRoaW4gYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgIGFuZCBnZXQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBpdCdzIGRvaW5nLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoaXMgZXh0ZW5zaW9uIGxpa2VseSBsaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc1MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjA5LjI1NTc4NTE2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MjQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ1MjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQ1MjA6XFx0XFx0XFx0XFx0aWYgKCFkcnUpXFxuNDUyMTpcXHRcXHRcXHRcXHRcXHRyZXR1cm47XFxuNDUyMjpcXHRcXG40NTIzOlxcdFxcdFxcdFxcdGRzcV9wY3B1ID0gY29udGFpbmVyX29mKGRydSwgc3RydWN0IHNjeF9kc3FfcGNwdSxcXG40NTI0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRlZmVycmVkX3JlZW5xX3VzZXIpO1xcbjQ1MjU6XFx0XFx0XFx0XFx0ZHNxID0gZHNxX3BjcHUtXFx1MDAzZWRzcTtcXG40NTI2OlxcdFxcdFxcdFxcdHJlZW5xX2ZsYWdzID0gZHJ1LVxcdTAwM2VmbGFncztcXG40NTI3OlxcdFxcdFxcdFxcdFdSSVRFX09OQ0UoZHJ1LVxcdTAwM2VmbGFncywgMCk7XFxuNDUyODpcXHRcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZkcnUtXFx1MDAzZW5vZGUpO1xcbjQ1Mjk6XFx0XFx0XFx0fVxcbjQ1MzA6XFx0XFxuNDUzMTpcXHRcXHRcXHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cXG40NTMyOlxcdFxcdFxcdHNtcF9tYigpO1xcbjQ1MzM6XFx0XFxuNDUzNDpcXHRcXHRcXHQvKiBkZXN0cm95X2RzcSgpIG1heSByYWNlIGFuZCBpbnZhbGlkYXRlIEBkc3E7IHNraXAgKi9cXG40NTM1OlxcdFxcdFxcdGlmICh1bmxpa2VseShkc3EtXFx1MDAzZWlkIFxcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKVxcbjQ1MzY6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuNDUzNzpcXHRcXHRcXHRyZWVucV91c2VyKHJxLCBkc3EsIHJlZW5xX2ZsYWdzKTtcXG40NTM4OlxcdFxcdH1cXG40NTM5OlxcdH1cXG40NTQwOlxcdFxcbjQ1NDE6XFx0c3RhdGljIHZvaWQgcnVuX2RlZmVycmVkKHN0cnVjdCBycSAqcnEpXFxuNDU0MjpcXHR7XFxuNDU0MzpcXHRcXHRwcm9jZXNzX2Rkc3BfZGVmZXJyZWRfbG9jYWxzKHJxKTtcXG40NTQ0OlxcdFxcbjQ1NDU6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZycS1cXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX2xvY2FscykpXFxuNDU0NjpcXHRcXHRcXHRwcm9jZXNzX2RlZmVycmVkX3JlZW5xX2xvY2FscyhycSk7XFxuNDU0NzpcXHRcXG40NTQ4OlxcdFxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2cnEtXFx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2VycykpXFxuNDU0OTpcXHRcXHRcXHRwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHJxKTtcXG40NTUwOlxcdFxcbjQ1NTE6XFx0XFx0c2N4X3JlZW5xX3JlamVjdChycSk7XFxuNDU1MjpcXHR9XFxuNDU1MzpcXHRcXG40NTU0OlxcdCNpZmRlZiBDT05GSUdfTk9fSFpfRlVMTFxcbjQ1NTU6XFx0Ym9vbCBzY3hfY2FuX3N0b3BfdGljayhzdHJ1Y3QgcnEgKnJxKVxcbjQ1NTY6XFx0e1xcbjQ1NTc6XFx0XFx0c3RydWN0IHRhc2tfc3RydWN0ICpwID0gcnEtXFx1MDAzZWN1cnI7XFxuNDU1ODpcXHRcXHRzdHJ1Y3Qgc2N4X3NjaGVkICpzY2ggPSBzY3hfdGFza19zY2hlZChwKTtcXG40NTU5OlxcdFxcbjQ1NjA6XFx0XFx0aWYgKHAtXFx1MDAzZXNjaGVkX2NsYXNzICE9IFxcdTAwMjZleHRfc2NoZWRfY2xhc3MpXFxuNDU2MTpcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG40NTYyOlxcdFxcbjQ1NjM6XFx0XFx0LypcXG40NTY0OlxcdFxcdCAqIEBycS1cXHUwMDNlY3VyciBtYXkgc3RpbGwgcmVmZXJlbmNlIGFuIG91dGdvaW5nIEVYVCB0YXNrIGFmdGVyIGl0IGhhcyBiZWVuXFxuNDU2NTpcXHRcXHQgKiBkZXF1ZXVlZC4gSWYgbm8gRVhUIHRhc2tzIGFyZSBhY2NvdW50ZWQgb24gQHJxLCBpZ25vcmUgaXRzIHN0YWxlXFxuNDU2NjpcXHRcXHQgKiBzbGljZSBzdGF0ZS4gSWYgYW5vdGhlciB0YXNrIGlzIGRpc3BhdGNoZWQgZnJvbSBhIERTUSxcXG40NTY3OlxcdFxcdCAqIHNldF9uZXh0X3Rhc2tfc2N4KCkgd2lsbCB1cGRhdGUgdGhlIGRlcGVuZGVuY3kgZm9yIHRoZSBpbmNvbWluZyB0YXNrLlxcbjQ1Njg6XFx0XFx0ICovXFxuNDU2OTpcXHRcXHRpZiAoIXJxLVxcdTAwM2VzY3gubnJfcnVubmluZylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MDkuMjU2MTU5NDRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMTAzMTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipUcmFjaW5nIHRoZSBFeGVjdXRpb24gUGF0aCBvZiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGdldHMgaW52b2tlZC4gSXQgbG9va3MgbGlrZSBpdCdzIGNhbGxlZCBmcm9tIGBydW5fZGVmZXJyZWRgLCB3aGljaCBpcyBhIGNvbW1vbiBwYXR0ZXJuIGZvciBkZWZlcnJlZCB3b3JrIGluIHRoaXMgZW52aXJvbm1lbnQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hlcmUgZG9lcyAqYHJ1bl9kZWZlcnJlZGAqIGl0c2VsZiBnZXQgY2FsbGVkPyBJcyBpdCBzb2xlbHkgZnJvbSBgc2N4X2JwZl9raWNrX2NwdWAgYW5kIHRoaW5ncyBsaWtlIGl0LCBvciBhcmUgdGhlcmUgb3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBJIG5lZWQgdG8gY29uc2lkZXI/IEkgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBncmFwaCBmb3IgYHJ1bl9kZWZlcnJlZGAgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiBpdHMgZXhlY3V0aW9uIHBhdGhzLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSB0cmlnZ2VycyBmb3IgdGhlIGRlZmVycmVkIHJlLWVucXVldWUgb2YgdXNlcnMsIHdoaWNoIGlzIGNsZWFybHkgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBvdmVyYWxsIGZsb3cuIExldCdzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIHRob3NlIGNhbGwgc2l0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzgyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDoxMy4wNzcxOTM2OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NjgzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnVuX2RlZmVycmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz0yNTM9TU9EVUxFX1BBUk1fREVTQyhieXBhc3NfbGJfaW50dl91cywgXFxcImJ5cGFzcyBsb2FkIGJhbGFuY2UgaW50ZXJ2YWwgaW4gbWljcm9zZWNvbmRzICgwIChkaXNhYmxlKSB0byAxMHMpXFxcIik7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI1OS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjI2MDpzdGF0aWMgdm9pZCBydW5fZGVmZXJyZWQoc3RydWN0IHJxICpycSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yNjEtc3RhdGljIGJvb2wgdGFza19kZWFkX2FuZF9kb25lKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk3OT1zdGF0aWMgdm9pZCBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuKHN0cnVjdCBycSAqcnEpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODAte1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTgxOlxcdHJ1bl9kZWZlcnJlZChycSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODItfVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05ODQ9c3RhdGljIHZvaWQgZGVmZXJyZWRfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODgtXFx0cmF3X3NwaW5fcnFfbG9jayhycSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5ODk6XFx0cnVuX2RlZmVycmVkKHJxKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk5MC1cXHRyYXdfc3Bpbl9ycV91bmxvY2socnEpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNTI0PXN0YXRpYyB2b2lkIHRhc2tfd29rZW5fc2N4KHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MjUte1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzUyNjpcXHRydW5fZGVmZXJyZWQocnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzUyNy19XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1MDU9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTQwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDU0MTpzdGF0aWMgdm9pZCBydW5fZGVmZXJyZWQoc3RydWN0IHJxICpycSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1NDIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDoxMy4xMjA4NjgwNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTQwNTc5ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgZnVuY3Rpb24gaXMgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQncyBjYWxsZWQgZnJvbSBgcnVuX2RlZmVycmVkYCwgd2hpY2ggaXRzZWxmIGlzIGludm9rZWQgYnkgYHRhc2tfd29rZW5fc2N4YCwgYGRlZmVycmVkX2lycV93b3JrZm5gLCBhbmQgYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gLiBUaGVzZSBlbnRyeSBwb2ludHMgYXJlIGFsbCB0cmlnZ2VyZWQgd2hlbiBgU0NIRURfQ0xBU1NfRVhUYCBpcyBlbmFibGVkIGFuZCBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkLiBHaXZlbiBpdHMgcGxhY2UgaW4gYSBjb3JlIHNjaGVkdWxlciBjaGFuZ2UsIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG5vbmV0aGVsZXNzLCBmdXp6aW5nIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIHRhcmdldC5cblxuVGhlIGNydWNpYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIEknbGwgbmVlZCBhcmUgYFNDSEVEX0NMQVNTX0VYVGAuIEFoLCByaWdodCwgQlBGIGlzIGEgcHJlcmVxdWlzaXRlIHRvIGxvYWQgdGhlIHNjaGVkdWxlciwgc28gSSdsbCBhbHNvIG5lZWQgYEJQRl9TWVNDQUxMYCBlbmFibGVkIGFzIHdlbGwuIEp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJ2xsIGRvdWJsZS1jaGVjayBga2VybmVsL0tjb25maWcucHJlZW1wdGAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgU0NIRURfQ0xBU1NfRVhUYC4gR290dGEgZG90IHRoZSBJJ3MgYW5kIGNyb3NzIHRoZSBUJ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NTc5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjIyLjI2MTQ1MDkyNFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI0NTU1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvS2NvbmZpZy5wcmVlbXB0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9LY29uZmlnLnByZWVtcHQ9MTUxPWNvbmZpZyBTQ0hFRF9DT1JFXFxuLS1cXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE2OC1cXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0OjE2OTpjb25maWcgU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL0tjb25maWcucHJlZW1wdC0xNzAtXFx0Ym9vbCBcXFwiRXh0ZW5zaWJsZSBTY2hlZHVsaW5nIENsYXNzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDoyMi4zMDM5MTE0MzRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2MjQ4NjYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJlZW1wdGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwuIFdoZXJlIHdvdWxkIEkgc3RhcnQ/IEFscmlnaHQsIGxldCdzIGhlYWQgc3RyYWlnaHQgZm9yIGBrZXJuZWwvS2NvbmZpZy5wcmVlbXB0YC4gVGhhdCdzIHVzdWFsbHkgdGhlIGdvLXRvIGZpbGUgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHByZWVtcHRpdmUgY29uZmlndXJhdGlvbnMuIFNwZWNpZmljYWxseSwgYXJvdW5kIGxpbmUgMTY5IOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBtYWluIGBDT05GSUdfUFJFRU1QVGAgYW5kIGl0cyBhc3NvY2lhdGVkIHN1Yi1vcHRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGVyZS4gSSBhbnRpY2lwYXRlIGEgZGlzY3Vzc2lvbiBhYm91dCB0aGUgZGlmZmVyZW50IHByZWVtcHRpb24gbW9kZWxzLCBzdWNoIGFzIHZvbHVudGFyeSwgZnVsbCwgYW5kIHRoZSByZWFsdGltZSBvcHRpb25zLiBJ4oCZbGwgYmUgbG9va2luZyBmb3IgdGhlIGRlcGVuZGVuY2llcyBpdCBoYXMgYW5kIGhvdyB0aG9zZSBhcmUgc2V0IHVwLiBJJ20ga2VlbiB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiBob3cgdGhlIGtlcm5lbCdzIHByZWVtcHRpb24gYmVoYXZpb3IgaXMgY29udHJvbGxlZCBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBGcm9tIHRoZXJlLCBJIGNhbiBhbmFseXplIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGxhdGVuY3kgYW5kIHNjaGVkdWxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDk1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MjUuODY2NDAwNzk0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9LY29uZmlnLnByZWVtcHRcIixcbiAgXCJGaXJzdExpbmVcIjogMTY5LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTY5OlxcdGNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcXG4gMTcwOlxcdFxcdGJvb2wgXFxcIkV4dGVuc2libGUgU2NoZWR1bGluZyBDbGFzc1xcXCJcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBERUJVR19JTkZPX0JURlxcbiAxNzI6XFx0XFx0c2VsZWN0IFNUQUNLVFJBQ0UgaWYgU1RBQ0tUUkFDRV9TVVBQT1JUXFxuIDE3MzpcXHRcXHRoZWxwXFxuIDE3NDpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgYSBuZXcgc2NoZWR1bGVyIGNsYXNzIHNjaGVkX2V4dCAoU0NYKSwgd2hpY2hcXG4gMTc1OlxcdFxcdCAgYWxsb3dzIHNjaGVkdWxpbmcgcG9saWNpZXMgdG8gYmUgaW1wbGVtZW50ZWQgYXMgQlBGIHByb2dyYW1zIHRvXFxuIDE3NjpcXHRcXHQgIGFjaGlldmUgdGhlIGZvbGxvd2luZzpcXG4gMTc3OlxcdFxcbiAxNzg6XFx0XFx0ICAtIEVhc2Ugb2YgZXhwZXJpbWVudGF0aW9uIGFuZCBleHBsb3JhdGlvbjogRW5hYmxpbmcgcmFwaWRcXG4gMTc5OlxcdFxcdCAgICBpdGVyYXRpb24gb2YgbmV3IHNjaGVkdWxpbmcgcG9saWNpZXMuXFxuIDE4MDpcXHRcXHQgIC0gQ3VzdG9taXphdGlvbjogQnVpbGRpbmcgYXBwbGljYXRpb24tc3BlY2lmaWMgc2NoZWR1bGVycyB3aGljaFxcbiAxODE6XFx0XFx0ICAgIGltcGxlbWVudCBwb2xpY2llcyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZSB0byBnZW5lcmFsLXB1cnBvc2VcXG4gMTgyOlxcdFxcdCAgICBzY2hlZHVsZXJzLlxcbiAxODM6XFx0XFx0ICAtIFJhcGlkIHNjaGVkdWxlciBkZXBsb3ltZW50czogTm9uLWRpc3J1cHRpdmUgc3dhcCBvdXRzIG9mXFxuIDE4NDpcXHRcXHQgICAgc2NoZWR1bGluZyBwb2xpY2llcyBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cy5cXG4gMTg1OlxcdFxcbiAxODY6XFx0XFx0ICBzY2hlZF9leHQgbGV2ZXJhZ2VzIEJQRiBzdHJ1Y3Rfb3BzIGZlYXR1cmUgdG8gZGVmaW5lIGEgc3RydWN0dXJlXFxuIDE4NzpcXHRcXHQgIHdoaWNoIGV4cG9ydHMgZnVuY3Rpb24gY2FsbGJhY2tzIGFuZCBmbGFncyB0byBCUEYgcHJvZ3JhbXMgdGhhdFxcbiAxODg6XFx0XFx0ICB3aXNoIHRvIGltcGxlbWVudCBzY2hlZHVsaW5nIHBvbGljaWVzLiBUaGUgc3RydWN0X29wcyBzdHJ1Y3R1cmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MjUuODY2NDYyODU0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODY0OTE2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtlcm5lbCBTY2hlZHVsZXIgRW5oYW5jZW1lbnRzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgbmV3IGtlcm5lbCBjb2RlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBzY2hlZHVsZXIgaW1wcm92ZW1lbnRzLiBJIHNlZSBzb21lIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kOiBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGFuZCBgREVCVUdfSU5GT19CVEZgLiBBbHJpZ2h0LCBnaXZlbiB0aG9zZSwgSSB0aGluayB3ZSBkZWZpbml0ZWx5IG5lZWQgdG8gYWRkIGBTQ0hFRF9DTEFTU19FWFRgIHRvIHRoZSBFbmFibGVDb25maWdzLiBUaGF0IGZlZWxzIHJpZ2h0LiBOb3csIGxldCdzIGNvbnNpZGVyIEZvY3VzU3ltYm9scy4uLiBJIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2lyY2xlIGJhY2sgdG8gdGhhdCBsYXRlci5cblxuVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGZ1bmN0aW9uLiBJdCdzIG1hcmtlZCBhcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJIHNob3VsZCB0cmFjayBkb3duIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIGhvdyBpdCdzIGludGVncmF0ZWQuIExldCdzIHNlZS4uLiBgdGFza193b2tlbl9zY3hgIGlzIHN0YXRpYywgYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gIGlzIGFsc28gc3RhdGljLCBhbmQgc28gaXMgYGRlZmVycmVkX2lycV93b3JrZm5gLiBIbW0sIGFsbCB0aGUgb25lcyBJIGluaXRpYWxseSBzZWUgYXJlIHN0YXRpYywgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJdCdzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgYXJlYSwgc28gbGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIHVzYWdlIG9mIGB0YXNrX3dva2VuX3NjeGAuIFRoaXMgd2lsbCBnaXZlIG1lIHNvbWUgY29udGV4dCwgYW5kIHRoZW4gSSBjYW4gcmUtZXhhbWluZSB0aGUgb3RoZXJzLiBUaGlzIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2OTEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDozMC4yNTI5NTY4MDFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzQzOTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRhc2tfd29rZW5fc2N4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDI1PXN0YXRpYyB2b2lkIHNjaGVkdWxlX2RlZmVycmVkX2xvY2tlZChzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDI5LVxcdC8qXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDMwOlxcdCAqIElmIGluIHRoZSBtaWRkbGUgb2Ygd2FraW5nIHVwIGEgdGFzaywgdGFza193b2tlbl9zY3goKSB3aWxsIGJlIGNhbGxlZFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTAzMS1cXHQgKiBhZnRlcndhcmRzIHdoaWNoIHdpbGwgdGhlbiBydW4gdGhlIGRlZmVycmVkIGFjdGlvbnMsIG5vIG5lZWQgdG9cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzQ1MT1zdGF0aWMgaW50IHNlbGVjdF90YXNrX3JxX3NjeChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBwcmV2X2NwdSwgaW50IHdha2VfZmxhZ3MpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MjMtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNTI0OnN0YXRpYyB2b2lkIHRhc2tfd29rZW5fc2N4KHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MjUte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00OTIwPURFRklORV9TQ0hFRF9DTEFTUyhleHQpID0ge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTMzLVxcdC5zZWxlY3RfdGFza19ycVxcdFxcdD0gc2VsZWN0X3Rhc2tfcnFfc2N4LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDkzNDpcXHQudGFza193b2tlblxcdFxcdD0gdGFza193b2tlbl9zY3gsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTM1LVxcdC5zZXRfY3B1c19hbGxvd2VkXFx0PSBzZXRfY3B1c19hbGxvd2VkX3NjeCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MzAuMjk2MzAyNzMxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODk0NjU0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBTY2hlZHVsZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGllY2Ugb2YgY29kZSwgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0J3MgcGFydCBvZiB0aGUgYGV4dGAgc2NoZWQgY2xhc3MuIFRoYXQncyBhIGtleSBwaWVjZSBvZiBjb250ZXh0LiBOb3csIHdoYXQncyByZWxhdGVkIHRvIHRoaXM/IEkgaGF2ZSB0byBjb25zaWRlciB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFdoYXQgaXMgdGhpcyBtb2R1bGUgc3VwcG9zZWQgdG8gZG8/IFdoYXQncyB0aGUgc2NoZWR1bGluZyBzdHJhdGVneSBpdCBlbXBsb3lzPyBXaGF0IG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0gaW50ZXJhY3Qgd2l0aCBpdD8gUmlnaHQgbm93LCBteSBtaW5kIGdvZXMgdG8gYSBzcGVjaWZpYyBmdW5jdGlvbiAtIGBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuYC4gSXMgdGhpcyByZWxldmFudD8gSXMgdGhpcyAqdGhlKiB3b3JrIGZ1bmN0aW9uLCBvciBpcyBpdCByZWxhdGVkLCBvciBhIHBhcnQgb2YgYSBsYXJnZXIsIGNvb3JkaW5hdGVkIHNldCBvZiBmdW5jdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgc3lzdGVtLCBhbmQgdGhhdCdzIHRoZSBuZXh0IHN0ZXAgSSBoYXZlIHRvIHRha2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTI5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6MzMuNTg1NzcxODEyWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzAyNDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz05Njk9Ym9vbCBzY3hfY3B1X3ZhbGlkKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgczMyIGNwdSwgY29uc3QgY2hhciAqd2hlcmUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3OC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk3OTpzdGF0aWMgdm9pZCBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuKHN0cnVjdCBycSAqcnEpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODAte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0yOTUwPXN0YXRpYyBpbmxpbmUgdm9pZCBtYXliZV9xdWV1ZV9iYWxhbmNlX2NhbGxiYWNrKHN0cnVjdCBycSAqcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI5NTctXFx0cXVldWVfYmFsYW5jZV9jYWxsYmFjayhycSwgXFx1MDAyNnJxLVxcdTAwM2VzY3guZGVmZXJyZWRfYmFsX2NiLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mjk1ODpcXHRcXHRcXHRcXHRkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI5NTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjMzLjYyODgwMTA3MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzUwMTYxMTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSd2ZSBkZXNjcmliZWQ6XG5cbioqQ29uc2lkZXJpbmcgRGVmZXJyZWQgSW50ZXJydXB0IEhhbmRsZXJzKipcblxuQWxyaWdodCwgbGV0J3MgdGhpbmsgdGhpcyB0aHJvdWdoLiBNeSBmb2N1cyBpcyBhbHdheXMgb24gb3B0aW1pemVkIGtlcm5lbCBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSBhcm91bmQgaW50ZXJydXB0IGhhbmRsaW5nLiBJJ20gZGVlcCBpbiB0aGUgd2VlZHMgcmlnaHQgbm93LCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBhcHByb2FjaCBmb3IgYSBwYXJ0aWN1bGFyIHByb2JsZW0uIEFuZCByaWdodCBub3csIHRoZSBxdWVzdGlvbiB0aGF0J3MganVtcGluZyB0byB0aGUgZm9yZWZyb250IGlzOiB3aGF0IGFib3V0IGBkZWZlcnJlZF9pcnFfd29ya2ZuYD8gSXMgdGhpcyBmdW5jdGlvbiwgZGVzaWduZWQgdG8gZGVmZXIgaW50ZXJydXB0LXJlbGF0ZWQgd29yaywgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoZSBqb2IgaGVyZT8gSXQgc2VlbXMgbGlrZSBpdCBjb3VsZCBvZmZlciBhIHBhdGggdG93YXJkIG1vcmUgcHJlZGljdGFibGUgcGVyZm9ybWFuY2UsIGFuZCBhIHdheSB0byBhdm9pZCBhbnkgcG90ZW50aWFsIGJsb2NraW5nIHdpdGhpbiB0aGUgaW50ZXJydXB0IGNvbnRleHQuIEkgbmVlZCB0byB3ZWlnaCB0aGUgcHJvcyBhbmQgY29ucyBjYXJlZnVsbHksIGNvbnNpZGVyaW5nIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgZGF0YSBpbnZvbHZlZC4gV2hhdCdzIHRoZSBsYXRlbmN5IGltcGFjdCBvZiB1c2luZyB0aGlzIHBhcnRpY3VsYXIgZGVmZXJyZWQgd29yayBtZWNoYW5pc20/IEFuZCB3aGF0J3MgdGhlIHRocmVhZGluZyBtb2RlbCBoZXJlPyBJcyBpdCBhcHByb3ByaWF0ZSBmb3IgdGhlIHRhc2sgYXQgaGFuZD8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIHN1aXRhYmlsaXR5LiBJIG5lZWQgdG8gZGl2ZSBkZWVwZXIgaW50byBpdHMgaW1wbGVtZW50YXRpb24gYW5kIGJlbmNobWFyayBpdCBhZ2FpbnN0IG90aGVyIG9wdGlvbnMgdG8gc2VlIGlmIHRoaXMgaXMgdGhlIGJlc3QsIG1vc3QgZWxlZ2FudCwgYW5kIG1vc3QgcGVyZm9ybWFudCBzb2x1dGlvbi4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAwMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjM3Ljk3ODk2NDc0WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzg5NTg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZlcnJlZF9pcnFfd29ya2ZuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz05Nzk9c3RhdGljIHZvaWQgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbihzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05ODMtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5ODQ6c3RhdGljIHZvaWQgZGVmZXJyZWRfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTg1LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODU3Nj12b2lkIF9faW5pdCBpbml0X3NjaGVkX2V4dF9jbGFzcyh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NjA4LVxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZycS1cXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg2MDk6XFx0XFx0cnEtXFx1MDAzZXNjeC5kZWZlcnJlZF9pcnFfd29yayA9IElSUV9XT1JLX0lOSVRfSEFSRChkZWZlcnJlZF9pcnFfd29ya2ZuKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2MTAtXFx0XFx0cnEtXFx1MDAzZXNjeC5raWNrX2NwdXNfaXJxX3dvcmsgPSBJUlFfV09SS19JTklUX0hBUkQoa2lja19jcHVzX2lycV93b3JrZm4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDozOC4wMjI4NjM1M1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY4MDE1NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipBbmFseXppbmcgYHJ1bl9kZWZlcnJlZGAgQ2FsbHNpdGVzKipcblxuQWxyaWdodCwgbGV0J3MgdHJhY2UgdGhpcy4gU28gYHJ1bl9kZWZlcnJlZGAgZ2V0cyBjYWxsZWQgZnJvbSAqdGhlc2UqIHBsYWNlcy4gT2theSwgZ290IGl0LiBIbW0sIG5vdyB3aGF0J3MgdGhlIG1vc3QgcHJvZHVjdGl2ZSBhcHByb2FjaCB0byBkaWcgaW4gaGVyZSwgd2hlcmUgdG8gZm9jdXM/IEhtbW0sIGlzIHRoZXJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiBhbW9uZ3N0IGFsbCB0aGVzZSBjYWxscyB0aGF0IHdlIGNhbiByZWFsbHkgZHJpbGwgaW50bz8gSSB0aGluayB0aGF0J3MgdGhlIGJlc3Qgd2F5IHRvIG1vdmUgZm9yd2FyZC4gTGV0J3Mgc2VlIGlmIHdlIGNhbiB1c2UgYHNjeF9icGZfa2lja19jcHVgIHRvIG1vdmUgZm9yd2FyZCBpbiBvdXIgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1NzAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDo0MC45OTA4ODE5ODJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTgxNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjeF9icGZfa2lja19jcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTg3MDU9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQwLSAqICVTQ1hfU0xJQ0VfSU5GLCBAcCBuZXZlciBleHBpcmVzIGFuZCB0aGUgQlBGIHNjaGVkdWxlciBtdXN0IGtpY2sgdGhlIENQVSB3aXRoXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NzQxOiAqIHNjeF9icGZfa2lja19jcHUoKSB0byB0cmlnZ2VyIHNjaGVkdWxpbmcuXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQyLSAqXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk0MjU9dm9pZCBzY3hfa2lja19jcHUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzMzIgY3B1LCB1NjQgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0MzUtXFx0aWYgKHVubGlrZWx5KGluX25taSgpKSkge1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTQzNjpcXHRcXHRzY3hfZXJyb3Ioc2NoLCBcXFwic2N4X2JwZl9raWNrX2NwdSgpIGNhbGxlZCBmcm9tIE5NSVxcXCIpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTQzNy1cXHRcXHRyZXR1cm47XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0OTEtLyoqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NDkyOiAqIHNjeF9icGZfa2lja19jcHUgLSBUcmlnZ2VyIHJlc2NoZWR1bGUgb24gYSBDUFVcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk0OTMtICogQGNwdTogY3B1IHRvIGtpY2tcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUwMS0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk1MDI6X19icGZfa2Z1bmMgdm9pZCBzY3hfYnBmX2tpY2tfY3B1KHMzMiBjcHUsIHU2NCBmbGFncywgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUwMy17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1MTctICpcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk1MTg6ICogY2lkLWFkZHJlc3NlZCBlcXVpdmFsZW50IG9mIHNjeF9icGZfa2lja19jcHUoKS4gQW4gaW52YWxpZCBAY2lkIGFib3J0cyB0aGVcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1MTktICogc2NoZWR1bGVyIHZpYSBzY3hfY2lkX3RvX2NwdSgpLiBDYXBzIGFyZSBlbmZvcmNlZCBvbiB0aGUgZGVsaXZlcnkgcGF0aDogYVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDU4Nj1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX3NldF9kc3FfdnRpbWUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA1ODc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfa2lja19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDU4OC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NpZCwgS0ZfSU1QTElDSVRfQVJHUylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA2NTI9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2NwdV9vbmx5KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA2NTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfa2lja19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY1NC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX2NwdSwgS0ZfUkNVKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDo0MS4wMzU0Njc0NzFaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5ODg4ODk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGNvZGU6XG5cbioqVGhpbmtpbmcgVGhyb3VnaCB0aGUgU2NoZWR1bGVyIGFuZCBEZWZlcnJlZCBXb3JrKipcblxuT2theSwgc28gYHNjeF9icGZfa2lja19jcHVgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGluaXRpYXRlcyBhIENQVSByZXNjaGVkdWxlLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgaW1wbGljYXRpb25zLiBNeSBwcmltYXJ5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgYWxzbyB0cmlnZ2VycyBgcnVuX2RlZmVycmVkYC4gSSBrbm93IGBzY3hfa2lja19jcHVgIGlzIGludm9sdmVkIGhlcmUsIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uJ3MgaW1wbGVtZW50YXRpb24gdG8gYmUgY2VydGFpbi4gTGV0IG1lIHN0YXJ0IHRoZXJlIGFuZCBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBwYXRoLiBJIG5lZWQgdG8ga25vdyBwcmVjaXNlbHkgd2hhdCdzIGRlZmVycmVkIGFuZCBob3cuIFVuZGVyc3RhbmRpbmcgdGhlIGludGVycGxheSBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBpcyBjcnVjaWFsIGZvci4uLiBbdGhlIHVzZXIgY2FuIGZpbGwgaW4gdGhlIHB1cnBvc2UgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0XS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1NjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNDo0NS4yMzQzNTk5MVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0MzY0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N4X2tpY2tfY3B1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz01OTMzPXN0YXRpYyB2b2lkIHVuYnlwYXNzX3Jlbm90aWZ5X2lkbGUoc3RydWN0IHJxICpycSwgc3RydWN0IHNjeF9zY2hlZCAqcG9zLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01OTcyLSAqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1OTczOiAqIC0gc2N4X2tpY2tfY3B1KCkgaXMgZGlzYWJsZWQgdG8gYXZvaWQgaXJxX3dvcmsgbWFsZnVuY3Rpb24gZHVyaW5nIFBNXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01OTc0LSAqICAgb3BlcmF0aW9ucy5cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODQ0Mj1zdGF0aWMgdm9pZCBraWNrX2NwdXNfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NDU4LVxcdC8qXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NDU5OlxcdCAqIFdhbGsgc2NoZWRzIHdpdGggcGVuZGluZyBraWNrcyBvbiB0aGlzIGNwdS4gc2N4X2tpY2tfY3B1KCkgYWRkcyB0b1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODQ2MC1cXHQgKiB0aGUgbGlzdCB1bmRlciBsb2NhbF9pcnFfc2F2ZSgpIGFuZCBvbmx5IHRoaXMgaXJxX3dvcmsgY29uc3VtZXMgaXQuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk0MTE9X19icGZfa2Z1bmMgYm9vbCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCB2dGltZSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTQyNC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk0MjU6dm9pZCBzY3hfa2lja19jcHUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzMzIgY3B1LCB1NjQgZmxhZ3MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NDI2LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTUwMj1fX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfa2lja19jcHUoczMyIGNwdSwgdTY0IGZsYWdzLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1MDgtXFx0aWYgKGxpa2VseShzY2gpIFxcdTAwMjZcXHUwMDI2IHNjeF9jcHVfdmFsaWQoc2NoLCBjcHUsIE5VTEwpKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTUwOTpcXHRcXHRzY3hfa2lja19jcHUoc2NoLCBjcHUsIGZsYWdzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1MTAtfVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NTI0PV9fYnBmX2tmdW5jIHZvaWQgc2N4X2JwZl9raWNrX2NpZChzMzIgY2lkLCB1NjQgZmxhZ3MsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUzNS1cXHRcXHRyZXR1cm47XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NTM2OlxcdHNjeF9raWNrX2NwdShzY2gsIGNwdSwgZmxhZ3MpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTUzNy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjQ1LjI3NzgwMDU4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDk1MzM1MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZWZlcnJlZCBSZS1lbnF1ZXVlIFByb2Nlc3MgaW4gdGhlIEtlcm5lbCoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHJlLWVucXVldWUgcHJvY2VzcyB3b3Jrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBhbmQgY2hlY2sgdGhlIGBzY3hfYnBmX2Rpc3BhdGNoYCBmdW5jdGlvbiBvciBzb21ldGhpbmcgc2ltaWxhci4gV2hlcmUgaXMgdGhlIG1hZ2ljIGhhcHBlbmluZz8gT2theSwgSSBzZWUgdGhhdCBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgaXMgdGhlIGtleS4gQnV0IHdoYXQgdHJpZ2dlcnMgdGhhdCBmdW5jdGlvbj8gSXQgbG9va3MgbGlrZSBgcnVuX2RlZmVycmVkYCBpcyByZXNwb25zaWJsZSBmb3IgcHJvY2Vzc2luZyBgcnEtXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzYC4gSSdtIGdldHRpbmcgY2xvc2VyLi4uIFNvIG5vdyB0aGUgcXVlc3Rpb24gaXM6IHdoZXJlIGFyZSBpdGVtcyBpbml0aWFsbHkgKmFkZGVkKiB0byB0aGlzIGBkZWZlcnJlZF9yZWVucV91c2Vyc2Agc3RydWN0dXJlPyBUaGF0J3MgdGhlIG1pc3NpbmcgcGllY2Ugb2YgdGhlIHB1enpsZSBJIG5lZWQgdG8gZmluZCB0aGUgY2F1c2Ugb2YgdGhlIHByb2JsZW0uIFRpbWUgdG8gZGlnIGRlZXBlci4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQ0NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjQ5LjMyNzMzNjg3OFoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyODU1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVmZXJyZWRfcmVlbnFfdXNlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNjU9dm9pZCBzY2hlZHVsZV9kc3FfcmVlbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTExNi1cXHRcXHQvKlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTExNzpcXHRcXHQgKiBQYWlycyB3aXRoIHNtcF9tYigpIGluIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBhbmRcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMTgtXFx0XFx0ICogZ3VhcmFudGVlcyB0aGF0IHRoZXJlIGlzIGEgcmVlbnFfdXNlcigpIGFmdGVyd2FyZHMuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMjctXFx0XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmRydS1cXHUwMDNlbm9kZSkpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMTI4OlxcdFxcdFxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZkcnUtXFx1MDAzZW5vZGUsIFxcdTAwMjZycS1cXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMjktXFx0XFx0XFx0V1JJVEVfT05DRShkcnUtXFx1MDAzZWZsYWdzLCBkcnUtXFx1MDAzZWZsYWdzIHwgcmVlbnFfZmxhZ3MpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NDM0PXN0YXRpYyB2b2lkIHJlZW5xX3VzZXIoc3RydWN0IHJxICpycSwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EsIHU2NCByZWVucV9mbGFncylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUwNC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1MDU6c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUwNi17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MTQtXFx0XFx0XFx0c3RydWN0IHNjeF9kZWZlcnJlZF9yZWVucV91c2VyICpkcnUgPVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDUxNTpcXHRcXHRcXHRcXHRsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXFx1MDAyNnJxLVxcdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTE2LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2N4X2RlZmVycmVkX3JlZW5xX3VzZXIsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1NDE9c3RhdGljIHZvaWQgcnVuX2RlZmVycmVkKHN0cnVjdCBycSAqcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1NDctXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NTQ4OlxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2cnEtXFx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2VycykpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NTQ5OlxcdFxcdHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMocnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDU1MC1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODU3Nj12b2lkIF9faW5pdCBpbml0X3NjaGVkX2V4dF9jbGFzcyh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NjA3LVxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZycS1cXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX2xvY2Fscyk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NjA4OlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZycS1cXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2MDktXFx0XFx0cnEtXFx1MDAzZXNjeC5kZWZlcnJlZF9pcnFfd29yayA9IElSUV9XT1JLX0lOSVRfSEFSRChkZWZlcnJlZF9pcnFfd29ya2ZuKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6NDkuMzcxNjI1MTY4WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNzgyNDEwMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOlxuXG4qKkFuYWx5emluZyB0aGUgUmUtZW5xdWV1ZSBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyBgc2NoZWR1bGVfZHNxX3JlZW5xYCBpcyBjbGVhcmx5IG1lYW50IHRvIGFkZCBzb21ldGhpbmcgdG8gYGRlZmVycmVkX3JlZW5xX3VzZXJzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IFwic29tZXRoaW5nXCIgaXMsIGFuZCBtb3JlIGltcG9ydGFudGx5LCB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2Ygd2h5IHdlJ3JlIGRlZmVycmluZyByZS1lbnF1ZXVpbmcgaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGF0IHZhcmlhYmxlIG5hbWUsIGBkZWZlcnJlZF9yZWVucV91c2Vyc2AsIGltcGxpZXMgdGhlcmUgYXJlIHVzZXJzLiBTbywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aGF0IGNyaXRlcmlhIG11c3QgYSB1c2VyIG1lZXQgdG8gYmUgZGVmZXJyZWQ/IElzIHRoZSBpc3N1ZSByZWxhdGVkIHRvIGNhcGFjaXR5LCB0cmFuc2llbnQgZXJyb3JzLCBvciBhIG1vcmUgY29tcGxleCBidXNpbmVzcyBydWxlP1xuXG5NeSBpbW1lZGlhdGUgZm9sbG93LXVwIHF1ZXN0aW9uIGlzLCB3aGVyZSBpbiB0aGUgY29kZWJhc2UgaXMgYHNjaGVkdWxlX2RzcV9yZWVucWAgYWN0dWFsbHkgYmVpbmcgKmNhbGxlZCo/IEZpbmRpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2VyIGNvbmRpdGlvbnMgZm9yIHRoaXMgZGVmZXJyZWQgcmUtZW5xdWV1ZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgaWRlbnRpZnkgdGhlIHNjZW5hcmlvcyB0aGF0IGxlYWQgdG8gY2FsbGluZyB0aGF0IGZ1bmN0aW9uLiBJcyBpdCBwYXJ0IG9mIGEgcmV0cnkgbG9naWMsIGEgcmF0ZS1saW1pdGluZyBtZWNoYW5pc20sIG9yIHNvbWV0aGluZyBlbnRpcmVseSBkaWZmZXJlbnQ/IFdpdGhvdXQgdGhhdCBjb250ZXh0LCBJIGNhbid0IGRldGVybWluZSBpZiB0aGlzIG1lY2hhbmlzbSBpcyBvcHRpbWFsLCBlZmZpY2llbnQsIG9yIHBvdGVudGlhbGx5IGludHJvZHVjaW5nIHByb2JsZW1zLiBJIG5lZWQgdG8gZm9sbG93IHRoZSBjYWxsIHN0YWNrIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93IG9mIGNvbnRyb2wuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NDU3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDQ6NTQuNjQ5ODY4MTY0WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY2Mjg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hlZHVsZV9kc3FfcmVlbnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMjU9c3RhdGljIHZvaWQgc2NoZWR1bGVfZGVmZXJyZWRfbG9ja2VkKHN0cnVjdCBycSAqcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNjQtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDY1OnZvaWQgc2NoZWR1bGVfZHNxX3JlZW5xKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDY2LVxcdFxcdFxcdHU2NCByZWVucV9mbGFncywgc3RydWN0IHJxICpsb2NrZWRfcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQzODk9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV9sb2NhbHMoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDQyMC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ0MjE6XFx0XFx0Lyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NDIyLVxcdFxcdHNtcF9tYigpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NTA1PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUzMC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1MzE6XFx0XFx0Lyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTMyLVxcdFxcdHNtcF9tYigpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NzQyPV9fYnBmX2tmdW5jIHZvaWQgc2N4X2JwZl9kc3FfcmVlbnEodTY0IGRzcV9pZCwgdTY0IHJlZW5xX2ZsYWdzLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzYzLVxcdGRzcSA9IGZpbmRfZHNxX2Zvcl9kaXNwYXRjaChzY2gsIHRoaXNfcnEoKSwgZHNxX2lkLCBzbXBfcHJvY2Vzc29yX2lkKCkpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc2NDpcXHRzY2hlZHVsZV9kc3FfcmVlbnEoc2NoLCBkc3EsIHJlZW5xX2ZsYWdzLCBzY3hfbG9ja2VkX3JxKCkpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc2NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjU0LjY5NDUzMzY1M1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA2NjA2NDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHNjeF9icGZfZHNxX3JlZW5xYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBpdCBjYWxscyBgc2NoZWR1bGVfZHNxX3JlZW5xYCwgYW5kIEkgc2VlIGl0J3MgZGVmaW5lZCBhcyBhIEJQRiBrZnVuYy4gVGhpcyBpcyBpbnRlcmVzdGluZy4gVGhpcyBtZWFucyBhIEJQRiBwcm9ncmFtIGNhbiBjYWxsIGBzY3hfYnBmX2RzcV9yZWVucWAsIHdoaWNoIGluIHR1cm4gYWRkcyBzb21ldGhpbmcgdG8gYGRlZmVycmVkX3JlZW5xX3VzZXJzYC4gVGhlbiwgbGF0ZXIsIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBjb21lcyBhbG9uZyBhbmQgcHJvY2Vzc2VzIHRob3NlIHVzZXJzIHZpYSBgcnVuX2RlZmVycmVkYC5cblxuTXkgaW50dWl0aW9uIGlzIHNjcmVhbWluZyBcInBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiFcIiBiZWNhdXNlIEkgc2VlIGEgc2l0dWF0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCAqbWlnaHQqIGludmFsaWRhdGUgdGhlIGBkc3FgIG9iamVjdCAqYmVmb3JlKiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgZ2V0cyBhIGNoYW5jZSB0byBydW4uIFRoYXQncyBwcmVjaXNlbHkgdGhlIHR5cGUgb2Ygc2NlbmFyaW8gSSdtIGxvb2tpbmcgZm9yLiBTbywgYHNjeF9icGZfZHNxX3JlZW5xYCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGEgRm9jdXNTeW1ib2wsIGFuZCwgc2luY2UgaXQncyBhIGtmdW5jLCBpdCdzIGEgZ3JlYXQgZW50cnkgcG9pbnQgdG8gc3RhcnQgbG9va2luZyBhdC5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBpdCdzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCB3b3VsZCBiZSBhbiBvYnZpb3VzIGJsb2NrZXIgdG8gbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1Mjg4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA0OjU5LjUwMTE0MzAxWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzYxMjQ5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N4X2JwZl9kc3FfcmVlbnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk3MDM9X19icGZfa2Z1bmMgc3RydWN0IHRhc2tfc3RydWN0ICpzY3hfYnBmX2RzcV9wZWVrKHU2NCBkc3FfaWQsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3MjctLyoqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzI4OiAqIHNjeF9icGZfZHNxX3JlZW5xIC0gUmUtZW5xdWV1ZSB0YXNrcyBvbiBhIERTUVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyOS0gKiBAZHNxX2lkOiBEU1EgdG8gcmUtZW5xdWV1ZVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzQxLSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc0MjpfX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZHNxX3JlZW5xKHU2NCBkc3FfaWQsIHU2NCByZWVucV9mbGFncyxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3NDMtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05Nzc0LSAqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5Nzc1OiAqIFRoaXMgaXMgbm93IGEgc3BlY2lhbCBjYXNlIG9mIHNjeF9icGZfZHNxX3JlZW5xKCkgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc3Ni0gKiBmdXR1cmUuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk3Nzg9X19icGZfa2Z1bmMgdm9pZCBzY3hfYnBmX3JlZW5xdWV1ZV9sb2NhbF9fX3YyKGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3Nzkte1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTc4MDpcXHRzY3hfYnBmX2RzcV9yZWVucShTQ1hfRFNRX0xPQ0FMLCAwLCBhdXgpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTc4MS19XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNTkxPUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9wZWVrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVX1BST1RFQ1RFRCB8IEtGX1JFVF9OVUxMKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA1OTI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3JlZW5xLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA1OTMtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsX19fdjIsIEtGX0lNUExJQ0lUX0FSR1MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA1OjAwLjEzNzI3Mjg0OFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTY4ODAyOTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFNRIERlc3RydWN0aW9uIFJhY2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERTUSBpc3N1ZSBhbmQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgeWVzLCBgc2N4X2JwZl9kc3FfcmVlbnFgIGlzIGRlZmluaXRlbHkgYSBrZnVuYywgYW5kIGNydWNpYWxseSwgaXQncyBub24tc3RhdGljLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHJlY2FsbCBhbm90aGVyIG9uZSByZWxhdGVkIHRvIHJlLWVucXVldWVpbmcgaXMgYHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsX19fdjJgLiBOb3csIHRoZSBwcm9ibGVtIGRlc2NyaXB0aW9uIGlzIHNwZWNpZmljYWxseSBwb2ludGluZyBhdCBhIHJhY2UgY29uZGl0aW9uIGR1cmluZyBgZGVzdHJveV9kc3EoKWAuIFJpZ2h0LCB0aGF0IGZ1bmN0aW9uIGdldHMgaW52b2tlZCB3aGVuIGEgRFNRIGlzLCB3ZWxsLCBkZXN0cm95ZWQuIFNlZW1zIGxvZ2ljYWwuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGZvciBgZGVzdHJveV9kc3EoKWAgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kIHRoYXQgbWlnaHQgYmUgY2F1c2luZyB0aGlzIHJhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBtZWNoYW5pY3Mgb2YgaXRzIG9wZXJhdGlvbiB0byBpZGVudGlmeSB0aGUgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYzOTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNTowNS4zMDYwNzg5NDNaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzM1MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlc3Ryb3lfZHNxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz00NTA1PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDUzMy1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ1MzQ6XFx0XFx0LyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTM1LVxcdFxcdGlmICh1bmxpa2VseShkc3EtXFx1MDAzZWlkIFxcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01MDE5PXN0YXRpYyBERUZJTkVfSVJRX1dPUksoZnJlZV9kc3FfaXJxX3dvcmssIGZyZWVfZHNxX2lycV93b3JrZm4pO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAyMC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjUwMjE6c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAyMi17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTUyMzA9c3RhdGljIHZvaWQgc2N4X3NjaGVkX2ZyZWVfcmN1X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01Mjk1LVxcdFxcdHdoaWxlICghSVNfRVJSX09SX05VTEwoKGRzcSA9IHJoYXNodGFibGVfd2Fsa19uZXh0KFxcdTAwMjZyaHRfaXRlcikpKSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjUyOTY6XFx0XFx0XFx0ZGVzdHJveV9kc3Eoc2NoLCBkc3EtXFx1MDAzZWlkKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUyOTctXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk1NDc9X19icGZfa2Z1bmMgczMyIHNjeF9icGZfZHNxX25yX3F1ZXVlZCh1NjQgZHNxX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk1ODQtLyoqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NTg1OiAqIHNjeF9icGZfZGVzdHJveV9kc3EgLSBEZXN0cm95IGEgY3VzdG9tIERTUVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU4Ni0gKiBAZHNxX2lkOiBEU1EgdG8gZGVzdHJveVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTkzLSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTU5NDpfX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZGVzdHJveV9kc3EodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU5NS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk2MDAtXFx0aWYgKHNjaClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk2MDE6XFx0XFx0ZGVzdHJveV9kc3Eoc2NoLCBkc3FfaWQpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTYwMi19XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNTg5PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9ucl9xdWV1ZWQsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDU5MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kZXN0cm95X2RzcSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNTkxLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9wZWVrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVX1BST1RFQ1RFRCB8IEtGX1JFVF9OVUxMKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNTowNS4zNTA0MTczNDNaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE0OTE1Nzg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSYWNlIENvbmRpdGlvbiBpbiB0aGUgRXh0ZW5zaWJsZSBTY2hlZHVsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgZml4IHJlbGF0ZWQgdG8gdGhlIGV4dGVuc2libGUgc2NoZWR1bGVyIChzY2hlZF9leHQpIGFuZCBhIGN1c3RvbSBkaXNwYXRjaCBxdWV1ZSAoRFNRKS4gSXQgbG9va3MgbGlrZSBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyByZXNwb25zaWJsZSBmb3IgZGVzdHJveWluZyB0aGUgRFNRLiBUaGUgY29yZSBpc3N1ZSBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIHRoaXMgZGVzdHJ1Y3Rpb24gcHJvY2VzcyBhbmQgdGhlIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucyBtYW5hZ2VkIGJ5IGBzY3hfYnBmX2RzcV9yZWVucWAuXG5cblRoZXJlZm9yZSwgbXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2UgdHdvIGZ1bmN0aW9uczogYHNjeF9icGZfZHNxX3JlZW5xYCBhbmQgYHNjeF9icGZfZGVzdHJveV9kc3FgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXkncmUgYmVoYXZpbmcgY29ycmVjdGx5IGluIHRoZSBmYWNlIG9mIGVhY2ggb3RoZXIuIEkndmUgYWxyZWFkeSBjb25maXJtZWQgdGhleSBhcmUgYm90aCBub24tc3RhdGljIGFuZCBleHBvcnRlZCwgc3BlY2lmaWNhbGx5IGBfX2JwZl9rZnVuY2AsIG1lYW5pbmcgdGhleSBhcmUgYWNjZXNzaWJsZSB0byBCUEYgY29kZSwgYW5kIHRoZXJlZm9yZSB0aGlzIHJhY2UgaXMgYSBnZW51aW5lIGNvbmNlcm4uXG5cbkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIGNyaXRpY2FsIHJhY2UgY29uZGl0aW9uIHdpdGhpbiB0aGUgY29yZSBzY2hlZHVsaW5nIGxvZ2ljIG9mIHNjaGVkX2V4dC4gVGhpcyBpcyB0aGUgcGxhY2UgdG8gYmUsIHRvIGxvb2sgdG8gYmUgZnV6emluZy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgaW4gdXNlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQuIFdlIGRlZmluaXRlbHkgbmVlZCBgU0NIRURfQ0xBU1NfRVhUYC4gYEJQRl9TWVNDQUxMYCBhbmQgYERFQlVHX0lORk9fQlRGYCBhcmUgdXN1YWxseSBzdGFuZGFyZCBmb3IgYW55IEJQRiBmdXp6aW5nIHNldHVwIGFueXdheSwgc28gSSdsbCBhc3N1bWUgdGhvc2UgYXJlIGluIHBsYWNlLiBUaGVyZWZvcmUsIGBTQ0hFRF9DTEFTU19FWFRgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiB0byBlbmFibGUsIGFuZCBJJ2xsIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IGZ1cnRoZXIgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzUyMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNToxMi40OTk1NzczMjNaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODM3ODcxNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL0tjb25maWcucHJlZW1wdD0xNTE9Y29uZmlnIFNDSEVEX0NPUkVcXG4tLVxcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTY4LVxcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQ6MTY5OmNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3MC1cXHRib29sIFxcXCJFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA1OjEzLjk4MzM3MjA5OVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTY5MzA5ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NoZWR1bGVyIENsYXNzIEV4dGVuc2lvbiBSYWNlIENvbmRpdGlvbioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMuIElzIGBTQ0hFRF9DTEFTU19FWFRgIHRydWx5IHRoZSAqb25seSogc2NoZWR1bGVyIGNsYXNzIGV4dGVuc2lvbiB3ZSBuZWVkIHRvIGNvbnNpZGVyIGhlcmU/IFllcywgdGhhdCBjaGVja3Mgb3V0LiBHb29kLiBOb3csIGxldCdzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGlzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gVGltZSB0byByZXZpZXcgdGhlIGBGb2N1c1N5bWJvbHNgLlxuXG5SaWdodCwgc28gd2UgaGF2ZSBgc2N4X2JwZl9kc3FfcmVlbnFgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAuIFRob3NlIGFyZSB0aGUgQlBGIGtmdW5jcyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIHdob2xlIGlzc3VlLiBXZSBuZWVkIHRvIGJlIHByZWNpc2UgYWJvdXQgaG93IHRoZXkgaW50ZXJhY3QgYW5kIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXR5IGxpZXMuXG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIHNlcXVlbmNlOiBGaXJzdCwgYHNjeF9icGZfZHNxX3JlZW5xYCBnZXRzIGNhbGxlZC4gVGhpcyBmdW5jdGlvbiBhZGRzIGEgYHNjeF9kZWZlcnJlZF9yZWVucV91c2VyYCB0byBgcnEtXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzYC4gVGhhdCdzIHRoZSBlbnF1ZXVpbmcgc2lkZS4gVGhlbiwgY29uY3VycmVudGx5LCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgY2FsbGVkLiBBaCwgcmlnaHQuIFRoaXMgZGVzdHJveXMgdGhlIERTUS4gVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBEU1EncyBJRCB0byBgU0NYX0RTUV9GTEFHX0JVSUxUSU5gLi4uIGhvbGQgb24sIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IHBhcnQuIEFoLCB0aGUgcGF0Y2ggbm90ZXMgY2xlYXJseSBpbmRpY2F0ZSB0aGF0IHRoZSBEU1EncyBJRCBpcyBzZXQgYnkgYGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU5gLiBCZXN0IHRvIHZlcmlmeSBleGFjdGx5IHdoYXQgYGRlc3Ryb3lfZHNxYCBkb2VzIGludGVybmFsbHksIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg0MjYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDU6MTkuMTUyNjg0OTA1WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NDY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwMjEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjUwMjE6XFx0c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxcbjUwMjI6XFx0e1xcbjUwMjM6XFx0XFx0c3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3E7XFxuNTAyNDpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbjUwMjU6XFx0XFxuNTAyNjpcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuNTAyNzpcXHRcXG41MDI4OlxcdFxcdGRzcSA9IGZpbmRfdXNlcl9kc3Eoc2NoLCBkc3FfaWQpO1xcbjUwMjk6XFx0XFx0aWYgKCFkc3EpXFxuNTAzMDpcXHRcXHRcXHRnb3RvIG91dF91bmxvY2tfcmN1O1xcbjUwMzE6XFx0XFxuNTAzMjpcXHRcXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRzcS1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbjUwMzM6XFx0XFxuNTAzNDpcXHRcXHRpZiAoZHNxLVxcdTAwM2Vucikge1xcbjUwMzU6XFx0XFx0XFx0c2N4X2Vycm9yKHNjaCwgXFxcImF0dGVtcHRpbmcgdG8gZGVzdHJveSBpbi11c2UgZHNxIDB4JTAxNmxseCAobnI9JXUpXFxcIixcXG41MDM2OlxcdFxcdFxcdFxcdCAgZHNxLVxcdTAwM2VpZCwgZHNxLVxcdTAwM2Vucik7XFxuNTAzNzpcXHRcXHRcXHRnb3RvIG91dF91bmxvY2tfZHNxO1xcbjUwMzg6XFx0XFx0fVxcbjUwMzk6XFx0XFxuNTA0MDpcXHRcXHRpZiAocmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcXHUwMDI2c2NoLVxcdTAwM2Vkc3FfaGFzaCwgXFx1MDAyNmRzcS1cXHUwMDNlaGFzaF9ub2RlLFxcbjUwNDE6XFx0XFx0XFx0XFx0XFx0ICAgZHNxX2hhc2hfcGFyYW1zKSlcXG41MDQyOlxcdFxcdFxcdGdvdG8gb3V0X3VubG9ja19kc3E7XFxuNTA0MzpcXHRcXG41MDQ0OlxcdFxcdC8qXFxuNTA0NTpcXHRcXHQgKiBNYXJrIGRlYWQgYnkgaW52YWxpZGF0aW5nIC1cXHUwMDNlaWQgdG8gcHJldmVudCBzY3hfZGlzcGF0Y2hfZW5xdWV1ZSgpIGZyb21cXG41MDQ2OlxcdFxcdCAqIHF1ZXVlaW5nIG1vcmUgdGFza3MuIEFzIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIGFueXdoZXJlLFxcbjUwNDc6XFx0XFx0ICogZnJlZWluZyBpcyBib3VuY2VkIHRocm91Z2ggYW4gaXJxIHdvcmsgdG8gYXZvaWQgbmVzdGluZyBSQ1VcXG41MDQ4OlxcdFxcdCAqIG9wZXJhdGlvbnMgaW5zaWRlIHNjaGVkdWxlciBsb2Nrcy5cXG41MDQ5OlxcdFxcdCAqL1xcbjUwNTA6XFx0XFx0ZHNxLVxcdTAwM2VpZCA9IFNDWF9EU1FfSU5WQUxJRDtcXG41MDUxOlxcdFxcdGlmIChsbGlzdF9hZGQoXFx1MDAyNmRzcS1cXHUwMDNlZnJlZV9ub2RlLCBcXHUwMDI2ZHNxc190b19mcmVlKSlcXG41MDUyOlxcdFxcdFxcdGlycV93b3JrX3F1ZXVlKFxcdTAwMjZmcmVlX2RzcV9pcnFfd29yayk7XFxuNTA1MzpcXHRcXG41MDU0OlxcdG91dF91bmxvY2tfZHNxOlxcbjUwNTU6XFx0XFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRzcS1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbjUwNTY6XFx0b3V0X3VubG9ja19yY3U6XFxuNTA1NzpcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG41MDU4OlxcdH1cXG41MDU5OlxcdFxcbjUwNjA6XFx0I2lmZGVmIENPTkZJR19FWFRfR1JPVVBfU0NIRURcXG41MDYxOlxcdHN0YXRpYyB2b2lkIHNjeF9jZ3JvdXBfZXhpdChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxuNTA2MjpcXHR7XFxuNTA2MzpcXHRcXHRzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqY3NzO1xcbjUwNjQ6XFx0XFxuNTA2NTpcXHRcXHQvKlxcbjUwNjY6XFx0XFx0ICogc2N4X3RnX29uL29mZmxpbmUoKSBhcmUgZXhjbHVkZWQgdGhyb3VnaCBjZ3JvdXBfbG9jaygpLiBJZiB3ZSB3YWxrXFxuNTA2NzpcXHRcXHQgKiBjZ3JvdXBzIGFuZCBleGl0IGFsbCB0aGUgaW5pdGVkIG9uZXMsIGFsbCBvbmxpbmUgY2dyb3VwcyBhcmUgZXhpdGVkLlxcbjUwNjg6XFx0XFx0ICovXFxuNTA2OTpcXHRcXHRjc3NfZm9yX2VhY2hfZGVzY2VuZGFudF9wb3N0KGNzcywgXFx1MDAyNnJvb3RfdGFza19ncm91cC5jc3MpIHtcXG41MDcwOlxcdFxcdFxcdHN0cnVjdCB0YXNrX2dyb3VwICp0ZyA9IGNzc190Zyhjc3MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNToxOS4xNTMwNjE5MDVaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMDg4NTYxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgZGVzdHJveV9kc3FgIEZ1bmN0aW9uIGFuZCBJbnZhbGlkYXRpbmcgdGhlIERhdGEgU3RydWN0dXJlIElkZW50aWZpZXIqKlxuXG5SaWdodCwgc28gYGRlc3Ryb3lfZHNxYCBpcyBjbGVhcmx5IHNldHRpbmcgYGRzcS1cdTAwM2VpZCA9IFNDWF9EU1FfSU5WQUxJRGAuIE1ha2VzIHNlbnNlOyB3ZSdyZSBpbnZhbGlkYXRpbmcgdGhlIGRhdGEgc3RydWN0dXJlIGFmdGVyIGRlc3RydWN0aW9uLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBpbW1lZGlhdGVseSB2ZXJpZnkgd2hhdCBgU0NYX0RTUV9JTlZBTElEYCBhY3R1YWxseSAqaXMqLiBJcyBpdCAtMT8gMD8gU29tZSBsYXJnZSwgaW1wcm9iYWJsZSBudW1iZXI/IFVuZGVyc3RhbmRpbmcgdGhhdCBjb25zdGFudCBpcyBjcml0aWNhbCB0byBlbnN1cmluZyB3ZSBkb24ndCBhY2NpZGVudGFsbHkgcmV1c2UgdGhlIG5vdy1kZXN0cm95ZWQgYGRzcWAgaGFuZGxlIHdpdGhvdXQgcHJvcGVyIHJlLWluaXRpYWxpemF0aW9uLCBvciB3b3JzZSwgdGhhdCBpdCBkb2Vzbid0IGNvbGxpZGUgd2l0aCBzb21lIHZhbGlkIGRhdGEgc3RydWN0dXJlLiBJdCdzIHRoZSBseW5jaHBpbiBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3kgaGVyZSBhbmQgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IHZlcmlmaWFibGUgYnkgdGhlIHRlYW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODI1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNToyMy4wNzM5NDk1NDRaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTU1MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlNDWF9EU1FfSU5WQUxJRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTYyMj1zdGF0aWMgdm9pZCBzY3hfZGlzcGF0Y2hfZW5xdWV1ZShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBycSAqcnEsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2NDAtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxNjQxOlxcdFxcdGlmICh1bmxpa2VseShkc3EtXFx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2NDItXFx0XFx0XFx0c2N4X2Vycm9yKHNjaCwgXFxcImF0dGVtcHRpbmcgdG8gZGlzcGF0Y2ggdG8gYSBkZXN0cm95ZWQgZHNxXFxcIik7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTE4ODg9c3RhdGljIHZvaWQgbWFya19kaXJlY3RfZGlzcGF0Y2goc3RydWN0IHNjeF9zY2hlZCAqc2NoLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTExLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTkxMjpcXHRXQVJOX09OX09OQ0UocC1cXHUwMDNlc2N4LmRkc3BfZHNxX2lkICE9IFNDWF9EU1FfSU5WQUxJRCk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTEzLVxcdFdBUk5fT05fT05DRShwLVxcdTAwM2VzY3guZGRzcF9lbnFfZmxhZ3MpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xOTM2PXN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9kaXJlY3RfZGlzcGF0Y2goc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTkzNy17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxOTM4OlxcdHAtXFx1MDAzZXNjeC5kZHNwX2RzcV9pZCA9IFNDWF9EU1FfSU5WQUxJRDtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE5MzktXFx0cC1cXHUwMDNlc2N4LmRkc3BfZW5xX2ZsYWdzID0gMDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MjAxMD12b2lkIHNjeF9kb19lbnF1ZXVlX3Rhc2soc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1NjQgZW5xX2ZsYWdzLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yMDYyLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjA2MzpcXHRpZiAocC1cXHUwMDNlc2N4LmRkc3BfZHNxX2lkICE9IFNDWF9EU1FfSU5WQUxJRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwNjQtXFx0XFx0Z290byBkaXJlY3Q7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwOTYtXFx0KmRkc3BfdGFza3AgPSBOVUxMO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjA5NzpcXHRpZiAocC1cXHUwMDNlc2N4LmRkc3BfZHNxX2lkICE9IFNDWF9EU1FfSU5WQUxJRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwOTgtXFx0XFx0Z290byBkaXJlY3Q7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM5NTY9dm9pZCBpbml0X3NjeF9lbnRpdHkoc3RydWN0IHNjaGVkX2V4dF9lbnRpdHkgKnNjeClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk2NS1cXHRzY3gtXFx1MDAzZXJ1bm5hYmxlX2F0ID0gamlmZmllcztcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM5NjY6XFx0c2N4LVxcdTAwM2VkZHNwX2RzcV9pZCA9IFNDWF9EU1FfSU5WQUxJRDtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NjctXFx0c2N4LVxcdTAwM2VzbGljZSA9IFNDWF9TTElDRV9ERkw7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTUwMjE9c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MDQ5LVxcdCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NTA1MDpcXHRkc3EtXFx1MDAzZWlkID0gU0NYX0RTUV9JTlZBTElEO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTA1MS1cXHRpZiAobGxpc3RfYWRkKFxcdTAwMjZkc3EtXFx1MDAzZWZyZWVfbm9kZSwgXFx1MDAyNmRzcXNfdG9fZnJlZSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA1OjIzLjEyMDUwNzI2NFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQ0MTk5NzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBgU0NYX0RTUV9JTlZBTElEYCBjb25zdGFudCBpcyBkZWZpbmVkLiBLbm93aW5nIHRoZSBMaW51eCBrZXJuZWwsIHRoZSBsaWtlbHkgY2FuZGlkYXRlcyBhcmUgaW4gdGhlIGhlYWRlciBmaWxlcyBmb3Igc2NoZWR1bGVyIGV4dGVuc2lvbnMuIEkgc2hvdWxkIGNoZWNrIGBpbmNsdWRlL3VhcGkvbGludXgvc2NoZWQvZXh0LmhgIGZpcnN0LCBhcyB0aGF0IHVzdWFsbHkgY29udGFpbnMgdGhlIHVzZXItc3BhY2UgYWNjZXNzaWJsZSBkZWZpbml0aW9ucy4gSWYgaXQncyBub3QgdGhlcmUsIHRoZW4gSSdsbCBkZWx2ZSBkZWVwZXIgaW50byB0aGUga2VybmVsJ3MgaW50ZXJuYWwgc3RydWN0dXJlcyBhbmQgbG9vayBpbiBga2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHByb2dyZXNzaW9uIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHVzYWdlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5NTUsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNToyNi4xNjQ3MTA1NjVaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjQ4NzgzMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU0NYX0RTUV9JTlZBTElEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oPTUzPWVudW0gc2N4X2RzcV9pZF9mbGFncyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oLTU2LVxcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0Lmg6NTc6XFx0U0NYX0RTUV9JTlZBTElEXFx0XFx0PSBTQ1hfRFNRX0ZMQUdfQlVJTFRJTiB8IDAsXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC01OC1cXHRTQ1hfRFNRX0dMT0JBTFxcdFxcdD0gU0NYX0RTUV9GTEFHX0JVSUxUSU4gfCAxLFxcbi0tXFxuaW5pdC9pbml0X3Rhc2suYz0xMDU9c3RydWN0IHRhc2tfc3RydWN0IGluaXRfdGFzayBfX2FsaWduZWQoTDFfQ0FDSEVfQllURVMpID0ge1xcbi0tXFxuaW5pdC9pbml0X3Rhc2suYy0xNTAtXFx0XFx0LnJ1bm5hYmxlX2F0XFx0PSBJTklUSUFMX0pJRkZJRVMsXFxuaW5pdC9pbml0X3Rhc2suYzoxNTE6XFx0XFx0LmRkc3BfZHNxX2lkXFx0PSBTQ1hfRFNRX0lOVkFMSUQsXFxuaW5pdC9pbml0X3Rhc2suYy0xNTItXFx0XFx0LnNsaWNlXFx0XFx0PSBTQ1hfU0xJQ0VfREZMLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xNjIyPXN0YXRpYyB2b2lkIHNjeF9kaXNwYXRjaF9lbnF1ZXVlKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHJxICpycSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTY0MC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE2NDE6XFx0XFx0aWYgKHVubGlrZWx5KGRzcS1cXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEKSkge1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTY0Mi1cXHRcXHRcXHRzY3hfZXJyb3Ioc2NoLCBcXFwiYXR0ZW1wdGluZyB0byBkaXNwYXRjaCB0byBhIGRlc3Ryb3llZCBkc3FcXFwiKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTg4OD1zdGF0aWMgdm9pZCBtYXJrX2RpcmVjdF9kaXNwYXRjaChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE5MTEtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxOTEyOlxcdFdBUk5fT05fT05DRShwLVxcdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE5MTMtXFx0V0FSTl9PTl9PTkNFKHAtXFx1MDAzZXNjeC5kZHNwX2VucV9mbGFncyk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTE5MzY9c3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2RpcmVjdF9kaXNwYXRjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xOTM3LXtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE5Mzg6XFx0cC1cXHUwMDNlc2N4LmRkc3BfZHNxX2lkID0gU0NYX0RTUV9JTlZBTElEO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTkzOS1cXHRwLVxcdTAwM2VzY3guZGRzcF9lbnFfZmxhZ3MgPSAwO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0yMDEwPXZvaWQgc2N4X2RvX2VucXVldWVfdGFzayhzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBlbnFfZmxhZ3MsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwNjItXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoyMDYzOlxcdGlmIChwLVxcdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjA2NC1cXHRcXHRnb3RvIGRpcmVjdDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjA5Ni1cXHQqZGRzcF90YXNrcCA9IE5VTEw7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoyMDk3OlxcdGlmIChwLVxcdTAwM2VzY3guZGRzcF9kc3FfaWQgIT0gU0NYX0RTUV9JTlZBTElEKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjA5OC1cXHRcXHRnb3RvIGRpcmVjdDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9Mzk1Nj12b2lkIGluaXRfc2N4X2VudGl0eShzdHJ1Y3Qgc2NoZWRfZXh0X2VudGl0eSAqc2N4KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zOTY1LVxcdHNjeC1cXHUwMDNlcnVubmFibGVfYXQgPSBqaWZmaWVzO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mzk2NjpcXHRzY3gtXFx1MDAzZWRkc3BfZHNxX2lkID0gU0NYX0RTUV9JTlZBTElEO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk2Ny1cXHRzY3gtXFx1MDAzZXNsaWNlID0gU0NYX1NMSUNFX0RGTDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTAyMT1zdGF0aWMgdm9pZCBkZXN0cm95X2RzcShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHU2NCBkc3FfaWQpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUwNDktXFx0ICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1MDUwOlxcdGRzcS1cXHUwMDNlaWQgPSBTQ1hfRFNRX0lOVkFMSUQ7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MDUxLVxcdGlmIChsbGlzdF9hZGQoXFx1MDAyNmRzcS1cXHUwMDNlZnJlZV9ub2RlLCBcXHUwMDI2ZHNxc190b19mcmVlKSlcXG4tLVxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtX2RlZnMuYXV0b2dlbi5oLTYwLSNkZWZpbmUgSEFWRV9TQ1hfRFNRX0ZMQUdfTE9DQUxfT05cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvZW51bV9kZWZzLmF1dG9nZW4uaDo2MTojZGVmaW5lIEhBVkVfU0NYX0RTUV9JTlZBTElEXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1fZGVmcy5hdXRvZ2VuLmgtNjItI2RlZmluZSBIQVZFX1NDWF9EU1FfR0xPQkFMXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvZW51bXMuYXV0b2dlbi5icGYuaD00Mz1jb25zdCB2b2xhdGlsZSB1NjQgX19TQ1hfRFNRX0ZMQUdfTE9DQUxfT04gX193ZWFrO1xcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1zLmF1dG9nZW4uYnBmLmgtNDUtXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1zLmF1dG9nZW4uYnBmLmg6NDY6Y29uc3Qgdm9sYXRpbGUgdTY0IF9fU0NYX0RTUV9JTlZBTElEIF9fd2VhaztcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvZW51bXMuYXV0b2dlbi5icGYuaDo0NzojZGVmaW5lIFNDWF9EU1FfSU5WQUxJRCBfX1NDWF9EU1FfSU5WQUxJRFxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmJwZi5oLTQ4LVxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2VudW1zLmF1dG9nZW4uaC0yMC1cXHRTQ1hfRU5VTV9TRVQoc2tlbCwgc2N4X2RzcV9pZF9mbGFncywgU0NYX0RTUV9GTEFHX0xPQ0FMX09OKTsgXFxcXFxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9lbnVtcy5hdXRvZ2VuLmg6MjE6XFx0U0NYX0VOVU1fU0VUKHNrZWwsIHNjeF9kc3FfaWRfZmxhZ3MsIFNDWF9EU1FfSU5WQUxJRCk7IFxcXFxcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvZW51bXMuYXV0b2dlbi5oLTIyLVxcdFNDWF9FTlVNX1NFVChza2VsLCBzY3hfZHNxX2lkX2ZsYWdzLCBTQ1hfRFNRX0dMT0JBTCk7IFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDU6MjcuNjI5NTk1ODcxWiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MDY4NTgzODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgU0NYX0RTUV9JTlZBTElEYCBCdWcqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBTQ1hfRFNRX0lOVkFMSURgIGhhcyB0aGUgYFNDWF9EU1FfRkxBR19CVUlMVElOYCBmbGFnIHNldC4gVGhpcyBtZWFucyB0aGF0IHdoZW4gd2UgcGVyZm9ybSB0aGUgYml0d2lzZSBBTkQgb3BlcmF0aW9uLCBgZHNxLVx1MDAzZWlkIFx1MDAyNiBTQ1hfRFNRX0ZMQUdfQlVJTFRJTmAgd2lsbCBldmFsdWF0ZSB0byB0cnVlIGZvciBgU0NYX0RTUV9JTlZBTElEYC4gVGhlIHBhdGNoIGNvcnJlY3RseSByZWNvZ25pemVzIHRoaXMgd2l0aCBgaWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKWAgYW5kIHRoZW4gc2tpcHMgdGhlIGludmFsaWQgcXVldWUuIFRoaXMgc2VlbXMgdG8gYWxpZ24gcGVyZmVjdGx5IHdpdGggdGhlIHJlcG9ydGVkIGJ1Zy4gSSB0aGluayBJJ3ZlIGdvdCBpdC5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCwgdGhlIFwiRm9jdXNTeW1ib2xzXCIgYXMgSSBsaWtlIHRvIGNhbGwgdGhlbS4gQmFzZWQgb24gdGhpcywgaXQgbG9va3MgbGlrZSBgc2N4X2JwZl9kc3FfcmVlbnFgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYXJlIHdoZXJlIHRoZSBhY3Rpb24gaGFwcGVucy5cblxuV2FpdCwgYHNjeF9icGZfZHNxX3JlZW5xYCBpcyBhIGtmdW5jISBUaGF0IG1lYW5zIGl0IGNhbiBiZSBjYWxsZWQgZGlyZWN0bHkgZnJvbSBCUEYgY29kZSB3aGljaCBpcyBpbXBvcnRhbnQsIGJ1dCB3aGF0IGVsc2U/XG5cbmBkZXN0cm95X2RzcWAgaXMgc3RhdGljLCBidXQgaXQncyBjYWxsZWQgZnJvbSBgc2N4X2JwZl9kZXN0cm95X2RzcWAuIFRoZW4gd2UgaGF2ZSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AsIHdoaWNoIGlzIGFsc28gc3RhdGljLCBidXQgdGhhdCdzIGNhbGxlZCBmcm9tIGBydW5fZGVmZXJyZWRgLiBJIGhhdmUgdG8gdHJhY2UgaG93IGBydW5fZGVmZXJyZWRgIGlzIGNhbGxlZCwgYW5kIHRoYXQgbG9va3MgbGlrZSBgdGFza193b2tlbl9zY3hgLCBgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbmAsIGFuZCBgZGVmZXJyZWRfaXJxX3dvcmtmbmAuIE9rYXksIHNvLCB3aXRoIHRoZXNlIGNvbm5lY3Rpb25zLCBgc2N4X2JwZl9kc3FfcmVlbnFgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYXJlIGRlZmluaXRlbHkgdGhlIHJpZ2h0IEZvY3VzU3ltYm9scy4gVGhlIHdheSB0aGVzZSB0aGluZ3MgYXJlIGNhbGxlZCBzZWVtcyB0byBleHBsYWluIHRoZSBpc3N1ZS5cblxuTGV0J3MgZG8gYSBmaW5hbCBjaGVjazogSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBgc2N4X2JwZl9kc3FfcmVlbnFgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIGFkZGluZyB0byBgZGVmZXJyZWRfcmVlbnFfdXNlcnNgLiBJIHNlZSB0aGF0IGBzY2hlZHVsZV9kc3FfcmVlbnFgIGRvZXMgYWRkIHRvIHRoaXMgbGlzdC4gQW5kLCB0aGFua2Z1bGx5LCBgc2NoZWR1bGVfZHNxX3JlZW5xYCBpcyBjYWxsZWQgZGlyZWN0bHkgYnkgYHNjeF9icGZfZHNxX3JlZW5xYC4gUGVyZmVjdCEgTm8gb3RoZXIgb2J2aW91cyBjYWxsZXJzLiBJIHRoaW5rIEknbSBjb25maWRlbnQgYWJvdXQgdGhlc2UgRm9jdXNTeW1ib2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjcxOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNTozNC4zMzY0NTYzMzJaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjA3MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjaGVkdWxlX2RzcV9yZWVucVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTAyNT1zdGF0aWMgdm9pZCBzY2hlZHVsZV9kZWZlcnJlZF9sb2NrZWQoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA2NC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNjU6dm9pZCBzY2hlZHVsZV9kc3FfcmVlbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNjYtXFx0XFx0XFx0dTY0IHJlZW5xX2ZsYWdzLCBzdHJ1Y3QgcnEgKmxvY2tlZF9ycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDM4OT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX2xvY2FscyhzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NDIwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDQyMTpcXHRcXHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ0MjItXFx0XFx0c21wX21iKCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1MDU9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NTMwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDUzMTpcXHRcXHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ1MzItXFx0XFx0c21wX21iKCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk3NDI9X19icGZfa2Z1bmMgdm9pZCBzY3hfYnBmX2RzcV9yZWVucSh1NjQgZHNxX2lkLCB1NjQgcmVlbnFfZmxhZ3MsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3NjMtXFx0ZHNxID0gZmluZF9kc3FfZm9yX2Rpc3BhdGNoKHNjaCwgdGhpc19ycSgpLCBkc3FfaWQsIHNtcF9wcm9jZXNzb3JfaWQoKSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzY0OlxcdHNjaGVkdWxlX2RzcV9yZWVucShzY2gsIGRzcSwgcmVlbnFfZmxhZ3MsIHNjeF9sb2NrZWRfcnEoKSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzY1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDU6MzQuMzgxNjY3MzIyWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NTM4MTEyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqUmVmaW5pbmcgdGhlIEZvY3VzOiBBIFF1aWNrIFJlY2FwIGFuZCBDb25maXJtYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIHplcm9lZCBpbiBvbiB0aGUga2V5IGZ1bmN0aW9ucyBkcml2aW5nIHRoaXMgYmVoYXZpb3I6IGBzY3hfYnBmX2RzcV9yZWVucWAgaXMgdGhlIGNyaXRpY2FsIG9uZSwgYXMgaXQncyB0aGUgc29sZSBjYWxsZXIgb2YgYHNjaGVkdWxlX2RzcV9yZWVucWAsIHdoaWNoIGlzIHRoZSBiZWhhdmlvciBJIHdhbnQgdG8gdW5kZXJzdGFuZC4gVGhpcywgY29tYmluZWQgd2l0aCBgc2N4X2JwZl9kZXN0cm95X2RzcWAsIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMgaGFwcGVuLiBHaXZlbiB0aGF0LCBJJ20gZmFpcmx5IGNlcnRhaW4gdGhvc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdGhlIGltcG9ydGFudCBgRm9jdXNTeW1ib2xzYC4gQW5kIHRoZSByZWxldmFudCBgRW5hYmxlQ29uZmlnc2AgcmVtYWlucyBhcyBgU0NIRURfQ0xBU1NfRVhUYCwgdGhhdCBpcyB3aGVyZSB0aGUgZnVuY3Rpb25hbGl0eSBpcy4gTm93LCBiZWZvcmUgSSBtb3ZlIG9uLCBpdCdzIGp1c3QgYSBtYXR0ZXIgb2YgYSBmaW5hbCB2ZXJpZmljYXRpb24gdXNpbmcgdGhlIHNldC1yZXN1bHRzIHRvb2wuIEEgcXVpY2ssIGxhc3QgZG91YmxlLWNoZWNrIHdpbGwgZ2l2ZSBtZSBhZGRpdGlvbmFsIGNvbmZpZGVuY2UgaW4gdGhlIHJlc3VsdHMgYmVmb3JlIEkgZGlnIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxMzEsIk91dHB1dFRva2VucyI6MTI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDU6NDAuMDM1NDgxNjQ2WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3OTk1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNDSEVEX0NMQVNTX0VYVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjeF9icGZfZHNxX3JlZW5xXCIsXG4gICAgXCJzY3hfYnBmX2Rlc3Ryb3lfZHNxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNDSEVEX0NMQVNTX0VYVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjeF9icGZfZHNxX3JlZW5xXCIsXG4gICAgXCJzY3hfYnBmX2Rlc3Ryb3lfZHNxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZXh0ZW5zaWJsZSBzY2hlZHVsZXIgY2xhc3MgKHNjaGVkX2V4dCkgd2hlcmUgYSBjdXN0b20gZGlzcGF0Y2ggcXVldWUgKERTUSkgY291bGQgYmUgZGVzdHJveWVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIGRlZmVycmVkIHJlLWVucXVldWUgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNvcmUgc2NoZWR1bGluZyBsb2dpYyBmaXggdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIEJQRiBzY2hlZHVsZXIgaXMgbG9hZGVkIGFuZCB1c2VzIGN1c3RvbSBEU1FzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNTo0MC4xMDgyODgzNTZaIiwiU2VxIjo2MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4OTMzNzM5ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwOTowNTo0MC4xMDg3OTI1NTZaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Njg5Mjg2NjIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBCVUdfT04oKSB3aXRoIGEgY29uZGl0aW9uYWwgY2hlY2sgYW5kIGEgYGNvbnRpbnVlYCBzdGF0ZW1lbnQgdG8gaGFuZGxlIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1pZ2h0IGludmFsaWRhdGUgYSBkaXNwYXRjaCBxdWV1ZSAoYGRzcWApLiBUaGlzIGNoYW5nZSBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYyAoQlVHX09OKSBhbmQgaGFuZGxlcyB0aGUgcmFjZSBncmFjZWZ1bGx5LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIG9yIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIHJhY2UgY29uZGl0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGRmNzRhNWU0ODdiNjQ0ZjY5OWEyMjViYmFmNWQ2OTA2NGU1YTM1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA5OjAzOjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmNcbmluZGV4IDBiYmUxNDRjOTgxMTEuLjYwNGEwNWRhNDFiOTMgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG4rKysgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG5AQCAtNDUzMSw3ICs0NTMxLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxuIFx0XHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cbiBcdFx0c21wX21iKCk7XG4gXG4tXHRcdEJVR19PTihkc3EtXHUwMDNlaWQgXHUwMDI2IFNDWF9EU1FfRkxBR19CVUlMVElOKTtcbitcdFx0LyogZGVzdHJveV9kc3EoKSBtYXkgcmFjZSBhbmQgaW52YWxpZGF0ZSBAZHNxOyBza2lwICovXG4rXHRcdGlmICh1bmxpa2VseShkc3EtXHUwMDNlaWQgXHUwMDI2IFNDWF9EU1FfRkxBR19CVUlMVElOKSlcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0cmVlbnFfdXNlcihycSwgZHNxLCByZWVucV9mbGFncyk7XG4gXHR9XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDk6MDU6NDAuMTA4NzkzNjE2WiIsIlNlcSI6NjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4OTI4Mzg1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFNjaGVkdWxlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYC4gSXQncyB0d2Vha2luZyB0aGUgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGF0IHRoZXkncmUgcmVwbGFjaW5nIGEgYEJVR19PTmAgY2hlY2sgd2l0aCBhIGNvbmRpdGlvbmFsIHNraXAuIFNwZWNpZmljYWxseSwgYEJVR19PTihkc3EtXHUwMDNlaWQgXHUwMDI2IFNDWF9EU1FfRkxBR19CVUlMVElOKTtgIGlzIG5vdyBhbiBgaWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pKSBjb250aW51ZTtgLiBTZWVtcyBsaWtlIGEgYnVnIGZpeCwgcmlnaHQ/IFRoZSBjb21tZW50IGluZGljYXRlcyBpdCdzIHRvIGFkZHJlc3MgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWlnaHQgaW52YWxpZGF0ZSBgZHNxYCBieSBzZXR0aW5nIHRoZSBgU0NYX0RTUV9GTEFHX0JVSUxUSU5gIGZsYWcuIEVzc2VudGlhbGx5LCBpdCB3YXMgY3Jhc2hpbmcgd2l0aCBhIGBCVUdfT05gIGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uLiBJdCdzIG5vdCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgZ29vZC4gRGVmaW5pdGVseSBkb2Vzbid0IGludHJvZHVjZSBhbnksIHNvIEknbGwgc2V0IE5lZWRzS01TQU4gdG8gZmFsc2UuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBPa2F5LCB0aGUgY29kZSByZWFkcyBgZHNxYC4gSWYgaXQncyBpbnZhbGlkYXRlZCwgdGhhdCAqY291bGQqIGJlIGEgdXNlLWFmdGVyLWZyZWUsIGFuZCBLQVNBTiB3b3VsZCBub3JtYWxseSBjYXRjaCB0aGF0LiBXYWl0LCBidXQgYGRlc3Ryb3lfZHNxKClgIGludmFsaWRhdGVzIGl0IGJ5IHNldHRpbmcgdGhlIGZsYWc/IEhtbS4uLiBubywgbm8sIHRoZSBwYXRjaCBpdHNlbGYganVzdCBjaGFuZ2VzIGEgYEJVR19PTmAgdG8gYSBza2lwLiBTbyB0aGUgZnVuY3Rpb24gd2lsbCBqdXN0IHNraXAgYSBzcGVjaWZpYyBEU1EgaWYgdGhlIHJhY2UgY29uZGl0aW9uIGhhcyBvY2N1cnJlZC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW52b2x2ZWQgYXQgYWxsLiBMb29rcyBzb2xpZC4gSSdsbCBjYWxsIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE4LCJPdXRwdXRUb2tlbnMiOjEzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA5OjA1OjQ3LjAwMTYzNTY0N1oiLCJTZXEiOjY0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBCVUdfT04oKSB3aXRoIGEgY29uZGl0aW9uYWwgY2hlY2sgYW5kIGEgYGNvbnRpbnVlYCBzdGF0ZW1lbnQgdG8gaGFuZGxlIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1pZ2h0IGludmFsaWRhdGUgYSBkaXNwYXRjaCBxdWV1ZSAoYGRzcWApLiBUaGlzIGNoYW5nZSBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYyAoQlVHX09OKSBhbmQgaGFuZGxlcyB0aGUgcmFjZSBncmFjZWZ1bGx5LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIG9yIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIHJhY2UgY29uZGl0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBCVUdfT04oKSB3aXRoIGEgY29uZGl0aW9uYWwgY2hlY2sgYW5kIGEgYGNvbnRpbnVlYCBzdGF0ZW1lbnQgdG8gaGFuZGxlIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1pZ2h0IGludmFsaWRhdGUgYSBkaXNwYXRjaCBxdWV1ZSAoYGRzcWApLiBUaGlzIGNoYW5nZSBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYyAoQlVHX09OKSBhbmQgaGFuZGxlcyB0aGUgcmFjZSBncmFjZWZ1bGx5LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIG9yIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIHJhY2UgY29uZGl0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kdrn[1] Phase: Succeeded StartedAt: 2026-08-11 09:05:58 +0000 UTC FinishedAt: 2026-08-11 09:05:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-11 09:05:58 +0000 UTC FinishedAt: 2026-08-11 09:05:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2] Phase: Succeeded StartedAt: 2026-08-11 09:05:58 +0000 UTC FinishedAt: 2026-08-11 09:46:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-11 09:05:58 +0000 UTC FinishedAt: 2026-08-11 09:46:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-11 09:05:58 +0000 UTC FinishedAt: 2026-08-11 09:06:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-11 09:05:58 +0000 UTC FinishedAt: 2026-08-11 09:06:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow6kdrn/series-workflow6kdrn-convert-artifact-2285447229/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-11 09:06:08 +0000 UTC FinishedAt: 2026-08-11 09:22:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-11 09:06:08 +0000 UTC FinishedAt: 2026-08-11 09:22:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0bd4fc6f-84a6-4436-b858-cc66bd09aff3,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-workflow6kdrn/series-workflow6kdrn-convert-artifact-2285447229/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": "3277cf31-881f-41ac-978a-3c745d9d2710", "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-workflow6kdrn/series-workflow6kdrn-build-action-2861715827/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-11 09:06:08 +0000 UTC FinishedAt: 2026-08-11 09:22:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0bd4fc6f-84a6-4436-b858-cc66bd09aff3,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-workflow6kdrn/series-workflow6kdrn-convert-artifact-2285447229/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": "3277cf31-881f-41ac-978a-3c745d9d2710", "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-workflow6kdrn/series-workflow6kdrn-build-action-2861715827/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-11 09:22:23 +0000 UTC FinishedAt: 2026-08-11 09:22:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-11 09:22:23 +0000 UTC FinishedAt: 2026-08-11 09:22:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-11 09:22:23 +0000 UTC FinishedAt: 2026-08-11 09:22:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-11 09:22:23 +0000 UTC FinishedAt: 2026-08-11 09:22:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow6kdrn/series-workflow6kdrn-convert-artifact-3406128024/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-11 09:22:33 +0000 UTC FinishedAt: 2026-08-11 09:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-11 09:22:33 +0000 UTC FinishedAt: 2026-08-11 09:24:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3277cf31-881f-41ac-978a-3c745d9d2710,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-workflow6kdrn/series-workflow6kdrn-build-action-2861715827/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-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-11 09:24:27 +0000 UTC FinishedAt: 2026-08-11 09:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-11 09:24:27 +0000 UTC FinishedAt: 2026-08-11 09:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-11 09:24:27 +0000 UTC FinishedAt: 2026-08-11 09:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-11 09:24:27 +0000 UTC FinishedAt: 2026-08-11 09:42:22 +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:*0bd4fc6f-84a6-4436-b858-cc66bd09aff3,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-workflow6kdrn/series-workflow6kdrn-convert-artifact-3406128024/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": "20f53fdb-1777-4607-84cb-26379d51996d", "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-workflow6kdrn/series-workflow6kdrn-build-action-1668856836/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-11 09:24:27 +0000 UTC FinishedAt: 2026-08-11 09:42:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0bd4fc6f-84a6-4436-b858-cc66bd09aff3,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-workflow6kdrn/series-workflow6kdrn-convert-artifact-3406128024/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": "20f53fdb-1777-4607-84cb-26379d51996d", "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-workflow6kdrn/series-workflow6kdrn-build-action-1668856836/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-11 09:42:22 +0000 UTC FinishedAt: 2026-08-11 09:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-11 09:42:22 +0000 UTC FinishedAt: 2026-08-11 09:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-11 09:42:22 +0000 UTC FinishedAt: 2026-08-11 09:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-11 09:42:22 +0000 UTC FinishedAt: 2026-08-11 09:44:37 +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:*20f53fdb-1777-4607-84cb-26379d51996d,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-workflow6kdrn/series-workflow6kdrn-build-action-1668856836/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-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-11 09:44:47 +0000 UTC FinishedAt: 2026-08-11 09:46:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-11 09:44:47 +0000 UTC FinishedAt: 2026-08-11 09:46:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"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:*3277cf31-881f-41ac-978a-3c745d9d2710,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*20f53fdb-1777-4607-84cb-26379d51996d,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-workflow6kdrn/series-workflow6kdrn-build-action-2861715827/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-workflow6kdrn/series-workflow6kdrn-build-action-1668856836/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-11 09:44:47 +0000 UTC FinishedAt: 2026-08-11 09:44:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-11 09:44:47 +0000 UTC FinishedAt: 2026-08-11 09:44:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"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-workflow6kdrn/series-workflow6kdrn-convert-artifact-4023317105/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-11 09:44:47 +0000 UTC FinishedAt: 2026-08-11 09:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-11 09:44:47 +0000 UTC FinishedAt: 2026-08-11 09:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-11 09:44:47 +0000 UTC FinishedAt: 2026-08-11 09:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-11 09:44:57 +0000 UTC FinishedAt: 2026-08-11 09:46:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kdrn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_dsq_reenq","scx_bpf_destroy_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3d08ff75a47a3e7e2ab45a3bcab6723b4d906422","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT"],"series_id":"f438a239-e8aa-4404-9c7c-2026feb24e1b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-11 09:44:57 +0000 UTC FinishedAt: 2026-08-11 09:45:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3277cf31-881f-41ac-978a-3c745d9d2710,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*20f53fdb-1777-4607-84cb-26379d51996d,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-workflow6kdrn/series-workflow6kdrn-build-action-2861715827/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-workflow6kdrn/series-workflow6kdrn-build-action-1668856836/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-workflow6kdrn/series-workflow6kdrn-convert-artifact-4023317105/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,}