Name: series-workflowjx5bw Phase: Succeeded StartedAt: 2026-07-28 15:38:29 +0000 UTC FinishedAt: 2026-07-28 17:38:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[0] Phase: Succeeded StartedAt: 2026-07-28 15:38:29 +0000 UTC FinishedAt: 2026-07-28 16:03:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[0].run-triage Phase: Succeeded StartedAt: 2026-07-28 15:38:29 +0000 UTC FinishedAt: 2026-07-28 16:03:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e095f249e2209674f6366f6db0383a2b96e19239", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e095f249e2209674f6366f6db0383a2b96e19239", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH" ], "series_id": "720a7fb9-30ef-4b17-be22-4afaade01bd9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ovs_execute_actions", "ovs_dp_process_packet", "ovs_vport_receive" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZzX2V4ZWN1dGVfYWN0aW9ucyYjMzQ7LAogICAgJiMzNDtvdnNfZHBfcHJvY2Vzc19wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3Zwb3J0X3JlY2VpdmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoIChleGVjdXRlX3JlY2lyYyBhbmQgZG9fZXhlY3V0ZV9hY3Rpb25zKSB0byBwcm9wZXJseSBoYW5kbGUgc2tiIGxpZmVjeWNsZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMgd2hlbiBvdnNfZmxvd19rZXlfdXBkYXRlIGZhaWxzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhOTEyMGI5NmQ0Y2I3ZDAzNDYzODkwYjFlYzZjZTBhNTQ1NDFiNDgzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjggMTY6MDI6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbmluZGV4IDUxM2ZjYTZhOGU4YTQuLmRjNWZmODU5ZjExNDUgMTAwNjQ0XG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG5AQCAtMTEwOCw2ICYjNDM7MTEwOCwxMCBAQCBzdGF0aWMgaW50IGV4ZWN1dGVfbWFza2VkX3NldF9hY3Rpb24oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiM0MzsvKiBXaGVuICYjMzk7bGFzdCYjMzk7IGlzIHRydWUsIHJlY2lyYygpIHNob3VsZCBhbHdheXMgY29uc3VtZSB0aGUgJiMzOTtza2ImIzM5Oy5cbiYjNDM7ICogT3RoZXJ3aXNlLCByZWNpcmMoKSBzaG91bGQga2VlcCAmIzM5O3NrYiYjMzk7IGludGFjdCByZWdhcmRsZXNzIHdoYXRcbiYjNDM7ICogYWN0aW9ucyBhcmUgZXhlY3V0ZWQgb24gcmVjaXJjdWxhdGlvbi5cbiYjNDM7ICovXG4gc3RhdGljIGludCBleGVjdXRlX3JlY2lyYyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXksXG4gXHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphLCBib29sIGxhc3QpXG5AQCAtMTExOCw4ICYjNDM7MTEyMiwxMiBAQCBzdGF0aWMgaW50IGV4ZWN1dGVfcmVjaXJjKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGludCBlcnI7XG4gXG4gXHRcdGVyciA9IG92c19mbG93X2tleV91cGRhdGUoc2tiLCBrZXkpO1xuLVx0XHRpZiAoZXJyKVxuJiM0MztcdFx0aWYgKGVycikge1xuJiM0MztcdFx0XHRpZiAobGFzdClcbiYjNDM7XHRcdFx0XHRvdnNfa2ZyZWVfc2tiX3JlYXNvbihza2IsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgT1ZTX0RST1BfQUNUSU9OX0VSUk9SKTtcbiBcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0fVxuIFx0fVxuIFx0QlVHX09OKCFpc19mbG93X2tleV92YWxpZChrZXkpKTtcbiBcbkBAIC0xMzcyLDcgJiM0MzsxMzgwLDcgQEAgc3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRpZiAoIWlzX2Zsb3dfa2V5X3ZhbGlkKGtleSkpIHtcbiBcdFx0XHRcdGVyciA9IG92c19mbG93X2tleV91cGRhdGUoc2tiLCBrZXkpO1xuIFx0XHRcdFx0aWYgKGVycilcbi1cdFx0XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRlcnIgPSBvdnNfY3RfZXhlY3V0ZShvdnNfZHBfZ2V0X25ldChkcCksIHNrYiwga2V5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPUEVOVlNXSVRDSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAgICYjMzQ7b3ZzX2RwX3Byb2Nlc3NfcGFja2V0JiMzNDssCiAgICAmIzM0O292c192cG9ydF9yZWNlaXZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCAoZXhlY3V0ZV9yZWNpcmMgYW5kIGRvX2V4ZWN1dGVfYWN0aW9ucykgdG8gcHJvcGVybHkgaGFuZGxlIHNrYiBsaWZlY3ljbGUgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzIHdoZW4gb3ZzX2Zsb3dfa2V5X3VwZGF0ZSBmYWlscy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTkxMjBiOTZkNGNiN2QwMzQ2Mzg5MGIxZWM2Y2UwYTU0NTQxYjQ4MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDI4IDE2OjAyOjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMKaW5kZXggNTEzZmNhNmE4ZThhNC4uZGM1ZmY4NTlmMTE0NSAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCkBAIC0xMTA4LDYgJiM0MzsxMTA4LDEwIEBAIHN0YXRpYyBpbnQgZXhlY3V0ZV9tYXNrZWRfc2V0X2FjdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiBlcnI7CiB9CiAKJiM0MzsvKiBXaGVuICYjMzk7bGFzdCYjMzk7IGlzIHRydWUsIHJlY2lyYygpIHNob3VsZCBhbHdheXMgY29uc3VtZSB0aGUgJiMzOTtza2ImIzM5Oy4KJiM0MzsgKiBPdGhlcndpc2UsIHJlY2lyYygpIHNob3VsZCBrZWVwICYjMzk7c2tiJiMzOTsgaW50YWN0IHJlZ2FyZGxlc3Mgd2hhdAomIzQzOyAqIGFjdGlvbnMgYXJlIGV4ZWN1dGVkIG9uIHJlY2lyY3VsYXRpb24uCiYjNDM7ICovCiBzdGF0aWMgaW50IGV4ZWN1dGVfcmVjaXJjKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LAogCQkJICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphLCBib29sIGxhc3QpCkBAIC0xMTE4LDggJiM0MzsxMTIyLDEyIEBAIHN0YXRpYyBpbnQgZXhlY3V0ZV9yZWNpcmMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJaW50IGVycjsKIAogCQllcnIgPSBvdnNfZmxvd19rZXlfdXBkYXRlKHNrYiwga2V5KTsKLQkJaWYgKGVycikKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsJCQlpZiAobGFzdCkKJiM0MzsJCQkJb3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLAomIzQzOwkJCQkJCSAgICAgT1ZTX0RST1BfQUNUSU9OX0VSUk9SKTsKIAkJCXJldHVybiBlcnI7CiYjNDM7CQl9CiAJfQogCUJVR19PTighaXNfZmxvd19rZXlfdmFsaWQoa2V5KSk7CiAKQEAgLTEzNzIsNyAmIzQzOzEzODAsNyBAQCBzdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJaWYgKCFpc19mbG93X2tleV92YWxpZChrZXkpKSB7CiAJCQkJZXJyID0gb3ZzX2Zsb3dfa2V5X3VwZGF0ZShza2IsIGtleSk7CiAJCQkJaWYgKGVycikKLQkJCQkJcmV0dXJuIGVycjsKJiM0MzsJCQkJCWJyZWFrOwogCQkJfQogCiAJCQllcnIgPSBvdnNfY3RfZXhlY3V0ZShvdnNfZHBfZ2V0X25ldChkcCksIHNrYiwga2V5LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQ2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIGluIE9wZW4gdlN3aXRjaCBBY3Rpb24gRXhlY3V0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcHJlc2VudGVkIHdpdGggYSBwYXRjaCB0YXJnZXRpbmcgYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgLiBNeSBpbml0aWFsIHNjYW4gc2hvd3MgdGhhdCBpdCYjMzk7cyB0b3VjaGluZyBgZXhlY3V0ZV9yZWNpcmNgIGFuZCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCwgd2hpY2ggYXJlIGJvdGggY3JpdGljYWwgcGFydHMgb2YgaG93IE9wZW4gdlN3aXRjaCBoYW5kbGVzIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBhcHBseWluZyBhY3Rpb25zLiBUaGUgcGF0Y2ggYXBwZWFycyB0byBpbnRyb2R1Y2UgYSBzcGVjaWZpYyBlcnJvciBoYW5kbGluZyBtZWNoYW5pc20gd2l0aGluIGBleGVjdXRlX3JlY2lyY2AsIGNoZWNraW5nIGZvciBhIGNvbmRpdGlvbiBzaWduYWxlZCBieSBgZXJyYCBhbmQgc3Vic2VxdWVudGx5IHVzaW5nIGBvdnNfa2ZyZWVfc2tiX3JlYXNvbmAuIEluIGBkb19leGVjdXRlX2FjdGlvbnNgLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBob3cgZXJyb3JzIGZyb20gYG92c19mbG93X2tleV91cGRhdGVgIGFyZSBoYW5kbGVkIOKAkyBjaGFuZ2luZyBhIGByZXR1cm4gZXJyO2AgdG8gYSBgYnJlYWs7YC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCB3YXJyYW50cyBhIGNsb3NlciBsb29rLCBlc3BlY2lhbGx5IGZvciBmdXp6aW5nIHBvdGVudGlhbC4gVGhlc2UgYXJlIGNvcmUgZnVuY3Rpb25zLCBhbmQgZXZlbiBzdWJ0bGUgY2hhbmdlcyBpbiBlcnJvciBoYW5kbGluZyBvciBjb250cm9sIGZsb3cgY2FuIGhhdmUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zIGZvciBvdmVyYWxsIHN0YWJpbGl0eSBhbmQgc2VjdXJpdHkuIEkmIzM5O2xsIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9ucyBvZiBgZXhlY3V0ZV9yZWNpcmNgIGFuZCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCB3aXRoaW4gYGFjdGlvbnMuY2AgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYW5nZS4KClRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBPcGVuIHZTd2l0Y2ggaXMgY29uZmlndXJlZC4gSSBrbm93IHRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgcGxhY2UgdG8gbG9vayBmb3IgdGhhdCBpbmZvcm1hdGlvbiwgYW5kIEkgYmVsaWV2ZSB0aGUgYE9QRU5WU1dJVENIYCBjb25maWcgb3B0aW9uIGluIGBuZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZ2Agd2lsbCBnaXZlIG1lIHRoZSByZWxldmFudCBzZXR0aW5ncyBhbmQgYnVpbGQtdGltZSBvcHRpb25zLiBJIHdhbnQgdG8gYnVpbGQgYSB0ZXN0IHJpZyB3aXRoIHRoZSBjb25maWcgb3B0aW9ucyB0aGF0IG1ha2UgYGV4ZWN1dGVfcmVjaXJjYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AgYWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4ZWN1dGVfcmVjaXJjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEwMzk9c3RhdGljIGludCBleGVjdXRlX21hc2tlZF9zZXRfYWN0aW9uKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMTE0LSAqL1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxMTE1OnN0YXRpYyBpbnQgZXhlY3V0ZV9yZWNpcmMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTExNi1cdFx0XHQgIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTI1NT1zdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTM0OC1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTM0OTpcdFx0XHRlcnIgPSBleGVjdXRlX3JlY2lyYyhkcCwgc2tiLCBrZXksIGEsIGxhc3QpO1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMzUwLVx0XHRcdGlmIChsYXN0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipBbmFseXppbmcgRXhlY3V0aW9uIEZsb3cqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYGV4ZWN1dGVfcmVjaXJjYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AgYXJlIGJvdGggZGVmaW5lZCBhcyBzdGF0aWMgbWVtYmVycywgd2hpY2ggaXMgZ29vZCB0byBrbm93LCBidXQgZG9lc24mIzM5O3QgbmVjZXNzYXJpbHkgdGVsbCB1cyAqaG93KiB0aGV5IGFyZSAqYmVpbmcqIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtLiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGhvdyBgZG9fZXhlY3V0ZV9hY3Rpb25zYCBpcyBjYWxsZWQuIEl0JiMzOTtzIHRpbWUgdG8gdHJhY2UgdGhlIGNhbGxzLiBXaGVyZSBpcyBpdCBiZWluZyBpbnZva2VkIGZyb20/IFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgaW5zaWdodHMgd2lsbCBiZS4gTmVlZCB0byBzZWUgdGhlIGRlcGVuZGVuY3kgZ3JhcGggYW5kIHBpbnBvaW50IHBvdGVudGlhbCBib3R0bGVuZWNrcyBhbmQgY3JpdGljYWwgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9fZXhlY3V0ZV9hY3Rpb25zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyMD1zdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyNS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTI2OnN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyNy1cdFx0XHQgICAgICBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNDk9c3RhdGljIHZvaWQgZXhlY3V0ZV9wc2FtcGxlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjU0LS8qIEV4ZWN1dGUgYSBsaXN0IG9mIGFjdGlvbnMgYWdhaW5zdCAmIzM5O3NrYiYjMzk7LiAqL1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxMjU1OnN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyNTYtXHRcdFx0ICAgICAgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXksXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNDgzPXN0YXRpYyBpbnQgY2xvbmVfZXhlY3V0ZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTUxMC1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTUxMTpcdFx0XHRlcnIgPSBkb19leGVjdXRlX2FjdGlvbnMoZHAsIHNrYiwgY2xvbmUsXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1MTItXHRcdFx0XHRcdFx0IGFjdGlvbnMsIGxlbik7XG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNTQ5PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU2NS1cdFx0aWYgKGFjdGlvbnMpXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1NjY6XHRcdFx0ZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGtleSwgYWN0aW9ucywgYWN0aW9uc19sZW4pO1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTY3LVx0XHRlbHNlXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNTc2PWludCBvdnNfZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTkxLVx0T1ZTX0NCKHNrYiktXHUwMDNlYWN0c19vcmlnbGVuID0gYWN0cy1cdTAwM2VvcmlnX2xlbjtcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTU5MjpcdGVyciA9IGRvX2V4ZWN1dGVfYWN0aW9ucyhkcCwgc2tiLCBrZXksXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1OTMtXHRcdFx0XHQgYWN0cy1cdTAwM2VhY3Rpb25zLCBhY3RzLVx1MDAzZWFjdGlvbnNfbGVuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDEwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbCBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AqKgoKQWxyaWdodCwgSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IGBvdnNfZXhlY3V0ZV9hY3Rpb25zYC4gU29tZXRoaW5nJiMzOTtzIGJ1Z2dpbmcgbWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSBhbSBncmFzcGluZyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGhvdyBpdCBpcyB1c2VkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGUgd2hvbGUgY29udGV4dCBpcyBzY3JlYW1pbmcgdG8gYmUgaW52ZXN0aWdhdGVkLCBiZWNhdXNlIHRoZSBub24tc3RhdGljIGRlY2xhcmF0aW9uIG1lYW5zIGl0IGhhcyBsaW5rYWdlIHRvIHNvbWV0aGluZyBvdXRzaWRlIHRoZSBwcmVzZW50IGNvbXBpbGF0aW9uIHVuaXQuIFRoYXQgY291bGQgY3JlYXRlIHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIGlmIGl0IGlzbiYjMzk7dCB1c2VkIGFzIEkgZXhwZWN0LiBJdCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhpcyBjb250ZXh0LCBhbmQgZG91YmxlIGNoZWNrIG15IGV4cGVjdGF0aW9ucy4gSSBiZXR0ZXIgZ2V0IHRoZSBkZXRhaWxzIG9mIHRoaXMgYmVmb3JlIEkgbWFrZSBhbnkgZGVjaXNpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0OT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1NzUtLyogRXhlY3V0ZSBhIGxpc3Qgb2YgYWN0aW9ucyBhZ2FpbnN0ICYjMzk7c2tiJiMzOTsuICovXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1NzY6aW50IG92c19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3Ny1cdFx0XHRjb25zdCBzdHJ1Y3Qgc3dfZmxvd19hY3Rpb25zICphY3RzLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTI0NT12b2lkIG92c19kcF9wcm9jZXNzX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSlcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0zMDgtXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzozMDk6XHRlcnJvciA9IG92c19leGVjdXRlX2FjdGlvbnMoZHAsIHNrYiwgc2ZfYWN0cywga2V5KTtcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTMxMC1cdGlmICh1bmxpa2VseShlcnJvcikpXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9NjEyPXN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTcwMi1cdFx0dGhpc19jcHVfd3JpdGUob3ZzX3BjcHVfc3RvcmFnZS1cdTAwM2Vvd25lciwgY3VycmVudCk7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo3MDM6XHRlcnIgPSBvdnNfZXhlY3V0ZV9hY3Rpb25zKGRwLCBwYWNrZXQsIHNmX2FjdHMsIFx1MDAyNmZsb3ctXHUwMDNla2V5KTtcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTcwNC1cdGlmIChJU19FTkFCTEVEKENPTkZJR19QUkVFTVBUX1JUKSlcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaD0zMjk9c3RydWN0IHNrX2J1ZmYgKm92c192cG9ydF9jbWRfYnVpbGRfaW5mbyhzdHJ1Y3QgdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMzMxLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmg6MzMyOmludCBvdnNfZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaC0zMzMtXHRcdFx0Y29uc3Qgc3RydWN0IHN3X2Zsb3dfYWN0aW9ucyAqLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc4NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgT1ZTIFBhY2tldCBQcm9jZXNzaW5nIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBvZiBwYWNrZXQgcHJvY2Vzc2luZyB3aXRoaW4gT1ZTLCBhbmQgSSYjMzk7bSBsb29raW5nIGZvciB0aGUga2V5IGVudHJ5IHBvaW50cy4gQmFzZWQgb24gZXhwZXJpZW5jZSwgYG92c19kcF9wcm9jZXNzX3BhY2tldGAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBsaWtlbHkgY2FuZGlkYXRlcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLiBBaCwgaXQmIzM5O3MgbWFya2VkIGFzIGBzdGF0aWNgLCB3aGljaCBpc24mIzM5O3QgYSBzdXJwcmlzZSBmb3IgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIGJ1dCB0aGUgaW1wb3J0YW50IGNsdWUgaXMgdGhhdCBpdCYjMzk7cyBhIG5ldGxpbmsgY29tbWFuZCBoYW5kbGVyLiBUaGF0IGRlZmluaXRlbHkgbWFrZXMgaXQgYSByZWxldmFudCBwaWVjZSB0byBhbmFseXplLCBidXQgbGV0IG1lIG5vdyBwaXZvdCB0byBleGFtaW5lIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGRpcmVjdGx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBuZXRsaW5rIGludGVyZmFjZSwgYW5kIGl0cyBvdmVyYWxsIHJvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19kcF9wcm9jZXNzX3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNDgzPXN0YXRpYyBpbnQgY2xvbmVfZXhlY3V0ZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTUxNy1cdFx0XHRjbG9uZS1cdTAwM2VyZWNpcmNfaWQgPSByZWNpcmNfaWQ7XG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1MTg6XHRcdFx0b3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHNrYiwgY2xvbmUpO1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTE5LVx0XHR9XG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNTQ5PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU2Ny1cdFx0ZWxzZVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxNTY4Olx0XHRcdG92c19kcF9wcm9jZXNzX3BhY2tldChza2IsIGtleSk7XG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1NjktXHR9IHdoaWxlICghYWN0aW9uX2ZpZm9faXNfZW1wdHkoZmlmbykpO1xuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTIzMz12b2lkIG92c19kcF9kZXRhY2hfcG9ydChzdHJ1Y3QgdnBvcnQgKnApXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjQ0LS8qIE11c3QgYmUgY2FsbGVkIHdpdGggcmN1X3JlYWRfbG9jay4gKi9cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI0NTp2b2lkIG92c19kcF9wcm9jZXNzX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSlcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI0Ni17XG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmg9MzE4PWV4dGVybiBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHBfdnBvcnRfZ2VubF9mYW1pbHk7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaC0zMTktXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaDozMjA6dm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpO1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMzIxLXZvaWQgb3ZzX2RwX2RldGFjaF9wb3J0KHN0cnVjdCB2cG9ydCAqKTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYz00OTc9aW50IG92c192cG9ydF9yZWNlaXZlKHN0cnVjdCB2cG9ydCAqdnBvcnQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL3Zwb3J0LmMtNTIyLVx0fVxubmV0L29wZW52c3dpdGNoL3Zwb3J0LmM6NTIzOlx0b3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHNrYiwgXHUwMDI2a2V5KTtcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5jLTUyNC1cdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njc5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbml0aWFsIEV4YW1pbmF0aW9uIG9mIE9WUyBQYWNrZXQgSGFuZGxpbmcqKgoKQWxyaWdodCwgc28gYG92c192cG9ydF9yZWNlaXZlYCB1bHRpbWF0ZWx5IGNhbGxzIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgLiBUaGF0IGZlZWxzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyBwYWNrZXQgZmxvdywgYSBwb3RlbnRpYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBjb3JlIGRhdGEgcGF0aCBwcm9jZXNzaW5nLiBMZXQmIzM5O3MgbWFrZSBhIG5vdGUgb2YgdGhhdC4gQW5kLCBvZiBjb3Vyc2UsIHRoZXJlJiMzOTtzIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgd2hpY2ggaXMgdGhlIG5ldGxpbmsgY29tbWFuZCBoYW5kbGVyIOKAkyBkZWZpbml0ZWx5IGFub3RoZXIgZGlzdGluY3QgZW50cnkgcG9pbnQgdG8gY29uc2lkZXIsIGdpdmVuIHRoZSBjb250cm9sIHBsYW5lJiMzOTtzIHJvbGUuCgpOb3csIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHBsYWNlcyB3aGVyZSB0aGlzIHByb2Nlc3Npbmcga2lja3Mgb2ZmLiBEaXZpbmcgZGVlcGVyLCBJIHNlZSBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AgaXMgdGhlIGJlbmVmaWNpYXJ5IG9mIGJvdGggYG92c19kcF9wcm9jZXNzX3BhY2tldGAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYC4gU28sIGl0IGFwcGVhcnMgdGhhdCBgb3ZzX3Zwb3J0X3JlY2VpdmVgIGFuZCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgYXJlIGluZGVlZCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgdG8gZm9jdXMgb24uIEkmIzM5O2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlciBsb29rIGF0IGBvdnNfdnBvcnRfcmVjZWl2ZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c192cG9ydF9yZWNlaXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmM9MzQ9aW50ZXJuYWxfZGV2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtMzctXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmM6Mzg6XHQvKiBzdG9yZSBsZW4gdmFsdWUgYmVjYXVzZSBza2IgY2FuIGJlIGZyZWVkIGluc2lkZSBvdnNfdnBvcnRfcmVjZWl2ZSgpICovXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtMzktXHRsZW4gPSBza2ItXHUwMDNlbGVuO1xuLS1cbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYy00MS1cdHJjdV9yZWFkX2xvY2soKTtcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzo0MjpcdGVyciA9IG92c192cG9ydF9yZWNlaXZlKGludGVybmFsX2Rldl9wcml2KG5ldGRldiktXHUwMDNldnBvcnQsIHNrYiwgTlVMTCk7XG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtNDMtXHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2LmM9Mjk9c3RhdGljIHZvaWQgbmV0ZGV2X3BvcnRfcmVjZWl2ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYy00OS1cbm5ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYzo1MDpcdG92c192cG9ydF9yZWNlaXZlKHZwb3J0LCBza2IsIHNrYl90dW5uZWxfaW5mbyhza2IpKTtcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYy01MS1cdHJldHVybjtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYz00Njk9dTMyIG92c192cG9ydF9maW5kX3VwY2FsbF9wb3J0aWQoY29uc3Qgc3RydWN0IHZwb3J0ICp2cG9ydCxcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy00ODctLyoqXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYzo0ODg6ICpcdG92c192cG9ydF9yZWNlaXZlIC0gcGFzcyB1cCByZWNlaXZlZCBwYWNrZXQgdG8gdGhlIGRhdGFwYXRoIGZvciBwcm9jZXNzaW5nXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy00ODktICpcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy00OTYtICovXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYzo0OTc6aW50IG92c192cG9ydF9yZWNlaXZlKHN0cnVjdCB2cG9ydCAqdnBvcnQsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy00OTgtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBpcF90dW5uZWxfaW5mbyAqdHVuX2luZm8pXG4tLVxubmV0L29wZW52c3dpdGNoL3Zwb3J0Lmg9MTk1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHZwb3J0ICp2cG9ydF9mcm9tX3ByaXYodm9pZCAqcHJpdilcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuaC0xOTktXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuaDoyMDA6aW50IG92c192cG9ydF9yZWNlaXZlKHN0cnVjdCB2cG9ydCAqLCBzdHJ1Y3Qgc2tfYnVmZiAqLFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LmgtMjAxLVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2luZm8gKik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NzAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqVHJhY2luZyB0aGUgRGF0YSBQYXRoICZhbXA7IENvbW1hbmQgRXhlY3V0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IGBvdnNfdnBvcnRfcmVjZWl2ZWAgaXMgYXQgdGhlIGNvcmUgb2YgdGhpcywgY2FsbGVkIGZyb20gdHdvIGtleSBwbGFjZXM6IGBuZXRkZXZfcG9ydF9yZWNlaXZlYCwgd2hpY2ggSSByZWNvZ25pemUgYXMgdGhlIHN0YW5kYXJkIHJlY2VpdmUgaGFuZGxlciBmb3IgYSBuZXR3b3JrIGRldmljZSwgYW5kIGBpbnRlcm5hbF9kZXZfeG1pdGAsIHdoaWNoIHN1Z2dlc3RzIHNvbWUgaW50ZXJuYWwgcGFja2V0IHRyYW5zbWlzc2lvbiB3aXRoaW4gdGhlIE9wZW4gdlN3aXRjaCBkYXRhIHBhdGggaXRzZWxmLiBUaGF0IG1ha2VzIHNlbnNlOyBpbmNvbWluZyBwYWNrZXRzIGFuZCBpbnRlcm5hbCBmb3J3YXJkaW5nLiBHb29kLiBgbmV0ZGV2X3BvcnRfcmVjZWl2ZWAgY2xlYXJseSBoYW5kbGVzIHRoZSBSWCBwYXRoLCB0aGF0JiMzOTtzIGV4cGVjdGVkLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAuLi4gdGhhdCByaW5ncyBhIGJlbGwuIEl0JiMzOTtzIGEgbmV0bGluayBjb21tYW5kIGhhbmRsZXIsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBwcm9jZXNzaW5nIGNvbW1hbmRzIHRoYXQgYXJlIGluamVjdGVkIGludG8gdGhlIGRhdGFwYXRoIGZyb20gdXNlcnNwYWNlLCBsaWtlIGZsb3cgbW9kaWZpY2F0aW9ucyBvciBjb25maWd1cmF0aW9uIGNoYW5nZXMuIEkgbmVlZCB0byBzZWUgaG93IHRoZXNlIHR3byBwaWVjZXMgcmVsYXRlLiBMZXQgbWUgcHVsbCB1cCBgbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGF0IGNvbW1hbmQgaXMgZ2V0dGluZyBhcHBsaWVkLiBUaGlzIGNvdWxkIGJlIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9yIGFjdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGEgZmxvdyBnZXQgaW5qZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19wYWNrZXRfY21kX2V4ZWN1dGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz00NTE9c3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjExLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NjEyOnN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjEzLXtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz03MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBkcF9wYWNrZXRfZ2VubF9vcHNbXSA9IHtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy03MzYtXHQgIC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sIC8qIFJlcXVpcmVzIENBUF9ORVRfQURNSU4gcHJpdmlsZWdlLiAqL1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NzM3Olx0ICAuZG9pdCA9IG92c19wYWNrZXRfY21kX2V4ZWN1dGVcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTczOC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQyMQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBPVlMgUGFja2V0IFByb2Nlc3NpbmcgRm9jdXMqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gdGhlIGNyaXRpY2FsIGFyZWFzIGZvciBwYWNrZXQgcHJvY2Vzc2luZyB3aXRoaW4gT3BlbiB2U3dpdGNoLiBUaGlua2luZyBhYm91dCBpdCwgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIHJlYWxseSBmZWVscyBsaWtlIGEga2V5IGZvY3VzLiBJdCYjMzk7cyByaWdodCB0aGVyZSwgZGlyZWN0bHkgZXhlY3V0aW5nIGFjdGlvbnMgb24gcGFja2V0cy4gQW5kLCBvZiBjb3Vyc2UsIGBvdnNfdnBvcnRfcmVjZWl2ZWAgaXMgYW5vdGhlciBwcmltZSBjYW5kaWRhdGUuIEl0JiMzOTtzIHRoZSByZWNlaXZlciwgdGhlIGVudHJ5IHBvaW50IGZvciBwYWNrZXRzLgoKSSBzaG91bGQgc2VlIGlmIGFueSBvdGhlciBuZXRsaW5rIGNvbW1hbmRzIG1pZ2h0IGJlIHRyaWdnZXJpbmcgYWN0aW9ucy4gTGV0IG1lIHF1aWNrbHkgY2hlY2suIEhtbSwgYG92c19mbG93X2NtZF9uZXdgPyBObywgdGhhdCYjMzk7cyBqdXN0IGZvciBpbnN0YWxsaW5nIGZsb3dzOyBub3QgYSBkaXJlY3QgcGFja2V0IGFjdGlvbi4gU28sIGl0IGFwcGVhcnMgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIGFuZCBgb3ZzX3Zwb3J0X3JlY2VpdmVgIGFyZSB0aGUgbWFpbiBlbnRyeSBwb2ludHMgZm9yIE9wZW4gdlN3aXRjaCYjMzk7cyBwYWNrZXQgcHJvY2Vzc2luZyB3b3JrZmxvdy4KCk5vdywgSSYjMzk7bSBjdXJpb3VzIGlmIGBPUEVOVlNXSVRDSGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBwaWVjZS4gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IHdvdWxkIGFmZmVjdCBwYWNrZXQgcHJvY2Vzc2luZz8gVGltZSB0byBkaWcgaW50byBgbmV0L29wZW52c3dpdGNoL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE9wZW4gdlN3aXRjaFxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgT1BFTlZTV0lUQ0hcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgXFxcbiAgMTA6XHRcdFx0ICAgKE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgKCghTkZfREVGUkFHX0lQVjYgfHwgTkZfREVGUkFHX0lQVjYpIFx1MDAyNlx1MDAyNiBcXFxuICAxMTpcdFx0XHRcdFx0ICAgICAoIU5GX05BVCB8fCBORl9OQVQpIFx1MDAyNlx1MDAyNiBcXFxuICAxMjpcdFx0XHRcdFx0ICAgICAoIU5FVEZJTFRFUl9DT05OQ09VTlQgfHwgTkVURklMVEVSX0NPTk5DT1VOVCkpKVxuICAxMzpcdFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8ICFQU0FNUExFXG4gIDE0Olx0XHRzZWxlY3QgTVBMU1xuICAxNTpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiAgMTY6XHRcdHNlbGVjdCBORVRfTVBMU19HU09cbiAgMTc6XHRcdHNlbGVjdCBEU1RfQ0FDSEVcbiAgMTg6XHRcdHNlbGVjdCBORVRfTlNIXG4gIDE5Olx0XHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WUyBpZiBORl9DT05OVFJBQ0tcbiAgMjA6XHRcdHNlbGVjdCBORl9OQVRfT1ZTIGlmIE5GX05BVFxuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBPcGVuIHZTd2l0Y2ggaXMgYSBtdWx0aWxheWVyIEV0aGVybmV0IHN3aXRjaCB0YXJnZXRlZCBhdCB2aXJ0dWFsaXplZFxuICAyMzpcdFx0ICBlbnZpcm9ubWVudHMuICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIGEgdmFyaWV0eSBvZiBmZWF0dXJlc1xuICAyNDpcdFx0ICBleHBlY3RlZCBpbiBhIHRyYWRpdGlvbmFsIGhhcmR3YXJlIHN3aXRjaCwgaXQgZW5hYmxlcyBmaW5lLWdyYWluZWRcbiAgMjU6XHRcdCAgcHJvZ3JhbW1hdGljIGV4dGVuc2lvbiBhbmQgZmxvdy1iYXNlZCBjb250cm9sIG9mIHRoZSBuZXR3b3JrLiAgVGhpc1xuICAyNjpcdFx0ICBjb250cm9sIGlzIHVzZWZ1bCBpbiBhIHdpZGUgdmFyaWV0eSBvZiBhcHBsaWNhdGlvbnMgYnV0IGlzXG4gIDI3Olx0XHQgIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgaW4gbXVsdGktc2VydmVyIHZpcnR1YWxpemF0aW9uIGRlcGxveW1lbnRzLFxuICAyODpcdFx0ICB3aGljaCBhcmUgb2Z0ZW4gY2hhcmFjdGVyaXplZCBieSBoaWdobHkgZHluYW1pYyBlbmRwb2ludHMgYW5kIHRoZVxuICAyOTpcdFx0ICBuZWVkIHRvIG1haW50YWluIGxvZ2ljYWwgYWJzdHJhY3Rpb25zIGZvciBtdWx0aXBsZSB0ZW5hbnRzLlxuICAzMDpcdFxuICAzMTpcdFx0ICBUaGUgT3BlbiB2U3dpdGNoIGRhdGFwYXRoIHByb3ZpZGVzIGFuIGluLWtlcm5lbCBmYXN0IHBhdGggZm9yIHBhY2tldFxuICAzMjpcdFx0ICBmb3J3YXJkaW5nLiAgSXQgaXMgY29tcGxlbWVudGVkIGJ5IGEgdXNlcnNwYWNlIGRhZW1vbiwgb3ZzLXZzd2l0Y2hkLFxuICAzMzpcdFx0ICB3aGljaCBpcyBhYmxlIHRvIGFjY2VwdCBjb25maWd1cmF0aW9uIGZyb20gYSB2YXJpZXR5IG9mIHNvdXJjZXMgYW5kXG4gIDM0Olx0XHQgIHRyYW5zbGF0ZSBpdCBpbnRvIHBhY2tldCBwcm9jZXNzaW5nIHJ1bGVzLlxuICAzNTpcdFxuICAzNjpcdFx0ICBTZWUgaHR0cDovL29wZW52c3dpdGNoLm9yZyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgdXNlcnNwYWNlXG4gIDM3Olx0XHQgIHV0aWxpdGllcy5cbiAgMzg6XHRcbiAgMzk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICA0MDpcdFx0ICBjYWxsZWQgb3BlbnZzd2l0Y2guXG4gIDQxOlx0XG4gIDQyOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIE9QRU5WU1dJVENIX0dSRVxuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7T3BlbiB2U3dpdGNoIEdSRSB0dW5uZWxpbmcgc3VwcG9ydFwmIzM0O1xuICA0NjpcdFx0ZGVwZW5kcyBvbiBPUEVOVlNXSVRDSFxuICA0NzpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVcbiAgNDg6XHRcdGRlZmF1bHQgT1BFTlZTV0lUQ0hcbiAgNDk6XHRcdGhlbHBcbiAgNTA6XHRcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIE9wZW4gdlN3aXRjaCB3aWxsIGJlIGFibGUgY3JlYXRlIEdSRVxuICA1MTpcdFx0ICB2cG9ydC5cbiAgNTI6XHRcbiAgNTM6XHRcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXG4gIDU0Olx0XG4gIDU1Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4gIDU2Olx0XG4gIDU3Olx0Y29uZmlnIE9QRU5WU1dJVENIX1ZYTEFOXG4gIDU4Olx0XHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2ggVlhMQU4gdHVubmVsaW5nIHN1cHBvcnRcJiMzNDtcbiAgNTk6XHRcdGRlcGVuZHMgb24gT1BFTlZTV0lUQ0hcbiAgNjA6XHRcdGRlcGVuZHMgb24gVlhMQU5cbiAgNjE6XHRcdGRlZmF1bHQgT1BFTlZTV0lUQ0hcbiAgNjI6XHRcdGhlbHBcbiAgNjM6XHRcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIE9wZW4gdlN3aXRjaCB3aWxsIGJlIGFibGUgY3JlYXRlIHZ4bGFuIHZwb3J0LlxuICA2NDpcdFxuICA2NTpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiAgNjY6XHRcbiAgNjc6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgT1BFTlZTV0lUQ0hfR0VORVZFXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2ggR2VuZXZlIHR1bm5lbGluZyBzdXBwb3J0XCYjMzQ7XG4gIDcxOlx0XHRkZXBlbmRzIG9uIE9QRU5WU1dJVENIXG4gIDcyOlx0XHRkZXBlbmRzIG9uIEdFTkVWRVxuICA3MzpcdFx0ZGVmYXVsdCBPUEVOVlNXSVRDSFxuICA3NDpcdFx0aGVscFxuICA3NTpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgT3BlbiB2U3dpdGNoIHdpbGwgYmUgYWJsZSBjcmVhdGUgZ2VuZXZlIHZwb3J0LlxuICA3NjpcdFxuICA3NzpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkwMwoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiAzMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBPcGVuIHZTd2l0Y2ggUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZXhlY3V0ZV9yZWNpcmNgIGFuZCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCB3aXRoaW4gYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgLCB3aXRoIHRoZSBgT1BFTlZTV0lUQ0hgIGNvbmZpZyBhY3RpdmUuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0JiMzOTtzIGZ1bmN0aW9uYWwgYW5kIGFkZHJlc3NlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBjcmFzaCBzcGVjaWZpY2FsbHkgdGllZCB0byBgc2tiYCB3aXRoaW4gYGV4ZWN1dGVfcmVjaXJjYC4gRGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nOyB0aG9zZSB0eXBlcyBvZiBpc3N1ZXMgYXJlIGJyZWFkIGFuZCBidXR0ZXIgZm9yIGZpbmRpbmcgdnVsbmVyYWJpbGl0aWVzLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IG91ciBmb2N1cyBzeW1ib2xzLiBJIGhhZCBpbml0aWFsbHkgemVyb2VkIGluIG9uIGBvdnNfdnBvcnRfcmVjZWl2ZWAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgYnV0IG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZWlyIHZpc2liaWxpdHkuICpvdnNfdnBvcnRfcmVjZWl2ZSogaXMgZXhwb3J0ZWQsIHNvIHRoYXQmIzM5O3MgZ29vZDsgaXQmIzM5O3MgYWNjZXNzaWJsZS4gQnV0IGhhbmcgb24sIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBpcyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBtaWdodCBtYWtlIGl0IGEgcG9vciBmdXp6aW5nIHRhcmdldCwgYXMgYSBzdGF0aWMgZnVuY3Rpb24mIzM5O3Mgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgZmlsZSBpdCYjMzk7cyBkZWNsYXJlZCBpbi4gCgpZZXAsIGp1c3QgY29uZmlybWVkOiBgc3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pYC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIsIG5vbi1zdGF0aWMsIGZ1bmN0aW9ucyB3ZSBjb3VsZCB0YXJnZXQuIEFoLCBoZXJlIHdlIGdvOiBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AgaXMgbm9uLXN0YXRpYywgc28gd2UgaGF2ZSBhbm90aGVyIGNhbmRpZGF0ZS4gQW5kIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgLCB0aGF0JiMzOTtzIGFjY2Vzc2libGUgdG9vLiBTbywgYSByZXZpc2VkIGxpc3Q6IGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCwgYG92c19kcF9wcm9jZXNzX3BhY2tldGAsIGFuZCBgb3ZzX3Zwb3J0X3JlY2VpdmVgIGFyZSBhbGwgZ29vZCBmb2N1cyBwb2ludHMgZm9yIHRoZSBmdXp6aW5nIGVmZm9ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPUEVOVlNXSVRDSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAgICYjMzQ7b3ZzX2RwX3Byb2Nlc3NfcGFja2V0JiMzNDssCiAgICAmIzM0O292c192cG9ydF9yZWNlaXZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCAoZXhlY3V0ZV9yZWNpcmMgYW5kIGRvX2V4ZWN1dGVfYWN0aW9ucykgdG8gcHJvcGVybHkgaGFuZGxlIHNrYiBsaWZlY3ljbGUgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzIHdoZW4gb3ZzX2Zsb3dfa2V5X3VwZGF0ZSBmYWlscy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPUEVOVlNXSVRDSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAgICYjMzQ7b3ZzX2RwX3Byb2Nlc3NfcGFja2V0JiMzNDssCiAgICAmIzM0O292c192cG9ydF9yZWNlaXZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCAoZXhlY3V0ZV9yZWNpcmMgYW5kIGRvX2V4ZWN1dGVfYWN0aW9ucykgdG8gcHJvcGVybHkgaGFuZGxlIHNrYiBsaWZlY3ljbGUgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzIHdoZW4gb3ZzX2Zsb3dfa2V5X3VwZGF0ZSBmYWlscy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDI6NTEuOTAxNTQ3MzQ2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY5MDExMjE3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c192cG9ydF9yZWNlaXZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoIChleGVjdXRlX3JlY2lyYyBhbmQgZG9fZXhlY3V0ZV9hY3Rpb25zKSB0byBwcm9wZXJseSBoYW5kbGUgc2tiIGxpZmVjeWNsZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMgd2hlbiBvdnNfZmxvd19rZXlfdXBkYXRlIGZhaWxzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAyOjUxLjkwMTU1NDk4NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0MTA0NzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTkxMjBiOTZkNGNiN2QwMzQ2Mzg5MGIxZWM2Y2UwYTU0NTQxYjQ4M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyOCAxNjowMjo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xcbmluZGV4IDUxM2ZjYTZhOGU4YTQuLmRjNWZmODU5ZjExNDUgMTAwNjQ0XFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xcbisrKyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcXG5AQCAtMTEwOCw2ICsxMTA4LDEwIEBAIHN0YXRpYyBpbnQgZXhlY3V0ZV9tYXNrZWRfc2V0X2FjdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbisvKiBXaGVuICdsYXN0JyBpcyB0cnVlLCByZWNpcmMoKSBzaG91bGQgYWx3YXlzIGNvbnN1bWUgdGhlICdza2InLlxcbisgKiBPdGhlcndpc2UsIHJlY2lyYygpIHNob3VsZCBrZWVwICdza2InIGludGFjdCByZWdhcmRsZXNzIHdoYXRcXG4rICogYWN0aW9ucyBhcmUgZXhlY3V0ZWQgb24gcmVjaXJjdWxhdGlvbi5cXG4rICovXFxuIHN0YXRpYyBpbnQgZXhlY3V0ZV9yZWNpcmMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcXG4gXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphLCBib29sIGxhc3QpXFxuQEAgLTExMTgsOCArMTEyMiwxMiBAQCBzdGF0aWMgaW50IGV4ZWN1dGVfcmVjaXJjKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGludCBlcnI7XFxuIFxcbiBcXHRcXHRlcnIgPSBvdnNfZmxvd19rZXlfdXBkYXRlKHNrYiwga2V5KTtcXG4tXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0aWYgKGVycikge1xcbitcXHRcXHRcXHRpZiAobGFzdClcXG4rXFx0XFx0XFx0XFx0b3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIE9WU19EUk9QX0FDVElPTl9FUlJPUik7XFxuIFxcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHRCVUdfT04oIWlzX2Zsb3dfa2V5X3ZhbGlkKGtleSkpO1xcbiBcXG5AQCAtMTM3Miw3ICsxMzgwLDcgQEAgc3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0aWYgKCFpc19mbG93X2tleV92YWxpZChrZXkpKSB7XFxuIFxcdFxcdFxcdFxcdGVyciA9IG92c19mbG93X2tleV91cGRhdGUoc2tiLCBrZXkpO1xcbiBcXHRcXHRcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0XFx0fVxcbiBcXG4gXFx0XFx0XFx0ZXJyID0gb3ZzX2N0X2V4ZWN1dGUob3ZzX2RwX2dldF9uZXQoZHApLCBza2IsIGtleSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDI6NTIuNDY2NDgwMTE4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzYzMzYxNjA5OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c192cG9ydF9yZWNlaXZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoIChleGVjdXRlX3JlY2lyYyBhbmQgZG9fZXhlY3V0ZV9hY3Rpb25zKSB0byBwcm9wZXJseSBoYW5kbGUgc2tiIGxpZmVjeWNsZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMgd2hlbiBvdnNfZmxvd19rZXlfdXBkYXRlIGZhaWxzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE5MTIwYjk2ZDRjYjdkMDM0NjM4OTBiMWVjNmNlMGE1NDU0MWI0ODNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAxNjowMjo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG5pbmRleCA1MTNmY2E2YThlOGE0Li5kYzVmZjg1OWYxMTQ1IDEwMDY0NFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xuKysrIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xuQEAgLTExMDgsNiArMTEwOCwxMCBAQCBzdGF0aWMgaW50IGV4ZWN1dGVfbWFza2VkX3NldF9hY3Rpb24oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuKy8qIFdoZW4gJ2xhc3QnIGlzIHRydWUsIHJlY2lyYygpIHNob3VsZCBhbHdheXMgY29uc3VtZSB0aGUgJ3NrYicuXG4rICogT3RoZXJ3aXNlLCByZWNpcmMoKSBzaG91bGQga2VlcCAnc2tiJyBpbnRhY3QgcmVnYXJkbGVzcyB3aGF0XG4rICogYWN0aW9ucyBhcmUgZXhlY3V0ZWQgb24gcmVjaXJjdWxhdGlvbi5cbisgKi9cbiBzdGF0aWMgaW50IGV4ZWN1dGVfcmVjaXJjKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcbiBcdFx0XHQgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmEsIGJvb2wgbGFzdClcbkBAIC0xMTE4LDggKzExMjIsMTIgQEAgc3RhdGljIGludCBleGVjdXRlX3JlY2lyYyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRpbnQgZXJyO1xuIFxuIFx0XHRlcnIgPSBvdnNfZmxvd19rZXlfdXBkYXRlKHNrYiwga2V5KTtcbi1cdFx0aWYgKGVycilcbitcdFx0aWYgKGVycikge1xuK1x0XHRcdGlmIChsYXN0KVxuK1x0XHRcdFx0b3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLFxuK1x0XHRcdFx0XHRcdCAgICAgT1ZTX0RST1BfQUNUSU9OX0VSUk9SKTtcbiBcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHR9XG4gXHR9XG4gXHRCVUdfT04oIWlzX2Zsb3dfa2V5X3ZhbGlkKGtleSkpO1xuIFxuQEAgLTEzNzIsNyArMTM4MCw3IEBAIHN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0aWYgKCFpc19mbG93X2tleV92YWxpZChrZXkpKSB7XG4gXHRcdFx0XHRlcnIgPSBvdnNfZmxvd19rZXlfdXBkYXRlKHNrYiwga2V5KTtcbiBcdFx0XHRcdGlmIChlcnIpXG4tXHRcdFx0XHRcdHJldHVybiBlcnI7XG4rXHRcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRlcnIgPSBvdnNfY3RfZXhlY3V0ZShvdnNfZHBfZ2V0X25ldChkcCksIHNrYiwga2V5LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDI6NTIuNDY2NDgxNTU4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA1MjY2MTkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBpbiBPcGVuIHZTd2l0Y2ggQWN0aW9uIEV4ZWN1dGlvbioqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBwcmVzZW50ZWQgd2l0aCBhIHBhdGNoIHRhcmdldGluZyBgbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY2AuIE15IGluaXRpYWwgc2NhbiBzaG93cyB0aGF0IGl0J3MgdG91Y2hpbmcgYGV4ZWN1dGVfcmVjaXJjYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AsIHdoaWNoIGFyZSBib3RoIGNyaXRpY2FsIHBhcnRzIG9mIGhvdyBPcGVuIHZTd2l0Y2ggaGFuZGxlcyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgYXBwbHlpbmcgYWN0aW9ucy4gVGhlIHBhdGNoIGFwcGVhcnMgdG8gaW50cm9kdWNlIGEgc3BlY2lmaWMgZXJyb3IgaGFuZGxpbmcgbWVjaGFuaXNtIHdpdGhpbiBgZXhlY3V0ZV9yZWNpcmNgLCBjaGVja2luZyBmb3IgYSBjb25kaXRpb24gc2lnbmFsZWQgYnkgYGVycmAgYW5kIHN1YnNlcXVlbnRseSB1c2luZyBgb3ZzX2tmcmVlX3NrYl9yZWFzb25gLiBJbiBgZG9fZXhlY3V0ZV9hY3Rpb25zYCwgdGhlcmUncyBhIG1vZGlmaWNhdGlvbiB0byBob3cgZXJyb3JzIGZyb20gYG92c19mbG93X2tleV91cGRhdGVgIGFyZSBoYW5kbGVkIOKAkyBjaGFuZ2luZyBhIGByZXR1cm4gZXJyO2AgdG8gYSBgYnJlYWs7YC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdhcnJhbnRzIGEgY2xvc2VyIGxvb2ssIGVzcGVjaWFsbHkgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBUaGVzZSBhcmUgY29yZSBmdW5jdGlvbnMsIGFuZCBldmVuIHN1YnRsZSBjaGFuZ2VzIGluIGVycm9yIGhhbmRsaW5nIG9yIGNvbnRyb2wgZmxvdyBjYW4gaGF2ZSBzaWduaWZpY2FudCBpbXBsaWNhdGlvbnMgZm9yIG92ZXJhbGwgc3RhYmlsaXR5IGFuZCBzZWN1cml0eS4gSSdsbCBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbnMgb2YgYGV4ZWN1dGVfcmVjaXJjYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2Agd2l0aGluIGBhY3Rpb25zLmNgIHRvIGZ1bGx5IGdyYXNwIHRoZSBjaGFuZ2UuXG5cblRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBPcGVuIHZTd2l0Y2ggaXMgY29uZmlndXJlZC4gSSBrbm93IHRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgcGxhY2UgdG8gbG9vayBmb3IgdGhhdCBpbmZvcm1hdGlvbiwgYW5kIEkgYmVsaWV2ZSB0aGUgYE9QRU5WU1dJVENIYCBjb25maWcgb3B0aW9uIGluIGBuZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZ2Agd2lsbCBnaXZlIG1lIHRoZSByZWxldmFudCBzZXR0aW5ncyBhbmQgYnVpbGQtdGltZSBvcHRpb25zLiBJIHdhbnQgdG8gYnVpbGQgYSB0ZXN0IHJpZyB3aXRoIHRoZSBjb25maWcgb3B0aW9ucyB0aGF0IG1ha2UgYGV4ZWN1dGVfcmVjaXJjYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AgYWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQ2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDI6NTguNTE5MTQ3NjU2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Nzc4MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4ZWN1dGVfcmVjaXJjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMDM5PXN0YXRpYyBpbnQgZXhlY3V0ZV9tYXNrZWRfc2V0X2FjdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMTE0LSAqL1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTExNTpzdGF0aWMgaW50IGV4ZWN1dGVfcmVjaXJjKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMTE2LVxcdFxcdFxcdCAgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXksXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNTU9c3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTM0OC1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjEzNDk6XFx0XFx0XFx0ZXJyID0gZXhlY3V0ZV9yZWNpcmMoZHAsIHNrYiwga2V5LCBhLCBsYXN0KTtcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEzNTAtXFx0XFx0XFx0aWYgKGxhc3QpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDI6NTguNTYzOTU2MzU0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwMzMwNzMwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQW5hbHl6aW5nIEV4ZWN1dGlvbiBGbG93KipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgZXhlY3V0ZV9yZWNpcmNgIGFuZCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCBhcmUgYm90aCBkZWZpbmVkIGFzIHN0YXRpYyBtZW1iZXJzLCB3aGljaCBpcyBnb29kIHRvIGtub3csIGJ1dCBkb2Vzbid0IG5lY2Vzc2FyaWx5IHRlbGwgdXMgKmhvdyogdGhleSBhcmUgKmJlaW5nKiB1c2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlbS4gVGhlIGZpcnN0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCBob3cgYGRvX2V4ZWN1dGVfYWN0aW9uc2AgaXMgY2FsbGVkLiBJdCdzIHRpbWUgdG8gdHJhY2UgdGhlIGNhbGxzLiBXaGVyZSBpcyBpdCBiZWluZyBpbnZva2VkIGZyb20/IFRoYXQncyB3aGVyZSB0aGUgcmVhbCBpbnNpZ2h0cyB3aWxsIGJlLiBOZWVkIHRvIHNlZSB0aGUgZGVwZW5kZW5jeSBncmFwaCBhbmQgcGlucG9pbnQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGFuZCBjcml0aWNhbCBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAzOjAxLjM2NzI2NjI1MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTU3MDY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkb19leGVjdXRlX2FjdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyMD1zdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTI1LVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTI2OnN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjctXFx0XFx0XFx0ICAgICAgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXksXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNDk9c3RhdGljIHZvaWQgZXhlY3V0ZV9wc2FtcGxlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyNTQtLyogRXhlY3V0ZSBhIGxpc3Qgb2YgYWN0aW9ucyBhZ2FpbnN0ICdza2InLiAqL1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTI1NTpzdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTI1Ni1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTQ4Mz1zdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTUxMC1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1MTE6XFx0XFx0XFx0ZXJyID0gZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGNsb25lLFxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTUxMi1cXHRcXHRcXHRcXHRcXHRcXHQgYWN0aW9ucywgbGVuKTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0OT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU2NS1cXHRcXHRpZiAoYWN0aW9ucylcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1NjY6XFx0XFx0XFx0ZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGtleSwgYWN0aW9ucywgYWN0aW9uc19sZW4pO1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU2Ny1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTE1NzY9aW50IG92c19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU5MS1cXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlYWN0c19vcmlnbGVuID0gYWN0cy1cXHUwMDNlb3JpZ19sZW47XFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxNTkyOlxcdGVyciA9IGRvX2V4ZWN1dGVfYWN0aW9ucyhkcCwgc2tiLCBrZXksXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTkzLVxcdFxcdFxcdFxcdCBhY3RzLVxcdTAwM2VhY3Rpb25zLCBhY3RzLVxcdTAwM2VhY3Rpb25zX2xlbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAzOjAxLjQxMjg0MjI0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3Mjk1MTc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbCBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AqKlxuXG5BbHJpZ2h0LCBJJ20gdGFraW5nIGEgbG9vayBhdCBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AuIFNvbWV0aGluZydzIGJ1Z2dpbmcgbWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSBhbSBncmFzcGluZyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gaG93IGl0IGlzIHVzZWQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGUgd2hvbGUgY29udGV4dCBpcyBzY3JlYW1pbmcgdG8gYmUgaW52ZXN0aWdhdGVkLCBiZWNhdXNlIHRoZSBub24tc3RhdGljIGRlY2xhcmF0aW9uIG1lYW5zIGl0IGhhcyBsaW5rYWdlIHRvIHNvbWV0aGluZyBvdXRzaWRlIHRoZSBwcmVzZW50IGNvbXBpbGF0aW9uIHVuaXQuIFRoYXQgY291bGQgY3JlYXRlIHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIGlmIGl0IGlzbid0IHVzZWQgYXMgSSBleHBlY3QuIEl0IGlzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGlzIGNvbnRleHQsIGFuZCBkb3VibGUgY2hlY2sgbXkgZXhwZWN0YXRpb25zLiBJIGJldHRlciBnZXQgdGhlIGRldGFpbHMgb2YgdGhpcyBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNjowMzowNC40ODU3OTYwMzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NTI4MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZzX2V4ZWN1dGVfYWN0aW9uc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0OT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3NS0vKiBFeGVjdXRlIGEgbGlzdCBvZiBhY3Rpb25zIGFnYWluc3QgJ3NrYicuICovXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxNTc2OmludCBvdnNfZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTc3LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBzd19mbG93X2FjdGlvbnMgKmFjdHMsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz0yNDU9dm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0zMDgtXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6MzA5OlxcdGVycm9yID0gb3ZzX2V4ZWN1dGVfYWN0aW9ucyhkcCwgc2tiLCBzZl9hY3RzLCBrZXkpO1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTMxMC1cXHRpZiAodW5saWtlbHkoZXJyb3IpKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9NjEyPXN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzAyLVxcdFxcdHRoaXNfY3B1X3dyaXRlKG92c19wY3B1X3N0b3JhZ2UtXFx1MDAzZW93bmVyLCBjdXJyZW50KTtcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo3MDM6XFx0ZXJyID0gb3ZzX2V4ZWN1dGVfYWN0aW9ucyhkcCwgcGFja2V0LCBzZl9hY3RzLCBcXHUwMDI2Zmxvdy1cXHUwMDNla2V5KTtcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy03MDQtXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BSRUVNUFRfUlQpKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmg9MzI5PXN0cnVjdCBza19idWZmICpvdnNfdnBvcnRfY21kX2J1aWxkX2luZm8oc3RydWN0IHZwb3J0ICp2cG9ydCwgc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMzMxLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oOjMzMjppbnQgb3ZzX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oLTMzMy1cXHRcXHRcXHRjb25zdCBzdHJ1Y3Qgc3dfZmxvd19hY3Rpb25zICosIHN0cnVjdCBzd19mbG93X2tleSAqKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDM6MDQuNTMyNzU4NDI1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3MzAzODQ2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE9WUyBQYWNrZXQgUHJvY2Vzc2luZyBQYXRoKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBmbG93IG9mIHBhY2tldCBwcm9jZXNzaW5nIHdpdGhpbiBPVlMsIGFuZCBJJ20gbG9va2luZyBmb3IgdGhlIGtleSBlbnRyeSBwb2ludHMuIEJhc2VkIG9uIGV4cGVyaWVuY2UsIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGFuZCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgaW1tZWRpYXRlbHkganVtcCBvdXQgYXMgbGlrZWx5IGNhbmRpZGF0ZXMuIExldCdzIHN0YXJ0IHdpdGggYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLiBBaCwgaXQncyBtYXJrZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzbid0IGEgc3VycHJpc2UgZm9yIGFuIGludGVybmFsIGZ1bmN0aW9uLCBidXQgdGhlIGltcG9ydGFudCBjbHVlIGlzIHRoYXQgaXQncyBhIG5ldGxpbmsgY29tbWFuZCBoYW5kbGVyLiBUaGF0IGRlZmluaXRlbHkgbWFrZXMgaXQgYSByZWxldmFudCBwaWVjZSB0byBhbmFseXplLCBidXQgbGV0IG1lIG5vdyBwaXZvdCB0byBleGFtaW5lIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGRpcmVjdGx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBuZXRsaW5rIGludGVyZmFjZSwgYW5kIGl0cyBvdmVyYWxsIHJvbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3ODUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNjowMzowOS4xMDU3OTkyNDNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjMxMDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm92c19kcF9wcm9jZXNzX3BhY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTQ4Mz1zdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTUxNy1cXHRcXHRcXHRjbG9uZS1cXHUwMDNlcmVjaXJjX2lkID0gcmVjaXJjX2lkO1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTUxODpcXHRcXHRcXHRvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc2tiLCBjbG9uZSk7XFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTE5LVxcdFxcdH1cXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0OT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU2Ny1cXHRcXHRlbHNlXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxNTY4OlxcdFxcdFxcdG92c19kcF9wcm9jZXNzX3BhY2tldChza2IsIGtleSk7XFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTY5LVxcdH0gd2hpbGUgKCFhY3Rpb25fZmlmb19pc19lbXB0eShmaWZvKSk7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz0yMzM9dm9pZCBvdnNfZHBfZGV0YWNoX3BvcnQoc3RydWN0IHZwb3J0ICpwKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjQ0LS8qIE11c3QgYmUgY2FsbGVkIHdpdGggcmN1X3JlYWRfbG9jay4gKi9cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzoyNDU6dm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjQ2LXtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oPTMxOD1leHRlcm4gc3RydWN0IGdlbmxfZmFtaWx5IGRwX3Zwb3J0X2dlbmxfZmFtaWx5O1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oLTMxOS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaDozMjA6dm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpO1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oLTMyMS12b2lkIG92c19kcF9kZXRhY2hfcG9ydChzdHJ1Y3QgdnBvcnQgKik7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYz00OTc9aW50IG92c192cG9ydF9yZWNlaXZlKHN0cnVjdCB2cG9ydCAqdnBvcnQsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy01MjItXFx0fVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5jOjUyMzpcXHRvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc2tiLCBcXHUwMDI2a2V5KTtcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy01MjQtXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAzOjA5LjE1MTQ0MDUyMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY2MDYyNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW5pdGlhbCBFeGFtaW5hdGlvbiBvZiBPVlMgUGFja2V0IEhhbmRsaW5nKipcblxuQWxyaWdodCwgc28gYG92c192cG9ydF9yZWNlaXZlYCB1bHRpbWF0ZWx5IGNhbGxzIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgLiBUaGF0IGZlZWxzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyBwYWNrZXQgZmxvdywgYSBwb3RlbnRpYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBjb3JlIGRhdGEgcGF0aCBwcm9jZXNzaW5nLiBMZXQncyBtYWtlIGEgbm90ZSBvZiB0aGF0LiBBbmQsIG9mIGNvdXJzZSwgdGhlcmUncyBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAsIHdoaWNoIGlzIHRoZSBuZXRsaW5rIGNvbW1hbmQgaGFuZGxlciDigJMgZGVmaW5pdGVseSBhbm90aGVyIGRpc3RpbmN0IGVudHJ5IHBvaW50IHRvIGNvbnNpZGVyLCBnaXZlbiB0aGUgY29udHJvbCBwbGFuZSdzIHJvbGUuXG5cbk5vdywgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogcGxhY2VzIHdoZXJlIHRoaXMgcHJvY2Vzc2luZyBraWNrcyBvZmYuIERpdmluZyBkZWVwZXIsIEkgc2VlIGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCBpcyB0aGUgYmVuZWZpY2lhcnkgb2YgYm90aCBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YCBhbmQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLiBTbywgaXQgYXBwZWFycyB0aGF0IGBvdnNfdnBvcnRfcmVjZWl2ZWAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBhcmUgaW5kZWVkIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyB0byBmb2N1cyBvbi4gSSdsbCBzdGFydCBieSB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCBgb3ZzX3Zwb3J0X3JlY2VpdmVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njc5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAzOjEzLjQxNzUwNjgxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY0Mzc2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvdnNfdnBvcnRfcmVjZWl2ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYz0zND1pbnRlcm5hbF9kZXZfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTM3LVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzozODpcXHQvKiBzdG9yZSBsZW4gdmFsdWUgYmVjYXVzZSBza2IgY2FuIGJlIGZyZWVkIGluc2lkZSBvdnNfdnBvcnRfcmVjZWl2ZSgpICovXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTM5LVxcdGxlbiA9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTQxLVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmM6NDI6XFx0ZXJyID0gb3ZzX3Zwb3J0X3JlY2VpdmUoaW50ZXJuYWxfZGV2X3ByaXYobmV0ZGV2KS1cXHUwMDNldnBvcnQsIHNrYiwgTlVMTCk7XFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTQzLVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LW5ldGRldi5jPTI5PXN0YXRpYyB2b2lkIG5ldGRldl9wb3J0X3JlY2VpdmUoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYy00OS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2LmM6NTA6XFx0b3ZzX3Zwb3J0X3JlY2VpdmUodnBvcnQsIHNrYiwgc2tiX3R1bm5lbF9pbmZvKHNrYikpO1xcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYy01MS1cXHRyZXR1cm47XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYz00Njk9dTMyIG92c192cG9ydF9maW5kX3VwY2FsbF9wb3J0aWQoY29uc3Qgc3RydWN0IHZwb3J0ICp2cG9ydCxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5jLTQ4Ny0vKipcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYzo0ODg6ICpcXHRvdnNfdnBvcnRfcmVjZWl2ZSAtIHBhc3MgdXAgcmVjZWl2ZWQgcGFja2V0IHRvIHRoZSBkYXRhcGF0aCBmb3IgcHJvY2Vzc2luZ1xcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5jLTQ4OS0gKlxcbi0tXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LmMtNDk2LSAqL1xcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5jOjQ5NzppbnQgb3ZzX3Zwb3J0X3JlY2VpdmUoc3RydWN0IHZwb3J0ICp2cG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy00OTgtXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGlwX3R1bm5lbF9pbmZvICp0dW5faW5mbylcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5oPTE5NT1zdGF0aWMgaW5saW5lIHN0cnVjdCB2cG9ydCAqdnBvcnRfZnJvbV9wcml2KHZvaWQgKnByaXYpXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuaC0xOTktXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0Lmg6MjAwOmludCBvdnNfdnBvcnRfcmVjZWl2ZShzdHJ1Y3QgdnBvcnQgKiwgc3RydWN0IHNrX2J1ZmYgKixcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuaC0yMDEtXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGlwX3R1bm5lbF9pbmZvICopO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNjowMzoxMy40NjIxNTU1NDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY3MzQ5NDA3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0J3MgZ29pbmcgb24sIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqVHJhY2luZyB0aGUgRGF0YSBQYXRoIFx1MDAyNiBDb21tYW5kIEV4ZWN1dGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gc2VlaW5nIHRoYXQgYG92c192cG9ydF9yZWNlaXZlYCBpcyBhdCB0aGUgY29yZSBvZiB0aGlzLCBjYWxsZWQgZnJvbSB0d28ga2V5IHBsYWNlczogYG5ldGRldl9wb3J0X3JlY2VpdmVgLCB3aGljaCBJIHJlY29nbml6ZSBhcyB0aGUgc3RhbmRhcmQgcmVjZWl2ZSBoYW5kbGVyIGZvciBhIG5ldHdvcmsgZGV2aWNlLCBhbmQgYGludGVybmFsX2Rldl94bWl0YCwgd2hpY2ggc3VnZ2VzdHMgc29tZSBpbnRlcm5hbCBwYWNrZXQgdHJhbnNtaXNzaW9uIHdpdGhpbiB0aGUgT3BlbiB2U3dpdGNoIGRhdGEgcGF0aCBpdHNlbGYuIFRoYXQgbWFrZXMgc2Vuc2U7IGluY29taW5nIHBhY2tldHMgYW5kIGludGVybmFsIGZvcndhcmRpbmcuIEdvb2QuIGBuZXRkZXZfcG9ydF9yZWNlaXZlYCBjbGVhcmx5IGhhbmRsZXMgdGhlIFJYIHBhdGgsIHRoYXQncyBleHBlY3RlZC5cblxuTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAuLi4gdGhhdCByaW5ncyBhIGJlbGwuIEl0J3MgYSBuZXRsaW5rIGNvbW1hbmQgaGFuZGxlciwgd2hpY2ggbWVhbnMgaXQncyByZXNwb25zaWJsZSBmb3IgcHJvY2Vzc2luZyBjb21tYW5kcyB0aGF0IGFyZSBpbmplY3RlZCBpbnRvIHRoZSBkYXRhcGF0aCBmcm9tIHVzZXJzcGFjZSwgbGlrZSBmbG93IG1vZGlmaWNhdGlvbnMgb3IgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSB0d28gcGllY2VzIHJlbGF0ZS4gTGV0IG1lIHB1bGwgdXAgYG5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jYCBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBjb21tYW5kIGlzIGdldHRpbmcgYXBwbGllZC4gVGhpcyBjb3VsZCBiZSB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvciBhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIGZsb3cgZ2V0IGluamVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzcwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDM6MTguMTM1NjUzNDMzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjE0ODA1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvdnNfcGFja2V0X2NtZF9leGVjdXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTQ1MT1zdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTYxMS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo2MTI6c3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjEzLXtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTczMz1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIGRwX3BhY2tldF9nZW5sX29wc1tdID0ge1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzM2LVxcdCAgLmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSwgLyogUmVxdWlyZXMgQ0FQX05FVF9BRE1JTiBwcml2aWxlZ2UuICovXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NzM3OlxcdCAgLmRvaXQgPSBvdnNfcGFja2V0X2NtZF9leGVjdXRlXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzM4LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDM6MTguMTgxODA5NDMxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTA3MzE5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgT1ZTIFBhY2tldCBQcm9jZXNzaW5nIEZvY3VzKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiB0aGUgY3JpdGljYWwgYXJlYXMgZm9yIHBhY2tldCBwcm9jZXNzaW5nIHdpdGhpbiBPcGVuIHZTd2l0Y2guIFRoaW5raW5nIGFib3V0IGl0LCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgcmVhbGx5IGZlZWxzIGxpa2UgYSBrZXkgZm9jdXMuIEl0J3MgcmlnaHQgdGhlcmUsIGRpcmVjdGx5IGV4ZWN1dGluZyBhY3Rpb25zIG9uIHBhY2tldHMuIEFuZCwgb2YgY291cnNlLCBgb3ZzX3Zwb3J0X3JlY2VpdmVgIGlzIGFub3RoZXIgcHJpbWUgY2FuZGlkYXRlLiBJdCdzIHRoZSByZWNlaXZlciwgdGhlIGVudHJ5IHBvaW50IGZvciBwYWNrZXRzLlxuXG5JIHNob3VsZCBzZWUgaWYgYW55IG90aGVyIG5ldGxpbmsgY29tbWFuZHMgbWlnaHQgYmUgdHJpZ2dlcmluZyBhY3Rpb25zLiBMZXQgbWUgcXVpY2tseSBjaGVjay4gSG1tLCBgb3ZzX2Zsb3dfY21kX25ld2A/IE5vLCB0aGF0J3MganVzdCBmb3IgaW5zdGFsbGluZyBmbG93czsgbm90IGEgZGlyZWN0IHBhY2tldCBhY3Rpb24uIFNvLCBpdCBhcHBlYXJzIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBhbmQgYG92c192cG9ydF9yZWNlaXZlYCBhcmUgdGhlIG1haW4gZW50cnkgcG9pbnRzIGZvciBPcGVuIHZTd2l0Y2gncyBwYWNrZXQgcHJvY2Vzc2luZyB3b3JrZmxvdy5cblxuTm93LCBJJ20gY3VyaW91cyBpZiBgT1BFTlZTV0lUQ0hgIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gcGllY2UuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCB3b3VsZCBhZmZlY3QgcGFja2V0IHByb2Nlc3Npbmc/IFRpbWUgdG8gZGlnIGludG8gYG5ldC9vcGVudnN3aXRjaC9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQyMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNjowMzoyMi4yOTI1NDQzMzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L29wZW52c3dpdGNoL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE9wZW4gdlN3aXRjaFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgT1BFTlZTV0lUQ0hcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2hcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gIU5GX0NPTk5UUkFDSyB8fCBcXFxcXFxuICAxMDpcXHRcXHRcXHQgICAoTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2ICgoIU5GX0RFRlJBR19JUFY2IHx8IE5GX0RFRlJBR19JUFY2KSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuICAxMTpcXHRcXHRcXHRcXHRcXHQgICAgICghTkZfTkFUIHx8IE5GX05BVCkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiAgMTI6XFx0XFx0XFx0XFx0XFx0ICAgICAoIU5FVEZJTFRFUl9DT05OQ09VTlQgfHwgTkVURklMVEVSX0NPTk5DT1VOVCkpKVxcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8ICFQU0FNUExFXFxuICAxNDpcXHRcXHRzZWxlY3QgTVBMU1xcbiAgMTU6XFx0XFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4gIDE2OlxcdFxcdHNlbGVjdCBORVRfTVBMU19HU09cXG4gIDE3OlxcdFxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4gIDE4OlxcdFxcdHNlbGVjdCBORVRfTlNIXFxuICAxOTpcXHRcXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WUyBpZiBORl9DT05OVFJBQ0tcXG4gIDIwOlxcdFxcdHNlbGVjdCBORl9OQVRfT1ZTIGlmIE5GX05BVFxcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICBPcGVuIHZTd2l0Y2ggaXMgYSBtdWx0aWxheWVyIEV0aGVybmV0IHN3aXRjaCB0YXJnZXRlZCBhdCB2aXJ0dWFsaXplZFxcbiAgMjM6XFx0XFx0ICBlbnZpcm9ubWVudHMuICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIGEgdmFyaWV0eSBvZiBmZWF0dXJlc1xcbiAgMjQ6XFx0XFx0ICBleHBlY3RlZCBpbiBhIHRyYWRpdGlvbmFsIGhhcmR3YXJlIHN3aXRjaCwgaXQgZW5hYmxlcyBmaW5lLWdyYWluZWRcXG4gIDI1OlxcdFxcdCAgcHJvZ3JhbW1hdGljIGV4dGVuc2lvbiBhbmQgZmxvdy1iYXNlZCBjb250cm9sIG9mIHRoZSBuZXR3b3JrLiAgVGhpc1xcbiAgMjY6XFx0XFx0ICBjb250cm9sIGlzIHVzZWZ1bCBpbiBhIHdpZGUgdmFyaWV0eSBvZiBhcHBsaWNhdGlvbnMgYnV0IGlzXFxuICAyNzpcXHRcXHQgIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgaW4gbXVsdGktc2VydmVyIHZpcnR1YWxpemF0aW9uIGRlcGxveW1lbnRzLFxcbiAgMjg6XFx0XFx0ICB3aGljaCBhcmUgb2Z0ZW4gY2hhcmFjdGVyaXplZCBieSBoaWdobHkgZHluYW1pYyBlbmRwb2ludHMgYW5kIHRoZVxcbiAgMjk6XFx0XFx0ICBuZWVkIHRvIG1haW50YWluIGxvZ2ljYWwgYWJzdHJhY3Rpb25zIGZvciBtdWx0aXBsZSB0ZW5hbnRzLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRcXHQgIFRoZSBPcGVuIHZTd2l0Y2ggZGF0YXBhdGggcHJvdmlkZXMgYW4gaW4ta2VybmVsIGZhc3QgcGF0aCBmb3IgcGFja2V0XFxuICAzMjpcXHRcXHQgIGZvcndhcmRpbmcuICBJdCBpcyBjb21wbGVtZW50ZWQgYnkgYSB1c2Vyc3BhY2UgZGFlbW9uLCBvdnMtdnN3aXRjaGQsXFxuICAzMzpcXHRcXHQgIHdoaWNoIGlzIGFibGUgdG8gYWNjZXB0IGNvbmZpZ3VyYXRpb24gZnJvbSBhIHZhcmlldHkgb2Ygc291cmNlcyBhbmRcXG4gIDM0OlxcdFxcdCAgdHJhbnNsYXRlIGl0IGludG8gcGFja2V0IHByb2Nlc3NpbmcgcnVsZXMuXFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdCAgU2VlIGh0dHA6Ly9vcGVudnN3aXRjaC5vcmcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHVzZXJzcGFjZVxcbiAgMzc6XFx0XFx0ICB1dGlsaXRpZXMuXFxuICAzODpcXHRcXG4gIDM5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgNDA6XFx0XFx0ICBjYWxsZWQgb3BlbnZzd2l0Y2guXFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIE9QRU5WU1dJVENIX0dSRVxcbiAgNDU6XFx0XFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaCBHUkUgdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIE9QRU5WU1dJVENIXFxuICA0NzpcXHRcXHRkZXBlbmRzIG9uIE5FVF9JUEdSRVxcbiAgNDg6XFx0XFx0ZGVmYXVsdCBPUEVOVlNXSVRDSFxcbiAgNDk6XFx0XFx0aGVscFxcbiAgNTA6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgT3BlbiB2U3dpdGNoIHdpbGwgYmUgYWJsZSBjcmVhdGUgR1JFXFxuICA1MTpcXHRcXHQgIHZwb3J0LlxcbiAgNTI6XFx0XFxuICA1MzpcXHRcXHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxcbiAgNTQ6XFx0XFxuICA1NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuICA1NjpcXHRcXG4gIDU3OlxcdGNvbmZpZyBPUEVOVlNXSVRDSF9WWExBTlxcbiAgNTg6XFx0XFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaCBWWExBTiB0dW5uZWxpbmcgc3VwcG9ydFxcXCJcXG4gIDU5OlxcdFxcdGRlcGVuZHMgb24gT1BFTlZTV0lUQ0hcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gVlhMQU5cXG4gIDYxOlxcdFxcdGRlZmF1bHQgT1BFTlZTV0lUQ0hcXG4gIDYyOlxcdFxcdGhlbHBcXG4gIDYzOlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIE9wZW4gdlN3aXRjaCB3aWxsIGJlIGFibGUgY3JlYXRlIHZ4bGFuIHZwb3J0LlxcbiAgNjQ6XFx0XFxuICA2NTpcXHRcXHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuICA2ODpcXHRcXG4gIDY5OlxcdGNvbmZpZyBPUEVOVlNXSVRDSF9HRU5FVkVcXG4gIDcwOlxcdFxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2ggR2VuZXZlIHR1bm5lbGluZyBzdXBwb3J0XFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBPUEVOVlNXSVRDSFxcbiAgNzI6XFx0XFx0ZGVwZW5kcyBvbiBHRU5FVkVcXG4gIDczOlxcdFxcdGRlZmF1bHQgT1BFTlZTV0lUQ0hcXG4gIDc0OlxcdFxcdGhlbHBcXG4gIDc1OlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIE9wZW4gdlN3aXRjaCB3aWxsIGJlIGFibGUgY3JlYXRlIGdlbmV2ZSB2cG9ydC5cXG4gIDc2OlxcdFxcbiAgNzc6XFx0XFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDM6MjIuMjkyNjIwNTE0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNjE4NzMwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBPcGVuIHZTd2l0Y2ggUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBleGVjdXRlX3JlY2lyY2AgYW5kIGBkb19leGVjdXRlX2FjdGlvbnNgIHdpdGhpbiBgbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY2AsIHdpdGggdGhlIGBPUEVOVlNXSVRDSGAgY29uZmlnIGFjdGl2ZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgaXQncyBmdW5jdGlvbmFsIGFuZCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgY3Jhc2ggc3BlY2lmaWNhbGx5IHRpZWQgdG8gYHNrYmAgd2l0aGluIGBleGVjdXRlX3JlY2lyY2AuIERlZmluaXRlbHkgd2FycmFudHMgZnV6emluZzsgdGhvc2UgdHlwZXMgb2YgaXNzdWVzIGFyZSBicmVhZCBhbmQgYnV0dGVyIGZvciBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcy5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgb3VyIGZvY3VzIHN5bWJvbHMuIEkgaGFkIGluaXRpYWxseSB6ZXJvZWQgaW4gb24gYG92c192cG9ydF9yZWNlaXZlYCBhbmQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLCBidXQgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlaXIgdmlzaWJpbGl0eS4gKm92c192cG9ydF9yZWNlaXZlKiBpcyBleHBvcnRlZCwgc28gdGhhdCdzIGdvb2Q7IGl0J3MgYWNjZXNzaWJsZS4gQnV0IGhhbmcgb24sIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBpcyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBtaWdodCBtYWtlIGl0IGEgcG9vciBmdXp6aW5nIHRhcmdldCwgYXMgYSBzdGF0aWMgZnVuY3Rpb24ncyBzY29wZSBpcyBsaW1pdGVkIHRvIHRoZSBmaWxlIGl0J3MgZGVjbGFyZWQgaW4uIFxuXG5ZZXAsIGp1c3QgY29uZmlybWVkOiBgc3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pYC4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciwgbm9uLXN0YXRpYywgZnVuY3Rpb25zIHdlIGNvdWxkIHRhcmdldC4gQWgsIGhlcmUgd2UgZ286IGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCBpcyBub24tc3RhdGljLCBzbyB3ZSBoYXZlIGFub3RoZXIgY2FuZGlkYXRlLiBBbmQgYG92c19kcF9wcm9jZXNzX3BhY2tldGAsIHRoYXQncyBhY2Nlc3NpYmxlIHRvby4gU28sIGEgcmV2aXNlZCBsaXN0OiBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AsIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgLCBhbmQgYG92c192cG9ydF9yZWNlaXZlYCBhcmUgYWxsIGdvb2QgZm9jdXMgcG9pbnRzIGZvciB0aGUgZnV6emluZyBlZmZvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTAzLCJPdXRwdXRUb2tlbnMiOjEyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAzOjI4LjY1NDQ5NjUzM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODE0MDQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c192cG9ydF9yZWNlaXZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoIChleGVjdXRlX3JlY2lyYyBhbmQgZG9fZXhlY3V0ZV9hY3Rpb25zKSB0byBwcm9wZXJseSBoYW5kbGUgc2tiIGxpZmVjeWNsZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMgd2hlbiBvdnNfZmxvd19rZXlfdXBkYXRlIGZhaWxzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c192cG9ydF9yZWNlaXZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoIChleGVjdXRlX3JlY2lyYyBhbmQgZG9fZXhlY3V0ZV9hY3Rpb25zKSB0byBwcm9wZXJseSBoYW5kbGUgc2tiIGxpZmVjeWNsZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMgd2hlbiBvdnNfZmxvd19rZXlfdXBkYXRlIGZhaWxzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowjx5bw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-28 15:38:29 +0000 UTC FinishedAt: 2026-07-28 16:03:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e095f249e2209674f6366f6db0383a2b96e19239", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e095f249e2209674f6366f6db0383a2b96e19239", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH" ], "series_id": "720a7fb9-30ef-4b17-be22-4afaade01bd9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ovs_execute_actions", "ovs_dp_process_packet", "ovs_vport_receive" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZzX2V4ZWN1dGVfYWN0aW9ucyYjMzQ7LAogICAgJiMzNDtvdnNfZHBfcHJvY2Vzc19wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3Zwb3J0X3JlY2VpdmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoIChleGVjdXRlX3JlY2lyYyBhbmQgZG9fZXhlY3V0ZV9hY3Rpb25zKSB0byBwcm9wZXJseSBoYW5kbGUgc2tiIGxpZmVjeWNsZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMgd2hlbiBvdnNfZmxvd19rZXlfdXBkYXRlIGZhaWxzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhOTEyMGI5NmQ0Y2I3ZDAzNDYzODkwYjFlYzZjZTBhNTQ1NDFiNDgzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjggMTY6MDI6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbmluZGV4IDUxM2ZjYTZhOGU4YTQuLmRjNWZmODU5ZjExNDUgMTAwNjQ0XG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG5AQCAtMTEwOCw2ICYjNDM7MTEwOCwxMCBAQCBzdGF0aWMgaW50IGV4ZWN1dGVfbWFza2VkX3NldF9hY3Rpb24oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiM0MzsvKiBXaGVuICYjMzk7bGFzdCYjMzk7IGlzIHRydWUsIHJlY2lyYygpIHNob3VsZCBhbHdheXMgY29uc3VtZSB0aGUgJiMzOTtza2ImIzM5Oy5cbiYjNDM7ICogT3RoZXJ3aXNlLCByZWNpcmMoKSBzaG91bGQga2VlcCAmIzM5O3NrYiYjMzk7IGludGFjdCByZWdhcmRsZXNzIHdoYXRcbiYjNDM7ICogYWN0aW9ucyBhcmUgZXhlY3V0ZWQgb24gcmVjaXJjdWxhdGlvbi5cbiYjNDM7ICovXG4gc3RhdGljIGludCBleGVjdXRlX3JlY2lyYyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXksXG4gXHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphLCBib29sIGxhc3QpXG5AQCAtMTExOCw4ICYjNDM7MTEyMiwxMiBAQCBzdGF0aWMgaW50IGV4ZWN1dGVfcmVjaXJjKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGludCBlcnI7XG4gXG4gXHRcdGVyciA9IG92c19mbG93X2tleV91cGRhdGUoc2tiLCBrZXkpO1xuLVx0XHRpZiAoZXJyKVxuJiM0MztcdFx0aWYgKGVycikge1xuJiM0MztcdFx0XHRpZiAobGFzdClcbiYjNDM7XHRcdFx0XHRvdnNfa2ZyZWVfc2tiX3JlYXNvbihza2IsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgT1ZTX0RST1BfQUNUSU9OX0VSUk9SKTtcbiBcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0fVxuIFx0fVxuIFx0QlVHX09OKCFpc19mbG93X2tleV92YWxpZChrZXkpKTtcbiBcbkBAIC0xMzcyLDcgJiM0MzsxMzgwLDcgQEAgc3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRpZiAoIWlzX2Zsb3dfa2V5X3ZhbGlkKGtleSkpIHtcbiBcdFx0XHRcdGVyciA9IG92c19mbG93X2tleV91cGRhdGUoc2tiLCBrZXkpO1xuIFx0XHRcdFx0aWYgKGVycilcbi1cdFx0XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRlcnIgPSBvdnNfY3RfZXhlY3V0ZShvdnNfZHBfZ2V0X25ldChkcCksIHNrYiwga2V5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPUEVOVlNXSVRDSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAgICYjMzQ7b3ZzX2RwX3Byb2Nlc3NfcGFja2V0JiMzNDssCiAgICAmIzM0O292c192cG9ydF9yZWNlaXZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCAoZXhlY3V0ZV9yZWNpcmMgYW5kIGRvX2V4ZWN1dGVfYWN0aW9ucykgdG8gcHJvcGVybHkgaGFuZGxlIHNrYiBsaWZlY3ljbGUgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzIHdoZW4gb3ZzX2Zsb3dfa2V5X3VwZGF0ZSBmYWlscy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTkxMjBiOTZkNGNiN2QwMzQ2Mzg5MGIxZWM2Y2UwYTU0NTQxYjQ4MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDI4IDE2OjAyOjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMKaW5kZXggNTEzZmNhNmE4ZThhNC4uZGM1ZmY4NTlmMTE0NSAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCkBAIC0xMTA4LDYgJiM0MzsxMTA4LDEwIEBAIHN0YXRpYyBpbnQgZXhlY3V0ZV9tYXNrZWRfc2V0X2FjdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiBlcnI7CiB9CiAKJiM0MzsvKiBXaGVuICYjMzk7bGFzdCYjMzk7IGlzIHRydWUsIHJlY2lyYygpIHNob3VsZCBhbHdheXMgY29uc3VtZSB0aGUgJiMzOTtza2ImIzM5Oy4KJiM0MzsgKiBPdGhlcndpc2UsIHJlY2lyYygpIHNob3VsZCBrZWVwICYjMzk7c2tiJiMzOTsgaW50YWN0IHJlZ2FyZGxlc3Mgd2hhdAomIzQzOyAqIGFjdGlvbnMgYXJlIGV4ZWN1dGVkIG9uIHJlY2lyY3VsYXRpb24uCiYjNDM7ICovCiBzdGF0aWMgaW50IGV4ZWN1dGVfcmVjaXJjKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LAogCQkJICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphLCBib29sIGxhc3QpCkBAIC0xMTE4LDggJiM0MzsxMTIyLDEyIEBAIHN0YXRpYyBpbnQgZXhlY3V0ZV9yZWNpcmMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJaW50IGVycjsKIAogCQllcnIgPSBvdnNfZmxvd19rZXlfdXBkYXRlKHNrYiwga2V5KTsKLQkJaWYgKGVycikKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsJCQlpZiAobGFzdCkKJiM0MzsJCQkJb3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLAomIzQzOwkJCQkJCSAgICAgT1ZTX0RST1BfQUNUSU9OX0VSUk9SKTsKIAkJCXJldHVybiBlcnI7CiYjNDM7CQl9CiAJfQogCUJVR19PTighaXNfZmxvd19rZXlfdmFsaWQoa2V5KSk7CiAKQEAgLTEzNzIsNyAmIzQzOzEzODAsNyBAQCBzdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJaWYgKCFpc19mbG93X2tleV92YWxpZChrZXkpKSB7CiAJCQkJZXJyID0gb3ZzX2Zsb3dfa2V5X3VwZGF0ZShza2IsIGtleSk7CiAJCQkJaWYgKGVycikKLQkJCQkJcmV0dXJuIGVycjsKJiM0MzsJCQkJCWJyZWFrOwogCQkJfQogCiAJCQllcnIgPSBvdnNfY3RfZXhlY3V0ZShvdnNfZHBfZ2V0X25ldChkcCksIHNrYiwga2V5LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQ2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIGluIE9wZW4gdlN3aXRjaCBBY3Rpb24gRXhlY3V0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcHJlc2VudGVkIHdpdGggYSBwYXRjaCB0YXJnZXRpbmcgYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgLiBNeSBpbml0aWFsIHNjYW4gc2hvd3MgdGhhdCBpdCYjMzk7cyB0b3VjaGluZyBgZXhlY3V0ZV9yZWNpcmNgIGFuZCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCwgd2hpY2ggYXJlIGJvdGggY3JpdGljYWwgcGFydHMgb2YgaG93IE9wZW4gdlN3aXRjaCBoYW5kbGVzIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBhcHBseWluZyBhY3Rpb25zLiBUaGUgcGF0Y2ggYXBwZWFycyB0byBpbnRyb2R1Y2UgYSBzcGVjaWZpYyBlcnJvciBoYW5kbGluZyBtZWNoYW5pc20gd2l0aGluIGBleGVjdXRlX3JlY2lyY2AsIGNoZWNraW5nIGZvciBhIGNvbmRpdGlvbiBzaWduYWxlZCBieSBgZXJyYCBhbmQgc3Vic2VxdWVudGx5IHVzaW5nIGBvdnNfa2ZyZWVfc2tiX3JlYXNvbmAuIEluIGBkb19leGVjdXRlX2FjdGlvbnNgLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBob3cgZXJyb3JzIGZyb20gYG92c19mbG93X2tleV91cGRhdGVgIGFyZSBoYW5kbGVkIOKAkyBjaGFuZ2luZyBhIGByZXR1cm4gZXJyO2AgdG8gYSBgYnJlYWs7YC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCB3YXJyYW50cyBhIGNsb3NlciBsb29rLCBlc3BlY2lhbGx5IGZvciBmdXp6aW5nIHBvdGVudGlhbC4gVGhlc2UgYXJlIGNvcmUgZnVuY3Rpb25zLCBhbmQgZXZlbiBzdWJ0bGUgY2hhbmdlcyBpbiBlcnJvciBoYW5kbGluZyBvciBjb250cm9sIGZsb3cgY2FuIGhhdmUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zIGZvciBvdmVyYWxsIHN0YWJpbGl0eSBhbmQgc2VjdXJpdHkuIEkmIzM5O2xsIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9ucyBvZiBgZXhlY3V0ZV9yZWNpcmNgIGFuZCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCB3aXRoaW4gYGFjdGlvbnMuY2AgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYW5nZS4KClRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBPcGVuIHZTd2l0Y2ggaXMgY29uZmlndXJlZC4gSSBrbm93IHRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgcGxhY2UgdG8gbG9vayBmb3IgdGhhdCBpbmZvcm1hdGlvbiwgYW5kIEkgYmVsaWV2ZSB0aGUgYE9QRU5WU1dJVENIYCBjb25maWcgb3B0aW9uIGluIGBuZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZ2Agd2lsbCBnaXZlIG1lIHRoZSByZWxldmFudCBzZXR0aW5ncyBhbmQgYnVpbGQtdGltZSBvcHRpb25zLiBJIHdhbnQgdG8gYnVpbGQgYSB0ZXN0IHJpZyB3aXRoIHRoZSBjb25maWcgb3B0aW9ucyB0aGF0IG1ha2UgYGV4ZWN1dGVfcmVjaXJjYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AgYWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4ZWN1dGVfcmVjaXJjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEwMzk9c3RhdGljIGludCBleGVjdXRlX21hc2tlZF9zZXRfYWN0aW9uKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMTE0LSAqL1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxMTE1OnN0YXRpYyBpbnQgZXhlY3V0ZV9yZWNpcmMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTExNi1cdFx0XHQgIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTI1NT1zdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTM0OC1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTM0OTpcdFx0XHRlcnIgPSBleGVjdXRlX3JlY2lyYyhkcCwgc2tiLCBrZXksIGEsIGxhc3QpO1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMzUwLVx0XHRcdGlmIChsYXN0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipBbmFseXppbmcgRXhlY3V0aW9uIEZsb3cqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYGV4ZWN1dGVfcmVjaXJjYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AgYXJlIGJvdGggZGVmaW5lZCBhcyBzdGF0aWMgbWVtYmVycywgd2hpY2ggaXMgZ29vZCB0byBrbm93LCBidXQgZG9lc24mIzM5O3QgbmVjZXNzYXJpbHkgdGVsbCB1cyAqaG93KiB0aGV5IGFyZSAqYmVpbmcqIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtLiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGhvdyBgZG9fZXhlY3V0ZV9hY3Rpb25zYCBpcyBjYWxsZWQuIEl0JiMzOTtzIHRpbWUgdG8gdHJhY2UgdGhlIGNhbGxzLiBXaGVyZSBpcyBpdCBiZWluZyBpbnZva2VkIGZyb20/IFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgaW5zaWdodHMgd2lsbCBiZS4gTmVlZCB0byBzZWUgdGhlIGRlcGVuZGVuY3kgZ3JhcGggYW5kIHBpbnBvaW50IHBvdGVudGlhbCBib3R0bGVuZWNrcyBhbmQgY3JpdGljYWwgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9fZXhlY3V0ZV9hY3Rpb25zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyMD1zdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyNS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTI2OnN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyNy1cdFx0XHQgICAgICBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNDk9c3RhdGljIHZvaWQgZXhlY3V0ZV9wc2FtcGxlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjU0LS8qIEV4ZWN1dGUgYSBsaXN0IG9mIGFjdGlvbnMgYWdhaW5zdCAmIzM5O3NrYiYjMzk7LiAqL1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxMjU1OnN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyNTYtXHRcdFx0ICAgICAgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXksXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNDgzPXN0YXRpYyBpbnQgY2xvbmVfZXhlY3V0ZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTUxMC1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTUxMTpcdFx0XHRlcnIgPSBkb19leGVjdXRlX2FjdGlvbnMoZHAsIHNrYiwgY2xvbmUsXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1MTItXHRcdFx0XHRcdFx0IGFjdGlvbnMsIGxlbik7XG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNTQ5PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU2NS1cdFx0aWYgKGFjdGlvbnMpXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1NjY6XHRcdFx0ZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGtleSwgYWN0aW9ucywgYWN0aW9uc19sZW4pO1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTY3LVx0XHRlbHNlXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNTc2PWludCBvdnNfZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTkxLVx0T1ZTX0NCKHNrYiktXHUwMDNlYWN0c19vcmlnbGVuID0gYWN0cy1cdTAwM2VvcmlnX2xlbjtcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTU5MjpcdGVyciA9IGRvX2V4ZWN1dGVfYWN0aW9ucyhkcCwgc2tiLCBrZXksXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1OTMtXHRcdFx0XHQgYWN0cy1cdTAwM2VhY3Rpb25zLCBhY3RzLVx1MDAzZWFjdGlvbnNfbGVuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDEwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbCBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AqKgoKQWxyaWdodCwgSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IGBvdnNfZXhlY3V0ZV9hY3Rpb25zYC4gU29tZXRoaW5nJiMzOTtzIGJ1Z2dpbmcgbWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSBhbSBncmFzcGluZyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGhvdyBpdCBpcyB1c2VkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGUgd2hvbGUgY29udGV4dCBpcyBzY3JlYW1pbmcgdG8gYmUgaW52ZXN0aWdhdGVkLCBiZWNhdXNlIHRoZSBub24tc3RhdGljIGRlY2xhcmF0aW9uIG1lYW5zIGl0IGhhcyBsaW5rYWdlIHRvIHNvbWV0aGluZyBvdXRzaWRlIHRoZSBwcmVzZW50IGNvbXBpbGF0aW9uIHVuaXQuIFRoYXQgY291bGQgY3JlYXRlIHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIGlmIGl0IGlzbiYjMzk7dCB1c2VkIGFzIEkgZXhwZWN0LiBJdCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhpcyBjb250ZXh0LCBhbmQgZG91YmxlIGNoZWNrIG15IGV4cGVjdGF0aW9ucy4gSSBiZXR0ZXIgZ2V0IHRoZSBkZXRhaWxzIG9mIHRoaXMgYmVmb3JlIEkgbWFrZSBhbnkgZGVjaXNpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0OT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1NzUtLyogRXhlY3V0ZSBhIGxpc3Qgb2YgYWN0aW9ucyBhZ2FpbnN0ICYjMzk7c2tiJiMzOTsuICovXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1NzY6aW50IG92c19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3Ny1cdFx0XHRjb25zdCBzdHJ1Y3Qgc3dfZmxvd19hY3Rpb25zICphY3RzLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTI0NT12b2lkIG92c19kcF9wcm9jZXNzX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSlcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0zMDgtXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzozMDk6XHRlcnJvciA9IG92c19leGVjdXRlX2FjdGlvbnMoZHAsIHNrYiwgc2ZfYWN0cywga2V5KTtcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTMxMC1cdGlmICh1bmxpa2VseShlcnJvcikpXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9NjEyPXN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTcwMi1cdFx0dGhpc19jcHVfd3JpdGUob3ZzX3BjcHVfc3RvcmFnZS1cdTAwM2Vvd25lciwgY3VycmVudCk7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo3MDM6XHRlcnIgPSBvdnNfZXhlY3V0ZV9hY3Rpb25zKGRwLCBwYWNrZXQsIHNmX2FjdHMsIFx1MDAyNmZsb3ctXHUwMDNla2V5KTtcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTcwNC1cdGlmIChJU19FTkFCTEVEKENPTkZJR19QUkVFTVBUX1JUKSlcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaD0zMjk9c3RydWN0IHNrX2J1ZmYgKm92c192cG9ydF9jbWRfYnVpbGRfaW5mbyhzdHJ1Y3QgdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMzMxLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmg6MzMyOmludCBvdnNfZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaC0zMzMtXHRcdFx0Y29uc3Qgc3RydWN0IHN3X2Zsb3dfYWN0aW9ucyAqLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc4NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgT1ZTIFBhY2tldCBQcm9jZXNzaW5nIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBvZiBwYWNrZXQgcHJvY2Vzc2luZyB3aXRoaW4gT1ZTLCBhbmQgSSYjMzk7bSBsb29raW5nIGZvciB0aGUga2V5IGVudHJ5IHBvaW50cy4gQmFzZWQgb24gZXhwZXJpZW5jZSwgYG92c19kcF9wcm9jZXNzX3BhY2tldGAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBsaWtlbHkgY2FuZGlkYXRlcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLiBBaCwgaXQmIzM5O3MgbWFya2VkIGFzIGBzdGF0aWNgLCB3aGljaCBpc24mIzM5O3QgYSBzdXJwcmlzZSBmb3IgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIGJ1dCB0aGUgaW1wb3J0YW50IGNsdWUgaXMgdGhhdCBpdCYjMzk7cyBhIG5ldGxpbmsgY29tbWFuZCBoYW5kbGVyLiBUaGF0IGRlZmluaXRlbHkgbWFrZXMgaXQgYSByZWxldmFudCBwaWVjZSB0byBhbmFseXplLCBidXQgbGV0IG1lIG5vdyBwaXZvdCB0byBleGFtaW5lIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGRpcmVjdGx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBuZXRsaW5rIGludGVyZmFjZSwgYW5kIGl0cyBvdmVyYWxsIHJvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19kcF9wcm9jZXNzX3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNDgzPXN0YXRpYyBpbnQgY2xvbmVfZXhlY3V0ZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTUxNy1cdFx0XHRjbG9uZS1cdTAwM2VyZWNpcmNfaWQgPSByZWNpcmNfaWQ7XG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1MTg6XHRcdFx0b3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHNrYiwgY2xvbmUpO1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTE5LVx0XHR9XG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNTQ5PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU2Ny1cdFx0ZWxzZVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxNTY4Olx0XHRcdG92c19kcF9wcm9jZXNzX3BhY2tldChza2IsIGtleSk7XG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1NjktXHR9IHdoaWxlICghYWN0aW9uX2ZpZm9faXNfZW1wdHkoZmlmbykpO1xuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTIzMz12b2lkIG92c19kcF9kZXRhY2hfcG9ydChzdHJ1Y3QgdnBvcnQgKnApXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjQ0LS8qIE11c3QgYmUgY2FsbGVkIHdpdGggcmN1X3JlYWRfbG9jay4gKi9cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI0NTp2b2lkIG92c19kcF9wcm9jZXNzX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSlcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI0Ni17XG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmg9MzE4PWV4dGVybiBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHBfdnBvcnRfZ2VubF9mYW1pbHk7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaC0zMTktXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaDozMjA6dm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpO1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMzIxLXZvaWQgb3ZzX2RwX2RldGFjaF9wb3J0KHN0cnVjdCB2cG9ydCAqKTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYz00OTc9aW50IG92c192cG9ydF9yZWNlaXZlKHN0cnVjdCB2cG9ydCAqdnBvcnQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL3Zwb3J0LmMtNTIyLVx0fVxubmV0L29wZW52c3dpdGNoL3Zwb3J0LmM6NTIzOlx0b3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHNrYiwgXHUwMDI2a2V5KTtcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5jLTUyNC1cdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njc5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbml0aWFsIEV4YW1pbmF0aW9uIG9mIE9WUyBQYWNrZXQgSGFuZGxpbmcqKgoKQWxyaWdodCwgc28gYG92c192cG9ydF9yZWNlaXZlYCB1bHRpbWF0ZWx5IGNhbGxzIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgLiBUaGF0IGZlZWxzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyBwYWNrZXQgZmxvdywgYSBwb3RlbnRpYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBjb3JlIGRhdGEgcGF0aCBwcm9jZXNzaW5nLiBMZXQmIzM5O3MgbWFrZSBhIG5vdGUgb2YgdGhhdC4gQW5kLCBvZiBjb3Vyc2UsIHRoZXJlJiMzOTtzIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgd2hpY2ggaXMgdGhlIG5ldGxpbmsgY29tbWFuZCBoYW5kbGVyIOKAkyBkZWZpbml0ZWx5IGFub3RoZXIgZGlzdGluY3QgZW50cnkgcG9pbnQgdG8gY29uc2lkZXIsIGdpdmVuIHRoZSBjb250cm9sIHBsYW5lJiMzOTtzIHJvbGUuCgpOb3csIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHBsYWNlcyB3aGVyZSB0aGlzIHByb2Nlc3Npbmcga2lja3Mgb2ZmLiBEaXZpbmcgZGVlcGVyLCBJIHNlZSBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AgaXMgdGhlIGJlbmVmaWNpYXJ5IG9mIGJvdGggYG92c19kcF9wcm9jZXNzX3BhY2tldGAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYC4gU28sIGl0IGFwcGVhcnMgdGhhdCBgb3ZzX3Zwb3J0X3JlY2VpdmVgIGFuZCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgYXJlIGluZGVlZCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgdG8gZm9jdXMgb24uIEkmIzM5O2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlciBsb29rIGF0IGBvdnNfdnBvcnRfcmVjZWl2ZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c192cG9ydF9yZWNlaXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmM9MzQ9aW50ZXJuYWxfZGV2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtMzctXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmM6Mzg6XHQvKiBzdG9yZSBsZW4gdmFsdWUgYmVjYXVzZSBza2IgY2FuIGJlIGZyZWVkIGluc2lkZSBvdnNfdnBvcnRfcmVjZWl2ZSgpICovXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtMzktXHRsZW4gPSBza2ItXHUwMDNlbGVuO1xuLS1cbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYy00MS1cdHJjdV9yZWFkX2xvY2soKTtcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzo0MjpcdGVyciA9IG92c192cG9ydF9yZWNlaXZlKGludGVybmFsX2Rldl9wcml2KG5ldGRldiktXHUwMDNldnBvcnQsIHNrYiwgTlVMTCk7XG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtNDMtXHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2LmM9Mjk9c3RhdGljIHZvaWQgbmV0ZGV2X3BvcnRfcmVjZWl2ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYy00OS1cbm5ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYzo1MDpcdG92c192cG9ydF9yZWNlaXZlKHZwb3J0LCBza2IsIHNrYl90dW5uZWxfaW5mbyhza2IpKTtcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYy01MS1cdHJldHVybjtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYz00Njk9dTMyIG92c192cG9ydF9maW5kX3VwY2FsbF9wb3J0aWQoY29uc3Qgc3RydWN0IHZwb3J0ICp2cG9ydCxcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy00ODctLyoqXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYzo0ODg6ICpcdG92c192cG9ydF9yZWNlaXZlIC0gcGFzcyB1cCByZWNlaXZlZCBwYWNrZXQgdG8gdGhlIGRhdGFwYXRoIGZvciBwcm9jZXNzaW5nXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy00ODktICpcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy00OTYtICovXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYzo0OTc6aW50IG92c192cG9ydF9yZWNlaXZlKHN0cnVjdCB2cG9ydCAqdnBvcnQsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy00OTgtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBpcF90dW5uZWxfaW5mbyAqdHVuX2luZm8pXG4tLVxubmV0L29wZW52c3dpdGNoL3Zwb3J0Lmg9MTk1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHZwb3J0ICp2cG9ydF9mcm9tX3ByaXYodm9pZCAqcHJpdilcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuaC0xOTktXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuaDoyMDA6aW50IG92c192cG9ydF9yZWNlaXZlKHN0cnVjdCB2cG9ydCAqLCBzdHJ1Y3Qgc2tfYnVmZiAqLFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LmgtMjAxLVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2luZm8gKik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NzAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqVHJhY2luZyB0aGUgRGF0YSBQYXRoICZhbXA7IENvbW1hbmQgRXhlY3V0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IGBvdnNfdnBvcnRfcmVjZWl2ZWAgaXMgYXQgdGhlIGNvcmUgb2YgdGhpcywgY2FsbGVkIGZyb20gdHdvIGtleSBwbGFjZXM6IGBuZXRkZXZfcG9ydF9yZWNlaXZlYCwgd2hpY2ggSSByZWNvZ25pemUgYXMgdGhlIHN0YW5kYXJkIHJlY2VpdmUgaGFuZGxlciBmb3IgYSBuZXR3b3JrIGRldmljZSwgYW5kIGBpbnRlcm5hbF9kZXZfeG1pdGAsIHdoaWNoIHN1Z2dlc3RzIHNvbWUgaW50ZXJuYWwgcGFja2V0IHRyYW5zbWlzc2lvbiB3aXRoaW4gdGhlIE9wZW4gdlN3aXRjaCBkYXRhIHBhdGggaXRzZWxmLiBUaGF0IG1ha2VzIHNlbnNlOyBpbmNvbWluZyBwYWNrZXRzIGFuZCBpbnRlcm5hbCBmb3J3YXJkaW5nLiBHb29kLiBgbmV0ZGV2X3BvcnRfcmVjZWl2ZWAgY2xlYXJseSBoYW5kbGVzIHRoZSBSWCBwYXRoLCB0aGF0JiMzOTtzIGV4cGVjdGVkLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAuLi4gdGhhdCByaW5ncyBhIGJlbGwuIEl0JiMzOTtzIGEgbmV0bGluayBjb21tYW5kIGhhbmRsZXIsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBwcm9jZXNzaW5nIGNvbW1hbmRzIHRoYXQgYXJlIGluamVjdGVkIGludG8gdGhlIGRhdGFwYXRoIGZyb20gdXNlcnNwYWNlLCBsaWtlIGZsb3cgbW9kaWZpY2F0aW9ucyBvciBjb25maWd1cmF0aW9uIGNoYW5nZXMuIEkgbmVlZCB0byBzZWUgaG93IHRoZXNlIHR3byBwaWVjZXMgcmVsYXRlLiBMZXQgbWUgcHVsbCB1cCBgbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGF0IGNvbW1hbmQgaXMgZ2V0dGluZyBhcHBsaWVkLiBUaGlzIGNvdWxkIGJlIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9yIGFjdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGEgZmxvdyBnZXQgaW5qZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19wYWNrZXRfY21kX2V4ZWN1dGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz00NTE9c3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjExLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NjEyOnN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjEzLXtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz03MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBkcF9wYWNrZXRfZ2VubF9vcHNbXSA9IHtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy03MzYtXHQgIC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sIC8qIFJlcXVpcmVzIENBUF9ORVRfQURNSU4gcHJpdmlsZWdlLiAqL1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NzM3Olx0ICAuZG9pdCA9IG92c19wYWNrZXRfY21kX2V4ZWN1dGVcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTczOC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQyMQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBPVlMgUGFja2V0IFByb2Nlc3NpbmcgRm9jdXMqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gdGhlIGNyaXRpY2FsIGFyZWFzIGZvciBwYWNrZXQgcHJvY2Vzc2luZyB3aXRoaW4gT3BlbiB2U3dpdGNoLiBUaGlua2luZyBhYm91dCBpdCwgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIHJlYWxseSBmZWVscyBsaWtlIGEga2V5IGZvY3VzLiBJdCYjMzk7cyByaWdodCB0aGVyZSwgZGlyZWN0bHkgZXhlY3V0aW5nIGFjdGlvbnMgb24gcGFja2V0cy4gQW5kLCBvZiBjb3Vyc2UsIGBvdnNfdnBvcnRfcmVjZWl2ZWAgaXMgYW5vdGhlciBwcmltZSBjYW5kaWRhdGUuIEl0JiMzOTtzIHRoZSByZWNlaXZlciwgdGhlIGVudHJ5IHBvaW50IGZvciBwYWNrZXRzLgoKSSBzaG91bGQgc2VlIGlmIGFueSBvdGhlciBuZXRsaW5rIGNvbW1hbmRzIG1pZ2h0IGJlIHRyaWdnZXJpbmcgYWN0aW9ucy4gTGV0IG1lIHF1aWNrbHkgY2hlY2suIEhtbSwgYG92c19mbG93X2NtZF9uZXdgPyBObywgdGhhdCYjMzk7cyBqdXN0IGZvciBpbnN0YWxsaW5nIGZsb3dzOyBub3QgYSBkaXJlY3QgcGFja2V0IGFjdGlvbi4gU28sIGl0IGFwcGVhcnMgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIGFuZCBgb3ZzX3Zwb3J0X3JlY2VpdmVgIGFyZSB0aGUgbWFpbiBlbnRyeSBwb2ludHMgZm9yIE9wZW4gdlN3aXRjaCYjMzk7cyBwYWNrZXQgcHJvY2Vzc2luZyB3b3JrZmxvdy4KCk5vdywgSSYjMzk7bSBjdXJpb3VzIGlmIGBPUEVOVlNXSVRDSGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBwaWVjZS4gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IHdvdWxkIGFmZmVjdCBwYWNrZXQgcHJvY2Vzc2luZz8gVGltZSB0byBkaWcgaW50byBgbmV0L29wZW52c3dpdGNoL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE9wZW4gdlN3aXRjaFxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgT1BFTlZTV0lUQ0hcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgXFxcbiAgMTA6XHRcdFx0ICAgKE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgKCghTkZfREVGUkFHX0lQVjYgfHwgTkZfREVGUkFHX0lQVjYpIFx1MDAyNlx1MDAyNiBcXFxuICAxMTpcdFx0XHRcdFx0ICAgICAoIU5GX05BVCB8fCBORl9OQVQpIFx1MDAyNlx1MDAyNiBcXFxuICAxMjpcdFx0XHRcdFx0ICAgICAoIU5FVEZJTFRFUl9DT05OQ09VTlQgfHwgTkVURklMVEVSX0NPTk5DT1VOVCkpKVxuICAxMzpcdFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8ICFQU0FNUExFXG4gIDE0Olx0XHRzZWxlY3QgTVBMU1xuICAxNTpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiAgMTY6XHRcdHNlbGVjdCBORVRfTVBMU19HU09cbiAgMTc6XHRcdHNlbGVjdCBEU1RfQ0FDSEVcbiAgMTg6XHRcdHNlbGVjdCBORVRfTlNIXG4gIDE5Olx0XHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WUyBpZiBORl9DT05OVFJBQ0tcbiAgMjA6XHRcdHNlbGVjdCBORl9OQVRfT1ZTIGlmIE5GX05BVFxuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBPcGVuIHZTd2l0Y2ggaXMgYSBtdWx0aWxheWVyIEV0aGVybmV0IHN3aXRjaCB0YXJnZXRlZCBhdCB2aXJ0dWFsaXplZFxuICAyMzpcdFx0ICBlbnZpcm9ubWVudHMuICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIGEgdmFyaWV0eSBvZiBmZWF0dXJlc1xuICAyNDpcdFx0ICBleHBlY3RlZCBpbiBhIHRyYWRpdGlvbmFsIGhhcmR3YXJlIHN3aXRjaCwgaXQgZW5hYmxlcyBmaW5lLWdyYWluZWRcbiAgMjU6XHRcdCAgcHJvZ3JhbW1hdGljIGV4dGVuc2lvbiBhbmQgZmxvdy1iYXNlZCBjb250cm9sIG9mIHRoZSBuZXR3b3JrLiAgVGhpc1xuICAyNjpcdFx0ICBjb250cm9sIGlzIHVzZWZ1bCBpbiBhIHdpZGUgdmFyaWV0eSBvZiBhcHBsaWNhdGlvbnMgYnV0IGlzXG4gIDI3Olx0XHQgIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgaW4gbXVsdGktc2VydmVyIHZpcnR1YWxpemF0aW9uIGRlcGxveW1lbnRzLFxuICAyODpcdFx0ICB3aGljaCBhcmUgb2Z0ZW4gY2hhcmFjdGVyaXplZCBieSBoaWdobHkgZHluYW1pYyBlbmRwb2ludHMgYW5kIHRoZVxuICAyOTpcdFx0ICBuZWVkIHRvIG1haW50YWluIGxvZ2ljYWwgYWJzdHJhY3Rpb25zIGZvciBtdWx0aXBsZSB0ZW5hbnRzLlxuICAzMDpcdFxuICAzMTpcdFx0ICBUaGUgT3BlbiB2U3dpdGNoIGRhdGFwYXRoIHByb3ZpZGVzIGFuIGluLWtlcm5lbCBmYXN0IHBhdGggZm9yIHBhY2tldFxuICAzMjpcdFx0ICBmb3J3YXJkaW5nLiAgSXQgaXMgY29tcGxlbWVudGVkIGJ5IGEgdXNlcnNwYWNlIGRhZW1vbiwgb3ZzLXZzd2l0Y2hkLFxuICAzMzpcdFx0ICB3aGljaCBpcyBhYmxlIHRvIGFjY2VwdCBjb25maWd1cmF0aW9uIGZyb20gYSB2YXJpZXR5IG9mIHNvdXJjZXMgYW5kXG4gIDM0Olx0XHQgIHRyYW5zbGF0ZSBpdCBpbnRvIHBhY2tldCBwcm9jZXNzaW5nIHJ1bGVzLlxuICAzNTpcdFxuICAzNjpcdFx0ICBTZWUgaHR0cDovL29wZW52c3dpdGNoLm9yZyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgdXNlcnNwYWNlXG4gIDM3Olx0XHQgIHV0aWxpdGllcy5cbiAgMzg6XHRcbiAgMzk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICA0MDpcdFx0ICBjYWxsZWQgb3BlbnZzd2l0Y2guXG4gIDQxOlx0XG4gIDQyOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIE9QRU5WU1dJVENIX0dSRVxuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7T3BlbiB2U3dpdGNoIEdSRSB0dW5uZWxpbmcgc3VwcG9ydFwmIzM0O1xuICA0NjpcdFx0ZGVwZW5kcyBvbiBPUEVOVlNXSVRDSFxuICA0NzpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVcbiAgNDg6XHRcdGRlZmF1bHQgT1BFTlZTV0lUQ0hcbiAgNDk6XHRcdGhlbHBcbiAgNTA6XHRcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIE9wZW4gdlN3aXRjaCB3aWxsIGJlIGFibGUgY3JlYXRlIEdSRVxuICA1MTpcdFx0ICB2cG9ydC5cbiAgNTI6XHRcbiAgNTM6XHRcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXG4gIDU0Olx0XG4gIDU1Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4gIDU2Olx0XG4gIDU3Olx0Y29uZmlnIE9QRU5WU1dJVENIX1ZYTEFOXG4gIDU4Olx0XHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2ggVlhMQU4gdHVubmVsaW5nIHN1cHBvcnRcJiMzNDtcbiAgNTk6XHRcdGRlcGVuZHMgb24gT1BFTlZTV0lUQ0hcbiAgNjA6XHRcdGRlcGVuZHMgb24gVlhMQU5cbiAgNjE6XHRcdGRlZmF1bHQgT1BFTlZTV0lUQ0hcbiAgNjI6XHRcdGhlbHBcbiAgNjM6XHRcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIE9wZW4gdlN3aXRjaCB3aWxsIGJlIGFibGUgY3JlYXRlIHZ4bGFuIHZwb3J0LlxuICA2NDpcdFxuICA2NTpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiAgNjY6XHRcbiAgNjc6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgT1BFTlZTV0lUQ0hfR0VORVZFXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2ggR2VuZXZlIHR1bm5lbGluZyBzdXBwb3J0XCYjMzQ7XG4gIDcxOlx0XHRkZXBlbmRzIG9uIE9QRU5WU1dJVENIXG4gIDcyOlx0XHRkZXBlbmRzIG9uIEdFTkVWRVxuICA3MzpcdFx0ZGVmYXVsdCBPUEVOVlNXSVRDSFxuICA3NDpcdFx0aGVscFxuICA3NTpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgT3BlbiB2U3dpdGNoIHdpbGwgYmUgYWJsZSBjcmVhdGUgZ2VuZXZlIHZwb3J0LlxuICA3NjpcdFxuICA3NzpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkwMwoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiAzMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBPcGVuIHZTd2l0Y2ggUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZXhlY3V0ZV9yZWNpcmNgIGFuZCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCB3aXRoaW4gYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgLCB3aXRoIHRoZSBgT1BFTlZTV0lUQ0hgIGNvbmZpZyBhY3RpdmUuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0JiMzOTtzIGZ1bmN0aW9uYWwgYW5kIGFkZHJlc3NlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBjcmFzaCBzcGVjaWZpY2FsbHkgdGllZCB0byBgc2tiYCB3aXRoaW4gYGV4ZWN1dGVfcmVjaXJjYC4gRGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nOyB0aG9zZSB0eXBlcyBvZiBpc3N1ZXMgYXJlIGJyZWFkIGFuZCBidXR0ZXIgZm9yIGZpbmRpbmcgdnVsbmVyYWJpbGl0aWVzLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IG91ciBmb2N1cyBzeW1ib2xzLiBJIGhhZCBpbml0aWFsbHkgemVyb2VkIGluIG9uIGBvdnNfdnBvcnRfcmVjZWl2ZWAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgYnV0IG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZWlyIHZpc2liaWxpdHkuICpvdnNfdnBvcnRfcmVjZWl2ZSogaXMgZXhwb3J0ZWQsIHNvIHRoYXQmIzM5O3MgZ29vZDsgaXQmIzM5O3MgYWNjZXNzaWJsZS4gQnV0IGhhbmcgb24sIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBpcyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBtaWdodCBtYWtlIGl0IGEgcG9vciBmdXp6aW5nIHRhcmdldCwgYXMgYSBzdGF0aWMgZnVuY3Rpb24mIzM5O3Mgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgZmlsZSBpdCYjMzk7cyBkZWNsYXJlZCBpbi4gCgpZZXAsIGp1c3QgY29uZmlybWVkOiBgc3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pYC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIsIG5vbi1zdGF0aWMsIGZ1bmN0aW9ucyB3ZSBjb3VsZCB0YXJnZXQuIEFoLCBoZXJlIHdlIGdvOiBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AgaXMgbm9uLXN0YXRpYywgc28gd2UgaGF2ZSBhbm90aGVyIGNhbmRpZGF0ZS4gQW5kIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgLCB0aGF0JiMzOTtzIGFjY2Vzc2libGUgdG9vLiBTbywgYSByZXZpc2VkIGxpc3Q6IGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCwgYG92c19kcF9wcm9jZXNzX3BhY2tldGAsIGFuZCBgb3ZzX3Zwb3J0X3JlY2VpdmVgIGFyZSBhbGwgZ29vZCBmb2N1cyBwb2ludHMgZm9yIHRoZSBmdXp6aW5nIGVmZm9ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPUEVOVlNXSVRDSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAgICYjMzQ7b3ZzX2RwX3Byb2Nlc3NfcGFja2V0JiMzNDssCiAgICAmIzM0O292c192cG9ydF9yZWNlaXZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCAoZXhlY3V0ZV9yZWNpcmMgYW5kIGRvX2V4ZWN1dGVfYWN0aW9ucykgdG8gcHJvcGVybHkgaGFuZGxlIHNrYiBsaWZlY3ljbGUgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzIHdoZW4gb3ZzX2Zsb3dfa2V5X3VwZGF0ZSBmYWlscy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPUEVOVlNXSVRDSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAgICYjMzQ7b3ZzX2RwX3Byb2Nlc3NfcGFja2V0JiMzNDssCiAgICAmIzM0O292c192cG9ydF9yZWNlaXZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCAoZXhlY3V0ZV9yZWNpcmMgYW5kIGRvX2V4ZWN1dGVfYWN0aW9ucykgdG8gcHJvcGVybHkgaGFuZGxlIHNrYiBsaWZlY3ljbGUgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzIHdoZW4gb3ZzX2Zsb3dfa2V5X3VwZGF0ZSBmYWlscy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDI6NTEuOTAxNTQ3MzQ2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY5MDExMjE3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c192cG9ydF9yZWNlaXZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoIChleGVjdXRlX3JlY2lyYyBhbmQgZG9fZXhlY3V0ZV9hY3Rpb25zKSB0byBwcm9wZXJseSBoYW5kbGUgc2tiIGxpZmVjeWNsZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMgd2hlbiBvdnNfZmxvd19rZXlfdXBkYXRlIGZhaWxzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAyOjUxLjkwMTU1NDk4NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0MTA0NzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTkxMjBiOTZkNGNiN2QwMzQ2Mzg5MGIxZWM2Y2UwYTU0NTQxYjQ4M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyOCAxNjowMjo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xcbmluZGV4IDUxM2ZjYTZhOGU4YTQuLmRjNWZmODU5ZjExNDUgMTAwNjQ0XFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xcbisrKyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcXG5AQCAtMTEwOCw2ICsxMTA4LDEwIEBAIHN0YXRpYyBpbnQgZXhlY3V0ZV9tYXNrZWRfc2V0X2FjdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbisvKiBXaGVuICdsYXN0JyBpcyB0cnVlLCByZWNpcmMoKSBzaG91bGQgYWx3YXlzIGNvbnN1bWUgdGhlICdza2InLlxcbisgKiBPdGhlcndpc2UsIHJlY2lyYygpIHNob3VsZCBrZWVwICdza2InIGludGFjdCByZWdhcmRsZXNzIHdoYXRcXG4rICogYWN0aW9ucyBhcmUgZXhlY3V0ZWQgb24gcmVjaXJjdWxhdGlvbi5cXG4rICovXFxuIHN0YXRpYyBpbnQgZXhlY3V0ZV9yZWNpcmMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcXG4gXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphLCBib29sIGxhc3QpXFxuQEAgLTExMTgsOCArMTEyMiwxMiBAQCBzdGF0aWMgaW50IGV4ZWN1dGVfcmVjaXJjKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGludCBlcnI7XFxuIFxcbiBcXHRcXHRlcnIgPSBvdnNfZmxvd19rZXlfdXBkYXRlKHNrYiwga2V5KTtcXG4tXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0aWYgKGVycikge1xcbitcXHRcXHRcXHRpZiAobGFzdClcXG4rXFx0XFx0XFx0XFx0b3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIE9WU19EUk9QX0FDVElPTl9FUlJPUik7XFxuIFxcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHRCVUdfT04oIWlzX2Zsb3dfa2V5X3ZhbGlkKGtleSkpO1xcbiBcXG5AQCAtMTM3Miw3ICsxMzgwLDcgQEAgc3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0aWYgKCFpc19mbG93X2tleV92YWxpZChrZXkpKSB7XFxuIFxcdFxcdFxcdFxcdGVyciA9IG92c19mbG93X2tleV91cGRhdGUoc2tiLCBrZXkpO1xcbiBcXHRcXHRcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0XFx0fVxcbiBcXG4gXFx0XFx0XFx0ZXJyID0gb3ZzX2N0X2V4ZWN1dGUob3ZzX2RwX2dldF9uZXQoZHApLCBza2IsIGtleSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDI6NTIuNDY2NDgwMTE4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzYzMzYxNjA5OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c192cG9ydF9yZWNlaXZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoIChleGVjdXRlX3JlY2lyYyBhbmQgZG9fZXhlY3V0ZV9hY3Rpb25zKSB0byBwcm9wZXJseSBoYW5kbGUgc2tiIGxpZmVjeWNsZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMgd2hlbiBvdnNfZmxvd19rZXlfdXBkYXRlIGZhaWxzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE5MTIwYjk2ZDRjYjdkMDM0NjM4OTBiMWVjNmNlMGE1NDU0MWI0ODNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAxNjowMjo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG5pbmRleCA1MTNmY2E2YThlOGE0Li5kYzVmZjg1OWYxMTQ1IDEwMDY0NFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xuKysrIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xuQEAgLTExMDgsNiArMTEwOCwxMCBAQCBzdGF0aWMgaW50IGV4ZWN1dGVfbWFza2VkX3NldF9hY3Rpb24oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuKy8qIFdoZW4gJ2xhc3QnIGlzIHRydWUsIHJlY2lyYygpIHNob3VsZCBhbHdheXMgY29uc3VtZSB0aGUgJ3NrYicuXG4rICogT3RoZXJ3aXNlLCByZWNpcmMoKSBzaG91bGQga2VlcCAnc2tiJyBpbnRhY3QgcmVnYXJkbGVzcyB3aGF0XG4rICogYWN0aW9ucyBhcmUgZXhlY3V0ZWQgb24gcmVjaXJjdWxhdGlvbi5cbisgKi9cbiBzdGF0aWMgaW50IGV4ZWN1dGVfcmVjaXJjKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcbiBcdFx0XHQgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmEsIGJvb2wgbGFzdClcbkBAIC0xMTE4LDggKzExMjIsMTIgQEAgc3RhdGljIGludCBleGVjdXRlX3JlY2lyYyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRpbnQgZXJyO1xuIFxuIFx0XHRlcnIgPSBvdnNfZmxvd19rZXlfdXBkYXRlKHNrYiwga2V5KTtcbi1cdFx0aWYgKGVycilcbitcdFx0aWYgKGVycikge1xuK1x0XHRcdGlmIChsYXN0KVxuK1x0XHRcdFx0b3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLFxuK1x0XHRcdFx0XHRcdCAgICAgT1ZTX0RST1BfQUNUSU9OX0VSUk9SKTtcbiBcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHR9XG4gXHR9XG4gXHRCVUdfT04oIWlzX2Zsb3dfa2V5X3ZhbGlkKGtleSkpO1xuIFxuQEAgLTEzNzIsNyArMTM4MCw3IEBAIHN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0aWYgKCFpc19mbG93X2tleV92YWxpZChrZXkpKSB7XG4gXHRcdFx0XHRlcnIgPSBvdnNfZmxvd19rZXlfdXBkYXRlKHNrYiwga2V5KTtcbiBcdFx0XHRcdGlmIChlcnIpXG4tXHRcdFx0XHRcdHJldHVybiBlcnI7XG4rXHRcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRlcnIgPSBvdnNfY3RfZXhlY3V0ZShvdnNfZHBfZ2V0X25ldChkcCksIHNrYiwga2V5LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDI6NTIuNDY2NDgxNTU4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA1MjY2MTkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBpbiBPcGVuIHZTd2l0Y2ggQWN0aW9uIEV4ZWN1dGlvbioqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBwcmVzZW50ZWQgd2l0aCBhIHBhdGNoIHRhcmdldGluZyBgbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY2AuIE15IGluaXRpYWwgc2NhbiBzaG93cyB0aGF0IGl0J3MgdG91Y2hpbmcgYGV4ZWN1dGVfcmVjaXJjYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AsIHdoaWNoIGFyZSBib3RoIGNyaXRpY2FsIHBhcnRzIG9mIGhvdyBPcGVuIHZTd2l0Y2ggaGFuZGxlcyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgYXBwbHlpbmcgYWN0aW9ucy4gVGhlIHBhdGNoIGFwcGVhcnMgdG8gaW50cm9kdWNlIGEgc3BlY2lmaWMgZXJyb3IgaGFuZGxpbmcgbWVjaGFuaXNtIHdpdGhpbiBgZXhlY3V0ZV9yZWNpcmNgLCBjaGVja2luZyBmb3IgYSBjb25kaXRpb24gc2lnbmFsZWQgYnkgYGVycmAgYW5kIHN1YnNlcXVlbnRseSB1c2luZyBgb3ZzX2tmcmVlX3NrYl9yZWFzb25gLiBJbiBgZG9fZXhlY3V0ZV9hY3Rpb25zYCwgdGhlcmUncyBhIG1vZGlmaWNhdGlvbiB0byBob3cgZXJyb3JzIGZyb20gYG92c19mbG93X2tleV91cGRhdGVgIGFyZSBoYW5kbGVkIOKAkyBjaGFuZ2luZyBhIGByZXR1cm4gZXJyO2AgdG8gYSBgYnJlYWs7YC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdhcnJhbnRzIGEgY2xvc2VyIGxvb2ssIGVzcGVjaWFsbHkgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBUaGVzZSBhcmUgY29yZSBmdW5jdGlvbnMsIGFuZCBldmVuIHN1YnRsZSBjaGFuZ2VzIGluIGVycm9yIGhhbmRsaW5nIG9yIGNvbnRyb2wgZmxvdyBjYW4gaGF2ZSBzaWduaWZpY2FudCBpbXBsaWNhdGlvbnMgZm9yIG92ZXJhbGwgc3RhYmlsaXR5IGFuZCBzZWN1cml0eS4gSSdsbCBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbnMgb2YgYGV4ZWN1dGVfcmVjaXJjYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2Agd2l0aGluIGBhY3Rpb25zLmNgIHRvIGZ1bGx5IGdyYXNwIHRoZSBjaGFuZ2UuXG5cblRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBPcGVuIHZTd2l0Y2ggaXMgY29uZmlndXJlZC4gSSBrbm93IHRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgcGxhY2UgdG8gbG9vayBmb3IgdGhhdCBpbmZvcm1hdGlvbiwgYW5kIEkgYmVsaWV2ZSB0aGUgYE9QRU5WU1dJVENIYCBjb25maWcgb3B0aW9uIGluIGBuZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZ2Agd2lsbCBnaXZlIG1lIHRoZSByZWxldmFudCBzZXR0aW5ncyBhbmQgYnVpbGQtdGltZSBvcHRpb25zLiBJIHdhbnQgdG8gYnVpbGQgYSB0ZXN0IHJpZyB3aXRoIHRoZSBjb25maWcgb3B0aW9ucyB0aGF0IG1ha2UgYGV4ZWN1dGVfcmVjaXJjYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AgYWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQ2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDI6NTguNTE5MTQ3NjU2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Nzc4MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4ZWN1dGVfcmVjaXJjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMDM5PXN0YXRpYyBpbnQgZXhlY3V0ZV9tYXNrZWRfc2V0X2FjdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMTE0LSAqL1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTExNTpzdGF0aWMgaW50IGV4ZWN1dGVfcmVjaXJjKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMTE2LVxcdFxcdFxcdCAgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXksXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNTU9c3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTM0OC1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjEzNDk6XFx0XFx0XFx0ZXJyID0gZXhlY3V0ZV9yZWNpcmMoZHAsIHNrYiwga2V5LCBhLCBsYXN0KTtcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEzNTAtXFx0XFx0XFx0aWYgKGxhc3QpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDI6NTguNTYzOTU2MzU0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwMzMwNzMwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQW5hbHl6aW5nIEV4ZWN1dGlvbiBGbG93KipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgZXhlY3V0ZV9yZWNpcmNgIGFuZCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCBhcmUgYm90aCBkZWZpbmVkIGFzIHN0YXRpYyBtZW1iZXJzLCB3aGljaCBpcyBnb29kIHRvIGtub3csIGJ1dCBkb2Vzbid0IG5lY2Vzc2FyaWx5IHRlbGwgdXMgKmhvdyogdGhleSBhcmUgKmJlaW5nKiB1c2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlbS4gVGhlIGZpcnN0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCBob3cgYGRvX2V4ZWN1dGVfYWN0aW9uc2AgaXMgY2FsbGVkLiBJdCdzIHRpbWUgdG8gdHJhY2UgdGhlIGNhbGxzLiBXaGVyZSBpcyBpdCBiZWluZyBpbnZva2VkIGZyb20/IFRoYXQncyB3aGVyZSB0aGUgcmVhbCBpbnNpZ2h0cyB3aWxsIGJlLiBOZWVkIHRvIHNlZSB0aGUgZGVwZW5kZW5jeSBncmFwaCBhbmQgcGlucG9pbnQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGFuZCBjcml0aWNhbCBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAzOjAxLjM2NzI2NjI1MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTU3MDY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkb19leGVjdXRlX2FjdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyMD1zdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTI1LVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTI2OnN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjctXFx0XFx0XFx0ICAgICAgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXksXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNDk9c3RhdGljIHZvaWQgZXhlY3V0ZV9wc2FtcGxlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyNTQtLyogRXhlY3V0ZSBhIGxpc3Qgb2YgYWN0aW9ucyBhZ2FpbnN0ICdza2InLiAqL1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTI1NTpzdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTI1Ni1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTQ4Mz1zdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTUxMC1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1MTE6XFx0XFx0XFx0ZXJyID0gZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGNsb25lLFxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTUxMi1cXHRcXHRcXHRcXHRcXHRcXHQgYWN0aW9ucywgbGVuKTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0OT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU2NS1cXHRcXHRpZiAoYWN0aW9ucylcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1NjY6XFx0XFx0XFx0ZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGtleSwgYWN0aW9ucywgYWN0aW9uc19sZW4pO1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU2Ny1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTE1NzY9aW50IG92c19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU5MS1cXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlYWN0c19vcmlnbGVuID0gYWN0cy1cXHUwMDNlb3JpZ19sZW47XFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxNTkyOlxcdGVyciA9IGRvX2V4ZWN1dGVfYWN0aW9ucyhkcCwgc2tiLCBrZXksXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTkzLVxcdFxcdFxcdFxcdCBhY3RzLVxcdTAwM2VhY3Rpb25zLCBhY3RzLVxcdTAwM2VhY3Rpb25zX2xlbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAzOjAxLjQxMjg0MjI0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3Mjk1MTc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbCBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AqKlxuXG5BbHJpZ2h0LCBJJ20gdGFraW5nIGEgbG9vayBhdCBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AuIFNvbWV0aGluZydzIGJ1Z2dpbmcgbWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSBhbSBncmFzcGluZyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gaG93IGl0IGlzIHVzZWQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGUgd2hvbGUgY29udGV4dCBpcyBzY3JlYW1pbmcgdG8gYmUgaW52ZXN0aWdhdGVkLCBiZWNhdXNlIHRoZSBub24tc3RhdGljIGRlY2xhcmF0aW9uIG1lYW5zIGl0IGhhcyBsaW5rYWdlIHRvIHNvbWV0aGluZyBvdXRzaWRlIHRoZSBwcmVzZW50IGNvbXBpbGF0aW9uIHVuaXQuIFRoYXQgY291bGQgY3JlYXRlIHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIGlmIGl0IGlzbid0IHVzZWQgYXMgSSBleHBlY3QuIEl0IGlzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGlzIGNvbnRleHQsIGFuZCBkb3VibGUgY2hlY2sgbXkgZXhwZWN0YXRpb25zLiBJIGJldHRlciBnZXQgdGhlIGRldGFpbHMgb2YgdGhpcyBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNjowMzowNC40ODU3OTYwMzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NTI4MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZzX2V4ZWN1dGVfYWN0aW9uc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0OT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3NS0vKiBFeGVjdXRlIGEgbGlzdCBvZiBhY3Rpb25zIGFnYWluc3QgJ3NrYicuICovXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxNTc2OmludCBvdnNfZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTc3LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBzd19mbG93X2FjdGlvbnMgKmFjdHMsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz0yNDU9dm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0zMDgtXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6MzA5OlxcdGVycm9yID0gb3ZzX2V4ZWN1dGVfYWN0aW9ucyhkcCwgc2tiLCBzZl9hY3RzLCBrZXkpO1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTMxMC1cXHRpZiAodW5saWtlbHkoZXJyb3IpKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9NjEyPXN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzAyLVxcdFxcdHRoaXNfY3B1X3dyaXRlKG92c19wY3B1X3N0b3JhZ2UtXFx1MDAzZW93bmVyLCBjdXJyZW50KTtcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo3MDM6XFx0ZXJyID0gb3ZzX2V4ZWN1dGVfYWN0aW9ucyhkcCwgcGFja2V0LCBzZl9hY3RzLCBcXHUwMDI2Zmxvdy1cXHUwMDNla2V5KTtcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy03MDQtXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BSRUVNUFRfUlQpKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmg9MzI5PXN0cnVjdCBza19idWZmICpvdnNfdnBvcnRfY21kX2J1aWxkX2luZm8oc3RydWN0IHZwb3J0ICp2cG9ydCwgc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMzMxLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oOjMzMjppbnQgb3ZzX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oLTMzMy1cXHRcXHRcXHRjb25zdCBzdHJ1Y3Qgc3dfZmxvd19hY3Rpb25zICosIHN0cnVjdCBzd19mbG93X2tleSAqKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDM6MDQuNTMyNzU4NDI1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3MzAzODQ2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE9WUyBQYWNrZXQgUHJvY2Vzc2luZyBQYXRoKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBmbG93IG9mIHBhY2tldCBwcm9jZXNzaW5nIHdpdGhpbiBPVlMsIGFuZCBJJ20gbG9va2luZyBmb3IgdGhlIGtleSBlbnRyeSBwb2ludHMuIEJhc2VkIG9uIGV4cGVyaWVuY2UsIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGFuZCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgaW1tZWRpYXRlbHkganVtcCBvdXQgYXMgbGlrZWx5IGNhbmRpZGF0ZXMuIExldCdzIHN0YXJ0IHdpdGggYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLiBBaCwgaXQncyBtYXJrZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzbid0IGEgc3VycHJpc2UgZm9yIGFuIGludGVybmFsIGZ1bmN0aW9uLCBidXQgdGhlIGltcG9ydGFudCBjbHVlIGlzIHRoYXQgaXQncyBhIG5ldGxpbmsgY29tbWFuZCBoYW5kbGVyLiBUaGF0IGRlZmluaXRlbHkgbWFrZXMgaXQgYSByZWxldmFudCBwaWVjZSB0byBhbmFseXplLCBidXQgbGV0IG1lIG5vdyBwaXZvdCB0byBleGFtaW5lIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGRpcmVjdGx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBuZXRsaW5rIGludGVyZmFjZSwgYW5kIGl0cyBvdmVyYWxsIHJvbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3ODUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNjowMzowOS4xMDU3OTkyNDNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjMxMDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm92c19kcF9wcm9jZXNzX3BhY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTQ4Mz1zdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTUxNy1cXHRcXHRcXHRjbG9uZS1cXHUwMDNlcmVjaXJjX2lkID0gcmVjaXJjX2lkO1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTUxODpcXHRcXHRcXHRvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc2tiLCBjbG9uZSk7XFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTE5LVxcdFxcdH1cXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0OT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU2Ny1cXHRcXHRlbHNlXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxNTY4OlxcdFxcdFxcdG92c19kcF9wcm9jZXNzX3BhY2tldChza2IsIGtleSk7XFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTY5LVxcdH0gd2hpbGUgKCFhY3Rpb25fZmlmb19pc19lbXB0eShmaWZvKSk7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz0yMzM9dm9pZCBvdnNfZHBfZGV0YWNoX3BvcnQoc3RydWN0IHZwb3J0ICpwKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjQ0LS8qIE11c3QgYmUgY2FsbGVkIHdpdGggcmN1X3JlYWRfbG9jay4gKi9cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzoyNDU6dm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjQ2LXtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oPTMxOD1leHRlcm4gc3RydWN0IGdlbmxfZmFtaWx5IGRwX3Zwb3J0X2dlbmxfZmFtaWx5O1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oLTMxOS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaDozMjA6dm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpO1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oLTMyMS12b2lkIG92c19kcF9kZXRhY2hfcG9ydChzdHJ1Y3QgdnBvcnQgKik7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYz00OTc9aW50IG92c192cG9ydF9yZWNlaXZlKHN0cnVjdCB2cG9ydCAqdnBvcnQsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy01MjItXFx0fVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5jOjUyMzpcXHRvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc2tiLCBcXHUwMDI2a2V5KTtcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy01MjQtXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAzOjA5LjE1MTQ0MDUyMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY2MDYyNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW5pdGlhbCBFeGFtaW5hdGlvbiBvZiBPVlMgUGFja2V0IEhhbmRsaW5nKipcblxuQWxyaWdodCwgc28gYG92c192cG9ydF9yZWNlaXZlYCB1bHRpbWF0ZWx5IGNhbGxzIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgLiBUaGF0IGZlZWxzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyBwYWNrZXQgZmxvdywgYSBwb3RlbnRpYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBjb3JlIGRhdGEgcGF0aCBwcm9jZXNzaW5nLiBMZXQncyBtYWtlIGEgbm90ZSBvZiB0aGF0LiBBbmQsIG9mIGNvdXJzZSwgdGhlcmUncyBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAsIHdoaWNoIGlzIHRoZSBuZXRsaW5rIGNvbW1hbmQgaGFuZGxlciDigJMgZGVmaW5pdGVseSBhbm90aGVyIGRpc3RpbmN0IGVudHJ5IHBvaW50IHRvIGNvbnNpZGVyLCBnaXZlbiB0aGUgY29udHJvbCBwbGFuZSdzIHJvbGUuXG5cbk5vdywgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogcGxhY2VzIHdoZXJlIHRoaXMgcHJvY2Vzc2luZyBraWNrcyBvZmYuIERpdmluZyBkZWVwZXIsIEkgc2VlIGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCBpcyB0aGUgYmVuZWZpY2lhcnkgb2YgYm90aCBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YCBhbmQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLiBTbywgaXQgYXBwZWFycyB0aGF0IGBvdnNfdnBvcnRfcmVjZWl2ZWAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBhcmUgaW5kZWVkIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyB0byBmb2N1cyBvbi4gSSdsbCBzdGFydCBieSB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCBgb3ZzX3Zwb3J0X3JlY2VpdmVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njc5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAzOjEzLjQxNzUwNjgxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY0Mzc2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvdnNfdnBvcnRfcmVjZWl2ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYz0zND1pbnRlcm5hbF9kZXZfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTM3LVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzozODpcXHQvKiBzdG9yZSBsZW4gdmFsdWUgYmVjYXVzZSBza2IgY2FuIGJlIGZyZWVkIGluc2lkZSBvdnNfdnBvcnRfcmVjZWl2ZSgpICovXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTM5LVxcdGxlbiA9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTQxLVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmM6NDI6XFx0ZXJyID0gb3ZzX3Zwb3J0X3JlY2VpdmUoaW50ZXJuYWxfZGV2X3ByaXYobmV0ZGV2KS1cXHUwMDNldnBvcnQsIHNrYiwgTlVMTCk7XFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTQzLVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LW5ldGRldi5jPTI5PXN0YXRpYyB2b2lkIG5ldGRldl9wb3J0X3JlY2VpdmUoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYy00OS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2LmM6NTA6XFx0b3ZzX3Zwb3J0X3JlY2VpdmUodnBvcnQsIHNrYiwgc2tiX3R1bm5lbF9pbmZvKHNrYikpO1xcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYy01MS1cXHRyZXR1cm47XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYz00Njk9dTMyIG92c192cG9ydF9maW5kX3VwY2FsbF9wb3J0aWQoY29uc3Qgc3RydWN0IHZwb3J0ICp2cG9ydCxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5jLTQ4Ny0vKipcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYzo0ODg6ICpcXHRvdnNfdnBvcnRfcmVjZWl2ZSAtIHBhc3MgdXAgcmVjZWl2ZWQgcGFja2V0IHRvIHRoZSBkYXRhcGF0aCBmb3IgcHJvY2Vzc2luZ1xcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5jLTQ4OS0gKlxcbi0tXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LmMtNDk2LSAqL1xcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5jOjQ5NzppbnQgb3ZzX3Zwb3J0X3JlY2VpdmUoc3RydWN0IHZwb3J0ICp2cG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYy00OTgtXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGlwX3R1bm5lbF9pbmZvICp0dW5faW5mbylcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC5oPTE5NT1zdGF0aWMgaW5saW5lIHN0cnVjdCB2cG9ydCAqdnBvcnRfZnJvbV9wcml2KHZvaWQgKnByaXYpXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuaC0xOTktXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0Lmg6MjAwOmludCBvdnNfdnBvcnRfcmVjZWl2ZShzdHJ1Y3QgdnBvcnQgKiwgc3RydWN0IHNrX2J1ZmYgKixcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuaC0yMDEtXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGlwX3R1bm5lbF9pbmZvICopO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNjowMzoxMy40NjIxNTU1NDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY3MzQ5NDA3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0J3MgZ29pbmcgb24sIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqVHJhY2luZyB0aGUgRGF0YSBQYXRoIFx1MDAyNiBDb21tYW5kIEV4ZWN1dGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gc2VlaW5nIHRoYXQgYG92c192cG9ydF9yZWNlaXZlYCBpcyBhdCB0aGUgY29yZSBvZiB0aGlzLCBjYWxsZWQgZnJvbSB0d28ga2V5IHBsYWNlczogYG5ldGRldl9wb3J0X3JlY2VpdmVgLCB3aGljaCBJIHJlY29nbml6ZSBhcyB0aGUgc3RhbmRhcmQgcmVjZWl2ZSBoYW5kbGVyIGZvciBhIG5ldHdvcmsgZGV2aWNlLCBhbmQgYGludGVybmFsX2Rldl94bWl0YCwgd2hpY2ggc3VnZ2VzdHMgc29tZSBpbnRlcm5hbCBwYWNrZXQgdHJhbnNtaXNzaW9uIHdpdGhpbiB0aGUgT3BlbiB2U3dpdGNoIGRhdGEgcGF0aCBpdHNlbGYuIFRoYXQgbWFrZXMgc2Vuc2U7IGluY29taW5nIHBhY2tldHMgYW5kIGludGVybmFsIGZvcndhcmRpbmcuIEdvb2QuIGBuZXRkZXZfcG9ydF9yZWNlaXZlYCBjbGVhcmx5IGhhbmRsZXMgdGhlIFJYIHBhdGgsIHRoYXQncyBleHBlY3RlZC5cblxuTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAuLi4gdGhhdCByaW5ncyBhIGJlbGwuIEl0J3MgYSBuZXRsaW5rIGNvbW1hbmQgaGFuZGxlciwgd2hpY2ggbWVhbnMgaXQncyByZXNwb25zaWJsZSBmb3IgcHJvY2Vzc2luZyBjb21tYW5kcyB0aGF0IGFyZSBpbmplY3RlZCBpbnRvIHRoZSBkYXRhcGF0aCBmcm9tIHVzZXJzcGFjZSwgbGlrZSBmbG93IG1vZGlmaWNhdGlvbnMgb3IgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSB0d28gcGllY2VzIHJlbGF0ZS4gTGV0IG1lIHB1bGwgdXAgYG5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jYCBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBjb21tYW5kIGlzIGdldHRpbmcgYXBwbGllZC4gVGhpcyBjb3VsZCBiZSB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvciBhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIGZsb3cgZ2V0IGluamVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzcwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDM6MTguMTM1NjUzNDMzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjE0ODA1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvdnNfcGFja2V0X2NtZF9leGVjdXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTQ1MT1zdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTYxMS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo2MTI6c3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjEzLXtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTczMz1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIGRwX3BhY2tldF9nZW5sX29wc1tdID0ge1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzM2LVxcdCAgLmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSwgLyogUmVxdWlyZXMgQ0FQX05FVF9BRE1JTiBwcml2aWxlZ2UuICovXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NzM3OlxcdCAgLmRvaXQgPSBvdnNfcGFja2V0X2NtZF9leGVjdXRlXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzM4LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDM6MTguMTgxODA5NDMxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTA3MzE5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgT1ZTIFBhY2tldCBQcm9jZXNzaW5nIEZvY3VzKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiB0aGUgY3JpdGljYWwgYXJlYXMgZm9yIHBhY2tldCBwcm9jZXNzaW5nIHdpdGhpbiBPcGVuIHZTd2l0Y2guIFRoaW5raW5nIGFib3V0IGl0LCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgcmVhbGx5IGZlZWxzIGxpa2UgYSBrZXkgZm9jdXMuIEl0J3MgcmlnaHQgdGhlcmUsIGRpcmVjdGx5IGV4ZWN1dGluZyBhY3Rpb25zIG9uIHBhY2tldHMuIEFuZCwgb2YgY291cnNlLCBgb3ZzX3Zwb3J0X3JlY2VpdmVgIGlzIGFub3RoZXIgcHJpbWUgY2FuZGlkYXRlLiBJdCdzIHRoZSByZWNlaXZlciwgdGhlIGVudHJ5IHBvaW50IGZvciBwYWNrZXRzLlxuXG5JIHNob3VsZCBzZWUgaWYgYW55IG90aGVyIG5ldGxpbmsgY29tbWFuZHMgbWlnaHQgYmUgdHJpZ2dlcmluZyBhY3Rpb25zLiBMZXQgbWUgcXVpY2tseSBjaGVjay4gSG1tLCBgb3ZzX2Zsb3dfY21kX25ld2A/IE5vLCB0aGF0J3MganVzdCBmb3IgaW5zdGFsbGluZyBmbG93czsgbm90IGEgZGlyZWN0IHBhY2tldCBhY3Rpb24uIFNvLCBpdCBhcHBlYXJzIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBhbmQgYG92c192cG9ydF9yZWNlaXZlYCBhcmUgdGhlIG1haW4gZW50cnkgcG9pbnRzIGZvciBPcGVuIHZTd2l0Y2gncyBwYWNrZXQgcHJvY2Vzc2luZyB3b3JrZmxvdy5cblxuTm93LCBJJ20gY3VyaW91cyBpZiBgT1BFTlZTV0lUQ0hgIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gcGllY2UuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCB3b3VsZCBhZmZlY3QgcGFja2V0IHByb2Nlc3Npbmc/IFRpbWUgdG8gZGlnIGludG8gYG5ldC9vcGVudnN3aXRjaC9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQyMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNjowMzoyMi4yOTI1NDQzMzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L29wZW52c3dpdGNoL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE9wZW4gdlN3aXRjaFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgT1BFTlZTV0lUQ0hcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2hcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gIU5GX0NPTk5UUkFDSyB8fCBcXFxcXFxuICAxMDpcXHRcXHRcXHQgICAoTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2ICgoIU5GX0RFRlJBR19JUFY2IHx8IE5GX0RFRlJBR19JUFY2KSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuICAxMTpcXHRcXHRcXHRcXHRcXHQgICAgICghTkZfTkFUIHx8IE5GX05BVCkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiAgMTI6XFx0XFx0XFx0XFx0XFx0ICAgICAoIU5FVEZJTFRFUl9DT05OQ09VTlQgfHwgTkVURklMVEVSX0NPTk5DT1VOVCkpKVxcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8ICFQU0FNUExFXFxuICAxNDpcXHRcXHRzZWxlY3QgTVBMU1xcbiAgMTU6XFx0XFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4gIDE2OlxcdFxcdHNlbGVjdCBORVRfTVBMU19HU09cXG4gIDE3OlxcdFxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4gIDE4OlxcdFxcdHNlbGVjdCBORVRfTlNIXFxuICAxOTpcXHRcXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WUyBpZiBORl9DT05OVFJBQ0tcXG4gIDIwOlxcdFxcdHNlbGVjdCBORl9OQVRfT1ZTIGlmIE5GX05BVFxcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICBPcGVuIHZTd2l0Y2ggaXMgYSBtdWx0aWxheWVyIEV0aGVybmV0IHN3aXRjaCB0YXJnZXRlZCBhdCB2aXJ0dWFsaXplZFxcbiAgMjM6XFx0XFx0ICBlbnZpcm9ubWVudHMuICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIGEgdmFyaWV0eSBvZiBmZWF0dXJlc1xcbiAgMjQ6XFx0XFx0ICBleHBlY3RlZCBpbiBhIHRyYWRpdGlvbmFsIGhhcmR3YXJlIHN3aXRjaCwgaXQgZW5hYmxlcyBmaW5lLWdyYWluZWRcXG4gIDI1OlxcdFxcdCAgcHJvZ3JhbW1hdGljIGV4dGVuc2lvbiBhbmQgZmxvdy1iYXNlZCBjb250cm9sIG9mIHRoZSBuZXR3b3JrLiAgVGhpc1xcbiAgMjY6XFx0XFx0ICBjb250cm9sIGlzIHVzZWZ1bCBpbiBhIHdpZGUgdmFyaWV0eSBvZiBhcHBsaWNhdGlvbnMgYnV0IGlzXFxuICAyNzpcXHRcXHQgIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgaW4gbXVsdGktc2VydmVyIHZpcnR1YWxpemF0aW9uIGRlcGxveW1lbnRzLFxcbiAgMjg6XFx0XFx0ICB3aGljaCBhcmUgb2Z0ZW4gY2hhcmFjdGVyaXplZCBieSBoaWdobHkgZHluYW1pYyBlbmRwb2ludHMgYW5kIHRoZVxcbiAgMjk6XFx0XFx0ICBuZWVkIHRvIG1haW50YWluIGxvZ2ljYWwgYWJzdHJhY3Rpb25zIGZvciBtdWx0aXBsZSB0ZW5hbnRzLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRcXHQgIFRoZSBPcGVuIHZTd2l0Y2ggZGF0YXBhdGggcHJvdmlkZXMgYW4gaW4ta2VybmVsIGZhc3QgcGF0aCBmb3IgcGFja2V0XFxuICAzMjpcXHRcXHQgIGZvcndhcmRpbmcuICBJdCBpcyBjb21wbGVtZW50ZWQgYnkgYSB1c2Vyc3BhY2UgZGFlbW9uLCBvdnMtdnN3aXRjaGQsXFxuICAzMzpcXHRcXHQgIHdoaWNoIGlzIGFibGUgdG8gYWNjZXB0IGNvbmZpZ3VyYXRpb24gZnJvbSBhIHZhcmlldHkgb2Ygc291cmNlcyBhbmRcXG4gIDM0OlxcdFxcdCAgdHJhbnNsYXRlIGl0IGludG8gcGFja2V0IHByb2Nlc3NpbmcgcnVsZXMuXFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdCAgU2VlIGh0dHA6Ly9vcGVudnN3aXRjaC5vcmcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHVzZXJzcGFjZVxcbiAgMzc6XFx0XFx0ICB1dGlsaXRpZXMuXFxuICAzODpcXHRcXG4gIDM5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgNDA6XFx0XFx0ICBjYWxsZWQgb3BlbnZzd2l0Y2guXFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIE9QRU5WU1dJVENIX0dSRVxcbiAgNDU6XFx0XFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaCBHUkUgdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIE9QRU5WU1dJVENIXFxuICA0NzpcXHRcXHRkZXBlbmRzIG9uIE5FVF9JUEdSRVxcbiAgNDg6XFx0XFx0ZGVmYXVsdCBPUEVOVlNXSVRDSFxcbiAgNDk6XFx0XFx0aGVscFxcbiAgNTA6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgT3BlbiB2U3dpdGNoIHdpbGwgYmUgYWJsZSBjcmVhdGUgR1JFXFxuICA1MTpcXHRcXHQgIHZwb3J0LlxcbiAgNTI6XFx0XFxuICA1MzpcXHRcXHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxcbiAgNTQ6XFx0XFxuICA1NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuICA1NjpcXHRcXG4gIDU3OlxcdGNvbmZpZyBPUEVOVlNXSVRDSF9WWExBTlxcbiAgNTg6XFx0XFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaCBWWExBTiB0dW5uZWxpbmcgc3VwcG9ydFxcXCJcXG4gIDU5OlxcdFxcdGRlcGVuZHMgb24gT1BFTlZTV0lUQ0hcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gVlhMQU5cXG4gIDYxOlxcdFxcdGRlZmF1bHQgT1BFTlZTV0lUQ0hcXG4gIDYyOlxcdFxcdGhlbHBcXG4gIDYzOlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIE9wZW4gdlN3aXRjaCB3aWxsIGJlIGFibGUgY3JlYXRlIHZ4bGFuIHZwb3J0LlxcbiAgNjQ6XFx0XFxuICA2NTpcXHRcXHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuICA2ODpcXHRcXG4gIDY5OlxcdGNvbmZpZyBPUEVOVlNXSVRDSF9HRU5FVkVcXG4gIDcwOlxcdFxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2ggR2VuZXZlIHR1bm5lbGluZyBzdXBwb3J0XFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBPUEVOVlNXSVRDSFxcbiAgNzI6XFx0XFx0ZGVwZW5kcyBvbiBHRU5FVkVcXG4gIDczOlxcdFxcdGRlZmF1bHQgT1BFTlZTV0lUQ0hcXG4gIDc0OlxcdFxcdGhlbHBcXG4gIDc1OlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIE9wZW4gdlN3aXRjaCB3aWxsIGJlIGFibGUgY3JlYXRlIGdlbmV2ZSB2cG9ydC5cXG4gIDc2OlxcdFxcbiAgNzc6XFx0XFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTY6MDM6MjIuMjkyNjIwNTE0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNjE4NzMwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBPcGVuIHZTd2l0Y2ggUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBleGVjdXRlX3JlY2lyY2AgYW5kIGBkb19leGVjdXRlX2FjdGlvbnNgIHdpdGhpbiBgbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY2AsIHdpdGggdGhlIGBPUEVOVlNXSVRDSGAgY29uZmlnIGFjdGl2ZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgaXQncyBmdW5jdGlvbmFsIGFuZCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgY3Jhc2ggc3BlY2lmaWNhbGx5IHRpZWQgdG8gYHNrYmAgd2l0aGluIGBleGVjdXRlX3JlY2lyY2AuIERlZmluaXRlbHkgd2FycmFudHMgZnV6emluZzsgdGhvc2UgdHlwZXMgb2YgaXNzdWVzIGFyZSBicmVhZCBhbmQgYnV0dGVyIGZvciBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcy5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgb3VyIGZvY3VzIHN5bWJvbHMuIEkgaGFkIGluaXRpYWxseSB6ZXJvZWQgaW4gb24gYG92c192cG9ydF9yZWNlaXZlYCBhbmQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLCBidXQgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlaXIgdmlzaWJpbGl0eS4gKm92c192cG9ydF9yZWNlaXZlKiBpcyBleHBvcnRlZCwgc28gdGhhdCdzIGdvb2Q7IGl0J3MgYWNjZXNzaWJsZS4gQnV0IGhhbmcgb24sIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBpcyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBtaWdodCBtYWtlIGl0IGEgcG9vciBmdXp6aW5nIHRhcmdldCwgYXMgYSBzdGF0aWMgZnVuY3Rpb24ncyBzY29wZSBpcyBsaW1pdGVkIHRvIHRoZSBmaWxlIGl0J3MgZGVjbGFyZWQgaW4uIFxuXG5ZZXAsIGp1c3QgY29uZmlybWVkOiBgc3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pYC4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciwgbm9uLXN0YXRpYywgZnVuY3Rpb25zIHdlIGNvdWxkIHRhcmdldC4gQWgsIGhlcmUgd2UgZ286IGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCBpcyBub24tc3RhdGljLCBzbyB3ZSBoYXZlIGFub3RoZXIgY2FuZGlkYXRlLiBBbmQgYG92c19kcF9wcm9jZXNzX3BhY2tldGAsIHRoYXQncyBhY2Nlc3NpYmxlIHRvby4gU28sIGEgcmV2aXNlZCBsaXN0OiBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AsIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgLCBhbmQgYG92c192cG9ydF9yZWNlaXZlYCBhcmUgYWxsIGdvb2QgZm9jdXMgcG9pbnRzIGZvciB0aGUgZnV6emluZyBlZmZvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTAzLCJPdXRwdXRUb2tlbnMiOjEyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE2OjAzOjI4LjY1NDQ5NjUzM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODE0MDQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c192cG9ydF9yZWNlaXZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoIChleGVjdXRlX3JlY2lyYyBhbmQgZG9fZXhlY3V0ZV9hY3Rpb25zKSB0byBwcm9wZXJseSBoYW5kbGUgc2tiIGxpZmVjeWNsZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMgd2hlbiBvdnNfZmxvd19rZXlfdXBkYXRlIGZhaWxzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c192cG9ydF9yZWNlaXZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoIChleGVjdXRlX3JlY2lyYyBhbmQgZG9fZXhlY3V0ZV9hY3Rpb25zKSB0byBwcm9wZXJseSBoYW5kbGUgc2tiIGxpZmVjeWNsZSBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMgd2hlbiBvdnNfZmxvd19rZXlfdXBkYXRlIGZhaWxzLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowjx5bw[1] Phase: Succeeded StartedAt: 2026-07-28 16:03:40 +0000 UTC FinishedAt: 2026-07-28 16:03:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-28 16:03:40 +0000 UTC FinishedAt: 2026-07-28 16:03:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2] Phase: Succeeded StartedAt: 2026-07-28 16:03:40 +0000 UTC FinishedAt: 2026-07-28 17:38:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-28 16:03:40 +0000 UTC FinishedAt: 2026-07-28 17:38:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-28 16:03:40 +0000 UTC FinishedAt: 2026-07-28 16:03:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-28 16:03:40 +0000 UTC FinishedAt: 2026-07-28 16:03:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjx5bw/series-workflowjx5bw-convert-artifact-402488844/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-28 16:03:50 +0000 UTC FinishedAt: 2026-07-28 16:23:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-28 16:03:50 +0000 UTC FinishedAt: 2026-07-28 16:23:34 +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:*05e51be3-5f0f-488c-9577-30251e922d11,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-workflowjx5bw/series-workflowjx5bw-convert-artifact-402488844/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": "6f965df5-58d9-4836-9796-3a8d323da88e", "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-workflowjx5bw/series-workflowjx5bw-build-action-781993018/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-28 16:03:50 +0000 UTC FinishedAt: 2026-07-28 16:23:24 +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:*05e51be3-5f0f-488c-9577-30251e922d11,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-workflowjx5bw/series-workflowjx5bw-convert-artifact-402488844/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": "6f965df5-58d9-4836-9796-3a8d323da88e", "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-workflowjx5bw/series-workflowjx5bw-build-action-781993018/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-28 16:23:34 +0000 UTC FinishedAt: 2026-07-28 16:23:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-28 16:23:34 +0000 UTC FinishedAt: 2026-07-28 16:23:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-28 16:23:34 +0000 UTC FinishedAt: 2026-07-28 16:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-28 16:23:34 +0000 UTC FinishedAt: 2026-07-28 16:23:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjx5bw/series-workflowjx5bw-convert-artifact-1150271819/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-28 16:23:46 +0000 UTC FinishedAt: 2026-07-28 16:25:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-28 16:23:46 +0000 UTC FinishedAt: 2026-07-28 16:25:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6f965df5-58d9-4836-9796-3a8d323da88e,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-workflowjx5bw/series-workflowjx5bw-build-action-781993018/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-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-28 16:25:48 +0000 UTC FinishedAt: 2026-07-28 16:25:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-28 16:25:48 +0000 UTC FinishedAt: 2026-07-28 16:25:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-28 16:25:48 +0000 UTC FinishedAt: 2026-07-28 16:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-28 16:25:48 +0000 UTC FinishedAt: 2026-07-28 16:48:26 +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:*05e51be3-5f0f-488c-9577-30251e922d11,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-workflowjx5bw/series-workflowjx5bw-convert-artifact-1150271819/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": "ccb3f3a5-daae-4bf0-b2c5-efc804d0c124", "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-workflowjx5bw/series-workflowjx5bw-build-action-4027442671/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-28 16:25:48 +0000 UTC FinishedAt: 2026-07-28 16:48:16 +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:*05e51be3-5f0f-488c-9577-30251e922d11,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-workflowjx5bw/series-workflowjx5bw-convert-artifact-1150271819/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": "ccb3f3a5-daae-4bf0-b2c5-efc804d0c124", "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-workflowjx5bw/series-workflowjx5bw-build-action-4027442671/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-28 16:48:26 +0000 UTC FinishedAt: 2026-07-28 16:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-28 16:48:26 +0000 UTC FinishedAt: 2026-07-28 16:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-28 16:48:26 +0000 UTC FinishedAt: 2026-07-28 16:50:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-28 16:48:26 +0000 UTC FinishedAt: 2026-07-28 16:50:32 +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:*ccb3f3a5-daae-4bf0-b2c5-efc804d0c124,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-workflowjx5bw/series-workflowjx5bw-build-action-4027442671/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-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-28 16:50:42 +0000 UTC FinishedAt: 2026-07-28 17:38:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-28 16:50:42 +0000 UTC FinishedAt: 2026-07-28 17:38:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"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:*6f965df5-58d9-4836-9796-3a8d323da88e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ccb3f3a5-daae-4bf0-b2c5-efc804d0c124,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-workflowjx5bw/series-workflowjx5bw-build-action-781993018/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-workflowjx5bw/series-workflowjx5bw-build-action-4027442671/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-28 16:50:42 +0000 UTC FinishedAt: 2026-07-28 16:50:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-28 16:50:42 +0000 UTC FinishedAt: 2026-07-28 16:50:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"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-workflowjx5bw/series-workflowjx5bw-convert-artifact-829386212/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-28 16:50:42 +0000 UTC FinishedAt: 2026-07-28 16:50:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-28 16:50:42 +0000 UTC FinishedAt: 2026-07-28 16:50:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-28 16:50:42 +0000 UTC FinishedAt: 2026-07-28 16:50:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-28 16:50:52 +0000 UTC FinishedAt: 2026-07-28 17:38:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjx5bw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_vport_receive"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"720a7fb9-30ef-4b17-be22-4afaade01bd9","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-28 16:50:52 +0000 UTC FinishedAt: 2026-07-28 17:37:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6f965df5-58d9-4836-9796-3a8d323da88e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ccb3f3a5-daae-4bf0-b2c5-efc804d0c124,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-workflowjx5bw/series-workflowjx5bw-build-action-781993018/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-workflowjx5bw/series-workflowjx5bw-build-action-4027442671/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-workflowjx5bw/series-workflowjx5bw-convert-artifact-829386212/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,}