Name: series-workflowz2jgl Phase: Succeeded StartedAt: 2026-08-03 08:53:57 +0000 UTC FinishedAt: 2026-08-03 13:07:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[0] Phase: Succeeded StartedAt: 2026-08-03 08:53:57 +0000 UTC FinishedAt: 2026-08-03 09:11:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 08:53:57 +0000 UTC FinishedAt: 2026-08-03 09:11:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_LOG_SYSLOG", "NETFILTER_NETLINK_LOG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_LOG_SYSLOG", "NETFILTER_NETLINK_LOG" ], "series_id": "04c6fbee-b7d7-47e7-b3fa-cf32dc93c014" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_log_syslog_net_pre_exit", "nfnl_log_net_pre_exit", "nfnl_log_net_exit" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0xPR19TWVNMT0cmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX05FVExJTktfTE9HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXQmIzM0OywKICAgICYjMzQ7bmZubF9sb2dfbmV0X3ByZV9leGl0JiMzNDssCiAgICAmIzM0O25mbmxfbG9nX25ldF9leGl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBsb2dpYyBmb3IgbmZfbG9nX3N5c2xvZyBhbmQgbmZuZXRsaW5rX2xvZyBieSBtb3ZpbmcgY2xlYW51cCBjb2RlIGZyb20gdGhlIC5leGl0IGNhbGxiYWNrIHRvIHRoZSAucHJlX2V4aXQgY2FsbGJhY2sgaW4gdGhlaXIgcGVybmV0X29wZXJhdGlvbnMgc3RydWN0dXJlcy4gVGhpcyBjaGFuZ2VzIHRoZSBleGVjdXRpb24gb3JkZXIgZHVyaW5nIG5ldCBuYW1lc3BhY2UgZGVzdHJ1Y3Rpb24sIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYWZmZWN0IG9iamVjdCBsaWZldGltZXMgYW5kIHByZXZlbnQgb3IgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZS4gTmV0d29yayBuYW1lc3BhY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIGFyZSBoZWF2aWx5IGV4ZXJjaXNlZCBkdXJpbmcgZnV6emluZywgbWFraW5nIHRoaXMgaGlnaGx5IHJlbGV2YW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWZiOWU4OWQ1YmYyYmZjYjNhMjZhMzE1Y2VmYjFlMTdiZWMxMzQyNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDk6MTA6NDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuY1xuaW5kZXggZTM3YjA5YjMyMDNiNy4uNWZmZGUyN2Q0NTBhNyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuY1xuQEAgLTEwMTQsNyAmIzQzOzEwMTQsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfbG9nX3N5c2xvZ19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuJiM0MztzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcbiB7XG4gXHRuZl9sb2dfdW5zZXQobmV0LCBcdTAwMjZuZl9pcF9sb2dnZXIpO1xuIFx0bmZfbG9nX3Vuc2V0KG5ldCwgXHUwMDI2bmZfYXJwX2xvZ2dlcik7XG5AQCAtMTAyNSw3ICYjNDM7MTAyNSw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZfbG9nX3N5c2xvZ19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG4gXG4gc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBuZl9sb2dfc3lzbG9nX25ldF9vcHMgPSB7XG4gXHQuaW5pdCA9IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQsXG4tXHQuZXhpdCA9IG5mX2xvZ19zeXNsb2dfbmV0X2V4aXQsXG4mIzQzO1x0LnByZV9leGl0ID0gbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXQsXG4gfTtcbiBcbiBzdGF0aWMgaW50IF9faW5pdCBuZl9sb2dfc3lzbG9nX2luaXQodm9pZClcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jXG5pbmRleCA1ZmVlNjFiMzgxM2NiLi42YzdmYTJlZDM0ZjVjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jXG5AQCAtMTE3MCwyMSAmIzQzOzExNzAsMjYgQEAgc3RhdGljIGludCBfX25ldF9pbml0IG5mbmxfbG9nX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mbmxfbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbiYjNDM7c3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuIHtcbi1cdHN0cnVjdCBuZm5sX2xvZ19uZXQgKmxvZyA9IG5mbmxfbG9nX3Blcm5ldChuZXQpO1xuLVx0dW5zaWduZWQgaW50IGk7XG4tXG4gI2lmZGVmIENPTkZJR19QUk9DX0ZTXG4gXHRyZW1vdmVfcHJvY19lbnRyeShcJiMzNDtuZm5ldGxpbmtfbG9nXCYjMzQ7LCBuZXQtXHUwMDNlbmYucHJvY19uZXRmaWx0ZXIpO1xuICNlbmRpZlxuIFx0bmZfbG9nX3Vuc2V0KG5ldCwgXHUwMDI2bmZ1bG5sX2xvZ2dlcik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZubF9sb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5mbmxfbG9nX25ldCAqbG9nID0gbmZubF9sb2dfcGVybmV0KG5ldCk7XG4mIzQzO1x0dW5zaWduZWQgaW50IGk7XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSU5TVEFOQ0VfQlVDS0VUUzsgaSYjNDM7JiM0MzspXG4gXHRcdFdBUk5fT05fT05DRSghaGxpc3RfZW1wdHkoXHUwMDI2bG9nLVx1MDAzZWluc3RhbmNlX3RhYmxlW2ldKSk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZubF9sb2dfbmV0X29wcyA9IHtcbiBcdC5pbml0XHQ9IG5mbmxfbG9nX25ldF9pbml0LFxuJiM0MztcdC5wcmVfZXhpdCA9IG5mbmxfbG9nX25ldF9wcmVfZXhpdCxcbiBcdC5leGl0XHQ9IG5mbmxfbG9nX25ldF9leGl0LFxuIFx0LmlkXHQ9IFx1MDAyNm5mbmxfbG9nX25ldF9pZCxcbiBcdC5zaXplXHQ9IHNpemVvZihzdHJ1Y3QgbmZubF9sb2dfbmV0KSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfTE9HX1NZU0xPRyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfTkVUTElOS19MT0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdCYjMzQ7LAogICAgJiMzNDtuZm5sX2xvZ19uZXRfcHJlX2V4aXQmIzM0OywKICAgICYjMzQ7bmZubF9sb2dfbmV0X2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duIGxvZ2ljIGZvciBuZl9sb2dfc3lzbG9nIGFuZCBuZm5ldGxpbmtfbG9nIGJ5IG1vdmluZyBjbGVhbnVwIGNvZGUgZnJvbSB0aGUgLmV4aXQgY2FsbGJhY2sgdG8gdGhlIC5wcmVfZXhpdCBjYWxsYmFjayBpbiB0aGVpciBwZXJuZXRfb3BlcmF0aW9ucyBzdHJ1Y3R1cmVzLiBUaGlzIGNoYW5nZXMgdGhlIGV4ZWN1dGlvbiBvcmRlciBkdXJpbmcgbmV0IG5hbWVzcGFjZSBkZXN0cnVjdGlvbiwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBhZmZlY3Qgb2JqZWN0IGxpZmV0aW1lcyBhbmQgcHJldmVudCBvciBpbnRyb2R1Y2UgYnVncyBsaWtlIHVzZS1hZnRlci1mcmVlLiBOZXR3b3JrIG5hbWVzcGFjZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gYXJlIGhlYXZpbHkgZXhlcmNpc2VkIGR1cmluZyBmdXp6aW5nLCBtYWtpbmcgdGhpcyBoaWdobHkgcmVsZXZhbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZmI5ZTg5ZDViZjJiZmNiM2EyNmEzMTVjZWZiMWUxN2JlYzEzNDI0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwOToxMDo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jIGIvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMKaW5kZXggZTM3YjA5YjMyMDNiNy4uNWZmZGUyN2Q0NTBhNyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMKQEAgLTEwMTQsNyAmIzQzOzEwMTQsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfbG9nX3N5c2xvZ19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl9sb2dfc3lzbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKJiM0MztzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldCkKIHsKIAluZl9sb2dfdW5zZXQobmV0LCAmYW1wO25mX2lwX2xvZ2dlcik7CiAJbmZfbG9nX3Vuc2V0KG5ldCwgJmFtcDtuZl9hcnBfbG9nZ2VyKTsKQEAgLTEwMjUsNyAmIzQzOzEwMjUsNyBAQCBzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KQogCiBzdGF0aWMgc3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIG5mX2xvZ19zeXNsb2dfbmV0X29wcyA9IHsKIAkuaW5pdCA9IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQsCi0JLmV4aXQgPSBuZl9sb2dfc3lzbG9nX25ldF9leGl0LAomIzQzOwkucHJlX2V4aXQgPSBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdCwKIH07CiAKIHN0YXRpYyBpbnQgX19pbml0IG5mX2xvZ19zeXNsb2dfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYwppbmRleCA1ZmVlNjFiMzgxM2NiLi42YzdmYTJlZDM0ZjVjIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYwpAQCAtMTE3MCwyMSAmIzQzOzExNzAsMjYgQEAgc3RhdGljIGludCBfX25ldF9pbml0IG5mbmxfbG9nX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCiYjNDM7c3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KQogewotCXN0cnVjdCBuZm5sX2xvZ19uZXQgKmxvZyA9IG5mbmxfbG9nX3Blcm5ldChuZXQpOwotCXVuc2lnbmVkIGludCBpOwotCiAjaWZkZWYgQ09ORklHX1BST0NfRlMKIAlyZW1vdmVfcHJvY19lbnRyeSgmIzM0O25mbmV0bGlua19sb2cmIzM0OywgbmV0LSZndDtuZi5wcm9jX25ldGZpbHRlcik7CiAjZW5kaWYKIAluZl9sb2dfdW5zZXQobmV0LCAmYW1wO25mdWxubF9sb2dnZXIpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mbmxfbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBuZm5sX2xvZ19uZXQgKmxvZyA9IG5mbmxfbG9nX3Blcm5ldChuZXQpOwomIzQzOwl1bnNpZ25lZCBpbnQgaTsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgSU5TVEFOQ0VfQlVDS0VUUzsgaSYjNDM7JiM0MzspCiAJCVdBUk5fT05fT05DRSghaGxpc3RfZW1wdHkoJmFtcDtsb2ctJmd0O2luc3RhbmNlX3RhYmxlW2ldKSk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZubF9sb2dfbmV0X29wcyA9IHsKIAkuaW5pdAk9IG5mbmxfbG9nX25ldF9pbml0LAomIzQzOwkucHJlX2V4aXQgPSBuZm5sX2xvZ19uZXRfcHJlX2V4aXQsCiAJLmV4aXQJPSBuZm5sX2xvZ19uZXRfZXhpdCwKIAkuaWQJPSAmYW1wO25mbmxfbG9nX25ldF9pZCwKIAkuc2l6ZQk9IHNpemVvZihzdHJ1Y3QgbmZubF9sb2dfbmV0KSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaDogTmV0d29yayBOYW1lc3BhY2UgVGVhcmRvd24gYW5kIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBgbmZfbG9nX3N5c2xvZy5jYCBhbmQgYG5mbmV0bGlua19sb2cuY2AuIFRoZSBmaXJzdCB0aGluZyBJIHNlZSBpcyBhIHJlbmFtZSBvZiBgbmZfbG9nX3N5c2xvZ19uZXRfZXhpdGAgdG8gYG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0YCwgd2hpY2ggaXMgdGhlbiBhc3NpZ25lZCB0byB0aGUgYC5wcmVfZXhpdGAgZmllbGQgd2l0aGluIGBuZl9sb2dfc3lzbG9nX25ldF9vcHNgLiAgT3ZlciBpbiBgbmZuZXRsaW5rX2xvZy5jYCwgdGhleSYjMzk7dmUgc3BsaXQgYG5mbmxfbG9nX25ldF9leGl0YCBpbnRvIGBuZm5sX2xvZ19uZXRfcHJlX2V4aXRgIGFuZCBgbmZubF9sb2dfbmV0X2V4aXRgLiBJbXBvcnRhbnRseSwgdGhlIGNhbGxzIHRvIGByZW1vdmVfcHJvY19lbnRyeWAgYW5kIGBuZl9sb2dfdW5zZXRgIGFyZSBub3cgaW4gdGhlICpwcmUqLWV4aXQgZnVuY3Rpb24sIHdpdGggdGhlIGluc3RhbmNlIHRhYmxlIGNoZWNrIHN0YXlpbmcgaW4gdGhlIG9yaWdpbmFsICpleGl0KiBmdW5jdGlvbi4KCkltbWVkaWF0ZWx5LCBJIHJlY29nbml6ZSB0aGlzIGlzIGFib3V0IG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duLiBOZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBpcyBzb21ldGhpbmcgdGhhdCBpcyAqcmVhY2hhYmxlKiBpbiB0aGUgY29kZSwgYW5kIHRoZXJlZm9yZSwgaXQgaXMgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGZ1enplZC4gIFRoZSBmcmVxdWVudCBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2YgbmV0d29yayBuYW1lc3BhY2VzIGluIHRvb2xzIGxpa2Ugc3l6a2FsbGVyIG1ha2UgdGhpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSG93ZXZlciwgdGhlcmUgaXMgYSBzcGVjaWZpYyBjaGVjayBmcm9tIHRoZSBndWlkZWxpbmVzLiAgSXQgc2F5cyB0byBtYXJrIHBhdGNoZXMgd2l0aCB0ZWFyZG93biBjYWxsYmFja3MsIHN1Y2ggYXMgYC5yZW1vdmVgIG9yIGAuc2h1dGRvd25gIGluIGRyaXZlciBjb2RlLCBhcyBub3Qgd29ydGggZnV6emluZy4gSXQgbWVudGlvbnMgY2FzZXMgc3VjaCBhcyBgaWdiX3JlbW92ZWAsIHNwZWNpZmljYWxseS4KCkJ1dCB3YWl0IGEgbWludXRlLCB0aGlzIGlzbiYjMzk7dCBhIGRyaXZlciB1bmJpbmQgc2NlbmFyaW8uIFRoaXMgaXMgYSBuZXR3b3JrIG5hbWVzcGFjZSBleGl0IGNhbGxiYWNrLCB3aGljaCBpcyBkaWZmZXJlbnQuIE5ldHdvcmsgbmFtZXNwYWNlIGV4aXQgaXMgKmZyZXF1ZW50bHkqIGZ1enplZCBiZWNhdXNlLCB5b3Uga25vdywgaXQmIzM5O3MgYSBjb21tb24gb3BlcmF0aW9uLCBhbmQgc3lza2FsbGVyIGRvZXMgaXQgYWxsIHRoZSB0aW1lLiAgU28sIHRoZSBxdWVzdGlvbiBpcywgKmlzKiB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/ICBZZXMsIGFic29sdXRlbHkuIFRoZSBuYXR1cmUgb2YgdGVhcmRvd24gcGF0aHMsIGVzcGVjaWFsbHkgaW4gbmV0d29ya2luZyBjb2RlLCBvcGVucyB0aGUgZG9vciB0byB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFuZCBvdGhlciBtZW1vcnktcmVsYXRlZCBpc3N1ZXMuCgpTbywgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgaW50cm9kdWNlZCBvciBtb2RpZmllZCBieSB0aGlzIHBhdGNoOiBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgLCBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCwgYW5kIGBuZm5sX2xvZ19uZXRfZXhpdGAuIFRoZXNlIGFyZSBub3cgdGhlIGZvY2FsIHBvaW50cy4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBxdWlja2x5IGNoZWNrIHRoZSBjb25maWdzIGZvciBgbmZfbG9nX3N5c2xvZy5jYCBhbmQgYG5mbmV0bGlua19sb2cuY2AgdG8gc2VlIGFueSByZWxldmFudCBidWlsZCBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGZ1enppbmcgZWZmZWN0aXZlbmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9sb2dfc3lzbG9nJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT01Nj1uZl9uYXQteVx0Oj0gbmZfbmF0X2NvcmUubyBuZl9uYXRfcHJvdG8ubyBuZl9uYXRfaGVscGVyLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNTctXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19ORl9MT0dfU1lTTE9HKSAmIzQzOz0gbmZfbG9nX3N5c2xvZy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTU5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYz01NjE9bmZfY29ubnRyYWNrX2xvZ19pbnZhbGlkX3N5c2N0bChjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy01NzItXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmM6NTczOlx0LyogTG9hZCBuZl9sb2dfc3lzbG9nIG9ubHkgaWYgbm8gbG9nZ2VyIGlzIGN1cnJlbnRseSByZWdpc3RlcmVkICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtNTc0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTkZQUk9UT19OVU1QUk9UTzsgaSYjNDM7JiM0MzspIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtNTc3LVx0fVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jOjU3ODpcdHJlcXVlc3RfbW9kdWxlKFwmIzM0OyVzXCYjMzQ7LCBcJiMzNDtuZl9sb2dfc3lzbG9nXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy01NzktXG4tLVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM9OTc2PXN0YXRpYyBzdHJ1Y3QgbmZfbG9nZ2VyIG5mX2JyaWRnZV9sb2dnZXIgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy05ODItXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzo5ODM6c3RhdGljIGludCBfX25ldF9pbml0IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtOTg0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDE2LVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTAxNzpzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwMTgte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwMjUtXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDI2OnN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZfbG9nX3N5c2xvZ19uZXRfb3BzID0ge1xubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTAyNzpcdC5pbml0ID0gbmZfbG9nX3N5c2xvZ19uZXRfaW5pdCxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwMjg6XHQucHJlX2V4aXQgPSBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdCxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwMjktfTtcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwMzAtXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDMxOnN0YXRpYyBpbnQgX19pbml0IG5mX2xvZ19zeXNsb2dfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAzMi17XG4tLVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAzNC1cbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwMzU6XHRyZXQgPSByZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFx1MDAyNm5mX2xvZ19zeXNsb2dfbmV0X29wcyk7XG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDM2LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDY5LVx0cHJfZXJyKFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBsb2dnZXJcXG5cJiMzNDspO1xubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTA3MDpcdHVucmVnaXN0ZXJfcGVybmV0X3N1YnN5cyhcdTAwMjZuZl9sb2dfc3lzbG9nX25ldF9vcHMpO1xubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTA3MS1cdHJldHVybiByZXQ7XG4tLVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTA3My1cbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwNzQ6c3RhdGljIHZvaWQgX19leGl0IG5mX2xvZ19zeXNsb2dfZXhpdCh2b2lkKVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTA3NS17XG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDc2Olx0dW5yZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFx1MDAyNm5mX2xvZ19zeXNsb2dfbmV0X29wcyk7XG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDc3LVx0bmZfbG9nX3VucmVnaXN0ZXIoXHUwMDI2bmZfaXBfbG9nZ2VyKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDgzLVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTA4NDptb2R1bGVfaW5pdChuZl9sb2dfc3lzbG9nX2luaXQpO1xubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTA4NTptb2R1bGVfZXhpdChuZl9sb2dfc3lzbG9nX2V4aXQpO1xubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTA4Ni1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYz0yNDQ9bmZ0X3RhcmdldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzMtXHRcdFx0aWYgKHN0cmNtcCh0YXJnZXQtXHUwMDNlbmFtZSwgXCYjMzQ7TE9HXCYjMzQ7KSA9PSAwKVxubmV0L25ldGZpbHRlci9uZnRfY29tcGF0LmM6Mjc0Olx0XHRcdFx0bW9kbmFtZSA9IFwmIzM0O25mX2xvZ19zeXNsb2dcJiMzNDs7XG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzUtXHRcdFx0ZWxzZSBpZiAoc3RyY21wKHRhcmdldC1cdTAwM2VuYW1lLCBcJiMzNDtORkxPR1wmIzM0OykgPT0gMClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9sb2cuYz03NT1zdGF0aWMgaW50IG5mdF9sb2dfbW9kcHJvYmUoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mX2xvZ190eXBlIHQpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbG9nLmMtNzgtXHRjYXNlIE5GX0xPR19UWVBFX0xPRzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jOjc5Olx0XHRyZXR1cm4gbmZ0X3JlcXVlc3RfbW9kdWxlKG5ldCwgXCYjMzQ7JXNcJiMzNDssIFwmIzM0O25mX2xvZ19zeXNsb2dcJiMzNDspO1xubmV0L25ldGZpbHRlci9uZnRfbG9nLmMtODAtXHRjYXNlIE5GX0xPR19UWVBFX1VMT0c6XG4tLVxubmV0L25ldGZpbHRlci94dF9MT0cuYz00ND1zdGF0aWMgaW50IGxvZ190Z19jaGVjayhjb25zdCBzdHJ1Y3QgeHRfdGdjaGtfcGFyYW0gKnBhcilcbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X0xPRy5jLTYzLVx0aWYgKHJldCAhPSAwIFx1MDAyNlx1MDAyNiAhcGFyLVx1MDAzZW5mdF9jb21wYXQpIHtcbm5ldC9uZXRmaWx0ZXIveHRfTE9HLmM6NjQ6XHRcdHJlcXVlc3RfbW9kdWxlKFwmIzM0OyVzXCYjMzQ7LCBcJiMzNDtuZl9sb2dfc3lzbG9nXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIveHRfTE9HLmMtNjUtXG4tLVxubmV0L25ldGZpbHRlci94dF9MT0cuYz0xMTg9TU9EVUxFX0FMSUFTKFwmIzM0O2lwNnRfTE9HXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIveHRfTE9HLmM6MTE5Ok1PRFVMRV9TT0ZUREVQKFwmIzM0O3ByZTogbmZfbG9nX3N5c2xvZ1wmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci94dF9UUkFDRS5jPTY4PW1vZHVsZV9leGl0KHRyYWNlX3RnX2V4aXQpO1xubmV0L25ldGZpbHRlci94dF9UUkFDRS5jOjY5Ok1PRFVMRV9TT0ZUREVQKFwmIzM0O3ByZTogbmZfbG9nX3N5c2xvZ1wmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQzOAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBuZm5ldGxpbmtfbG9nLmMgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbmZuZXRsaW5rX2xvZy5jYCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGlzIHNwZWNpZmljIHNvdXJjZSBjb2RlIGZpbGUsIGJlY2F1c2UgYmFzZWQgb24gdGhlIHByb2JsZW0gSSYjMzk7bSBpbnZlc3RpZ2F0aW5nLCB0aGlzIGFyZWEgaXMgbGlrZWx5IHRvIGJlIHJlbGV2YW50LiBNeSBleHBlcnRpc2Ugc3VnZ2VzdHMgdGhhdCB0aGUga2VybmVsJiMzOTtzIG5ldGZpbHRlciBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gaXMgbWFuYWdlZCBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBsb2dnaW5nIG9wdGlvbnMgYXJlIHNldCwgaG93IHRoZSBtZXNzYWdlcyBhcmUgZm9ybWF0dGVkLCBhbmQgaG93IHRoZSBsb2dnaW5nIG1lY2hhbmlzbSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yay4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBmdW5jdGlvbiBjYWxscywgYW5kIGFueSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciwgbW9yZSBjcml0aWNhbGx5LCBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBsb2dnaW5nIGJlaGF2aW91ci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZm5ldGxpbmtfbG9nJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTk5Mj1jb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORkxPR1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05OTctXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIE5GTE9HIHRhcmdldCwgd2hpY2ggYWxsb3dzIHRvIExPR1xubmV0L25ldGZpbHRlci9LY29uZmlnOjk5ODpcdCAgbWVzc2FnZXMgdGhyb3VnaCBuZm5ldGxpbmtfbG9nLlxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5OS1cbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTI4PW9iai0kKENPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRSkgJiM0Mzs9IG5mbmV0bGlua19xdWV1ZS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0cpICYjNDM7PSBuZm5ldGxpbmtfbG9nLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMzAtb2JqLSQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX09TRikgJiM0Mzs9IG5mbmV0bGlua19vc2Yub1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTI1LSNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaFx1MDAzZVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MjY6I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuaFx1MDAzZVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMjctI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaFx1MDAzZVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jPTQ3ND1fX2J1aWxkX3BhY2tldF9tZXNzYWdlKHN0cnVjdCBuZm5sX2xvZ19uZXQgKmxvZyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy02ODUtbmxhX3B1dF9mYWlsdXJlOlxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6Njg2Olx0UFJJTlRSKEtFUk5fRVJSIFwmIzM0O25mbmV0bGlua19sb2c6IGVycm9yIGNyZWF0aW5nIGxvZyBubG1zZ1xcblwmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy02ODctXHRyZXR1cm4gLTE7XG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM9ODkzPXN0YXRpYyBzdHJ1Y3QgbmZfbG9nZ2VyIG5mdWxubF9sb2dnZXIgX19yZWFkX21vc3RseSA9IHtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jOjg5NDpcdC5uYW1lXHQ9IFwmIzM0O25mbmV0bGlua19sb2dcJiMzNDssXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy04OTUtXHQudHlwZVx0PSBORl9MT0dfVFlQRV9VTE9HLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jPTExNDU9c3RhdGljIGludCBfX25ldF9pbml0IG5mbmxfbG9nX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMTU5LSNpZmRlZiBDT05GSUdfUFJPQ19GU1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTE2MDpcdHByb2MgPSBwcm9jX2NyZWF0ZV9uZXQoXCYjMzQ7bmZuZXRsaW5rX2xvZ1wmIzM0OywgMDQ0MCwgbmV0LVx1MDAzZW5mLnByb2NfbmV0ZmlsdGVyLFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMTE2MS1cdFx0XHRcdTAwMjZuZnVsX3NlcV9vcHMsIHNpemVvZihzdHJ1Y3QgaXRlcl9zdGF0ZSkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jPTExNzM9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExNzUtI2lmZGVmIENPTkZJR19QUk9DX0ZTXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYzoxMTc2Olx0cmVtb3ZlX3Byb2NfZW50cnkoXCYjMzQ7bmZuZXRsaW5rX2xvZ1wmIzM0OywgbmV0LVx1MDAzZW5mLnByb2NfbmV0ZmlsdGVyKTtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExNzctI2VuZGlmXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM9MTE5MD1zdGF0aWMgc3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIG5mbmxfbG9nX25ldF9vcHMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMTE5Ny1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jOjExOTg6c3RhdGljIGludCBfX2luaXQgbmZuZXRsaW5rX2xvZ19pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMTk5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMjMxLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTIzMjpzdGF0aWMgdm9pZCBfX2V4aXQgbmZuZXRsaW5rX2xvZ19maW5pKHZvaWQpXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMjMzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz0xMjQ4PU1PRFVMRV9BTElBU19ORl9MT0dHRVIoNSwgMSk7IC8qIE5GUFJPVE9fTkVUREVWICovXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMjQ5LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTI1MDptb2R1bGVfaW5pdChuZm5ldGxpbmtfbG9nX2luaXQpO1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTI1MTptb2R1bGVfZXhpdChuZm5ldGxpbmtfbG9nX2ZpbmkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2NvbXBhdC5jPTI0ND1uZnRfdGFyZ2V0X2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2NvbXBhdC5jLTI3NS1cdFx0XHRlbHNlIGlmIChzdHJjbXAodGFyZ2V0LVx1MDAzZW5hbWUsIFwmIzM0O05GTE9HXCYjMzQ7KSA9PSAwKVxubmV0L25ldGZpbHRlci9uZnRfY29tcGF0LmM6Mjc2Olx0XHRcdFx0bW9kbmFtZSA9IFwmIzM0O25mbmV0bGlua19sb2dcJiMzNDs7XG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzctXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbG9nLmM9NzU9c3RhdGljIGludCBuZnRfbG9nX21vZHByb2JlKHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZl9sb2dfdHlwZSB0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jLTgwLVx0Y2FzZSBORl9MT0dfVFlQRV9VTE9HOlxubmV0L25ldGZpbHRlci9uZnRfbG9nLmM6ODE6XHRcdHJldHVybiBuZnRfcmVxdWVzdF9tb2R1bGUobmV0LCBcJiMzNDslc1wmIzM0OywgXCYjMzQ7bmZuZXRsaW5rX2xvZ1wmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL25mdF9sb2cuYy04Mi1cdGNhc2UgTkZfTE9HX1RZUEVfTUFYOlxuLS1cbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYz00Mj1zdGF0aWMgaW50IG5mbG9nX3RnX2NoZWNrKGNvbnN0IHN0cnVjdCB4dF90Z2Noa19wYXJhbSAqcGFyKVxuLS1cbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYy01My1cdGlmIChyZXQgIT0gMCBcdTAwMjZcdTAwMjYgIXBhci1cdTAwM2VuZnRfY29tcGF0KSB7XG5uZXQvbmV0ZmlsdGVyL3h0X05GTE9HLmM6NTQ6XHRcdHJlcXVlc3RfbW9kdWxlKFwmIzM0OyVzXCYjMzQ7LCBcJiMzNDtuZm5ldGxpbmtfbG9nXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYy01NS1cbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X05GTE9HLmM9MTAzPW1vZHVsZV9leGl0KG5mbG9nX3RnX2V4aXQpO1xubmV0L25ldGZpbHRlci94dF9ORkxPRy5jOjEwNDpNT0RVTEVfU09GVERFUChcJiMzNDtwcmU6IG5mbmV0bGlua19sb2dcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIE5ldGZpbHRlciBMb2dnaW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBDT05GSUdfTkZfTE9HX1NZU0xPR2AgYW5kIGBDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HYC4gVGhlc2UgbG9vayBsaWtlIGNvcmUgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBuZXRmaWx0ZXIgbG9nZ2luZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIHNvdXJjZS4gVGhlIG5hdHVyYWwgc3RhcnRpbmcgcG9pbnQgaXMgYWx3YXlzIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUsIHNvIEkmIzM5O2xsIGRpdmUgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBzZWUgaG93IHRob3NlIG9wdGlvbnMgYXJlIGRlZmluZWQsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24uIFRoYXQgZmlsZSB3aWxsIHRlbGwgbWUgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgbmV0ZmlsdGVyIHN1YnN5c3RlbSwgYW5kIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlaGF2ZS4gVGhpcyBpcyB3aGVyZSBJIGNhbiBnZXQgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbWF0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9MT0dfU1lTTE9HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTgyPWNvbmZpZyBORl9DT05OVFJBQ0tcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTg6Y29uZmlnIE5GX0xPR19TWVNMT0dcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05OS1cdHRyaXN0YXRlIFwmIzM0O1N5c2xvZyBwYWNrZXQgbG9nZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBOZXRmaWx0ZXIgTG9nZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgbmV0ZmlsdGVyIGxvZ2dpbmcsIHNwZWNpZmljYWxseSBgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPR2AsIGlzIGRlZmluZWQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG5ldGZpbHRlciBjb25maWd1cmF0aW9uLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgdGhlIEtjb25maWcgZmlsZXMgYXJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZXNlIGJ1aWxkLXRpbWUgb3B0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgYSByZWZlcmVuY2UgdG8gd2hlcmUgaXQgKmlzKiBkZWZpbmVkLiBUaW1lIHRvIGdvIGRpZ2dpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NTQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTYxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjYyOmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0dcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NTQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTmV0IE5hbWVzcGFjZSBUZWFyZG93biBMb2dpYyoqCgpPa2F5LCBteSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBmdW5jdGlvbnM6IGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGAsIGBuZm5sX2xvZ19uZXRfcHJlX2V4aXRgLCBhbmQgYG5mbmxfbG9nX25ldF9leGl0YC4gV2FpdCBhIHNlY29uZOKApiB0aGVzZSBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgIGFuZCBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCBmdW5jdGlvbnMgYXJlICpzdGF0aWMqIGFuZCBhc3NpZ25lZCB0byBhIGBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnNgLiBUaGV5JiMzOTtyZSBjYWxsZWQgZHVyaW5nIGEgbmV0IG5hbWVzcGFjZSBleGl0ISBEZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmc7IGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gbmV0IG5hbWVzcGFjZSB0ZWFyZG93biBhcmUgcHJhY3RpY2FsbHkgYnVnIG1hZ25ldHMsIGVzcGVjaWFsbHkgdGhvc2UgbmFzdHkgdXNlLWFmdGVyLWZyZWUgaXNzdWVzLgoKSG1tLCB0aGlzIHBhdGNoIGlzIHNpbXBseSByZW5hbWluZyBgbmZfbG9nX3N5c2xvZ19uZXRfZXhpdGAgdG8gYG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0YCBhbmQgcmUtYXNzaWduaW5nIGl0IHRvIGAucHJlX2V4aXRgIGluc3RlYWQgb2YgYC5leGl0YC4gQW5kIGluIGBuZm5ldGxpbmtfbG9nLmNgLCB0aGUgZXhpdCBmdW5jdGlvbiBpcyBiZWluZyBzcGxpdCBpbnRvIGBwcmVfZXhpdGAgYW5kIGBleGl0YC4gVGhlIGV4ZWN1dGlvbiBvcmRlciBkdXJpbmcgbmV0IG5hbWVzcGFjZSB0ZWFyZG93biBpcyBjaGFuZ2luZzsgYHByZV9leGl0YCBjb21lcyAqYmVmb3JlKiBgZXhpdGAuIFRoaXMgaXMgYSBjbGFzc2ljIGV4YW1wbGUgb2YgYSBjaGFuZ2UgdGhhdCBjb3VsZCBleHBvc2UgYSBsYXRlbnQgYnVnLCBvciBldmVuIGludHJvZHVjZSBhIGJyYW5kIG5ldyBvbmUuIERlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydCB0byBmdXp6IGl0LgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMsIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSByaWdodCBzZXR1cC4gSSYjMzk7bSBnb2luZyB0byBuZWVkIGBDT05GSUdfTkZfTE9HX1NZU0xPR2AsIGBDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HYCwgYW5kIGBDT05GSUdfTkVUX05TYC4gVGhlIGxhc3Qgb25lIGlzIHVzdWFsbHkgZGVmYXVsdCwgYnV0IGdvb2QgdG8gZG91YmxlLWNoZWNrLiBUaW1lIHRvIHF1aWNrbHkgZGlnIGludG8gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyB3aXRoIGBORl9MT0dfU1lTTE9HYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0xPR19TWVNMT0cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTgyPWNvbmZpZyBORl9DT05OVFJBQ0tcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTg6Y29uZmlnIE5GX0xPR19TWVNMT0dcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05OS1cdHRyaXN0YXRlIFwmIzM0O1N5c2xvZyBwYWNrZXQgbG9nZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzIxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwmIzM5O3MgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHBhcnRpY3VsYXIgZmVhdHVyZSBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUgTmV0ZmlsdGVyIHN1YnN5c3RlbS4gVG8gZG8gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSBkaXJlY3RseSB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlcjogYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIEkga25vdyB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBwcmV0dHkgd2VsbCwgc28gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBgS2NvbmZpZ2AgZmlsZSB0byBob2xkIGFsbCB0aGUgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVzY3JpcHRpb25zIHJlbGF0ZWQgdG8gTmV0ZmlsdGVyJiMzOTtzIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIHBpbnBvaW50IGFyb3VuZCBsaW5lIDk4IOKAkyB1c3VhbGx5LCB0aGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSB3ZWxsLXN0cnVjdHVyZWQsIHNvIEkmIzM5O20gaG9waW5nIHRoYXQgcGFydGljdWxhciByZWdpb24gd2lsbCBnaXZlIG1lIHRoZSBpbnNpZ2h0cyBJJiMzOTttIGxvb2tpbmcgZm9yIHJlZ2FyZGluZyB0aGlzIHNwZWNpZmljIE5ldGZpbHRlciBhc3BlY3QgSSYjMzk7bSB3b3JraW5nIG9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTA6XHRcdCAgaW50byBjb25uZWN0aW9ucy5cbiAgOTE6XHRcbiAgOTI6XHRcdCAgVGhpcyBpcyByZXF1aXJlZCB0byBkbyBNYXNxdWVyYWRpbmcgb3Igb3RoZXIga2luZHMgb2YgTmV0d29ya1xuICA5MzpcdFx0ICBBZGRyZXNzIFRyYW5zbGF0aW9uLiAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBlbmhhbmNlIHBhY2tldFxuICA5NDpcdFx0ICBmaWx0ZXJpbmcgKHNlZSBgQ29ubmVjdGlvbiBzdGF0ZSBtYXRjaCBzdXBwb3J0JiMzOTsgYmVsb3cpLlxuICA5NTpcdFxuICA5NjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgOTc6XHRcbiAgOTg6XHRjb25maWcgTkZfTE9HX1NZU0xPR1xuICA5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7U3lzbG9nIHBhY2tldCBsb2dnaW5nXCYjMzQ7XG4gMTAwOlx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAxMDE6XHRcdGhlbHBcbiAxMDI6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlIHN1cHBvcnQgZm9yIHBhY2tldCBsb2dnaW5nIHZpYSBzeXNsb2cuXG4gMTAzOlx0XHQgIEl0IHN1cHBvcnRzIElQdjQsIElQVjYsIEFSUCBhbmQgY29tbW9uIHRyYW5zcG9ydCBwcm90b2NvbHMgc3VjaFxuIDEwNDpcdFx0ICBhcyBUQ1AgYW5kIFVEUC5cbiAxMDU6XHRcdCAgVGhpcyBpcyBhIHNpbXBsZXIgYnV0IGxlc3MgZmxleGlibGUgbG9nZ2luZyBtZXRob2QgY29tcGFyZWQgdG9cbiAxMDY6XHRcdCAgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPRy5cbiAxMDc6XHRcdCAgSWYgYm90aCBhcmUgZW5hYmxlZCB0aGUgYmFja2VuZCB0byB1c2UgY2FuIGJlIGNvbmZpZ3VyZWQgYXQgcnVuLXRpbWVcbiAxMDg6XHRcdCAgYnkgbWVhbnMgb2YgcGVyLWFkZHJlc3MtZmFtaWx5IHN5c2N0bCB0dW5hYmxlcy5cbiAxMDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI3NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBhcm91bmQgbGluZSA2Mi4gSSYjMzk7bSBndWVzc2luZyB0aGF0IHNwZWNpZmljIHNlY3Rpb24gd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIFsqKmluc2VydCB5b3VyIGRvbWFpbiYjMzk7cyBzcGVjaWZpYyB0b3BpYyB0aGF0IHJlbGF0ZXMgdG8gdGhlIEtjb25maWcgZmlsZSBoZXJlLCBlLmcuLCBob3cgYSBwYXJ0aWN1bGFyIE5ldGZpbHRlciBtb2R1bGUgaXMgY29uZmlndXJlZCwgYSBzcGVjaWZpYyBvcHRpb24mIzM5O3MgZGVwZW5kZW5jaWVzLCB0aGUgaW50ZXJwbGF5IG9mIGRpZmZlcmVudCBmaWx0ZXJpbmcgbWVjaGFuaXNtcywgb3IgaG93IHRoaXMgS2NvbmZpZyBmaWxlIGludGVyZmFjZXMgd2l0aCBvdGhlciByZWxhdGVkIG9uZXMqKl0uIEkgbmVlZCB0byBnZXQgYSBncmFudWxhciB2aWV3IG9mIFsqKnNwZWNpZmljIGRldGFpbHMgeW91IGV4cGVjdCB0byBmaW5kLCBlLmcuLCB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcywgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbnkgcmVsZXZhbnQgZGVmYXVsdHMsIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0aW5nIG9wdGlvbnMuKipdLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgWyoqd2hhdCB5b3Ugd2FudCB0byBnbGVhbiBmcm9tIHRoaXMgbGluZSBvZiBjb2RlIGUuZy4sIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZmxhZ3MuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGludGVycmVsYXRlIGFuZCBkZXBlbmQgb24gZWFjaCBvdGhlci4qKl0gRXNzZW50aWFsbHksIEkmIzM5O20gZXhwZWN0aW5nIHRvIGVpdGhlcjogWyoqZGVzY3JpYmUgYSBsaWtlbHkgc2NlbmFyaW8geW91IGFyZSBpbnZlc3RpZ2F0aW5nLioqXS4gVGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscywgYW5kIGNyb3NzLXJlZmVyZW5jZSB3aXRoIHJlbGF0ZWQgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBpZiBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFx0aGVscFxuICA1MTpcdFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XG4gIDUyOlx0XHQgIGZvciBleHRlbmRlZCBhY2NvdW50aW5nIHZpYSBORk5FVExJTksuXG4gIDUzOlx0XG4gIDU0Olx0Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXG4gIDU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcJiMzNDtcbiAgNTY6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gIDU3Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiAgNTg6XHRcdGhlbHBcbiAgNTk6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxuICA2MDpcdFx0ICBmb3IgcXVldWVpbmcgcGFja2V0cyB2aWEgTkZORVRMSU5LLlxuICA2MTpcdFxuICA2MjpcdGNvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0dcbiAgNjM6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4gIDY0Olx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAgNjU6XHRcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuICA2NjpcdFx0aGVscFxuICA2NzpcdFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XG4gIDY4Olx0XHQgIGZvciBsb2dnaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cbiAgNjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg1OAoJCQkJCQkJb3V0cHV0OiAxODUKCQkJCQkJCXRob3VnaHRzOiAxMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQW5hbHlzaXM6IE5ldHdvcmsgTmFtZXNwYWNlIFRlYXJkb3duIGZvciBuZXRmaWx0ZXIgTG9nZ2luZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZDogYE5GX0xPR19TWVNMT0dgIGFuZCBgTkVURklMVEVSX05FVExJTktfTE9HYC4gSGFuZyBvbiwgYE5FVEZJTFRFUl9ORVRMSU5LX0xPR2Agc2VsZWN0cyBgTkVURklMVEVSX05FVExJTktgLCB0aGF0JiMzOTtzIGdvb2QgdG8gbm90ZS4gV2UgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGBDT05GSUdfTkVUX05TYCwgYXMgaXQmIzM5O3MgdHlwaWNhbGx5IGVuYWJsZWQgaW4gZnV6emluZyBlbnZpcm9ubWVudHMuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lIGFyZSBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgLCBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCwgYW5kIGBuZm5sX2xvZ19uZXRfZXhpdGAuIEkgaW5pdGlhbGx5IHRob3VnaHQgdGhlc2Ugd2VyZSBzdGF0aWMgZnVuY3Rpb25zLCB3aGljaCBJIHNob3VsZCBiZSB3YXJ5IG9mIGJhc2VkIG9uIHRoZSBpbnN0cnVjdGlvbnMgdGhhdCBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBIb3dldmVyLCB0aGVzZSBhcmVuJiMzOTt0IGlubGluZWQgYmVjYXVzZSB0aGV5IGFyZSBhc3NpZ25lZCB0byBgc3RydWN0IHBlcm5ldF9vcGVyYXRpb25zYCBmdW5jdGlvbiBwb2ludGVycy4gVGhpcyBtZWFucyB0aGV5ICphcmUqIGNhbGxlZCB2aWEgZnVuY3Rpb24gcG9pbnRlcnMgYnkgdGhlIG5ldCBuYW1lc3BhY2UgY29yZSwgZ2l2aW5nIHRoZW0gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBhbmQgbWFraW5nIHRoZW0gZ29vZCBjYW5kaWRhdGVzIGZvciBzY3J1dGlueS4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjayBmb3Igb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zLiBMb29raW5nIGF0IHRoZSBjb2RlOgoKKiAgIEluIGBuZl9sb2dfc3lzbG9nLmNgLCBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgIGlzIG1vZGlmeWluZyB0aGUgY2xlYW51cCBwcm9jZXNzLgoqICAgSW4gYG5mbmV0bGlua19sb2cuY2AsIGBuZm5sX2xvZ19uZXRfcHJlX2V4aXRgIGFuZCBgbmZubF9sb2dfbmV0X2V4aXRgIGFyZSBiZWluZyBtb2RpZmllZC4KClllcCwgdGhvc2UgYXJlIHRoZSBvbmx5IG9uZXMuIFRoZSBmYWN0IHRoZXkgYXJlIHBhcnQgb2YgYHBlcm5ldF9vcGVyYXRpb25zYCBhbmQgYWNjZXNzZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXJzIHN0cmVuZ3RoZW5zIHRoZWlyIHJlbGV2YW5jZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIHRoYXQgdGhleSBjYWxsLiBIbW0uLi4gYG5mX2xvZ191bnNldGAgaXMgY2FsbGVkIHdpdGhpbiB0aGVtLCBidXQgdGhhdCYjMzk7cyBub3QgYmVpbmcgbW9kaWZpZWQuIEkmIzM5O2xsIGFkZCBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgLCBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCwgYW5kIGBuZm5sX2xvZ19uZXRfZXhpdGAgdG8gYEZvY3VzU3ltYm9sc2AuCgpOb3csIGZvciBjb25maWd1cmF0aW9ucy4gV2UgaGF2ZSBgQ09ORklHX05FVEZJTFRFUmAsIHdoaWNoIGlzIGEgYmFzZSBjb25maWcsIGFuZCB0aGVuIGBORl9MT0dfU1lTTE9HYCBhbmQgYE5FVEZJTFRFUl9ORVRMSU5LX0xPR2AuIEFueSBkZXBlbmRlbmNpZXM/IEFoLCBgTkVURklMVEVSX05FVExJTktfTE9HYCBkZXBlbmRzIG9uICh3ZWxsLCBzZWxlY3RzKSBgTkVURklMVEVSX05FVExJTktgLiBgTkZfTE9HX1NZU0xPR2AgaGFzIG5vIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGFzaWRlIGZyb20gYE5FVEZJTFRFUl9BRFZBTkNFRD1uYCBhcyBkZWZhdWx0LiBHb29kLCBzbyBgTkZfTE9HX1NZU0xPR2AgYW5kIGBORVRGSUxURVJfTkVUTElOS19MT0dgIGlzIHdoYXQgSSYjMzk7bGwgaW5jbHVkZS4gU2hvdWxkIEkgZW5hYmxlIGBDT05GSUdfTkVUX05TYD8gWWVzLCBJJiMzOTtsbCBpbmNsdWRlIGl0IGJlY2F1c2UgaXQmIzM5O3MgdXN1YWxseSBvbiBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4KCkxldCYjMzk7cyByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4gVGhlIGNyaXRlcmlvbiBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgYmFzZWQgb24gZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBob3QtdW5wbHVnIG9yIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4gVGhpcyBpcyAqbm90KiB0aGF0IHNpdHVhdGlvbi4gVGhpcyBpcyBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93bi4gTmV0d29yayBuYW1lc3BhY2VzIGFyZSByZWd1bGFybHkgY3JlYXRlZCBhbmQgZGVzdHJveWVkIGR1cmluZyBmdXp6aW5nLCBhbmQgcHJvYmxlbXMgaW4gdGhlaXIgdGVhcmRvd24gYXJlIHByaW1lIGJ1ZyBzb3VyY2VzLiBTbywgYFdvcnRoRnV6emluZz10cnVlYC4KCkhlcmUmIzM5O3MgbXkgcmVhc29uaW5nOiBUaGUgcGF0Y2ggaXMgYWx0ZXJpbmcgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duIGZvciBgbmZfbG9nX3N5c2xvZ2AgYW5kIGBuZm5ldGxpbmtfbG9nYCBieSByZW9yZ2FuaXppbmcgY2xlYW51cCBjb2RlLiBUaGF0IGlzLCBtb3ZpbmcgY29kZSBmcm9tIGAuZXhpdGAgdG8gYC5wcmVfZXhpdGAuIFRoaXMgY2hhbmdlcyB0aGUgKmV4ZWN1dGlvbiBvcmRlciogZHVyaW5nIG5ldCBuYW1lc3BhY2UgZGVzdHJ1Y3Rpb24uIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGNhbiB0cmlnZ2VyIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIE5ldHdvcmsgbmFtZXNwYWNlcyBhcmUgY29tbW9ubHkgZnV6emVkLCBtYWtpbmcgdGhpcyBjaGFuZ2UgdmVyeSBpbXBvcnRhbnQuCgoqKkhlcmUmIzM5O3MgdGhlIGRhdGEgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzOioqCgoqICAgKipgRm9jdXNTeW1ib2xzYCoqOgogICAgKiAgIGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGAKICAgICogICBgbmZubF9sb2dfbmV0X3ByZV9leGl0YAogICAgKiAgIGBuZm5sX2xvZ19uZXRfZXhpdGAKKiAgICoqYEVuYWJsZUNvbmZpZ3NgKio6CiAgICAqICAgYE5GX0xPR19TWVNMT0dgCiAgICAqICAgYE5FVEZJTFRFUl9ORVRMSU5LX0xPR2AKICAgIApOb3csIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9MT0dfU1lTTE9HJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9ORVRMSU5LX0xPRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0JiMzNDssCiAgICAmIzM0O25mbmxfbG9nX25ldF9wcmVfZXhpdCYjMzQ7LAogICAgJiMzNDtuZm5sX2xvZ19uZXRfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gbG9naWMgZm9yIG5mX2xvZ19zeXNsb2cgYW5kIG5mbmV0bGlua19sb2cgYnkgbW92aW5nIGNsZWFudXAgY29kZSBmcm9tIHRoZSAuZXhpdCBjYWxsYmFjayB0byB0aGUgLnByZV9leGl0IGNhbGxiYWNrIGluIHRoZWlyIHBlcm5ldF9vcGVyYXRpb25zIHN0cnVjdHVyZXMuIFRoaXMgY2hhbmdlcyB0aGUgZXhlY3V0aW9uIG9yZGVyIGR1cmluZyBuZXQgbmFtZXNwYWNlIGRlc3RydWN0aW9uLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGFmZmVjdCBvYmplY3QgbGlmZXRpbWVzIGFuZCBwcmV2ZW50IG9yIGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUuIE5ldHdvcmsgbmFtZXNwYWNlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBhcmUgaGVhdmlseSBleGVyY2lzZWQgZHVyaW5nIGZ1enppbmcsIG1ha2luZyB0aGlzIGhpZ2hseSByZWxldmFudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfTE9HX1NZU0xPRyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfTkVUTElOS19MT0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdCYjMzQ7LAogICAgJiMzNDtuZm5sX2xvZ19uZXRfcHJlX2V4aXQmIzM0OywKICAgICYjMzQ7bmZubF9sb2dfbmV0X2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duIGxvZ2ljIGZvciBuZl9sb2dfc3lzbG9nIGFuZCBuZm5ldGxpbmtfbG9nIGJ5IG1vdmluZyBjbGVhbnVwIGNvZGUgZnJvbSB0aGUgLmV4aXQgY2FsbGJhY2sgdG8gdGhlIC5wcmVfZXhpdCBjYWxsYmFjayBpbiB0aGVpciBwZXJuZXRfb3BlcmF0aW9ucyBzdHJ1Y3R1cmVzLiBUaGlzIGNoYW5nZXMgdGhlIGV4ZWN1dGlvbiBvcmRlciBkdXJpbmcgbmV0IG5hbWVzcGFjZSBkZXN0cnVjdGlvbiwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBhZmZlY3Qgb2JqZWN0IGxpZmV0aW1lcyBhbmQgcHJldmVudCBvciBpbnRyb2R1Y2UgYnVncyBsaWtlIHVzZS1hZnRlci1mcmVlLiBOZXR3b3JrIG5hbWVzcGFjZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gYXJlIGhlYXZpbHkgZXhlcmNpc2VkIGR1cmluZyBmdXp6aW5nLCBtYWtpbmcgdGhpcyBoaWdobHkgcmVsZXZhbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMDo0Mi44NDczMDA5NDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODkxNjYyNjAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9MT0dfU1lTTE9HXCIsXG4gICAgXCJORVRGSUxURVJfTkVUTElOS19MT0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdFwiLFxuICAgIFwibmZubF9sb2dfbmV0X3ByZV9leGl0XCIsXG4gICAgXCJuZm5sX2xvZ19uZXRfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBsb2dpYyBmb3IgbmZfbG9nX3N5c2xvZyBhbmQgbmZuZXRsaW5rX2xvZyBieSBtb3ZpbmcgY2xlYW51cCBjb2RlIGZyb20gdGhlIC5leGl0IGNhbGxiYWNrIHRvIHRoZSAucHJlX2V4aXQgY2FsbGJhY2sgaW4gdGhlaXIgcGVybmV0X29wZXJhdGlvbnMgc3RydWN0dXJlcy4gVGhpcyBjaGFuZ2VzIHRoZSBleGVjdXRpb24gb3JkZXIgZHVyaW5nIG5ldCBuYW1lc3BhY2UgZGVzdHJ1Y3Rpb24sIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYWZmZWN0IG9iamVjdCBsaWZldGltZXMgYW5kIHByZXZlbnQgb3IgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZS4gTmV0d29yayBuYW1lc3BhY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIGFyZSBoZWF2aWx5IGV4ZXJjaXNlZCBkdXJpbmcgZnV6emluZywgbWFraW5nIHRoaXMgaGlnaGx5IHJlbGV2YW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMDo0Mi44NDczMDcxMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNjQwNDM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVmYjllODlkNWJmMmJmY2IzYTI2YTMxNWNlZmIxZTE3YmVjMTM0MjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwOToxMDo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jXFxuaW5kZXggZTM3YjA5YjMyMDNiNy4uNWZmZGUyN2Q0NTBhNyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jXFxuQEAgLTEwMTQsNyArMTAxNCw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBuZl9sb2dfc3lzbG9nX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl9sb2dfc3lzbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4rc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxuIHtcXG4gXFx0bmZfbG9nX3Vuc2V0KG5ldCwgXFx1MDAyNm5mX2lwX2xvZ2dlcik7XFxuIFxcdG5mX2xvZ191bnNldChuZXQsIFxcdTAwMjZuZl9hcnBfbG9nZ2VyKTtcXG5AQCAtMTAyNSw3ICsxMDI1LDcgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl9sb2dfc3lzbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZfbG9nX3N5c2xvZ19uZXRfb3BzID0ge1xcbiBcXHQuaW5pdCA9IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQsXFxuLVxcdC5leGl0ID0gbmZfbG9nX3N5c2xvZ19uZXRfZXhpdCxcXG4rXFx0LnByZV9leGl0ID0gbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXQsXFxuIH07XFxuIFxcbiBzdGF0aWMgaW50IF9faW5pdCBuZl9sb2dfc3lzbG9nX2luaXQodm9pZClcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuY1xcbmluZGV4IDVmZWU2MWIzODEzY2IuLjZjN2ZhMmVkMzRmNWMgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuY1xcbkBAIC0xMTcwLDIxICsxMTcwLDI2IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBuZm5sX2xvZ19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mbmxfbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4rc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbiB7XFxuLVxcdHN0cnVjdCBuZm5sX2xvZ19uZXQgKmxvZyA9IG5mbmxfbG9nX3Blcm5ldChuZXQpO1xcbi1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tXFxuICNpZmRlZiBDT05GSUdfUFJPQ19GU1xcbiBcXHRyZW1vdmVfcHJvY19lbnRyeShcXFwibmZuZXRsaW5rX2xvZ1xcXCIsIG5ldC1cXHUwMDNlbmYucHJvY19uZXRmaWx0ZXIpO1xcbiAjZW5kaWZcXG4gXFx0bmZfbG9nX3Vuc2V0KG5ldCwgXFx1MDAyNm5mdWxubF9sb2dnZXIpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mbmxfbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4re1xcbitcXHRzdHJ1Y3QgbmZubF9sb2dfbmV0ICpsb2cgPSBuZm5sX2xvZ19wZXJuZXQobmV0KTtcXG4rXFx0dW5zaWduZWQgaW50IGk7XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSU5TVEFOQ0VfQlVDS0VUUzsgaSsrKVxcbiBcXHRcXHRXQVJOX09OX09OQ0UoIWhsaXN0X2VtcHR5KFxcdTAwMjZsb2ctXFx1MDAzZWluc3RhbmNlX3RhYmxlW2ldKSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZubF9sb2dfbmV0X29wcyA9IHtcXG4gXFx0LmluaXRcXHQ9IG5mbmxfbG9nX25ldF9pbml0LFxcbitcXHQucHJlX2V4aXQgPSBuZm5sX2xvZ19uZXRfcHJlX2V4aXQsXFxuIFxcdC5leGl0XFx0PSBuZm5sX2xvZ19uZXRfZXhpdCxcXG4gXFx0LmlkXFx0PSBcXHUwMDI2bmZubF9sb2dfbmV0X2lkLFxcbiBcXHQuc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBuZm5sX2xvZ19uZXQpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMDo0My4zNjQ1NTA0NTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0ODM5OTM2MzgyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9MT0dfU1lTTE9HXCIsXG4gICAgXCJORVRGSUxURVJfTkVUTElOS19MT0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdFwiLFxuICAgIFwibmZubF9sb2dfbmV0X3ByZV9leGl0XCIsXG4gICAgXCJuZm5sX2xvZ19uZXRfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBsb2dpYyBmb3IgbmZfbG9nX3N5c2xvZyBhbmQgbmZuZXRsaW5rX2xvZyBieSBtb3ZpbmcgY2xlYW51cCBjb2RlIGZyb20gdGhlIC5leGl0IGNhbGxiYWNrIHRvIHRoZSAucHJlX2V4aXQgY2FsbGJhY2sgaW4gdGhlaXIgcGVybmV0X29wZXJhdGlvbnMgc3RydWN0dXJlcy4gVGhpcyBjaGFuZ2VzIHRoZSBleGVjdXRpb24gb3JkZXIgZHVyaW5nIG5ldCBuYW1lc3BhY2UgZGVzdHJ1Y3Rpb24sIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYWZmZWN0IG9iamVjdCBsaWZldGltZXMgYW5kIHByZXZlbnQgb3IgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZS4gTmV0d29yayBuYW1lc3BhY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIGFyZSBoZWF2aWx5IGV4ZXJjaXNlZCBkdXJpbmcgZnV6emluZywgbWFraW5nIHRoaXMgaGlnaGx5IHJlbGV2YW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZmI5ZTg5ZDViZjJiZmNiM2EyNmEzMTVjZWZiMWUxN2JlYzEzNDI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwOToxMDo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jIGIvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmNcbmluZGV4IGUzN2IwOWIzMjAzYjcuLjVmZmRlMjdkNDUwYTcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmNcbkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfbG9nX3N5c2xvZ19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuIHtcbiBcdG5mX2xvZ191bnNldChuZXQsIFx1MDAyNm5mX2lwX2xvZ2dlcik7XG4gXHRuZl9sb2dfdW5zZXQobmV0LCBcdTAwMjZuZl9hcnBfbG9nZ2VyKTtcbkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZfbG9nX3N5c2xvZ19uZXRfb3BzID0ge1xuIFx0LmluaXQgPSBuZl9sb2dfc3lzbG9nX25ldF9pbml0LFxuLVx0LmV4aXQgPSBuZl9sb2dfc3lzbG9nX25ldF9leGl0LFxuK1x0LnByZV9leGl0ID0gbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXQsXG4gfTtcbiBcbiBzdGF0aWMgaW50IF9faW5pdCBuZl9sb2dfc3lzbG9nX2luaXQodm9pZClcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jXG5pbmRleCA1ZmVlNjFiMzgxM2NiLi42YzdmYTJlZDM0ZjVjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jXG5AQCAtMTE3MCwyMSArMTE3MCwyNiBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZubF9sb2dfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZubF9sb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZubF9sb2dfbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcbiB7XG4tXHRzdHJ1Y3QgbmZubF9sb2dfbmV0ICpsb2cgPSBuZm5sX2xvZ19wZXJuZXQobmV0KTtcbi1cdHVuc2lnbmVkIGludCBpO1xuLVxuICNpZmRlZiBDT05GSUdfUFJPQ19GU1xuIFx0cmVtb3ZlX3Byb2NfZW50cnkoXCJuZm5ldGxpbmtfbG9nXCIsIG5ldC1cdTAwM2VuZi5wcm9jX25ldGZpbHRlcik7XG4gI2VuZGlmXG4gXHRuZl9sb2dfdW5zZXQobmV0LCBcdTAwMjZuZnVsbmxfbG9nZ2VyKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG4re1xuK1x0c3RydWN0IG5mbmxfbG9nX25ldCAqbG9nID0gbmZubF9sb2dfcGVybmV0KG5ldCk7XG4rXHR1bnNpZ25lZCBpbnQgaTtcbitcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIElOU1RBTkNFX0JVQ0tFVFM7IGkrKylcbiBcdFx0V0FSTl9PTl9PTkNFKCFobGlzdF9lbXB0eShcdTAwMjZsb2ctXHUwMDNlaW5zdGFuY2VfdGFibGVbaV0pKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBuZm5sX2xvZ19uZXRfb3BzID0ge1xuIFx0LmluaXRcdD0gbmZubF9sb2dfbmV0X2luaXQsXG4rXHQucHJlX2V4aXQgPSBuZm5sX2xvZ19uZXRfcHJlX2V4aXQsXG4gXHQuZXhpdFx0PSBuZm5sX2xvZ19uZXRfZXhpdCxcbiBcdC5pZFx0PSBcdTAwMjZuZm5sX2xvZ19uZXRfaWQsXG4gXHQuc2l6ZVx0PSBzaXplb2Yoc3RydWN0IG5mbmxfbG9nX25ldCksXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMDo0My4zNjQ1NTE3MTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTM3OTEwMDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoOiBOZXR3b3JrIE5hbWVzcGFjZSBUZWFyZG93biBhbmQgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIGBuZl9sb2dfc3lzbG9nLmNgIGFuZCBgbmZuZXRsaW5rX2xvZy5jYC4gVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIGEgcmVuYW1lIG9mIGBuZl9sb2dfc3lzbG9nX25ldF9leGl0YCB0byBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgLCB3aGljaCBpcyB0aGVuIGFzc2lnbmVkIHRvIHRoZSBgLnByZV9leGl0YCBmaWVsZCB3aXRoaW4gYG5mX2xvZ19zeXNsb2dfbmV0X29wc2AuICBPdmVyIGluIGBuZm5ldGxpbmtfbG9nLmNgLCB0aGV5J3ZlIHNwbGl0IGBuZm5sX2xvZ19uZXRfZXhpdGAgaW50byBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCBhbmQgYG5mbmxfbG9nX25ldF9leGl0YC4gSW1wb3J0YW50bHksIHRoZSBjYWxscyB0byBgcmVtb3ZlX3Byb2NfZW50cnlgIGFuZCBgbmZfbG9nX3Vuc2V0YCBhcmUgbm93IGluIHRoZSAqcHJlKi1leGl0IGZ1bmN0aW9uLCB3aXRoIHRoZSBpbnN0YW5jZSB0YWJsZSBjaGVjayBzdGF5aW5nIGluIHRoZSBvcmlnaW5hbCAqZXhpdCogZnVuY3Rpb24uXG5cbkltbWVkaWF0ZWx5LCBJIHJlY29nbml6ZSB0aGlzIGlzIGFib3V0IG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duLiBOZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBpcyBzb21ldGhpbmcgdGhhdCBpcyAqcmVhY2hhYmxlKiBpbiB0aGUgY29kZSwgYW5kIHRoZXJlZm9yZSwgaXQgaXMgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGZ1enplZC4gIFRoZSBmcmVxdWVudCBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2YgbmV0d29yayBuYW1lc3BhY2VzIGluIHRvb2xzIGxpa2Ugc3l6a2FsbGVyIG1ha2UgdGhpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSG93ZXZlciwgdGhlcmUgaXMgYSBzcGVjaWZpYyBjaGVjayBmcm9tIHRoZSBndWlkZWxpbmVzLiAgSXQgc2F5cyB0byBtYXJrIHBhdGNoZXMgd2l0aCB0ZWFyZG93biBjYWxsYmFja3MsIHN1Y2ggYXMgYC5yZW1vdmVgIG9yIGAuc2h1dGRvd25gIGluIGRyaXZlciBjb2RlLCBhcyBub3Qgd29ydGggZnV6emluZy4gSXQgbWVudGlvbnMgY2FzZXMgc3VjaCBhcyBgaWdiX3JlbW92ZWAsIHNwZWNpZmljYWxseS5cblxuQnV0IHdhaXQgYSBtaW51dGUsIHRoaXMgaXNuJ3QgYSBkcml2ZXIgdW5iaW5kIHNjZW5hcmlvLiBUaGlzIGlzIGEgbmV0d29yayBuYW1lc3BhY2UgZXhpdCBjYWxsYmFjaywgd2hpY2ggaXMgZGlmZmVyZW50LiBOZXR3b3JrIG5hbWVzcGFjZSBleGl0IGlzICpmcmVxdWVudGx5KiBmdXp6ZWQgYmVjYXVzZSwgeW91IGtub3csIGl0J3MgYSBjb21tb24gb3BlcmF0aW9uLCBhbmQgc3lza2FsbGVyIGRvZXMgaXQgYWxsIHRoZSB0aW1lLiAgU28sIHRoZSBxdWVzdGlvbiBpcywgKmlzKiB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/ICBZZXMsIGFic29sdXRlbHkuIFRoZSBuYXR1cmUgb2YgdGVhcmRvd24gcGF0aHMsIGVzcGVjaWFsbHkgaW4gbmV0d29ya2luZyBjb2RlLCBvcGVucyB0aGUgZG9vciB0byB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFuZCBvdGhlciBtZW1vcnktcmVsYXRlZCBpc3N1ZXMuXG5cblNvLCBsZXQncyB6b29tIGluIG9uIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGludHJvZHVjZWQgb3IgbW9kaWZpZWQgYnkgdGhpcyBwYXRjaDogYG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0YCwgYG5mbmxfbG9nX25ldF9wcmVfZXhpdGAsIGFuZCBgbmZubF9sb2dfbmV0X2V4aXRgLiBUaGVzZSBhcmUgbm93IHRoZSBmb2NhbCBwb2ludHMuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gcXVpY2tseSBjaGVjayB0aGUgY29uZmlncyBmb3IgYG5mX2xvZ19zeXNsb2cuY2AgYW5kIGBuZm5ldGxpbmtfbG9nLmNgIHRvIHNlZSBhbnkgcmVsZXZhbnQgYnVpbGQgb3B0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBmdXp6aW5nIGVmZmVjdGl2ZW5lc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MTcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMDo1Mi41MDI0NzAzMjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxMDM4NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfbG9nX3N5c2xvZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTU2PW5mX25hdC15XFx0Oj0gbmZfbmF0X2NvcmUubyBuZl9uYXRfcHJvdG8ubyBuZl9uYXRfaGVscGVyLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTU3LVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX05GX0xPR19TWVNMT0cpICs9IG5mX2xvZ19zeXNsb2cub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNTktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmM9NTYxPW5mX2Nvbm50cmFja19sb2dfaW52YWxpZF9zeXNjdGwoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy01NzItXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jOjU3MzpcXHQvKiBMb2FkIG5mX2xvZ19zeXNsb2cgb25seSBpZiBubyBsb2dnZXIgaXMgY3VycmVudGx5IHJlZ2lzdGVyZWQgKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtNTc0LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBORlBST1RPX05VTVBST1RPOyBpKyspIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy01NzctXFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYzo1Nzg6XFx0cmVxdWVzdF9tb2R1bGUoXFxcIiVzXFxcIiwgXFxcIm5mX2xvZ19zeXNsb2dcXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtNTc5LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM9OTc2PXN0YXRpYyBzdHJ1Y3QgbmZfbG9nZ2VyIG5mX2JyaWRnZV9sb2dnZXIgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTk4Mi1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzo5ODM6c3RhdGljIGludCBfX25ldF9pbml0IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTk4NC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDE2LVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwMTc6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAxOC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDI1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwMjY6c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBuZl9sb2dfc3lzbG9nX25ldF9vcHMgPSB7XFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTAyNzpcXHQuaW5pdCA9IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQsXFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTAyODpcXHQucHJlX2V4aXQgPSBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDI5LX07XFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAzMC1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDMxOnN0YXRpYyBpbnQgX19pbml0IG5mX2xvZ19zeXNsb2dfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwMzIte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAzNC1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDM1OlxcdHJldCA9IHJlZ2lzdGVyX3Blcm5ldF9zdWJzeXMoXFx1MDAyNm5mX2xvZ19zeXNsb2dfbmV0X29wcyk7XFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAzNi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwNjktXFx0cHJfZXJyKFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgbG9nZ2VyXFxcXG5cXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDcwOlxcdHVucmVnaXN0ZXJfcGVybmV0X3N1YnN5cyhcXHUwMDI2bmZfbG9nX3N5c2xvZ19uZXRfb3BzKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDcxLVxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDczLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwNzQ6c3RhdGljIHZvaWQgX19leGl0IG5mX2xvZ19zeXNsb2dfZXhpdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwNzUte1xcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwNzY6XFx0dW5yZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFxcdTAwMjZuZl9sb2dfc3lzbG9nX25ldF9vcHMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwNzctXFx0bmZfbG9nX3VucmVnaXN0ZXIoXFx1MDAyNm5mX2lwX2xvZ2dlcik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDgzLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwODQ6bW9kdWxlX2luaXQobmZfbG9nX3N5c2xvZ19pbml0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDg1Om1vZHVsZV9leGl0KG5mX2xvZ19zeXNsb2dfZXhpdCk7XFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTA4Ni1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2NvbXBhdC5jPTI0ND1uZnRfdGFyZ2V0X2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY29tcGF0LmMtMjczLVxcdFxcdFxcdGlmIChzdHJjbXAodGFyZ2V0LVxcdTAwM2VuYW1lLCBcXFwiTE9HXFxcIikgPT0gMClcXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYzoyNzQ6XFx0XFx0XFx0XFx0bW9kbmFtZSA9IFxcXCJuZl9sb2dfc3lzbG9nXFxcIjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzUtXFx0XFx0XFx0ZWxzZSBpZiAoc3RyY21wKHRhcmdldC1cXHUwMDNlbmFtZSwgXFxcIk5GTE9HXFxcIikgPT0gMClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jPTc1PXN0YXRpYyBpbnQgbmZ0X2xvZ19tb2Rwcm9iZShzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZfbG9nX3R5cGUgdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jLTc4LVxcdGNhc2UgTkZfTE9HX1RZUEVfTE9HOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jOjc5OlxcdFxcdHJldHVybiBuZnRfcmVxdWVzdF9tb2R1bGUobmV0LCBcXFwiJXNcXFwiLCBcXFwibmZfbG9nX3N5c2xvZ1xcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jLTgwLVxcdGNhc2UgTkZfTE9HX1RZUEVfVUxPRzpcXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfTE9HLmM9NDQ9c3RhdGljIGludCBsb2dfdGdfY2hlY2soY29uc3Qgc3RydWN0IHh0X3RnY2hrX3BhcmFtICpwYXIpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL3h0X0xPRy5jLTYzLVxcdGlmIChyZXQgIT0gMCBcXHUwMDI2XFx1MDAyNiAhcGFyLVxcdTAwM2VuZnRfY29tcGF0KSB7XFxubmV0L25ldGZpbHRlci94dF9MT0cuYzo2NDpcXHRcXHRyZXF1ZXN0X21vZHVsZShcXFwiJXNcXFwiLCBcXFwibmZfbG9nX3N5c2xvZ1xcXCIpO1xcbm5ldC9uZXRmaWx0ZXIveHRfTE9HLmMtNjUtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL3h0X0xPRy5jPTExOD1NT0RVTEVfQUxJQVMoXFxcImlwNnRfTE9HXFxcIik7XFxubmV0L25ldGZpbHRlci94dF9MT0cuYzoxMTk6TU9EVUxFX1NPRlRERVAoXFxcInByZTogbmZfbG9nX3N5c2xvZ1xcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci94dF9UUkFDRS5jPTY4PW1vZHVsZV9leGl0KHRyYWNlX3RnX2V4aXQpO1xcbm5ldC9uZXRmaWx0ZXIveHRfVFJBQ0UuYzo2OTpNT0RVTEVfU09GVERFUChcXFwicHJlOiBuZl9sb2dfc3lzbG9nXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjEwOjUyLjU2NTU4NzA5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDM4NDAzNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBuZm5ldGxpbmtfbG9nLmMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBuZm5ldGxpbmtfbG9nLmNgIGNvbmZpZ3VyYXRpb25zLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhpcyBzcGVjaWZpYyBzb3VyY2UgY29kZSBmaWxlLCBiZWNhdXNlIGJhc2VkIG9uIHRoZSBwcm9ibGVtIEknbSBpbnZlc3RpZ2F0aW5nLCB0aGlzIGFyZWEgaXMgbGlrZWx5IHRvIGJlIHJlbGV2YW50LiBNeSBleHBlcnRpc2Ugc3VnZ2VzdHMgdGhhdCB0aGUga2VybmVsJ3MgbmV0ZmlsdGVyIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBpcyBtYW5hZ2VkIGhlcmUuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbG9nZ2luZyBvcHRpb25zIGFyZSBzZXQsIGhvdyB0aGUgbWVzc2FnZXMgYXJlIGZvcm1hdHRlZCwgYW5kIGhvdyB0aGUgbG9nZ2luZyBtZWNoYW5pc20gaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIE5ldGZpbHRlciBmcmFtZXdvcmsuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBmdW5jdGlvbiBjYWxscywgYW5kIGFueSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciwgbW9yZSBjcml0aWNhbGx5LCBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGxvZ2dpbmcgYmVoYXZpb3VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDM4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MTA6NTYuMzA5NDMxMTMyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MTU0NDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mbmV0bGlua19sb2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTk5Mj1jb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORkxPR1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5Ny1cXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIE5GTE9HIHRhcmdldCwgd2hpY2ggYWxsb3dzIHRvIExPR1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5OTg6XFx0ICBtZXNzYWdlcyB0aHJvdWdoIG5mbmV0bGlua19sb2cuXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5OS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9Mjg9b2JqLSQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFKSArPSBuZm5ldGxpbmtfcXVldWUub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6Mjk6b2JqLSQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPRykgKz0gbmZuZXRsaW5rX2xvZy5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zMC1vYmotJChDT05GSUdfTkVURklMVEVSX05FVExJTktfT1NGKSArPSBuZm5ldGxpbmtfb3NmLm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTI1LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcXHUwMDNlXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MjY6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmhcXHUwMDNlXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMjctI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcXHUwMDNlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz00NzQ9X19idWlsZF9wYWNrZXRfbWVzc2FnZShzdHJ1Y3QgbmZubF9sb2dfbmV0ICpsb2csXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy02ODUtbmxhX3B1dF9mYWlsdXJlOlxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jOjY4NjpcXHRQUklOVFIoS0VSTl9FUlIgXFxcIm5mbmV0bGlua19sb2c6IGVycm9yIGNyZWF0aW5nIGxvZyBubG1zZ1xcXFxuXFxcIik7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtNjg3LVxcdHJldHVybiAtMTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jPTg5Mz1zdGF0aWMgc3RydWN0IG5mX2xvZ2dlciBuZnVsbmxfbG9nZ2VyIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6ODk0OlxcdC5uYW1lXFx0PSBcXFwibmZuZXRsaW5rX2xvZ1xcXCIsXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtODk1LVxcdC50eXBlXFx0PSBORl9MT0dfVFlQRV9VTE9HLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM9MTE0NT1zdGF0aWMgaW50IF9fbmV0X2luaXQgbmZubF9sb2dfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMTE1OS0jaWZkZWYgQ09ORklHX1BST0NfRlNcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYzoxMTYwOlxcdHByb2MgPSBwcm9jX2NyZWF0ZV9uZXQoXFxcIm5mbmV0bGlua19sb2dcXFwiLCAwNDQwLCBuZXQtXFx1MDAzZW5mLnByb2NfbmV0ZmlsdGVyLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExNjEtXFx0XFx0XFx0XFx1MDAyNm5mdWxfc2VxX29wcywgc2l6ZW9mKHN0cnVjdCBpdGVyX3N0YXRlKSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz0xMTczPXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZubF9sb2dfbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExNzUtI2lmZGVmIENPTkZJR19QUk9DX0ZTXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTE3NjpcXHRyZW1vdmVfcHJvY19lbnRyeShcXFwibmZuZXRsaW5rX2xvZ1xcXCIsIG5ldC1cXHUwMDNlbmYucHJvY19uZXRmaWx0ZXIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExNzctI2VuZGlmXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz0xMTkwPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZubF9sb2dfbmV0X29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExOTctXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTE5ODpzdGF0aWMgaW50IF9faW5pdCBuZm5ldGxpbmtfbG9nX2luaXQodm9pZClcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMTk5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTEyMzEtXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTIzMjpzdGF0aWMgdm9pZCBfX2V4aXQgbmZuZXRsaW5rX2xvZ19maW5pKHZvaWQpXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMTIzMy17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz0xMjQ4PU1PRFVMRV9BTElBU19ORl9MT0dHRVIoNSwgMSk7IC8qIE5GUFJPVE9fTkVUREVWICovXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMTI0OS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYzoxMjUwOm1vZHVsZV9pbml0KG5mbmV0bGlua19sb2dfaW5pdCk7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTI1MTptb2R1bGVfZXhpdChuZm5ldGxpbmtfbG9nX2ZpbmkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY29tcGF0LmM9MjQ0PW5mdF90YXJnZXRfaW5pdChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzUtXFx0XFx0XFx0ZWxzZSBpZiAoc3RyY21wKHRhcmdldC1cXHUwMDNlbmFtZSwgXFxcIk5GTE9HXFxcIikgPT0gMClcXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYzoyNzY6XFx0XFx0XFx0XFx0bW9kbmFtZSA9IFxcXCJuZm5ldGxpbmtfbG9nXFxcIjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzctXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9sb2cuYz03NT1zdGF0aWMgaW50IG5mdF9sb2dfbW9kcHJvYmUoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mX2xvZ190eXBlIHQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9sb2cuYy04MC1cXHRjYXNlIE5GX0xPR19UWVBFX1VMT0c6XFxubmV0L25ldGZpbHRlci9uZnRfbG9nLmM6ODE6XFx0XFx0cmV0dXJuIG5mdF9yZXF1ZXN0X21vZHVsZShuZXQsIFxcXCIlc1xcXCIsIFxcXCJuZm5ldGxpbmtfbG9nXFxcIik7XFxubmV0L25ldGZpbHRlci9uZnRfbG9nLmMtODItXFx0Y2FzZSBORl9MT0dfVFlQRV9NQVg6XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL3h0X05GTE9HLmM9NDI9c3RhdGljIGludCBuZmxvZ190Z19jaGVjayhjb25zdCBzdHJ1Y3QgeHRfdGdjaGtfcGFyYW0gKnBhcilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYy01My1cXHRpZiAocmV0ICE9IDAgXFx1MDAyNlxcdTAwMjYgIXBhci1cXHUwMDNlbmZ0X2NvbXBhdCkge1xcbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYzo1NDpcXHRcXHRyZXF1ZXN0X21vZHVsZShcXFwiJXNcXFwiLCBcXFwibmZuZXRsaW5rX2xvZ1xcXCIpO1xcbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYy01NS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYz0xMDM9bW9kdWxlX2V4aXQobmZsb2dfdGdfZXhpdCk7XFxubmV0L25ldGZpbHRlci94dF9ORkxPRy5jOjEwNDpNT0RVTEVfU09GVERFUChcXFwicHJlOiBuZm5ldGxpbmtfbG9nXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjEwOjU2LjM2NDU5MjUxOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMDc5NTAyNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0ZmlsdGVyIExvZ2dpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgQ09ORklHX05GX0xPR19TWVNMT0dgIGFuZCBgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPR2AuIFRoZXNlIGxvb2sgbGlrZSBjb3JlIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gbmV0ZmlsdGVyIGxvZ2dpbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBzb3VyY2UuIFRoZSBuYXR1cmFsIHN0YXJ0aW5nIHBvaW50IGlzIGFsd2F5cyB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLCBzbyBJJ2xsIGRpdmUgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBzZWUgaG93IHRob3NlIG9wdGlvbnMgYXJlIGRlZmluZWQsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24uIFRoYXQgZmlsZSB3aWxsIHRlbGwgbWUgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgbmV0ZmlsdGVyIHN1YnN5c3RlbSwgYW5kIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlaGF2ZS4gVGhpcyBpcyB3aGVyZSBJIGNhbiBnZXQgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbWF0dGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MTA6NTkuNTcyNTQ1MDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgyMzUzOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0xPR19TWVNMT0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTgyPWNvbmZpZyBORl9DT05OVFJBQ0tcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTg6Y29uZmlnIE5GX0xPR19TWVNMT0dcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTktXFx0dHJpc3RhdGUgXFxcIlN5c2xvZyBwYWNrZXQgbG9nZ2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MTA6NTkuNjMwNzkwODY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwMDM0MzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0ZmlsdGVyIExvZ2dpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgbmV0ZmlsdGVyIGxvZ2dpbmcsIHNwZWNpZmljYWxseSBgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPR2AsIGlzIGRlZmluZWQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG5ldGZpbHRlciBjb25maWd1cmF0aW9uLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgdGhlIEtjb25maWcgZmlsZXMgYXJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZXNlIGJ1aWxkLXRpbWUgb3B0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIGEgcmVmZXJlbmNlIHRvIHdoZXJlIGl0ICppcyogZGVmaW5lZC4gVGltZSB0byBnbyBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTUyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MTE6MDIuODMxMTM4MjM1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjMxODE3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVURklMVEVSX05FVExJTktfTE9HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz01ND1jb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NjI6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0xPR1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIExPRyBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjAyLjg5MzQ2OTMzMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODg4OTY2MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE5ldCBOYW1lc3BhY2UgVGVhcmRvd24gTG9naWMqKlxuXG5Pa2F5LCBteSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBmdW5jdGlvbnM6IGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGAsIGBuZm5sX2xvZ19uZXRfcHJlX2V4aXRgLCBhbmQgYG5mbmxfbG9nX25ldF9leGl0YC4gV2FpdCBhIHNlY29uZOKApiB0aGVzZSBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgIGFuZCBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCBmdW5jdGlvbnMgYXJlICpzdGF0aWMqIGFuZCBhc3NpZ25lZCB0byBhIGBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnNgLiBUaGV5J3JlIGNhbGxlZCBkdXJpbmcgYSBuZXQgbmFtZXNwYWNlIGV4aXQhIERlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZzsgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBuZXQgbmFtZXNwYWNlIHRlYXJkb3duIGFyZSBwcmFjdGljYWxseSBidWcgbWFnbmV0cywgZXNwZWNpYWxseSB0aG9zZSBuYXN0eSB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMuXG5cbkhtbSwgdGhpcyBwYXRjaCBpcyBzaW1wbHkgcmVuYW1pbmcgYG5mX2xvZ19zeXNsb2dfbmV0X2V4aXRgIHRvIGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGAgYW5kIHJlLWFzc2lnbmluZyBpdCB0byBgLnByZV9leGl0YCBpbnN0ZWFkIG9mIGAuZXhpdGAuIEFuZCBpbiBgbmZuZXRsaW5rX2xvZy5jYCwgdGhlIGV4aXQgZnVuY3Rpb24gaXMgYmVpbmcgc3BsaXQgaW50byBgcHJlX2V4aXRgIGFuZCBgZXhpdGAuIFRoZSBleGVjdXRpb24gb3JkZXIgZHVyaW5nIG5ldCBuYW1lc3BhY2UgdGVhcmRvd24gaXMgY2hhbmdpbmc7IGBwcmVfZXhpdGAgY29tZXMgKmJlZm9yZSogYGV4aXRgLiBUaGlzIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIGEgY2hhbmdlIHRoYXQgY291bGQgZXhwb3NlIGEgbGF0ZW50IGJ1Zywgb3IgZXZlbiBpbnRyb2R1Y2UgYSBicmFuZCBuZXcgb25lLiBEZWZpbml0ZWx5IHdvcnRoIHRoZSBlZmZvcnQgdG8gZnV6eiBpdC5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMsIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSByaWdodCBzZXR1cC4gSSdtIGdvaW5nIHRvIG5lZWQgYENPTkZJR19ORl9MT0dfU1lTTE9HYCwgYENPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0dgLCBhbmQgYENPTkZJR19ORVRfTlNgLiBUaGUgbGFzdCBvbmUgaXMgdXN1YWxseSBkZWZhdWx0LCBidXQgZ29vZCB0byBkb3VibGUtY2hlY2suIFRpbWUgdG8gcXVpY2tseSBkaWcgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBnb3RjaGFzIHdpdGggYE5GX0xPR19TWVNMT0dgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODU0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjA5Ljc4MjQ0MDA2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzOTg3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0xPR19TWVNMT0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz04Mj1jb25maWcgTkZfQ09OTlRSQUNLXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjk4OmNvbmZpZyBORl9MT0dfU1lTTE9HXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5LVxcdHRyaXN0YXRlIFxcXCJTeXNsb2cgcGFja2V0IGxvZ2dpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjA5LjgzMTg0NjYwNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAxNjE1NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsJ3MgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgcGFydGljdWxhciBmZWF0dXJlIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBOZXRmaWx0ZXIgc3Vic3lzdGVtLiBUbyBkbyB0aGF0LCBJJ20gZ29pbmcgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXI6IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBJIGtub3cgdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gcHJldHR5IHdlbGwsIHNvIEknbSBleHBlY3RpbmcgdGhpcyBgS2NvbmZpZ2AgZmlsZSB0byBob2xkIGFsbCB0aGUgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVzY3JpcHRpb25zIHJlbGF0ZWQgdG8gTmV0ZmlsdGVyJ3MgY29uZmlndXJhdGlvbi4gSSdsbCBwaW5wb2ludCBhcm91bmQgbGluZSA5OCDigJMgdXN1YWxseSwgdGhlc2UgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgd2VsbC1zdHJ1Y3R1cmVkLCBzbyBJJ20gaG9waW5nIHRoYXQgcGFydGljdWxhciByZWdpb24gd2lsbCBnaXZlIG1lIHRoZSBpbnNpZ2h0cyBJJ20gbG9va2luZyBmb3IgcmVnYXJkaW5nIHRoaXMgc3BlY2lmaWMgTmV0ZmlsdGVyIGFzcGVjdCBJJ20gd29ya2luZyBvbi4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzIxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MTE6MTMuMjMzNDY2MTYyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTA6XFx0XFx0ICBpbnRvIGNvbm5lY3Rpb25zLlxcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHQgIFRoaXMgaXMgcmVxdWlyZWQgdG8gZG8gTWFzcXVlcmFkaW5nIG9yIG90aGVyIGtpbmRzIG9mIE5ldHdvcmtcXG4gIDkzOlxcdFxcdCAgQWRkcmVzcyBUcmFuc2xhdGlvbi4gIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gZW5oYW5jZSBwYWNrZXRcXG4gIDk0OlxcdFxcdCAgZmlsdGVyaW5nIChzZWUgYENvbm5lY3Rpb24gc3RhdGUgbWF0Y2ggc3VwcG9ydCcgYmVsb3cpLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgOTc6XFx0XFxuICA5ODpcXHRjb25maWcgTkZfTE9HX1NZU0xPR1xcbiAgOTk6XFx0XFx0dHJpc3RhdGUgXFxcIlN5c2xvZyBwYWNrZXQgbG9nZ2luZ1xcXCJcXG4gMTAwOlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiAxMDE6XFx0XFx0aGVscFxcbiAxMDI6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGUgc3VwcG9ydCBmb3IgcGFja2V0IGxvZ2dpbmcgdmlhIHN5c2xvZy5cXG4gMTAzOlxcdFxcdCAgSXQgc3VwcG9ydHMgSVB2NCwgSVBWNiwgQVJQIGFuZCBjb21tb24gdHJhbnNwb3J0IHByb3RvY29scyBzdWNoXFxuIDEwNDpcXHRcXHQgIGFzIFRDUCBhbmQgVURQLlxcbiAxMDU6XFx0XFx0ICBUaGlzIGlzIGEgc2ltcGxlciBidXQgbGVzcyBmbGV4aWJsZSBsb2dnaW5nIG1ldGhvZCBjb21wYXJlZCB0b1xcbiAxMDY6XFx0XFx0ICBDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HLlxcbiAxMDc6XFx0XFx0ICBJZiBib3RoIGFyZSBlbmFibGVkIHRoZSBiYWNrZW5kIHRvIHVzZSBjYW4gYmUgY29uZmlndXJlZCBhdCBydW4tdGltZVxcbiAxMDg6XFx0XFx0ICBieSBtZWFucyBvZiBwZXItYWRkcmVzcy1mYW1pbHkgc3lzY3RsIHR1bmFibGVzLlxcbiAxMDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjEzLjIzMzU5NTk4MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTU0Njg0NTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXRmaWx0ZXIgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFyb3VuZCBsaW5lIDYyLiBJJ20gZ3Vlc3NpbmcgdGhhdCBzcGVjaWZpYyBzZWN0aW9uIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBbKippbnNlcnQgeW91ciBkb21haW4ncyBzcGVjaWZpYyB0b3BpYyB0aGF0IHJlbGF0ZXMgdG8gdGhlIEtjb25maWcgZmlsZSBoZXJlLCBlLmcuLCBob3cgYSBwYXJ0aWN1bGFyIE5ldGZpbHRlciBtb2R1bGUgaXMgY29uZmlndXJlZCwgYSBzcGVjaWZpYyBvcHRpb24ncyBkZXBlbmRlbmNpZXMsIHRoZSBpbnRlcnBsYXkgb2YgZGlmZmVyZW50IGZpbHRlcmluZyBtZWNoYW5pc21zLCBvciBob3cgdGhpcyBLY29uZmlnIGZpbGUgaW50ZXJmYWNlcyB3aXRoIG90aGVyIHJlbGF0ZWQgb25lcyoqXS4gSSBuZWVkIHRvIGdldCBhIGdyYW51bGFyIHZpZXcgb2YgWyoqc3BlY2lmaWMgZGV0YWlscyB5b3UgZXhwZWN0IHRvIGZpbmQsIGUuZy4sIHRoZSB1bmRlcmx5aW5nIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLCB0aGVpciBkZXBlbmRlbmNpZXMsIGFueSByZWxldmFudCBkZWZhdWx0cywgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3Rpbmcgb3B0aW9ucy4qKl0uIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IFsqKndoYXQgeW91IHdhbnQgdG8gZ2xlYW4gZnJvbSB0aGlzIGxpbmUgb2YgY29kZSBlLmcuLCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGZsYWdzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBjb25maWd1cmF0aW9ucyBpbnRlcnJlbGF0ZSBhbmQgZGVwZW5kIG9uIGVhY2ggb3RoZXIuKipdIEVzc2VudGlhbGx5LCBJJ20gZXhwZWN0aW5nIHRvIGVpdGhlcjogWyoqZGVzY3JpYmUgYSBsaWtlbHkgc2NlbmFyaW8geW91IGFyZSBpbnZlc3RpZ2F0aW5nLioqXS4gVGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscywgYW5kIGNyb3NzLXJlZmVyZW5jZSB3aXRoIHJlbGF0ZWQgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBpZiBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjE2Ljc4ODI4NDY3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFx0aGVscFxcbiAgNTE6XFx0XFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XFxuICA1MjpcXHRcXHQgIGZvciBleHRlbmRlZCBhY2NvdW50aW5nIHZpYSBORk5FVExJTksuXFxuICA1MzpcXHRcXG4gIDU0OlxcdGNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxcbiAgNTU6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBORlFVRVVFIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVxcXCJcXG4gIDU2OlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuICA1NzpcXHRcXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4gIDU4OlxcdFxcdGhlbHBcXG4gIDU5OlxcdFxcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxcbiAgNjA6XFx0XFx0ICBmb3IgcXVldWVpbmcgcGFja2V0cyB2aWEgTkZORVRMSU5LLlxcbiAgNjE6XFx0XFxuICA2MjpcXHRjb25maWcgTkVURklMVEVSX05FVExJTktfTE9HXFxuICA2MzpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIExPRyBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuICA2NDpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gIDY1OlxcdFxcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xcbiAgNjY6XFx0XFx0aGVscFxcbiAgNjc6XFx0XFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XFxuICA2ODpcXHRcXHQgIGZvciBsb2dnaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cXG4gIDY5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMToxNi43ODg0MTQ5OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDg3MDIzMjM3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEFuYWx5c2lzOiBOZXR3b3JrIE5hbWVzcGFjZSBUZWFyZG93biBmb3IgbmV0ZmlsdGVyIExvZ2dpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgTkZfTE9HX1NZU0xPR2AgYW5kIGBORVRGSUxURVJfTkVUTElOS19MT0dgLiBIYW5nIG9uLCBgTkVURklMVEVSX05FVExJTktfTE9HYCBzZWxlY3RzIGBORVRGSUxURVJfTkVUTElOS2AsIHRoYXQncyBnb29kIHRvIG5vdGUuIFdlIGFsc28gbmVlZCB0byBjb25zaWRlciBgQ09ORklHX05FVF9OU2AsIGFzIGl0J3MgdHlwaWNhbGx5IGVuYWJsZWQgaW4gZnV6emluZyBlbnZpcm9ubWVudHMuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgYXJlIGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGAsIGBuZm5sX2xvZ19uZXRfcHJlX2V4aXRgLCBhbmQgYG5mbmxfbG9nX25ldF9leGl0YC4gSSBpbml0aWFsbHkgdGhvdWdodCB0aGVzZSB3ZXJlIHN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIEkgc2hvdWxkIGJlIHdhcnkgb2YgYmFzZWQgb24gdGhlIGluc3RydWN0aW9ucyB0aGF0IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIEhvd2V2ZXIsIHRoZXNlIGFyZW4ndCBpbmxpbmVkIGJlY2F1c2UgdGhleSBhcmUgYXNzaWduZWQgdG8gYHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9uc2AgZnVuY3Rpb24gcG9pbnRlcnMuIFRoaXMgbWVhbnMgdGhleSAqYXJlKiBjYWxsZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXJzIGJ5IHRoZSBuZXQgbmFtZXNwYWNlIGNvcmUsIGdpdmluZyB0aGVtIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgYW5kIG1ha2luZyB0aGVtIGdvb2QgY2FuZGlkYXRlcyBmb3Igc2NydXRpbnkuXG5cbkxldCdzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMuIExvb2tpbmcgYXQgdGhlIGNvZGU6XG5cbiogICBJbiBgbmZfbG9nX3N5c2xvZy5jYCwgYG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0YCBpcyBtb2RpZnlpbmcgdGhlIGNsZWFudXAgcHJvY2Vzcy5cbiogICBJbiBgbmZuZXRsaW5rX2xvZy5jYCwgYG5mbmxfbG9nX25ldF9wcmVfZXhpdGAgYW5kIGBuZm5sX2xvZ19uZXRfZXhpdGAgYXJlIGJlaW5nIG1vZGlmaWVkLlxuXG5ZZXAsIHRob3NlIGFyZSB0aGUgb25seSBvbmVzLiBUaGUgZmFjdCB0aGV5IGFyZSBwYXJ0IG9mIGBwZXJuZXRfb3BlcmF0aW9uc2AgYW5kIGFjY2Vzc2VkIHZpYSBmdW5jdGlvbiBwb2ludGVycyBzdHJlbmd0aGVucyB0aGVpciByZWxldmFuY2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nIHRoYXQgdGhleSBjYWxsLiBIbW0uLi4gYG5mX2xvZ191bnNldGAgaXMgY2FsbGVkIHdpdGhpbiB0aGVtLCBidXQgdGhhdCdzIG5vdCBiZWluZyBtb2RpZmllZC4gSSdsbCBhZGQgYG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0YCwgYG5mbmxfbG9nX25ldF9wcmVfZXhpdGAsIGFuZCBgbmZubF9sb2dfbmV0X2V4aXRgIHRvIGBGb2N1c1N5bWJvbHNgLlxuXG5Ob3csIGZvciBjb25maWd1cmF0aW9ucy4gV2UgaGF2ZSBgQ09ORklHX05FVEZJTFRFUmAsIHdoaWNoIGlzIGEgYmFzZSBjb25maWcsIGFuZCB0aGVuIGBORl9MT0dfU1lTTE9HYCBhbmQgYE5FVEZJTFRFUl9ORVRMSU5LX0xPR2AuIEFueSBkZXBlbmRlbmNpZXM/IEFoLCBgTkVURklMVEVSX05FVExJTktfTE9HYCBkZXBlbmRzIG9uICh3ZWxsLCBzZWxlY3RzKSBgTkVURklMVEVSX05FVExJTktgLiBgTkZfTE9HX1NZU0xPR2AgaGFzIG5vIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGFzaWRlIGZyb20gYE5FVEZJTFRFUl9BRFZBTkNFRD1uYCBhcyBkZWZhdWx0LiBHb29kLCBzbyBgTkZfTE9HX1NZU0xPR2AgYW5kIGBORVRGSUxURVJfTkVUTElOS19MT0dgIGlzIHdoYXQgSSdsbCBpbmNsdWRlLiBTaG91bGQgSSBlbmFibGUgYENPTkZJR19ORVRfTlNgPyBZZXMsIEknbGwgaW5jbHVkZSBpdCBiZWNhdXNlIGl0J3MgdXN1YWxseSBvbiBpbiBmdXp6aW5nIGVudmlyb25tZW50cy5cblxuTGV0J3MgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMuIFRoZSBjcml0ZXJpb24gZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIGJhc2VkIG9uIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgb25seSBleGVjdXRlZCBkdXJpbmcgaG90LXVucGx1ZyBvciBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuIFRoaXMgaXMgKm5vdCogdGhhdCBzaXR1YXRpb24uIFRoaXMgaXMgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24uIE5ldHdvcmsgbmFtZXNwYWNlcyBhcmUgcmVndWxhcmx5IGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCBkdXJpbmcgZnV6emluZywgYW5kIHByb2JsZW1zIGluIHRoZWlyIHRlYXJkb3duIGFyZSBwcmltZSBidWcgc291cmNlcy4gU28sIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkhlcmUncyBteSByZWFzb25pbmc6IFRoZSBwYXRjaCBpcyBhbHRlcmluZyB0aGUgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gZm9yIGBuZl9sb2dfc3lzbG9nYCBhbmQgYG5mbmV0bGlua19sb2dgIGJ5IHJlb3JnYW5pemluZyBjbGVhbnVwIGNvZGUuIFRoYXQgaXMsIG1vdmluZyBjb2RlIGZyb20gYC5leGl0YCB0byBgLnByZV9leGl0YC4gVGhpcyBjaGFuZ2VzIHRoZSAqZXhlY3V0aW9uIG9yZGVyKiBkdXJpbmcgbmV0IG5hbWVzcGFjZSBkZXN0cnVjdGlvbi4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggY2FuIHRyaWdnZXIgdXNlLWFmdGVyLWZyZWUgYnVncy4gTmV0d29yayBuYW1lc3BhY2VzIGFyZSBjb21tb25seSBmdXp6ZWQsIG1ha2luZyB0aGlzIGNoYW5nZSB2ZXJ5IGltcG9ydGFudC5cblxuKipIZXJlJ3MgdGhlIGRhdGEgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzOioqXG5cbiogICAqKmBGb2N1c1N5bWJvbHNgKio6XG4gICAgKiAgIGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGBcbiAgICAqICAgYG5mbmxfbG9nX25ldF9wcmVfZXhpdGBcbiAgICAqICAgYG5mbmxfbG9nX25ldF9leGl0YFxuKiAgICoqYEVuYWJsZUNvbmZpZ3NgKio6XG4gICAgKiAgIGBORl9MT0dfU1lTTE9HYFxuICAgICogICBgTkVURklMVEVSX05FVExJTktfTE9HYFxuICAgIFxuTm93LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4NTgsIk91dHB1dFRva2VucyI6MTg1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjMxLjY1ODY1MTM4N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTI1NjEzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfTE9HX1NZU0xPR1wiLFxuICAgIFwiTkVURklMVEVSX05FVExJTktfTE9HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRcIixcbiAgICBcIm5mbmxfbG9nX25ldF9wcmVfZXhpdFwiLFxuICAgIFwibmZubF9sb2dfbmV0X2V4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gbG9naWMgZm9yIG5mX2xvZ19zeXNsb2cgYW5kIG5mbmV0bGlua19sb2cgYnkgbW92aW5nIGNsZWFudXAgY29kZSBmcm9tIHRoZSAuZXhpdCBjYWxsYmFjayB0byB0aGUgLnByZV9leGl0IGNhbGxiYWNrIGluIHRoZWlyIHBlcm5ldF9vcGVyYXRpb25zIHN0cnVjdHVyZXMuIFRoaXMgY2hhbmdlcyB0aGUgZXhlY3V0aW9uIG9yZGVyIGR1cmluZyBuZXQgbmFtZXNwYWNlIGRlc3RydWN0aW9uLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGFmZmVjdCBvYmplY3QgbGlmZXRpbWVzIGFuZCBwcmV2ZW50IG9yIGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUuIE5ldHdvcmsgbmFtZXNwYWNlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBhcmUgaGVhdmlseSBleGVyY2lzZWQgZHVyaW5nIGZ1enppbmcsIG1ha2luZyB0aGlzIGhpZ2hseSByZWxldmFudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9MT0dfU1lTTE9HXCIsXG4gICAgXCJORVRGSUxURVJfTkVUTElOS19MT0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdFwiLFxuICAgIFwibmZubF9sb2dfbmV0X3ByZV9leGl0XCIsXG4gICAgXCJuZm5sX2xvZ19uZXRfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBsb2dpYyBmb3IgbmZfbG9nX3N5c2xvZyBhbmQgbmZuZXRsaW5rX2xvZyBieSBtb3ZpbmcgY2xlYW51cCBjb2RlIGZyb20gdGhlIC5leGl0IGNhbGxiYWNrIHRvIHRoZSAucHJlX2V4aXQgY2FsbGJhY2sgaW4gdGhlaXIgcGVybmV0X29wZXJhdGlvbnMgc3RydWN0dXJlcy4gVGhpcyBjaGFuZ2VzIHRoZSBleGVjdXRpb24gb3JkZXIgZHVyaW5nIG5ldCBuYW1lc3BhY2UgZGVzdHJ1Y3Rpb24sIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYWZmZWN0IG9iamVjdCBsaWZldGltZXMgYW5kIHByZXZlbnQgb3IgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZS4gTmV0d29yayBuYW1lc3BhY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIGFyZSBoZWF2aWx5IGV4ZXJjaXNlZCBkdXJpbmcgZnV6emluZywgbWFraW5nIHRoaXMgaGlnaGx5IHJlbGV2YW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2jgl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 08:53:57 +0000 UTC FinishedAt: 2026-08-03 09:11:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_LOG_SYSLOG", "NETFILTER_NETLINK_LOG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_LOG_SYSLOG", "NETFILTER_NETLINK_LOG" ], "series_id": "04c6fbee-b7d7-47e7-b3fa-cf32dc93c014" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_log_syslog_net_pre_exit", "nfnl_log_net_pre_exit", "nfnl_log_net_exit" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0xPR19TWVNMT0cmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX05FVExJTktfTE9HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXQmIzM0OywKICAgICYjMzQ7bmZubF9sb2dfbmV0X3ByZV9leGl0JiMzNDssCiAgICAmIzM0O25mbmxfbG9nX25ldF9leGl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBsb2dpYyBmb3IgbmZfbG9nX3N5c2xvZyBhbmQgbmZuZXRsaW5rX2xvZyBieSBtb3ZpbmcgY2xlYW51cCBjb2RlIGZyb20gdGhlIC5leGl0IGNhbGxiYWNrIHRvIHRoZSAucHJlX2V4aXQgY2FsbGJhY2sgaW4gdGhlaXIgcGVybmV0X29wZXJhdGlvbnMgc3RydWN0dXJlcy4gVGhpcyBjaGFuZ2VzIHRoZSBleGVjdXRpb24gb3JkZXIgZHVyaW5nIG5ldCBuYW1lc3BhY2UgZGVzdHJ1Y3Rpb24sIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYWZmZWN0IG9iamVjdCBsaWZldGltZXMgYW5kIHByZXZlbnQgb3IgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZS4gTmV0d29yayBuYW1lc3BhY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIGFyZSBoZWF2aWx5IGV4ZXJjaXNlZCBkdXJpbmcgZnV6emluZywgbWFraW5nIHRoaXMgaGlnaGx5IHJlbGV2YW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWZiOWU4OWQ1YmYyYmZjYjNhMjZhMzE1Y2VmYjFlMTdiZWMxMzQyNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDk6MTA6NDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuY1xuaW5kZXggZTM3YjA5YjMyMDNiNy4uNWZmZGUyN2Q0NTBhNyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuY1xuQEAgLTEwMTQsNyAmIzQzOzEwMTQsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfbG9nX3N5c2xvZ19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuJiM0MztzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcbiB7XG4gXHRuZl9sb2dfdW5zZXQobmV0LCBcdTAwMjZuZl9pcF9sb2dnZXIpO1xuIFx0bmZfbG9nX3Vuc2V0KG5ldCwgXHUwMDI2bmZfYXJwX2xvZ2dlcik7XG5AQCAtMTAyNSw3ICYjNDM7MTAyNSw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZfbG9nX3N5c2xvZ19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG4gXG4gc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBuZl9sb2dfc3lzbG9nX25ldF9vcHMgPSB7XG4gXHQuaW5pdCA9IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQsXG4tXHQuZXhpdCA9IG5mX2xvZ19zeXNsb2dfbmV0X2V4aXQsXG4mIzQzO1x0LnByZV9leGl0ID0gbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXQsXG4gfTtcbiBcbiBzdGF0aWMgaW50IF9faW5pdCBuZl9sb2dfc3lzbG9nX2luaXQodm9pZClcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jXG5pbmRleCA1ZmVlNjFiMzgxM2NiLi42YzdmYTJlZDM0ZjVjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jXG5AQCAtMTE3MCwyMSAmIzQzOzExNzAsMjYgQEAgc3RhdGljIGludCBfX25ldF9pbml0IG5mbmxfbG9nX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mbmxfbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbiYjNDM7c3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuIHtcbi1cdHN0cnVjdCBuZm5sX2xvZ19uZXQgKmxvZyA9IG5mbmxfbG9nX3Blcm5ldChuZXQpO1xuLVx0dW5zaWduZWQgaW50IGk7XG4tXG4gI2lmZGVmIENPTkZJR19QUk9DX0ZTXG4gXHRyZW1vdmVfcHJvY19lbnRyeShcJiMzNDtuZm5ldGxpbmtfbG9nXCYjMzQ7LCBuZXQtXHUwMDNlbmYucHJvY19uZXRmaWx0ZXIpO1xuICNlbmRpZlxuIFx0bmZfbG9nX3Vuc2V0KG5ldCwgXHUwMDI2bmZ1bG5sX2xvZ2dlcik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZubF9sb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5mbmxfbG9nX25ldCAqbG9nID0gbmZubF9sb2dfcGVybmV0KG5ldCk7XG4mIzQzO1x0dW5zaWduZWQgaW50IGk7XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSU5TVEFOQ0VfQlVDS0VUUzsgaSYjNDM7JiM0MzspXG4gXHRcdFdBUk5fT05fT05DRSghaGxpc3RfZW1wdHkoXHUwMDI2bG9nLVx1MDAzZWluc3RhbmNlX3RhYmxlW2ldKSk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZubF9sb2dfbmV0X29wcyA9IHtcbiBcdC5pbml0XHQ9IG5mbmxfbG9nX25ldF9pbml0LFxuJiM0MztcdC5wcmVfZXhpdCA9IG5mbmxfbG9nX25ldF9wcmVfZXhpdCxcbiBcdC5leGl0XHQ9IG5mbmxfbG9nX25ldF9leGl0LFxuIFx0LmlkXHQ9IFx1MDAyNm5mbmxfbG9nX25ldF9pZCxcbiBcdC5zaXplXHQ9IHNpemVvZihzdHJ1Y3QgbmZubF9sb2dfbmV0KSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfTE9HX1NZU0xPRyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfTkVUTElOS19MT0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdCYjMzQ7LAogICAgJiMzNDtuZm5sX2xvZ19uZXRfcHJlX2V4aXQmIzM0OywKICAgICYjMzQ7bmZubF9sb2dfbmV0X2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duIGxvZ2ljIGZvciBuZl9sb2dfc3lzbG9nIGFuZCBuZm5ldGxpbmtfbG9nIGJ5IG1vdmluZyBjbGVhbnVwIGNvZGUgZnJvbSB0aGUgLmV4aXQgY2FsbGJhY2sgdG8gdGhlIC5wcmVfZXhpdCBjYWxsYmFjayBpbiB0aGVpciBwZXJuZXRfb3BlcmF0aW9ucyBzdHJ1Y3R1cmVzLiBUaGlzIGNoYW5nZXMgdGhlIGV4ZWN1dGlvbiBvcmRlciBkdXJpbmcgbmV0IG5hbWVzcGFjZSBkZXN0cnVjdGlvbiwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBhZmZlY3Qgb2JqZWN0IGxpZmV0aW1lcyBhbmQgcHJldmVudCBvciBpbnRyb2R1Y2UgYnVncyBsaWtlIHVzZS1hZnRlci1mcmVlLiBOZXR3b3JrIG5hbWVzcGFjZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gYXJlIGhlYXZpbHkgZXhlcmNpc2VkIGR1cmluZyBmdXp6aW5nLCBtYWtpbmcgdGhpcyBoaWdobHkgcmVsZXZhbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZmI5ZTg5ZDViZjJiZmNiM2EyNmEzMTVjZWZiMWUxN2JlYzEzNDI0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwOToxMDo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jIGIvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMKaW5kZXggZTM3YjA5YjMyMDNiNy4uNWZmZGUyN2Q0NTBhNyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMKQEAgLTEwMTQsNyAmIzQzOzEwMTQsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfbG9nX3N5c2xvZ19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl9sb2dfc3lzbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKJiM0MztzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldCkKIHsKIAluZl9sb2dfdW5zZXQobmV0LCAmYW1wO25mX2lwX2xvZ2dlcik7CiAJbmZfbG9nX3Vuc2V0KG5ldCwgJmFtcDtuZl9hcnBfbG9nZ2VyKTsKQEAgLTEwMjUsNyAmIzQzOzEwMjUsNyBAQCBzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KQogCiBzdGF0aWMgc3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIG5mX2xvZ19zeXNsb2dfbmV0X29wcyA9IHsKIAkuaW5pdCA9IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQsCi0JLmV4aXQgPSBuZl9sb2dfc3lzbG9nX25ldF9leGl0LAomIzQzOwkucHJlX2V4aXQgPSBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdCwKIH07CiAKIHN0YXRpYyBpbnQgX19pbml0IG5mX2xvZ19zeXNsb2dfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYwppbmRleCA1ZmVlNjFiMzgxM2NiLi42YzdmYTJlZDM0ZjVjIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYwpAQCAtMTE3MCwyMSAmIzQzOzExNzAsMjYgQEAgc3RhdGljIGludCBfX25ldF9pbml0IG5mbmxfbG9nX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCiYjNDM7c3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KQogewotCXN0cnVjdCBuZm5sX2xvZ19uZXQgKmxvZyA9IG5mbmxfbG9nX3Blcm5ldChuZXQpOwotCXVuc2lnbmVkIGludCBpOwotCiAjaWZkZWYgQ09ORklHX1BST0NfRlMKIAlyZW1vdmVfcHJvY19lbnRyeSgmIzM0O25mbmV0bGlua19sb2cmIzM0OywgbmV0LSZndDtuZi5wcm9jX25ldGZpbHRlcik7CiAjZW5kaWYKIAluZl9sb2dfdW5zZXQobmV0LCAmYW1wO25mdWxubF9sb2dnZXIpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mbmxfbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBuZm5sX2xvZ19uZXQgKmxvZyA9IG5mbmxfbG9nX3Blcm5ldChuZXQpOwomIzQzOwl1bnNpZ25lZCBpbnQgaTsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgSU5TVEFOQ0VfQlVDS0VUUzsgaSYjNDM7JiM0MzspCiAJCVdBUk5fT05fT05DRSghaGxpc3RfZW1wdHkoJmFtcDtsb2ctJmd0O2luc3RhbmNlX3RhYmxlW2ldKSk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZubF9sb2dfbmV0X29wcyA9IHsKIAkuaW5pdAk9IG5mbmxfbG9nX25ldF9pbml0LAomIzQzOwkucHJlX2V4aXQgPSBuZm5sX2xvZ19uZXRfcHJlX2V4aXQsCiAJLmV4aXQJPSBuZm5sX2xvZ19uZXRfZXhpdCwKIAkuaWQJPSAmYW1wO25mbmxfbG9nX25ldF9pZCwKIAkuc2l6ZQk9IHNpemVvZihzdHJ1Y3QgbmZubF9sb2dfbmV0KSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaDogTmV0d29yayBOYW1lc3BhY2UgVGVhcmRvd24gYW5kIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBgbmZfbG9nX3N5c2xvZy5jYCBhbmQgYG5mbmV0bGlua19sb2cuY2AuIFRoZSBmaXJzdCB0aGluZyBJIHNlZSBpcyBhIHJlbmFtZSBvZiBgbmZfbG9nX3N5c2xvZ19uZXRfZXhpdGAgdG8gYG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0YCwgd2hpY2ggaXMgdGhlbiBhc3NpZ25lZCB0byB0aGUgYC5wcmVfZXhpdGAgZmllbGQgd2l0aGluIGBuZl9sb2dfc3lzbG9nX25ldF9vcHNgLiAgT3ZlciBpbiBgbmZuZXRsaW5rX2xvZy5jYCwgdGhleSYjMzk7dmUgc3BsaXQgYG5mbmxfbG9nX25ldF9leGl0YCBpbnRvIGBuZm5sX2xvZ19uZXRfcHJlX2V4aXRgIGFuZCBgbmZubF9sb2dfbmV0X2V4aXRgLiBJbXBvcnRhbnRseSwgdGhlIGNhbGxzIHRvIGByZW1vdmVfcHJvY19lbnRyeWAgYW5kIGBuZl9sb2dfdW5zZXRgIGFyZSBub3cgaW4gdGhlICpwcmUqLWV4aXQgZnVuY3Rpb24sIHdpdGggdGhlIGluc3RhbmNlIHRhYmxlIGNoZWNrIHN0YXlpbmcgaW4gdGhlIG9yaWdpbmFsICpleGl0KiBmdW5jdGlvbi4KCkltbWVkaWF0ZWx5LCBJIHJlY29nbml6ZSB0aGlzIGlzIGFib3V0IG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duLiBOZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBpcyBzb21ldGhpbmcgdGhhdCBpcyAqcmVhY2hhYmxlKiBpbiB0aGUgY29kZSwgYW5kIHRoZXJlZm9yZSwgaXQgaXMgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGZ1enplZC4gIFRoZSBmcmVxdWVudCBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2YgbmV0d29yayBuYW1lc3BhY2VzIGluIHRvb2xzIGxpa2Ugc3l6a2FsbGVyIG1ha2UgdGhpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSG93ZXZlciwgdGhlcmUgaXMgYSBzcGVjaWZpYyBjaGVjayBmcm9tIHRoZSBndWlkZWxpbmVzLiAgSXQgc2F5cyB0byBtYXJrIHBhdGNoZXMgd2l0aCB0ZWFyZG93biBjYWxsYmFja3MsIHN1Y2ggYXMgYC5yZW1vdmVgIG9yIGAuc2h1dGRvd25gIGluIGRyaXZlciBjb2RlLCBhcyBub3Qgd29ydGggZnV6emluZy4gSXQgbWVudGlvbnMgY2FzZXMgc3VjaCBhcyBgaWdiX3JlbW92ZWAsIHNwZWNpZmljYWxseS4KCkJ1dCB3YWl0IGEgbWludXRlLCB0aGlzIGlzbiYjMzk7dCBhIGRyaXZlciB1bmJpbmQgc2NlbmFyaW8uIFRoaXMgaXMgYSBuZXR3b3JrIG5hbWVzcGFjZSBleGl0IGNhbGxiYWNrLCB3aGljaCBpcyBkaWZmZXJlbnQuIE5ldHdvcmsgbmFtZXNwYWNlIGV4aXQgaXMgKmZyZXF1ZW50bHkqIGZ1enplZCBiZWNhdXNlLCB5b3Uga25vdywgaXQmIzM5O3MgYSBjb21tb24gb3BlcmF0aW9uLCBhbmQgc3lza2FsbGVyIGRvZXMgaXQgYWxsIHRoZSB0aW1lLiAgU28sIHRoZSBxdWVzdGlvbiBpcywgKmlzKiB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/ICBZZXMsIGFic29sdXRlbHkuIFRoZSBuYXR1cmUgb2YgdGVhcmRvd24gcGF0aHMsIGVzcGVjaWFsbHkgaW4gbmV0d29ya2luZyBjb2RlLCBvcGVucyB0aGUgZG9vciB0byB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFuZCBvdGhlciBtZW1vcnktcmVsYXRlZCBpc3N1ZXMuCgpTbywgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgaW50cm9kdWNlZCBvciBtb2RpZmllZCBieSB0aGlzIHBhdGNoOiBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgLCBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCwgYW5kIGBuZm5sX2xvZ19uZXRfZXhpdGAuIFRoZXNlIGFyZSBub3cgdGhlIGZvY2FsIHBvaW50cy4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBxdWlja2x5IGNoZWNrIHRoZSBjb25maWdzIGZvciBgbmZfbG9nX3N5c2xvZy5jYCBhbmQgYG5mbmV0bGlua19sb2cuY2AgdG8gc2VlIGFueSByZWxldmFudCBidWlsZCBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGZ1enppbmcgZWZmZWN0aXZlbmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9sb2dfc3lzbG9nJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT01Nj1uZl9uYXQteVx0Oj0gbmZfbmF0X2NvcmUubyBuZl9uYXRfcHJvdG8ubyBuZl9uYXRfaGVscGVyLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNTctXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19ORl9MT0dfU1lTTE9HKSAmIzQzOz0gbmZfbG9nX3N5c2xvZy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTU5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYz01NjE9bmZfY29ubnRyYWNrX2xvZ19pbnZhbGlkX3N5c2N0bChjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy01NzItXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmM6NTczOlx0LyogTG9hZCBuZl9sb2dfc3lzbG9nIG9ubHkgaWYgbm8gbG9nZ2VyIGlzIGN1cnJlbnRseSByZWdpc3RlcmVkICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtNTc0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTkZQUk9UT19OVU1QUk9UTzsgaSYjNDM7JiM0MzspIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtNTc3LVx0fVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jOjU3ODpcdHJlcXVlc3RfbW9kdWxlKFwmIzM0OyVzXCYjMzQ7LCBcJiMzNDtuZl9sb2dfc3lzbG9nXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy01NzktXG4tLVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM9OTc2PXN0YXRpYyBzdHJ1Y3QgbmZfbG9nZ2VyIG5mX2JyaWRnZV9sb2dnZXIgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy05ODItXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzo5ODM6c3RhdGljIGludCBfX25ldF9pbml0IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtOTg0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDE2LVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTAxNzpzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwMTgte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwMjUtXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDI2OnN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZfbG9nX3N5c2xvZ19uZXRfb3BzID0ge1xubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTAyNzpcdC5pbml0ID0gbmZfbG9nX3N5c2xvZ19uZXRfaW5pdCxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwMjg6XHQucHJlX2V4aXQgPSBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdCxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwMjktfTtcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwMzAtXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDMxOnN0YXRpYyBpbnQgX19pbml0IG5mX2xvZ19zeXNsb2dfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAzMi17XG4tLVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAzNC1cbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwMzU6XHRyZXQgPSByZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFx1MDAyNm5mX2xvZ19zeXNsb2dfbmV0X29wcyk7XG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDM2LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDY5LVx0cHJfZXJyKFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBsb2dnZXJcXG5cJiMzNDspO1xubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTA3MDpcdHVucmVnaXN0ZXJfcGVybmV0X3N1YnN5cyhcdTAwMjZuZl9sb2dfc3lzbG9nX25ldF9vcHMpO1xubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTA3MS1cdHJldHVybiByZXQ7XG4tLVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTA3My1cbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwNzQ6c3RhdGljIHZvaWQgX19leGl0IG5mX2xvZ19zeXNsb2dfZXhpdCh2b2lkKVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTA3NS17XG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDc2Olx0dW5yZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFx1MDAyNm5mX2xvZ19zeXNsb2dfbmV0X29wcyk7XG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDc3LVx0bmZfbG9nX3VucmVnaXN0ZXIoXHUwMDI2bmZfaXBfbG9nZ2VyKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDgzLVxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTA4NDptb2R1bGVfaW5pdChuZl9sb2dfc3lzbG9nX2luaXQpO1xubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTA4NTptb2R1bGVfZXhpdChuZl9sb2dfc3lzbG9nX2V4aXQpO1xubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTA4Ni1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYz0yNDQ9bmZ0X3RhcmdldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzMtXHRcdFx0aWYgKHN0cmNtcCh0YXJnZXQtXHUwMDNlbmFtZSwgXCYjMzQ7TE9HXCYjMzQ7KSA9PSAwKVxubmV0L25ldGZpbHRlci9uZnRfY29tcGF0LmM6Mjc0Olx0XHRcdFx0bW9kbmFtZSA9IFwmIzM0O25mX2xvZ19zeXNsb2dcJiMzNDs7XG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzUtXHRcdFx0ZWxzZSBpZiAoc3RyY21wKHRhcmdldC1cdTAwM2VuYW1lLCBcJiMzNDtORkxPR1wmIzM0OykgPT0gMClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9sb2cuYz03NT1zdGF0aWMgaW50IG5mdF9sb2dfbW9kcHJvYmUoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mX2xvZ190eXBlIHQpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbG9nLmMtNzgtXHRjYXNlIE5GX0xPR19UWVBFX0xPRzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jOjc5Olx0XHRyZXR1cm4gbmZ0X3JlcXVlc3RfbW9kdWxlKG5ldCwgXCYjMzQ7JXNcJiMzNDssIFwmIzM0O25mX2xvZ19zeXNsb2dcJiMzNDspO1xubmV0L25ldGZpbHRlci9uZnRfbG9nLmMtODAtXHRjYXNlIE5GX0xPR19UWVBFX1VMT0c6XG4tLVxubmV0L25ldGZpbHRlci94dF9MT0cuYz00ND1zdGF0aWMgaW50IGxvZ190Z19jaGVjayhjb25zdCBzdHJ1Y3QgeHRfdGdjaGtfcGFyYW0gKnBhcilcbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X0xPRy5jLTYzLVx0aWYgKHJldCAhPSAwIFx1MDAyNlx1MDAyNiAhcGFyLVx1MDAzZW5mdF9jb21wYXQpIHtcbm5ldC9uZXRmaWx0ZXIveHRfTE9HLmM6NjQ6XHRcdHJlcXVlc3RfbW9kdWxlKFwmIzM0OyVzXCYjMzQ7LCBcJiMzNDtuZl9sb2dfc3lzbG9nXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIveHRfTE9HLmMtNjUtXG4tLVxubmV0L25ldGZpbHRlci94dF9MT0cuYz0xMTg9TU9EVUxFX0FMSUFTKFwmIzM0O2lwNnRfTE9HXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIveHRfTE9HLmM6MTE5Ok1PRFVMRV9TT0ZUREVQKFwmIzM0O3ByZTogbmZfbG9nX3N5c2xvZ1wmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci94dF9UUkFDRS5jPTY4PW1vZHVsZV9leGl0KHRyYWNlX3RnX2V4aXQpO1xubmV0L25ldGZpbHRlci94dF9UUkFDRS5jOjY5Ok1PRFVMRV9TT0ZUREVQKFwmIzM0O3ByZTogbmZfbG9nX3N5c2xvZ1wmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQzOAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBuZm5ldGxpbmtfbG9nLmMgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbmZuZXRsaW5rX2xvZy5jYCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGlzIHNwZWNpZmljIHNvdXJjZSBjb2RlIGZpbGUsIGJlY2F1c2UgYmFzZWQgb24gdGhlIHByb2JsZW0gSSYjMzk7bSBpbnZlc3RpZ2F0aW5nLCB0aGlzIGFyZWEgaXMgbGlrZWx5IHRvIGJlIHJlbGV2YW50LiBNeSBleHBlcnRpc2Ugc3VnZ2VzdHMgdGhhdCB0aGUga2VybmVsJiMzOTtzIG5ldGZpbHRlciBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gaXMgbWFuYWdlZCBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBsb2dnaW5nIG9wdGlvbnMgYXJlIHNldCwgaG93IHRoZSBtZXNzYWdlcyBhcmUgZm9ybWF0dGVkLCBhbmQgaG93IHRoZSBsb2dnaW5nIG1lY2hhbmlzbSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yay4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBmdW5jdGlvbiBjYWxscywgYW5kIGFueSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciwgbW9yZSBjcml0aWNhbGx5LCBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBsb2dnaW5nIGJlaGF2aW91ci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZm5ldGxpbmtfbG9nJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTk5Mj1jb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORkxPR1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05OTctXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIE5GTE9HIHRhcmdldCwgd2hpY2ggYWxsb3dzIHRvIExPR1xubmV0L25ldGZpbHRlci9LY29uZmlnOjk5ODpcdCAgbWVzc2FnZXMgdGhyb3VnaCBuZm5ldGxpbmtfbG9nLlxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5OS1cbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTI4PW9iai0kKENPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRSkgJiM0Mzs9IG5mbmV0bGlua19xdWV1ZS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0cpICYjNDM7PSBuZm5ldGxpbmtfbG9nLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMzAtb2JqLSQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX09TRikgJiM0Mzs9IG5mbmV0bGlua19vc2Yub1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTI1LSNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaFx1MDAzZVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MjY6I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuaFx1MDAzZVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMjctI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaFx1MDAzZVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jPTQ3ND1fX2J1aWxkX3BhY2tldF9tZXNzYWdlKHN0cnVjdCBuZm5sX2xvZ19uZXQgKmxvZyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy02ODUtbmxhX3B1dF9mYWlsdXJlOlxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6Njg2Olx0UFJJTlRSKEtFUk5fRVJSIFwmIzM0O25mbmV0bGlua19sb2c6IGVycm9yIGNyZWF0aW5nIGxvZyBubG1zZ1xcblwmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy02ODctXHRyZXR1cm4gLTE7XG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM9ODkzPXN0YXRpYyBzdHJ1Y3QgbmZfbG9nZ2VyIG5mdWxubF9sb2dnZXIgX19yZWFkX21vc3RseSA9IHtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jOjg5NDpcdC5uYW1lXHQ9IFwmIzM0O25mbmV0bGlua19sb2dcJiMzNDssXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy04OTUtXHQudHlwZVx0PSBORl9MT0dfVFlQRV9VTE9HLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jPTExNDU9c3RhdGljIGludCBfX25ldF9pbml0IG5mbmxfbG9nX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMTU5LSNpZmRlZiBDT05GSUdfUFJPQ19GU1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTE2MDpcdHByb2MgPSBwcm9jX2NyZWF0ZV9uZXQoXCYjMzQ7bmZuZXRsaW5rX2xvZ1wmIzM0OywgMDQ0MCwgbmV0LVx1MDAzZW5mLnByb2NfbmV0ZmlsdGVyLFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMTE2MS1cdFx0XHRcdTAwMjZuZnVsX3NlcV9vcHMsIHNpemVvZihzdHJ1Y3QgaXRlcl9zdGF0ZSkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jPTExNzM9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExNzUtI2lmZGVmIENPTkZJR19QUk9DX0ZTXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYzoxMTc2Olx0cmVtb3ZlX3Byb2NfZW50cnkoXCYjMzQ7bmZuZXRsaW5rX2xvZ1wmIzM0OywgbmV0LVx1MDAzZW5mLnByb2NfbmV0ZmlsdGVyKTtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExNzctI2VuZGlmXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM9MTE5MD1zdGF0aWMgc3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIG5mbmxfbG9nX25ldF9vcHMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMTE5Ny1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jOjExOTg6c3RhdGljIGludCBfX2luaXQgbmZuZXRsaW5rX2xvZ19pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMTk5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMjMxLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTIzMjpzdGF0aWMgdm9pZCBfX2V4aXQgbmZuZXRsaW5rX2xvZ19maW5pKHZvaWQpXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMjMzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz0xMjQ4PU1PRFVMRV9BTElBU19ORl9MT0dHRVIoNSwgMSk7IC8qIE5GUFJPVE9fTkVUREVWICovXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMjQ5LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTI1MDptb2R1bGVfaW5pdChuZm5ldGxpbmtfbG9nX2luaXQpO1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTI1MTptb2R1bGVfZXhpdChuZm5ldGxpbmtfbG9nX2ZpbmkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2NvbXBhdC5jPTI0ND1uZnRfdGFyZ2V0X2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2NvbXBhdC5jLTI3NS1cdFx0XHRlbHNlIGlmIChzdHJjbXAodGFyZ2V0LVx1MDAzZW5hbWUsIFwmIzM0O05GTE9HXCYjMzQ7KSA9PSAwKVxubmV0L25ldGZpbHRlci9uZnRfY29tcGF0LmM6Mjc2Olx0XHRcdFx0bW9kbmFtZSA9IFwmIzM0O25mbmV0bGlua19sb2dcJiMzNDs7XG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzctXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbG9nLmM9NzU9c3RhdGljIGludCBuZnRfbG9nX21vZHByb2JlKHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZl9sb2dfdHlwZSB0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jLTgwLVx0Y2FzZSBORl9MT0dfVFlQRV9VTE9HOlxubmV0L25ldGZpbHRlci9uZnRfbG9nLmM6ODE6XHRcdHJldHVybiBuZnRfcmVxdWVzdF9tb2R1bGUobmV0LCBcJiMzNDslc1wmIzM0OywgXCYjMzQ7bmZuZXRsaW5rX2xvZ1wmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL25mdF9sb2cuYy04Mi1cdGNhc2UgTkZfTE9HX1RZUEVfTUFYOlxuLS1cbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYz00Mj1zdGF0aWMgaW50IG5mbG9nX3RnX2NoZWNrKGNvbnN0IHN0cnVjdCB4dF90Z2Noa19wYXJhbSAqcGFyKVxuLS1cbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYy01My1cdGlmIChyZXQgIT0gMCBcdTAwMjZcdTAwMjYgIXBhci1cdTAwM2VuZnRfY29tcGF0KSB7XG5uZXQvbmV0ZmlsdGVyL3h0X05GTE9HLmM6NTQ6XHRcdHJlcXVlc3RfbW9kdWxlKFwmIzM0OyVzXCYjMzQ7LCBcJiMzNDtuZm5ldGxpbmtfbG9nXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYy01NS1cbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X05GTE9HLmM9MTAzPW1vZHVsZV9leGl0KG5mbG9nX3RnX2V4aXQpO1xubmV0L25ldGZpbHRlci94dF9ORkxPRy5jOjEwNDpNT0RVTEVfU09GVERFUChcJiMzNDtwcmU6IG5mbmV0bGlua19sb2dcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIE5ldGZpbHRlciBMb2dnaW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBDT05GSUdfTkZfTE9HX1NZU0xPR2AgYW5kIGBDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HYC4gVGhlc2UgbG9vayBsaWtlIGNvcmUgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBuZXRmaWx0ZXIgbG9nZ2luZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIHNvdXJjZS4gVGhlIG5hdHVyYWwgc3RhcnRpbmcgcG9pbnQgaXMgYWx3YXlzIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUsIHNvIEkmIzM5O2xsIGRpdmUgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBzZWUgaG93IHRob3NlIG9wdGlvbnMgYXJlIGRlZmluZWQsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24uIFRoYXQgZmlsZSB3aWxsIHRlbGwgbWUgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgbmV0ZmlsdGVyIHN1YnN5c3RlbSwgYW5kIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlaGF2ZS4gVGhpcyBpcyB3aGVyZSBJIGNhbiBnZXQgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbWF0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9MT0dfU1lTTE9HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTgyPWNvbmZpZyBORl9DT05OVFJBQ0tcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTg6Y29uZmlnIE5GX0xPR19TWVNMT0dcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05OS1cdHRyaXN0YXRlIFwmIzM0O1N5c2xvZyBwYWNrZXQgbG9nZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBOZXRmaWx0ZXIgTG9nZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgbmV0ZmlsdGVyIGxvZ2dpbmcsIHNwZWNpZmljYWxseSBgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPR2AsIGlzIGRlZmluZWQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG5ldGZpbHRlciBjb25maWd1cmF0aW9uLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgdGhlIEtjb25maWcgZmlsZXMgYXJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZXNlIGJ1aWxkLXRpbWUgb3B0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgYSByZWZlcmVuY2UgdG8gd2hlcmUgaXQgKmlzKiBkZWZpbmVkLiBUaW1lIHRvIGdvIGRpZ2dpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NTQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTYxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjYyOmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0dcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NTQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTmV0IE5hbWVzcGFjZSBUZWFyZG93biBMb2dpYyoqCgpPa2F5LCBteSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBmdW5jdGlvbnM6IGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGAsIGBuZm5sX2xvZ19uZXRfcHJlX2V4aXRgLCBhbmQgYG5mbmxfbG9nX25ldF9leGl0YC4gV2FpdCBhIHNlY29uZOKApiB0aGVzZSBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgIGFuZCBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCBmdW5jdGlvbnMgYXJlICpzdGF0aWMqIGFuZCBhc3NpZ25lZCB0byBhIGBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnNgLiBUaGV5JiMzOTtyZSBjYWxsZWQgZHVyaW5nIGEgbmV0IG5hbWVzcGFjZSBleGl0ISBEZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmc7IGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gbmV0IG5hbWVzcGFjZSB0ZWFyZG93biBhcmUgcHJhY3RpY2FsbHkgYnVnIG1hZ25ldHMsIGVzcGVjaWFsbHkgdGhvc2UgbmFzdHkgdXNlLWFmdGVyLWZyZWUgaXNzdWVzLgoKSG1tLCB0aGlzIHBhdGNoIGlzIHNpbXBseSByZW5hbWluZyBgbmZfbG9nX3N5c2xvZ19uZXRfZXhpdGAgdG8gYG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0YCBhbmQgcmUtYXNzaWduaW5nIGl0IHRvIGAucHJlX2V4aXRgIGluc3RlYWQgb2YgYC5leGl0YC4gQW5kIGluIGBuZm5ldGxpbmtfbG9nLmNgLCB0aGUgZXhpdCBmdW5jdGlvbiBpcyBiZWluZyBzcGxpdCBpbnRvIGBwcmVfZXhpdGAgYW5kIGBleGl0YC4gVGhlIGV4ZWN1dGlvbiBvcmRlciBkdXJpbmcgbmV0IG5hbWVzcGFjZSB0ZWFyZG93biBpcyBjaGFuZ2luZzsgYHByZV9leGl0YCBjb21lcyAqYmVmb3JlKiBgZXhpdGAuIFRoaXMgaXMgYSBjbGFzc2ljIGV4YW1wbGUgb2YgYSBjaGFuZ2UgdGhhdCBjb3VsZCBleHBvc2UgYSBsYXRlbnQgYnVnLCBvciBldmVuIGludHJvZHVjZSBhIGJyYW5kIG5ldyBvbmUuIERlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydCB0byBmdXp6IGl0LgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMsIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSByaWdodCBzZXR1cC4gSSYjMzk7bSBnb2luZyB0byBuZWVkIGBDT05GSUdfTkZfTE9HX1NZU0xPR2AsIGBDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HYCwgYW5kIGBDT05GSUdfTkVUX05TYC4gVGhlIGxhc3Qgb25lIGlzIHVzdWFsbHkgZGVmYXVsdCwgYnV0IGdvb2QgdG8gZG91YmxlLWNoZWNrLiBUaW1lIHRvIHF1aWNrbHkgZGlnIGludG8gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyB3aXRoIGBORl9MT0dfU1lTTE9HYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0xPR19TWVNMT0cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTgyPWNvbmZpZyBORl9DT05OVFJBQ0tcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTg6Y29uZmlnIE5GX0xPR19TWVNMT0dcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05OS1cdHRyaXN0YXRlIFwmIzM0O1N5c2xvZyBwYWNrZXQgbG9nZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzIxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwmIzM5O3MgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHBhcnRpY3VsYXIgZmVhdHVyZSBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUgTmV0ZmlsdGVyIHN1YnN5c3RlbS4gVG8gZG8gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSBkaXJlY3RseSB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlcjogYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIEkga25vdyB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBwcmV0dHkgd2VsbCwgc28gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBgS2NvbmZpZ2AgZmlsZSB0byBob2xkIGFsbCB0aGUgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVzY3JpcHRpb25zIHJlbGF0ZWQgdG8gTmV0ZmlsdGVyJiMzOTtzIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIHBpbnBvaW50IGFyb3VuZCBsaW5lIDk4IOKAkyB1c3VhbGx5LCB0aGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSB3ZWxsLXN0cnVjdHVyZWQsIHNvIEkmIzM5O20gaG9waW5nIHRoYXQgcGFydGljdWxhciByZWdpb24gd2lsbCBnaXZlIG1lIHRoZSBpbnNpZ2h0cyBJJiMzOTttIGxvb2tpbmcgZm9yIHJlZ2FyZGluZyB0aGlzIHNwZWNpZmljIE5ldGZpbHRlciBhc3BlY3QgSSYjMzk7bSB3b3JraW5nIG9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTA6XHRcdCAgaW50byBjb25uZWN0aW9ucy5cbiAgOTE6XHRcbiAgOTI6XHRcdCAgVGhpcyBpcyByZXF1aXJlZCB0byBkbyBNYXNxdWVyYWRpbmcgb3Igb3RoZXIga2luZHMgb2YgTmV0d29ya1xuICA5MzpcdFx0ICBBZGRyZXNzIFRyYW5zbGF0aW9uLiAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBlbmhhbmNlIHBhY2tldFxuICA5NDpcdFx0ICBmaWx0ZXJpbmcgKHNlZSBgQ29ubmVjdGlvbiBzdGF0ZSBtYXRjaCBzdXBwb3J0JiMzOTsgYmVsb3cpLlxuICA5NTpcdFxuICA5NjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgOTc6XHRcbiAgOTg6XHRjb25maWcgTkZfTE9HX1NZU0xPR1xuICA5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7U3lzbG9nIHBhY2tldCBsb2dnaW5nXCYjMzQ7XG4gMTAwOlx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAxMDE6XHRcdGhlbHBcbiAxMDI6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlIHN1cHBvcnQgZm9yIHBhY2tldCBsb2dnaW5nIHZpYSBzeXNsb2cuXG4gMTAzOlx0XHQgIEl0IHN1cHBvcnRzIElQdjQsIElQVjYsIEFSUCBhbmQgY29tbW9uIHRyYW5zcG9ydCBwcm90b2NvbHMgc3VjaFxuIDEwNDpcdFx0ICBhcyBUQ1AgYW5kIFVEUC5cbiAxMDU6XHRcdCAgVGhpcyBpcyBhIHNpbXBsZXIgYnV0IGxlc3MgZmxleGlibGUgbG9nZ2luZyBtZXRob2QgY29tcGFyZWQgdG9cbiAxMDY6XHRcdCAgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPRy5cbiAxMDc6XHRcdCAgSWYgYm90aCBhcmUgZW5hYmxlZCB0aGUgYmFja2VuZCB0byB1c2UgY2FuIGJlIGNvbmZpZ3VyZWQgYXQgcnVuLXRpbWVcbiAxMDg6XHRcdCAgYnkgbWVhbnMgb2YgcGVyLWFkZHJlc3MtZmFtaWx5IHN5c2N0bCB0dW5hYmxlcy5cbiAxMDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI3NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBhcm91bmQgbGluZSA2Mi4gSSYjMzk7bSBndWVzc2luZyB0aGF0IHNwZWNpZmljIHNlY3Rpb24gd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIFsqKmluc2VydCB5b3VyIGRvbWFpbiYjMzk7cyBzcGVjaWZpYyB0b3BpYyB0aGF0IHJlbGF0ZXMgdG8gdGhlIEtjb25maWcgZmlsZSBoZXJlLCBlLmcuLCBob3cgYSBwYXJ0aWN1bGFyIE5ldGZpbHRlciBtb2R1bGUgaXMgY29uZmlndXJlZCwgYSBzcGVjaWZpYyBvcHRpb24mIzM5O3MgZGVwZW5kZW5jaWVzLCB0aGUgaW50ZXJwbGF5IG9mIGRpZmZlcmVudCBmaWx0ZXJpbmcgbWVjaGFuaXNtcywgb3IgaG93IHRoaXMgS2NvbmZpZyBmaWxlIGludGVyZmFjZXMgd2l0aCBvdGhlciByZWxhdGVkIG9uZXMqKl0uIEkgbmVlZCB0byBnZXQgYSBncmFudWxhciB2aWV3IG9mIFsqKnNwZWNpZmljIGRldGFpbHMgeW91IGV4cGVjdCB0byBmaW5kLCBlLmcuLCB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcywgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbnkgcmVsZXZhbnQgZGVmYXVsdHMsIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0aW5nIG9wdGlvbnMuKipdLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgWyoqd2hhdCB5b3Ugd2FudCB0byBnbGVhbiBmcm9tIHRoaXMgbGluZSBvZiBjb2RlIGUuZy4sIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZmxhZ3MuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGludGVycmVsYXRlIGFuZCBkZXBlbmQgb24gZWFjaCBvdGhlci4qKl0gRXNzZW50aWFsbHksIEkmIzM5O20gZXhwZWN0aW5nIHRvIGVpdGhlcjogWyoqZGVzY3JpYmUgYSBsaWtlbHkgc2NlbmFyaW8geW91IGFyZSBpbnZlc3RpZ2F0aW5nLioqXS4gVGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscywgYW5kIGNyb3NzLXJlZmVyZW5jZSB3aXRoIHJlbGF0ZWQgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBpZiBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFx0aGVscFxuICA1MTpcdFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XG4gIDUyOlx0XHQgIGZvciBleHRlbmRlZCBhY2NvdW50aW5nIHZpYSBORk5FVExJTksuXG4gIDUzOlx0XG4gIDU0Olx0Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXG4gIDU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcJiMzNDtcbiAgNTY6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gIDU3Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiAgNTg6XHRcdGhlbHBcbiAgNTk6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxuICA2MDpcdFx0ICBmb3IgcXVldWVpbmcgcGFja2V0cyB2aWEgTkZORVRMSU5LLlxuICA2MTpcdFxuICA2MjpcdGNvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0dcbiAgNjM6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4gIDY0Olx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAgNjU6XHRcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuICA2NjpcdFx0aGVscFxuICA2NzpcdFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XG4gIDY4Olx0XHQgIGZvciBsb2dnaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cbiAgNjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg1OAoJCQkJCQkJb3V0cHV0OiAxODUKCQkJCQkJCXRob3VnaHRzOiAxMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQW5hbHlzaXM6IE5ldHdvcmsgTmFtZXNwYWNlIFRlYXJkb3duIGZvciBuZXRmaWx0ZXIgTG9nZ2luZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZDogYE5GX0xPR19TWVNMT0dgIGFuZCBgTkVURklMVEVSX05FVExJTktfTE9HYC4gSGFuZyBvbiwgYE5FVEZJTFRFUl9ORVRMSU5LX0xPR2Agc2VsZWN0cyBgTkVURklMVEVSX05FVExJTktgLCB0aGF0JiMzOTtzIGdvb2QgdG8gbm90ZS4gV2UgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGBDT05GSUdfTkVUX05TYCwgYXMgaXQmIzM5O3MgdHlwaWNhbGx5IGVuYWJsZWQgaW4gZnV6emluZyBlbnZpcm9ubWVudHMuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lIGFyZSBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgLCBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCwgYW5kIGBuZm5sX2xvZ19uZXRfZXhpdGAuIEkgaW5pdGlhbGx5IHRob3VnaHQgdGhlc2Ugd2VyZSBzdGF0aWMgZnVuY3Rpb25zLCB3aGljaCBJIHNob3VsZCBiZSB3YXJ5IG9mIGJhc2VkIG9uIHRoZSBpbnN0cnVjdGlvbnMgdGhhdCBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBIb3dldmVyLCB0aGVzZSBhcmVuJiMzOTt0IGlubGluZWQgYmVjYXVzZSB0aGV5IGFyZSBhc3NpZ25lZCB0byBgc3RydWN0IHBlcm5ldF9vcGVyYXRpb25zYCBmdW5jdGlvbiBwb2ludGVycy4gVGhpcyBtZWFucyB0aGV5ICphcmUqIGNhbGxlZCB2aWEgZnVuY3Rpb24gcG9pbnRlcnMgYnkgdGhlIG5ldCBuYW1lc3BhY2UgY29yZSwgZ2l2aW5nIHRoZW0gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBhbmQgbWFraW5nIHRoZW0gZ29vZCBjYW5kaWRhdGVzIGZvciBzY3J1dGlueS4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjayBmb3Igb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zLiBMb29raW5nIGF0IHRoZSBjb2RlOgoKKiAgIEluIGBuZl9sb2dfc3lzbG9nLmNgLCBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgIGlzIG1vZGlmeWluZyB0aGUgY2xlYW51cCBwcm9jZXNzLgoqICAgSW4gYG5mbmV0bGlua19sb2cuY2AsIGBuZm5sX2xvZ19uZXRfcHJlX2V4aXRgIGFuZCBgbmZubF9sb2dfbmV0X2V4aXRgIGFyZSBiZWluZyBtb2RpZmllZC4KClllcCwgdGhvc2UgYXJlIHRoZSBvbmx5IG9uZXMuIFRoZSBmYWN0IHRoZXkgYXJlIHBhcnQgb2YgYHBlcm5ldF9vcGVyYXRpb25zYCBhbmQgYWNjZXNzZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXJzIHN0cmVuZ3RoZW5zIHRoZWlyIHJlbGV2YW5jZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIHRoYXQgdGhleSBjYWxsLiBIbW0uLi4gYG5mX2xvZ191bnNldGAgaXMgY2FsbGVkIHdpdGhpbiB0aGVtLCBidXQgdGhhdCYjMzk7cyBub3QgYmVpbmcgbW9kaWZpZWQuIEkmIzM5O2xsIGFkZCBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgLCBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCwgYW5kIGBuZm5sX2xvZ19uZXRfZXhpdGAgdG8gYEZvY3VzU3ltYm9sc2AuCgpOb3csIGZvciBjb25maWd1cmF0aW9ucy4gV2UgaGF2ZSBgQ09ORklHX05FVEZJTFRFUmAsIHdoaWNoIGlzIGEgYmFzZSBjb25maWcsIGFuZCB0aGVuIGBORl9MT0dfU1lTTE9HYCBhbmQgYE5FVEZJTFRFUl9ORVRMSU5LX0xPR2AuIEFueSBkZXBlbmRlbmNpZXM/IEFoLCBgTkVURklMVEVSX05FVExJTktfTE9HYCBkZXBlbmRzIG9uICh3ZWxsLCBzZWxlY3RzKSBgTkVURklMVEVSX05FVExJTktgLiBgTkZfTE9HX1NZU0xPR2AgaGFzIG5vIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGFzaWRlIGZyb20gYE5FVEZJTFRFUl9BRFZBTkNFRD1uYCBhcyBkZWZhdWx0LiBHb29kLCBzbyBgTkZfTE9HX1NZU0xPR2AgYW5kIGBORVRGSUxURVJfTkVUTElOS19MT0dgIGlzIHdoYXQgSSYjMzk7bGwgaW5jbHVkZS4gU2hvdWxkIEkgZW5hYmxlIGBDT05GSUdfTkVUX05TYD8gWWVzLCBJJiMzOTtsbCBpbmNsdWRlIGl0IGJlY2F1c2UgaXQmIzM5O3MgdXN1YWxseSBvbiBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4KCkxldCYjMzk7cyByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4gVGhlIGNyaXRlcmlvbiBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgYmFzZWQgb24gZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBob3QtdW5wbHVnIG9yIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4gVGhpcyBpcyAqbm90KiB0aGF0IHNpdHVhdGlvbi4gVGhpcyBpcyBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93bi4gTmV0d29yayBuYW1lc3BhY2VzIGFyZSByZWd1bGFybHkgY3JlYXRlZCBhbmQgZGVzdHJveWVkIGR1cmluZyBmdXp6aW5nLCBhbmQgcHJvYmxlbXMgaW4gdGhlaXIgdGVhcmRvd24gYXJlIHByaW1lIGJ1ZyBzb3VyY2VzLiBTbywgYFdvcnRoRnV6emluZz10cnVlYC4KCkhlcmUmIzM5O3MgbXkgcmVhc29uaW5nOiBUaGUgcGF0Y2ggaXMgYWx0ZXJpbmcgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duIGZvciBgbmZfbG9nX3N5c2xvZ2AgYW5kIGBuZm5ldGxpbmtfbG9nYCBieSByZW9yZ2FuaXppbmcgY2xlYW51cCBjb2RlLiBUaGF0IGlzLCBtb3ZpbmcgY29kZSBmcm9tIGAuZXhpdGAgdG8gYC5wcmVfZXhpdGAuIFRoaXMgY2hhbmdlcyB0aGUgKmV4ZWN1dGlvbiBvcmRlciogZHVyaW5nIG5ldCBuYW1lc3BhY2UgZGVzdHJ1Y3Rpb24uIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGNhbiB0cmlnZ2VyIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIE5ldHdvcmsgbmFtZXNwYWNlcyBhcmUgY29tbW9ubHkgZnV6emVkLCBtYWtpbmcgdGhpcyBjaGFuZ2UgdmVyeSBpbXBvcnRhbnQuCgoqKkhlcmUmIzM5O3MgdGhlIGRhdGEgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzOioqCgoqICAgKipgRm9jdXNTeW1ib2xzYCoqOgogICAgKiAgIGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGAKICAgICogICBgbmZubF9sb2dfbmV0X3ByZV9leGl0YAogICAgKiAgIGBuZm5sX2xvZ19uZXRfZXhpdGAKKiAgICoqYEVuYWJsZUNvbmZpZ3NgKio6CiAgICAqICAgYE5GX0xPR19TWVNMT0dgCiAgICAqICAgYE5FVEZJTFRFUl9ORVRMSU5LX0xPR2AKICAgIApOb3csIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9MT0dfU1lTTE9HJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9ORVRMSU5LX0xPRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0JiMzNDssCiAgICAmIzM0O25mbmxfbG9nX25ldF9wcmVfZXhpdCYjMzQ7LAogICAgJiMzNDtuZm5sX2xvZ19uZXRfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gbG9naWMgZm9yIG5mX2xvZ19zeXNsb2cgYW5kIG5mbmV0bGlua19sb2cgYnkgbW92aW5nIGNsZWFudXAgY29kZSBmcm9tIHRoZSAuZXhpdCBjYWxsYmFjayB0byB0aGUgLnByZV9leGl0IGNhbGxiYWNrIGluIHRoZWlyIHBlcm5ldF9vcGVyYXRpb25zIHN0cnVjdHVyZXMuIFRoaXMgY2hhbmdlcyB0aGUgZXhlY3V0aW9uIG9yZGVyIGR1cmluZyBuZXQgbmFtZXNwYWNlIGRlc3RydWN0aW9uLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGFmZmVjdCBvYmplY3QgbGlmZXRpbWVzIGFuZCBwcmV2ZW50IG9yIGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUuIE5ldHdvcmsgbmFtZXNwYWNlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBhcmUgaGVhdmlseSBleGVyY2lzZWQgZHVyaW5nIGZ1enppbmcsIG1ha2luZyB0aGlzIGhpZ2hseSByZWxldmFudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfTE9HX1NZU0xPRyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfTkVUTElOS19MT0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdCYjMzQ7LAogICAgJiMzNDtuZm5sX2xvZ19uZXRfcHJlX2V4aXQmIzM0OywKICAgICYjMzQ7bmZubF9sb2dfbmV0X2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duIGxvZ2ljIGZvciBuZl9sb2dfc3lzbG9nIGFuZCBuZm5ldGxpbmtfbG9nIGJ5IG1vdmluZyBjbGVhbnVwIGNvZGUgZnJvbSB0aGUgLmV4aXQgY2FsbGJhY2sgdG8gdGhlIC5wcmVfZXhpdCBjYWxsYmFjayBpbiB0aGVpciBwZXJuZXRfb3BlcmF0aW9ucyBzdHJ1Y3R1cmVzLiBUaGlzIGNoYW5nZXMgdGhlIGV4ZWN1dGlvbiBvcmRlciBkdXJpbmcgbmV0IG5hbWVzcGFjZSBkZXN0cnVjdGlvbiwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBhZmZlY3Qgb2JqZWN0IGxpZmV0aW1lcyBhbmQgcHJldmVudCBvciBpbnRyb2R1Y2UgYnVncyBsaWtlIHVzZS1hZnRlci1mcmVlLiBOZXR3b3JrIG5hbWVzcGFjZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gYXJlIGhlYXZpbHkgZXhlcmNpc2VkIGR1cmluZyBmdXp6aW5nLCBtYWtpbmcgdGhpcyBoaWdobHkgcmVsZXZhbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMDo0Mi44NDczMDA5NDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODkxNjYyNjAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9MT0dfU1lTTE9HXCIsXG4gICAgXCJORVRGSUxURVJfTkVUTElOS19MT0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdFwiLFxuICAgIFwibmZubF9sb2dfbmV0X3ByZV9leGl0XCIsXG4gICAgXCJuZm5sX2xvZ19uZXRfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBsb2dpYyBmb3IgbmZfbG9nX3N5c2xvZyBhbmQgbmZuZXRsaW5rX2xvZyBieSBtb3ZpbmcgY2xlYW51cCBjb2RlIGZyb20gdGhlIC5leGl0IGNhbGxiYWNrIHRvIHRoZSAucHJlX2V4aXQgY2FsbGJhY2sgaW4gdGhlaXIgcGVybmV0X29wZXJhdGlvbnMgc3RydWN0dXJlcy4gVGhpcyBjaGFuZ2VzIHRoZSBleGVjdXRpb24gb3JkZXIgZHVyaW5nIG5ldCBuYW1lc3BhY2UgZGVzdHJ1Y3Rpb24sIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYWZmZWN0IG9iamVjdCBsaWZldGltZXMgYW5kIHByZXZlbnQgb3IgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZS4gTmV0d29yayBuYW1lc3BhY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIGFyZSBoZWF2aWx5IGV4ZXJjaXNlZCBkdXJpbmcgZnV6emluZywgbWFraW5nIHRoaXMgaGlnaGx5IHJlbGV2YW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMDo0Mi44NDczMDcxMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNjQwNDM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVmYjllODlkNWJmMmJmY2IzYTI2YTMxNWNlZmIxZTE3YmVjMTM0MjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwOToxMDo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jXFxuaW5kZXggZTM3YjA5YjMyMDNiNy4uNWZmZGUyN2Q0NTBhNyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jXFxuQEAgLTEwMTQsNyArMTAxNCw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBuZl9sb2dfc3lzbG9nX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl9sb2dfc3lzbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4rc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxuIHtcXG4gXFx0bmZfbG9nX3Vuc2V0KG5ldCwgXFx1MDAyNm5mX2lwX2xvZ2dlcik7XFxuIFxcdG5mX2xvZ191bnNldChuZXQsIFxcdTAwMjZuZl9hcnBfbG9nZ2VyKTtcXG5AQCAtMTAyNSw3ICsxMDI1LDcgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl9sb2dfc3lzbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZfbG9nX3N5c2xvZ19uZXRfb3BzID0ge1xcbiBcXHQuaW5pdCA9IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQsXFxuLVxcdC5leGl0ID0gbmZfbG9nX3N5c2xvZ19uZXRfZXhpdCxcXG4rXFx0LnByZV9leGl0ID0gbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXQsXFxuIH07XFxuIFxcbiBzdGF0aWMgaW50IF9faW5pdCBuZl9sb2dfc3lzbG9nX2luaXQodm9pZClcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuY1xcbmluZGV4IDVmZWU2MWIzODEzY2IuLjZjN2ZhMmVkMzRmNWMgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuY1xcbkBAIC0xMTcwLDIxICsxMTcwLDI2IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBuZm5sX2xvZ19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mbmxfbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4rc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbiB7XFxuLVxcdHN0cnVjdCBuZm5sX2xvZ19uZXQgKmxvZyA9IG5mbmxfbG9nX3Blcm5ldChuZXQpO1xcbi1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tXFxuICNpZmRlZiBDT05GSUdfUFJPQ19GU1xcbiBcXHRyZW1vdmVfcHJvY19lbnRyeShcXFwibmZuZXRsaW5rX2xvZ1xcXCIsIG5ldC1cXHUwMDNlbmYucHJvY19uZXRmaWx0ZXIpO1xcbiAjZW5kaWZcXG4gXFx0bmZfbG9nX3Vuc2V0KG5ldCwgXFx1MDAyNm5mdWxubF9sb2dnZXIpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mbmxfbG9nX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4re1xcbitcXHRzdHJ1Y3QgbmZubF9sb2dfbmV0ICpsb2cgPSBuZm5sX2xvZ19wZXJuZXQobmV0KTtcXG4rXFx0dW5zaWduZWQgaW50IGk7XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSU5TVEFOQ0VfQlVDS0VUUzsgaSsrKVxcbiBcXHRcXHRXQVJOX09OX09OQ0UoIWhsaXN0X2VtcHR5KFxcdTAwMjZsb2ctXFx1MDAzZWluc3RhbmNlX3RhYmxlW2ldKSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZubF9sb2dfbmV0X29wcyA9IHtcXG4gXFx0LmluaXRcXHQ9IG5mbmxfbG9nX25ldF9pbml0LFxcbitcXHQucHJlX2V4aXQgPSBuZm5sX2xvZ19uZXRfcHJlX2V4aXQsXFxuIFxcdC5leGl0XFx0PSBuZm5sX2xvZ19uZXRfZXhpdCxcXG4gXFx0LmlkXFx0PSBcXHUwMDI2bmZubF9sb2dfbmV0X2lkLFxcbiBcXHQuc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBuZm5sX2xvZ19uZXQpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMDo0My4zNjQ1NTA0NTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0ODM5OTM2MzgyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9MT0dfU1lTTE9HXCIsXG4gICAgXCJORVRGSUxURVJfTkVUTElOS19MT0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdFwiLFxuICAgIFwibmZubF9sb2dfbmV0X3ByZV9leGl0XCIsXG4gICAgXCJuZm5sX2xvZ19uZXRfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBsb2dpYyBmb3IgbmZfbG9nX3N5c2xvZyBhbmQgbmZuZXRsaW5rX2xvZyBieSBtb3ZpbmcgY2xlYW51cCBjb2RlIGZyb20gdGhlIC5leGl0IGNhbGxiYWNrIHRvIHRoZSAucHJlX2V4aXQgY2FsbGJhY2sgaW4gdGhlaXIgcGVybmV0X29wZXJhdGlvbnMgc3RydWN0dXJlcy4gVGhpcyBjaGFuZ2VzIHRoZSBleGVjdXRpb24gb3JkZXIgZHVyaW5nIG5ldCBuYW1lc3BhY2UgZGVzdHJ1Y3Rpb24sIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYWZmZWN0IG9iamVjdCBsaWZldGltZXMgYW5kIHByZXZlbnQgb3IgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZS4gTmV0d29yayBuYW1lc3BhY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIGFyZSBoZWF2aWx5IGV4ZXJjaXNlZCBkdXJpbmcgZnV6emluZywgbWFraW5nIHRoaXMgaGlnaGx5IHJlbGV2YW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZmI5ZTg5ZDViZjJiZmNiM2EyNmEzMTVjZWZiMWUxN2JlYzEzNDI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwOToxMDo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jIGIvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmNcbmluZGV4IGUzN2IwOWIzMjAzYjcuLjVmZmRlMjdkNDUwYTcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmNcbkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfbG9nX3N5c2xvZ19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuIHtcbiBcdG5mX2xvZ191bnNldChuZXQsIFx1MDAyNm5mX2lwX2xvZ2dlcik7XG4gXHRuZl9sb2dfdW5zZXQobmV0LCBcdTAwMjZuZl9hcnBfbG9nZ2VyKTtcbkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX2xvZ19zeXNsb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZfbG9nX3N5c2xvZ19uZXRfb3BzID0ge1xuIFx0LmluaXQgPSBuZl9sb2dfc3lzbG9nX25ldF9pbml0LFxuLVx0LmV4aXQgPSBuZl9sb2dfc3lzbG9nX25ldF9leGl0LFxuK1x0LnByZV9leGl0ID0gbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXQsXG4gfTtcbiBcbiBzdGF0aWMgaW50IF9faW5pdCBuZl9sb2dfc3lzbG9nX2luaXQodm9pZClcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jXG5pbmRleCA1ZmVlNjFiMzgxM2NiLi42YzdmYTJlZDM0ZjVjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jXG5AQCAtMTE3MCwyMSArMTE3MCwyNiBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZubF9sb2dfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZubF9sb2dfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZubF9sb2dfbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcbiB7XG4tXHRzdHJ1Y3QgbmZubF9sb2dfbmV0ICpsb2cgPSBuZm5sX2xvZ19wZXJuZXQobmV0KTtcbi1cdHVuc2lnbmVkIGludCBpO1xuLVxuICNpZmRlZiBDT05GSUdfUFJPQ19GU1xuIFx0cmVtb3ZlX3Byb2NfZW50cnkoXCJuZm5ldGxpbmtfbG9nXCIsIG5ldC1cdTAwM2VuZi5wcm9jX25ldGZpbHRlcik7XG4gI2VuZGlmXG4gXHRuZl9sb2dfdW5zZXQobmV0LCBcdTAwMjZuZnVsbmxfbG9nZ2VyKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZm5sX2xvZ19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG4re1xuK1x0c3RydWN0IG5mbmxfbG9nX25ldCAqbG9nID0gbmZubF9sb2dfcGVybmV0KG5ldCk7XG4rXHR1bnNpZ25lZCBpbnQgaTtcbitcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIElOU1RBTkNFX0JVQ0tFVFM7IGkrKylcbiBcdFx0V0FSTl9PTl9PTkNFKCFobGlzdF9lbXB0eShcdTAwMjZsb2ctXHUwMDNlaW5zdGFuY2VfdGFibGVbaV0pKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBuZm5sX2xvZ19uZXRfb3BzID0ge1xuIFx0LmluaXRcdD0gbmZubF9sb2dfbmV0X2luaXQsXG4rXHQucHJlX2V4aXQgPSBuZm5sX2xvZ19uZXRfcHJlX2V4aXQsXG4gXHQuZXhpdFx0PSBuZm5sX2xvZ19uZXRfZXhpdCxcbiBcdC5pZFx0PSBcdTAwMjZuZm5sX2xvZ19uZXRfaWQsXG4gXHQuc2l6ZVx0PSBzaXplb2Yoc3RydWN0IG5mbmxfbG9nX25ldCksXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMDo0My4zNjQ1NTE3MTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTM3OTEwMDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoOiBOZXR3b3JrIE5hbWVzcGFjZSBUZWFyZG93biBhbmQgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIGBuZl9sb2dfc3lzbG9nLmNgIGFuZCBgbmZuZXRsaW5rX2xvZy5jYC4gVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIGEgcmVuYW1lIG9mIGBuZl9sb2dfc3lzbG9nX25ldF9leGl0YCB0byBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgLCB3aGljaCBpcyB0aGVuIGFzc2lnbmVkIHRvIHRoZSBgLnByZV9leGl0YCBmaWVsZCB3aXRoaW4gYG5mX2xvZ19zeXNsb2dfbmV0X29wc2AuICBPdmVyIGluIGBuZm5ldGxpbmtfbG9nLmNgLCB0aGV5J3ZlIHNwbGl0IGBuZm5sX2xvZ19uZXRfZXhpdGAgaW50byBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCBhbmQgYG5mbmxfbG9nX25ldF9leGl0YC4gSW1wb3J0YW50bHksIHRoZSBjYWxscyB0byBgcmVtb3ZlX3Byb2NfZW50cnlgIGFuZCBgbmZfbG9nX3Vuc2V0YCBhcmUgbm93IGluIHRoZSAqcHJlKi1leGl0IGZ1bmN0aW9uLCB3aXRoIHRoZSBpbnN0YW5jZSB0YWJsZSBjaGVjayBzdGF5aW5nIGluIHRoZSBvcmlnaW5hbCAqZXhpdCogZnVuY3Rpb24uXG5cbkltbWVkaWF0ZWx5LCBJIHJlY29nbml6ZSB0aGlzIGlzIGFib3V0IG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duLiBOZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBpcyBzb21ldGhpbmcgdGhhdCBpcyAqcmVhY2hhYmxlKiBpbiB0aGUgY29kZSwgYW5kIHRoZXJlZm9yZSwgaXQgaXMgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGZ1enplZC4gIFRoZSBmcmVxdWVudCBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2YgbmV0d29yayBuYW1lc3BhY2VzIGluIHRvb2xzIGxpa2Ugc3l6a2FsbGVyIG1ha2UgdGhpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSG93ZXZlciwgdGhlcmUgaXMgYSBzcGVjaWZpYyBjaGVjayBmcm9tIHRoZSBndWlkZWxpbmVzLiAgSXQgc2F5cyB0byBtYXJrIHBhdGNoZXMgd2l0aCB0ZWFyZG93biBjYWxsYmFja3MsIHN1Y2ggYXMgYC5yZW1vdmVgIG9yIGAuc2h1dGRvd25gIGluIGRyaXZlciBjb2RlLCBhcyBub3Qgd29ydGggZnV6emluZy4gSXQgbWVudGlvbnMgY2FzZXMgc3VjaCBhcyBgaWdiX3JlbW92ZWAsIHNwZWNpZmljYWxseS5cblxuQnV0IHdhaXQgYSBtaW51dGUsIHRoaXMgaXNuJ3QgYSBkcml2ZXIgdW5iaW5kIHNjZW5hcmlvLiBUaGlzIGlzIGEgbmV0d29yayBuYW1lc3BhY2UgZXhpdCBjYWxsYmFjaywgd2hpY2ggaXMgZGlmZmVyZW50LiBOZXR3b3JrIG5hbWVzcGFjZSBleGl0IGlzICpmcmVxdWVudGx5KiBmdXp6ZWQgYmVjYXVzZSwgeW91IGtub3csIGl0J3MgYSBjb21tb24gb3BlcmF0aW9uLCBhbmQgc3lza2FsbGVyIGRvZXMgaXQgYWxsIHRoZSB0aW1lLiAgU28sIHRoZSBxdWVzdGlvbiBpcywgKmlzKiB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/ICBZZXMsIGFic29sdXRlbHkuIFRoZSBuYXR1cmUgb2YgdGVhcmRvd24gcGF0aHMsIGVzcGVjaWFsbHkgaW4gbmV0d29ya2luZyBjb2RlLCBvcGVucyB0aGUgZG9vciB0byB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFuZCBvdGhlciBtZW1vcnktcmVsYXRlZCBpc3N1ZXMuXG5cblNvLCBsZXQncyB6b29tIGluIG9uIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGludHJvZHVjZWQgb3IgbW9kaWZpZWQgYnkgdGhpcyBwYXRjaDogYG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0YCwgYG5mbmxfbG9nX25ldF9wcmVfZXhpdGAsIGFuZCBgbmZubF9sb2dfbmV0X2V4aXRgLiBUaGVzZSBhcmUgbm93IHRoZSBmb2NhbCBwb2ludHMuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gcXVpY2tseSBjaGVjayB0aGUgY29uZmlncyBmb3IgYG5mX2xvZ19zeXNsb2cuY2AgYW5kIGBuZm5ldGxpbmtfbG9nLmNgIHRvIHNlZSBhbnkgcmVsZXZhbnQgYnVpbGQgb3B0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBmdXp6aW5nIGVmZmVjdGl2ZW5lc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MTcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMDo1Mi41MDI0NzAzMjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxMDM4NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfbG9nX3N5c2xvZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTU2PW5mX25hdC15XFx0Oj0gbmZfbmF0X2NvcmUubyBuZl9uYXRfcHJvdG8ubyBuZl9uYXRfaGVscGVyLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTU3LVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX05GX0xPR19TWVNMT0cpICs9IG5mX2xvZ19zeXNsb2cub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNTktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmM9NTYxPW5mX2Nvbm50cmFja19sb2dfaW52YWxpZF9zeXNjdGwoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy01NzItXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jOjU3MzpcXHQvKiBMb2FkIG5mX2xvZ19zeXNsb2cgb25seSBpZiBubyBsb2dnZXIgaXMgY3VycmVudGx5IHJlZ2lzdGVyZWQgKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtNTc0LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBORlBST1RPX05VTVBST1RPOyBpKyspIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy01NzctXFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYzo1Nzg6XFx0cmVxdWVzdF9tb2R1bGUoXFxcIiVzXFxcIiwgXFxcIm5mX2xvZ19zeXNsb2dcXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtNTc5LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM9OTc2PXN0YXRpYyBzdHJ1Y3QgbmZfbG9nZ2VyIG5mX2JyaWRnZV9sb2dnZXIgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTk4Mi1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzo5ODM6c3RhdGljIGludCBfX25ldF9pbml0IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTk4NC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDE2LVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwMTc6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAxOC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDI1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwMjY6c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBuZl9sb2dfc3lzbG9nX25ldF9vcHMgPSB7XFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTAyNzpcXHQuaW5pdCA9IG5mX2xvZ19zeXNsb2dfbmV0X2luaXQsXFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmM6MTAyODpcXHQucHJlX2V4aXQgPSBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDI5LX07XFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAzMC1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDMxOnN0YXRpYyBpbnQgX19pbml0IG5mX2xvZ19zeXNsb2dfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwMzIte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAzNC1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDM1OlxcdHJldCA9IHJlZ2lzdGVyX3Blcm5ldF9zdWJzeXMoXFx1MDAyNm5mX2xvZ19zeXNsb2dfbmV0X29wcyk7XFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTAzNi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwNjktXFx0cHJfZXJyKFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgbG9nZ2VyXFxcXG5cXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDcwOlxcdHVucmVnaXN0ZXJfcGVybmV0X3N1YnN5cyhcXHUwMDI2bmZfbG9nX3N5c2xvZ19uZXRfb3BzKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDcxLVxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDczLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwNzQ6c3RhdGljIHZvaWQgX19leGl0IG5mX2xvZ19zeXNsb2dfZXhpdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwNzUte1xcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwNzY6XFx0dW5yZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFxcdTAwMjZuZl9sb2dfc3lzbG9nX25ldF9vcHMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jLTEwNzctXFx0bmZfbG9nX3VucmVnaXN0ZXIoXFx1MDAyNm5mX2lwX2xvZ2dlcik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYy0xMDgzLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbG9nX3N5c2xvZy5jOjEwODQ6bW9kdWxlX2luaXQobmZfbG9nX3N5c2xvZ19pbml0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2xvZ19zeXNsb2cuYzoxMDg1Om1vZHVsZV9leGl0KG5mX2xvZ19zeXNsb2dfZXhpdCk7XFxubmV0L25ldGZpbHRlci9uZl9sb2dfc3lzbG9nLmMtMTA4Ni1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2NvbXBhdC5jPTI0ND1uZnRfdGFyZ2V0X2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY29tcGF0LmMtMjczLVxcdFxcdFxcdGlmIChzdHJjbXAodGFyZ2V0LVxcdTAwM2VuYW1lLCBcXFwiTE9HXFxcIikgPT0gMClcXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYzoyNzQ6XFx0XFx0XFx0XFx0bW9kbmFtZSA9IFxcXCJuZl9sb2dfc3lzbG9nXFxcIjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzUtXFx0XFx0XFx0ZWxzZSBpZiAoc3RyY21wKHRhcmdldC1cXHUwMDNlbmFtZSwgXFxcIk5GTE9HXFxcIikgPT0gMClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jPTc1PXN0YXRpYyBpbnQgbmZ0X2xvZ19tb2Rwcm9iZShzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZfbG9nX3R5cGUgdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jLTc4LVxcdGNhc2UgTkZfTE9HX1RZUEVfTE9HOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jOjc5OlxcdFxcdHJldHVybiBuZnRfcmVxdWVzdF9tb2R1bGUobmV0LCBcXFwiJXNcXFwiLCBcXFwibmZfbG9nX3N5c2xvZ1xcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2xvZy5jLTgwLVxcdGNhc2UgTkZfTE9HX1RZUEVfVUxPRzpcXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfTE9HLmM9NDQ9c3RhdGljIGludCBsb2dfdGdfY2hlY2soY29uc3Qgc3RydWN0IHh0X3RnY2hrX3BhcmFtICpwYXIpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL3h0X0xPRy5jLTYzLVxcdGlmIChyZXQgIT0gMCBcXHUwMDI2XFx1MDAyNiAhcGFyLVxcdTAwM2VuZnRfY29tcGF0KSB7XFxubmV0L25ldGZpbHRlci94dF9MT0cuYzo2NDpcXHRcXHRyZXF1ZXN0X21vZHVsZShcXFwiJXNcXFwiLCBcXFwibmZfbG9nX3N5c2xvZ1xcXCIpO1xcbm5ldC9uZXRmaWx0ZXIveHRfTE9HLmMtNjUtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL3h0X0xPRy5jPTExOD1NT0RVTEVfQUxJQVMoXFxcImlwNnRfTE9HXFxcIik7XFxubmV0L25ldGZpbHRlci94dF9MT0cuYzoxMTk6TU9EVUxFX1NPRlRERVAoXFxcInByZTogbmZfbG9nX3N5c2xvZ1xcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci94dF9UUkFDRS5jPTY4PW1vZHVsZV9leGl0KHRyYWNlX3RnX2V4aXQpO1xcbm5ldC9uZXRmaWx0ZXIveHRfVFJBQ0UuYzo2OTpNT0RVTEVfU09GVERFUChcXFwicHJlOiBuZl9sb2dfc3lzbG9nXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjEwOjUyLjU2NTU4NzA5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDM4NDAzNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBuZm5ldGxpbmtfbG9nLmMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBuZm5ldGxpbmtfbG9nLmNgIGNvbmZpZ3VyYXRpb25zLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhpcyBzcGVjaWZpYyBzb3VyY2UgY29kZSBmaWxlLCBiZWNhdXNlIGJhc2VkIG9uIHRoZSBwcm9ibGVtIEknbSBpbnZlc3RpZ2F0aW5nLCB0aGlzIGFyZWEgaXMgbGlrZWx5IHRvIGJlIHJlbGV2YW50LiBNeSBleHBlcnRpc2Ugc3VnZ2VzdHMgdGhhdCB0aGUga2VybmVsJ3MgbmV0ZmlsdGVyIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBpcyBtYW5hZ2VkIGhlcmUuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbG9nZ2luZyBvcHRpb25zIGFyZSBzZXQsIGhvdyB0aGUgbWVzc2FnZXMgYXJlIGZvcm1hdHRlZCwgYW5kIGhvdyB0aGUgbG9nZ2luZyBtZWNoYW5pc20gaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIE5ldGZpbHRlciBmcmFtZXdvcmsuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBmdW5jdGlvbiBjYWxscywgYW5kIGFueSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciwgbW9yZSBjcml0aWNhbGx5LCBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGxvZ2dpbmcgYmVoYXZpb3VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDM4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MTA6NTYuMzA5NDMxMTMyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MTU0NDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mbmV0bGlua19sb2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTk5Mj1jb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORkxPR1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5Ny1cXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIE5GTE9HIHRhcmdldCwgd2hpY2ggYWxsb3dzIHRvIExPR1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5OTg6XFx0ICBtZXNzYWdlcyB0aHJvdWdoIG5mbmV0bGlua19sb2cuXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5OS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9Mjg9b2JqLSQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFKSArPSBuZm5ldGxpbmtfcXVldWUub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6Mjk6b2JqLSQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPRykgKz0gbmZuZXRsaW5rX2xvZy5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zMC1vYmotJChDT05GSUdfTkVURklMVEVSX05FVExJTktfT1NGKSArPSBuZm5ldGxpbmtfb3NmLm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTI1LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcXHUwMDNlXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MjY6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmhcXHUwMDNlXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMjctI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcXHUwMDNlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz00NzQ9X19idWlsZF9wYWNrZXRfbWVzc2FnZShzdHJ1Y3QgbmZubF9sb2dfbmV0ICpsb2csXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy02ODUtbmxhX3B1dF9mYWlsdXJlOlxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jOjY4NjpcXHRQUklOVFIoS0VSTl9FUlIgXFxcIm5mbmV0bGlua19sb2c6IGVycm9yIGNyZWF0aW5nIGxvZyBubG1zZ1xcXFxuXFxcIik7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtNjg3LVxcdHJldHVybiAtMTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jPTg5Mz1zdGF0aWMgc3RydWN0IG5mX2xvZ2dlciBuZnVsbmxfbG9nZ2VyIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6ODk0OlxcdC5uYW1lXFx0PSBcXFwibmZuZXRsaW5rX2xvZ1xcXCIsXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtODk1LVxcdC50eXBlXFx0PSBORl9MT0dfVFlQRV9VTE9HLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM9MTE0NT1zdGF0aWMgaW50IF9fbmV0X2luaXQgbmZubF9sb2dfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMTE1OS0jaWZkZWYgQ09ORklHX1BST0NfRlNcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYzoxMTYwOlxcdHByb2MgPSBwcm9jX2NyZWF0ZV9uZXQoXFxcIm5mbmV0bGlua19sb2dcXFwiLCAwNDQwLCBuZXQtXFx1MDAzZW5mLnByb2NfbmV0ZmlsdGVyLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExNjEtXFx0XFx0XFx0XFx1MDAyNm5mdWxfc2VxX29wcywgc2l6ZW9mKHN0cnVjdCBpdGVyX3N0YXRlKSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz0xMTczPXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZubF9sb2dfbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExNzUtI2lmZGVmIENPTkZJR19QUk9DX0ZTXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTE3NjpcXHRyZW1vdmVfcHJvY19lbnRyeShcXFwibmZuZXRsaW5rX2xvZ1xcXCIsIG5ldC1cXHUwMDNlbmYucHJvY19uZXRmaWx0ZXIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExNzctI2VuZGlmXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz0xMTkwPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZubF9sb2dfbmV0X29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTExOTctXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTE5ODpzdGF0aWMgaW50IF9faW5pdCBuZm5ldGxpbmtfbG9nX2luaXQodm9pZClcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy0xMTk5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTEyMzEtXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTIzMjpzdGF0aWMgdm9pZCBfX2V4aXQgbmZuZXRsaW5rX2xvZ19maW5pKHZvaWQpXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMTIzMy17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz0xMjQ4PU1PRFVMRV9BTElBU19ORl9MT0dHRVIoNSwgMSk7IC8qIE5GUFJPVE9fTkVUREVWICovXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtMTI0OS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYzoxMjUwOm1vZHVsZV9pbml0KG5mbmV0bGlua19sb2dfaW5pdCk7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6MTI1MTptb2R1bGVfZXhpdChuZm5ldGxpbmtfbG9nX2ZpbmkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY29tcGF0LmM9MjQ0PW5mdF90YXJnZXRfaW5pdChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzUtXFx0XFx0XFx0ZWxzZSBpZiAoc3RyY21wKHRhcmdldC1cXHUwMDNlbmFtZSwgXFxcIk5GTE9HXFxcIikgPT0gMClcXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYzoyNzY6XFx0XFx0XFx0XFx0bW9kbmFtZSA9IFxcXCJuZm5ldGxpbmtfbG9nXFxcIjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jb21wYXQuYy0yNzctXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9sb2cuYz03NT1zdGF0aWMgaW50IG5mdF9sb2dfbW9kcHJvYmUoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mX2xvZ190eXBlIHQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9sb2cuYy04MC1cXHRjYXNlIE5GX0xPR19UWVBFX1VMT0c6XFxubmV0L25ldGZpbHRlci9uZnRfbG9nLmM6ODE6XFx0XFx0cmV0dXJuIG5mdF9yZXF1ZXN0X21vZHVsZShuZXQsIFxcXCIlc1xcXCIsIFxcXCJuZm5ldGxpbmtfbG9nXFxcIik7XFxubmV0L25ldGZpbHRlci9uZnRfbG9nLmMtODItXFx0Y2FzZSBORl9MT0dfVFlQRV9NQVg6XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL3h0X05GTE9HLmM9NDI9c3RhdGljIGludCBuZmxvZ190Z19jaGVjayhjb25zdCBzdHJ1Y3QgeHRfdGdjaGtfcGFyYW0gKnBhcilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYy01My1cXHRpZiAocmV0ICE9IDAgXFx1MDAyNlxcdTAwMjYgIXBhci1cXHUwMDNlbmZ0X2NvbXBhdCkge1xcbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYzo1NDpcXHRcXHRyZXF1ZXN0X21vZHVsZShcXFwiJXNcXFwiLCBcXFwibmZuZXRsaW5rX2xvZ1xcXCIpO1xcbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYy01NS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfTkZMT0cuYz0xMDM9bW9kdWxlX2V4aXQobmZsb2dfdGdfZXhpdCk7XFxubmV0L25ldGZpbHRlci94dF9ORkxPRy5jOjEwNDpNT0RVTEVfU09GVERFUChcXFwicHJlOiBuZm5ldGxpbmtfbG9nXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjEwOjU2LjM2NDU5MjUxOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMDc5NTAyNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0ZmlsdGVyIExvZ2dpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgQ09ORklHX05GX0xPR19TWVNMT0dgIGFuZCBgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPR2AuIFRoZXNlIGxvb2sgbGlrZSBjb3JlIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gbmV0ZmlsdGVyIGxvZ2dpbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBzb3VyY2UuIFRoZSBuYXR1cmFsIHN0YXJ0aW5nIHBvaW50IGlzIGFsd2F5cyB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLCBzbyBJJ2xsIGRpdmUgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBzZWUgaG93IHRob3NlIG9wdGlvbnMgYXJlIGRlZmluZWQsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24uIFRoYXQgZmlsZSB3aWxsIHRlbGwgbWUgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgbmV0ZmlsdGVyIHN1YnN5c3RlbSwgYW5kIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlaGF2ZS4gVGhpcyBpcyB3aGVyZSBJIGNhbiBnZXQgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbWF0dGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MTA6NTkuNTcyNTQ1MDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgyMzUzOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0xPR19TWVNMT0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTgyPWNvbmZpZyBORl9DT05OVFJBQ0tcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTg6Y29uZmlnIE5GX0xPR19TWVNMT0dcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTktXFx0dHJpc3RhdGUgXFxcIlN5c2xvZyBwYWNrZXQgbG9nZ2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MTA6NTkuNjMwNzkwODY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwMDM0MzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0ZmlsdGVyIExvZ2dpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgbmV0ZmlsdGVyIGxvZ2dpbmcsIHNwZWNpZmljYWxseSBgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPR2AsIGlzIGRlZmluZWQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG5ldGZpbHRlciBjb25maWd1cmF0aW9uLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgdGhlIEtjb25maWcgZmlsZXMgYXJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZXNlIGJ1aWxkLXRpbWUgb3B0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIGEgcmVmZXJlbmNlIHRvIHdoZXJlIGl0ICppcyogZGVmaW5lZC4gVGltZSB0byBnbyBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTUyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MTE6MDIuODMxMTM4MjM1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjMxODE3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVURklMVEVSX05FVExJTktfTE9HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz01ND1jb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NjI6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0xPR1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIExPRyBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjAyLjg5MzQ2OTMzMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODg4OTY2MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE5ldCBOYW1lc3BhY2UgVGVhcmRvd24gTG9naWMqKlxuXG5Pa2F5LCBteSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBmdW5jdGlvbnM6IGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGAsIGBuZm5sX2xvZ19uZXRfcHJlX2V4aXRgLCBhbmQgYG5mbmxfbG9nX25ldF9leGl0YC4gV2FpdCBhIHNlY29uZOKApiB0aGVzZSBgbmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRgIGFuZCBgbmZubF9sb2dfbmV0X3ByZV9leGl0YCBmdW5jdGlvbnMgYXJlICpzdGF0aWMqIGFuZCBhc3NpZ25lZCB0byBhIGBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnNgLiBUaGV5J3JlIGNhbGxlZCBkdXJpbmcgYSBuZXQgbmFtZXNwYWNlIGV4aXQhIERlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZzsgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBuZXQgbmFtZXNwYWNlIHRlYXJkb3duIGFyZSBwcmFjdGljYWxseSBidWcgbWFnbmV0cywgZXNwZWNpYWxseSB0aG9zZSBuYXN0eSB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMuXG5cbkhtbSwgdGhpcyBwYXRjaCBpcyBzaW1wbHkgcmVuYW1pbmcgYG5mX2xvZ19zeXNsb2dfbmV0X2V4aXRgIHRvIGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGAgYW5kIHJlLWFzc2lnbmluZyBpdCB0byBgLnByZV9leGl0YCBpbnN0ZWFkIG9mIGAuZXhpdGAuIEFuZCBpbiBgbmZuZXRsaW5rX2xvZy5jYCwgdGhlIGV4aXQgZnVuY3Rpb24gaXMgYmVpbmcgc3BsaXQgaW50byBgcHJlX2V4aXRgIGFuZCBgZXhpdGAuIFRoZSBleGVjdXRpb24gb3JkZXIgZHVyaW5nIG5ldCBuYW1lc3BhY2UgdGVhcmRvd24gaXMgY2hhbmdpbmc7IGBwcmVfZXhpdGAgY29tZXMgKmJlZm9yZSogYGV4aXRgLiBUaGlzIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIGEgY2hhbmdlIHRoYXQgY291bGQgZXhwb3NlIGEgbGF0ZW50IGJ1Zywgb3IgZXZlbiBpbnRyb2R1Y2UgYSBicmFuZCBuZXcgb25lLiBEZWZpbml0ZWx5IHdvcnRoIHRoZSBlZmZvcnQgdG8gZnV6eiBpdC5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMsIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSByaWdodCBzZXR1cC4gSSdtIGdvaW5nIHRvIG5lZWQgYENPTkZJR19ORl9MT0dfU1lTTE9HYCwgYENPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0dgLCBhbmQgYENPTkZJR19ORVRfTlNgLiBUaGUgbGFzdCBvbmUgaXMgdXN1YWxseSBkZWZhdWx0LCBidXQgZ29vZCB0byBkb3VibGUtY2hlY2suIFRpbWUgdG8gcXVpY2tseSBkaWcgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBnb3RjaGFzIHdpdGggYE5GX0xPR19TWVNMT0dgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODU0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjA5Ljc4MjQ0MDA2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzOTg3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0xPR19TWVNMT0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz04Mj1jb25maWcgTkZfQ09OTlRSQUNLXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjk4OmNvbmZpZyBORl9MT0dfU1lTTE9HXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5LVxcdHRyaXN0YXRlIFxcXCJTeXNsb2cgcGFja2V0IGxvZ2dpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjA5LjgzMTg0NjYwNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAxNjE1NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsJ3MgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgcGFydGljdWxhciBmZWF0dXJlIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBOZXRmaWx0ZXIgc3Vic3lzdGVtLiBUbyBkbyB0aGF0LCBJJ20gZ29pbmcgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXI6IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBJIGtub3cgdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gcHJldHR5IHdlbGwsIHNvIEknbSBleHBlY3RpbmcgdGhpcyBgS2NvbmZpZ2AgZmlsZSB0byBob2xkIGFsbCB0aGUgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVzY3JpcHRpb25zIHJlbGF0ZWQgdG8gTmV0ZmlsdGVyJ3MgY29uZmlndXJhdGlvbi4gSSdsbCBwaW5wb2ludCBhcm91bmQgbGluZSA5OCDigJMgdXN1YWxseSwgdGhlc2UgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgd2VsbC1zdHJ1Y3R1cmVkLCBzbyBJJ20gaG9waW5nIHRoYXQgcGFydGljdWxhciByZWdpb24gd2lsbCBnaXZlIG1lIHRoZSBpbnNpZ2h0cyBJJ20gbG9va2luZyBmb3IgcmVnYXJkaW5nIHRoaXMgc3BlY2lmaWMgTmV0ZmlsdGVyIGFzcGVjdCBJJ20gd29ya2luZyBvbi4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzIxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MTE6MTMuMjMzNDY2MTYyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTA6XFx0XFx0ICBpbnRvIGNvbm5lY3Rpb25zLlxcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHQgIFRoaXMgaXMgcmVxdWlyZWQgdG8gZG8gTWFzcXVlcmFkaW5nIG9yIG90aGVyIGtpbmRzIG9mIE5ldHdvcmtcXG4gIDkzOlxcdFxcdCAgQWRkcmVzcyBUcmFuc2xhdGlvbi4gIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gZW5oYW5jZSBwYWNrZXRcXG4gIDk0OlxcdFxcdCAgZmlsdGVyaW5nIChzZWUgYENvbm5lY3Rpb24gc3RhdGUgbWF0Y2ggc3VwcG9ydCcgYmVsb3cpLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgOTc6XFx0XFxuICA5ODpcXHRjb25maWcgTkZfTE9HX1NZU0xPR1xcbiAgOTk6XFx0XFx0dHJpc3RhdGUgXFxcIlN5c2xvZyBwYWNrZXQgbG9nZ2luZ1xcXCJcXG4gMTAwOlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiAxMDE6XFx0XFx0aGVscFxcbiAxMDI6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGUgc3VwcG9ydCBmb3IgcGFja2V0IGxvZ2dpbmcgdmlhIHN5c2xvZy5cXG4gMTAzOlxcdFxcdCAgSXQgc3VwcG9ydHMgSVB2NCwgSVBWNiwgQVJQIGFuZCBjb21tb24gdHJhbnNwb3J0IHByb3RvY29scyBzdWNoXFxuIDEwNDpcXHRcXHQgIGFzIFRDUCBhbmQgVURQLlxcbiAxMDU6XFx0XFx0ICBUaGlzIGlzIGEgc2ltcGxlciBidXQgbGVzcyBmbGV4aWJsZSBsb2dnaW5nIG1ldGhvZCBjb21wYXJlZCB0b1xcbiAxMDY6XFx0XFx0ICBDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HLlxcbiAxMDc6XFx0XFx0ICBJZiBib3RoIGFyZSBlbmFibGVkIHRoZSBiYWNrZW5kIHRvIHVzZSBjYW4gYmUgY29uZmlndXJlZCBhdCBydW4tdGltZVxcbiAxMDg6XFx0XFx0ICBieSBtZWFucyBvZiBwZXItYWRkcmVzcy1mYW1pbHkgc3lzY3RsIHR1bmFibGVzLlxcbiAxMDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjEzLjIzMzU5NTk4MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTU0Njg0NTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXRmaWx0ZXIgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFyb3VuZCBsaW5lIDYyLiBJJ20gZ3Vlc3NpbmcgdGhhdCBzcGVjaWZpYyBzZWN0aW9uIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBbKippbnNlcnQgeW91ciBkb21haW4ncyBzcGVjaWZpYyB0b3BpYyB0aGF0IHJlbGF0ZXMgdG8gdGhlIEtjb25maWcgZmlsZSBoZXJlLCBlLmcuLCBob3cgYSBwYXJ0aWN1bGFyIE5ldGZpbHRlciBtb2R1bGUgaXMgY29uZmlndXJlZCwgYSBzcGVjaWZpYyBvcHRpb24ncyBkZXBlbmRlbmNpZXMsIHRoZSBpbnRlcnBsYXkgb2YgZGlmZmVyZW50IGZpbHRlcmluZyBtZWNoYW5pc21zLCBvciBob3cgdGhpcyBLY29uZmlnIGZpbGUgaW50ZXJmYWNlcyB3aXRoIG90aGVyIHJlbGF0ZWQgb25lcyoqXS4gSSBuZWVkIHRvIGdldCBhIGdyYW51bGFyIHZpZXcgb2YgWyoqc3BlY2lmaWMgZGV0YWlscyB5b3UgZXhwZWN0IHRvIGZpbmQsIGUuZy4sIHRoZSB1bmRlcmx5aW5nIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLCB0aGVpciBkZXBlbmRlbmNpZXMsIGFueSByZWxldmFudCBkZWZhdWx0cywgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3Rpbmcgb3B0aW9ucy4qKl0uIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IFsqKndoYXQgeW91IHdhbnQgdG8gZ2xlYW4gZnJvbSB0aGlzIGxpbmUgb2YgY29kZSBlLmcuLCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGZsYWdzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBjb25maWd1cmF0aW9ucyBpbnRlcnJlbGF0ZSBhbmQgZGVwZW5kIG9uIGVhY2ggb3RoZXIuKipdIEVzc2VudGlhbGx5LCBJJ20gZXhwZWN0aW5nIHRvIGVpdGhlcjogWyoqZGVzY3JpYmUgYSBsaWtlbHkgc2NlbmFyaW8geW91IGFyZSBpbnZlc3RpZ2F0aW5nLioqXS4gVGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscywgYW5kIGNyb3NzLXJlZmVyZW5jZSB3aXRoIHJlbGF0ZWQgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBpZiBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjE2Ljc4ODI4NDY3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFx0aGVscFxcbiAgNTE6XFx0XFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XFxuICA1MjpcXHRcXHQgIGZvciBleHRlbmRlZCBhY2NvdW50aW5nIHZpYSBORk5FVExJTksuXFxuICA1MzpcXHRcXG4gIDU0OlxcdGNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxcbiAgNTU6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBORlFVRVVFIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVxcXCJcXG4gIDU2OlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuICA1NzpcXHRcXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4gIDU4OlxcdFxcdGhlbHBcXG4gIDU5OlxcdFxcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxcbiAgNjA6XFx0XFx0ICBmb3IgcXVldWVpbmcgcGFja2V0cyB2aWEgTkZORVRMSU5LLlxcbiAgNjE6XFx0XFxuICA2MjpcXHRjb25maWcgTkVURklMVEVSX05FVExJTktfTE9HXFxuICA2MzpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIExPRyBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuICA2NDpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gIDY1OlxcdFxcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xcbiAgNjY6XFx0XFx0aGVscFxcbiAgNjc6XFx0XFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XFxuICA2ODpcXHRcXHQgIGZvciBsb2dnaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cXG4gIDY5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOToxMToxNi43ODg0MTQ5OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDg3MDIzMjM3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEFuYWx5c2lzOiBOZXR3b3JrIE5hbWVzcGFjZSBUZWFyZG93biBmb3IgbmV0ZmlsdGVyIExvZ2dpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgTkZfTE9HX1NZU0xPR2AgYW5kIGBORVRGSUxURVJfTkVUTElOS19MT0dgLiBIYW5nIG9uLCBgTkVURklMVEVSX05FVExJTktfTE9HYCBzZWxlY3RzIGBORVRGSUxURVJfTkVUTElOS2AsIHRoYXQncyBnb29kIHRvIG5vdGUuIFdlIGFsc28gbmVlZCB0byBjb25zaWRlciBgQ09ORklHX05FVF9OU2AsIGFzIGl0J3MgdHlwaWNhbGx5IGVuYWJsZWQgaW4gZnV6emluZyBlbnZpcm9ubWVudHMuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgYXJlIGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGAsIGBuZm5sX2xvZ19uZXRfcHJlX2V4aXRgLCBhbmQgYG5mbmxfbG9nX25ldF9leGl0YC4gSSBpbml0aWFsbHkgdGhvdWdodCB0aGVzZSB3ZXJlIHN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIEkgc2hvdWxkIGJlIHdhcnkgb2YgYmFzZWQgb24gdGhlIGluc3RydWN0aW9ucyB0aGF0IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIEhvd2V2ZXIsIHRoZXNlIGFyZW4ndCBpbmxpbmVkIGJlY2F1c2UgdGhleSBhcmUgYXNzaWduZWQgdG8gYHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9uc2AgZnVuY3Rpb24gcG9pbnRlcnMuIFRoaXMgbWVhbnMgdGhleSAqYXJlKiBjYWxsZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXJzIGJ5IHRoZSBuZXQgbmFtZXNwYWNlIGNvcmUsIGdpdmluZyB0aGVtIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgYW5kIG1ha2luZyB0aGVtIGdvb2QgY2FuZGlkYXRlcyBmb3Igc2NydXRpbnkuXG5cbkxldCdzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMuIExvb2tpbmcgYXQgdGhlIGNvZGU6XG5cbiogICBJbiBgbmZfbG9nX3N5c2xvZy5jYCwgYG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0YCBpcyBtb2RpZnlpbmcgdGhlIGNsZWFudXAgcHJvY2Vzcy5cbiogICBJbiBgbmZuZXRsaW5rX2xvZy5jYCwgYG5mbmxfbG9nX25ldF9wcmVfZXhpdGAgYW5kIGBuZm5sX2xvZ19uZXRfZXhpdGAgYXJlIGJlaW5nIG1vZGlmaWVkLlxuXG5ZZXAsIHRob3NlIGFyZSB0aGUgb25seSBvbmVzLiBUaGUgZmFjdCB0aGV5IGFyZSBwYXJ0IG9mIGBwZXJuZXRfb3BlcmF0aW9uc2AgYW5kIGFjY2Vzc2VkIHZpYSBmdW5jdGlvbiBwb2ludGVycyBzdHJlbmd0aGVucyB0aGVpciByZWxldmFuY2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nIHRoYXQgdGhleSBjYWxsLiBIbW0uLi4gYG5mX2xvZ191bnNldGAgaXMgY2FsbGVkIHdpdGhpbiB0aGVtLCBidXQgdGhhdCdzIG5vdCBiZWluZyBtb2RpZmllZC4gSSdsbCBhZGQgYG5mX2xvZ19zeXNsb2dfbmV0X3ByZV9leGl0YCwgYG5mbmxfbG9nX25ldF9wcmVfZXhpdGAsIGFuZCBgbmZubF9sb2dfbmV0X2V4aXRgIHRvIGBGb2N1c1N5bWJvbHNgLlxuXG5Ob3csIGZvciBjb25maWd1cmF0aW9ucy4gV2UgaGF2ZSBgQ09ORklHX05FVEZJTFRFUmAsIHdoaWNoIGlzIGEgYmFzZSBjb25maWcsIGFuZCB0aGVuIGBORl9MT0dfU1lTTE9HYCBhbmQgYE5FVEZJTFRFUl9ORVRMSU5LX0xPR2AuIEFueSBkZXBlbmRlbmNpZXM/IEFoLCBgTkVURklMVEVSX05FVExJTktfTE9HYCBkZXBlbmRzIG9uICh3ZWxsLCBzZWxlY3RzKSBgTkVURklMVEVSX05FVExJTktgLiBgTkZfTE9HX1NZU0xPR2AgaGFzIG5vIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGFzaWRlIGZyb20gYE5FVEZJTFRFUl9BRFZBTkNFRD1uYCBhcyBkZWZhdWx0LiBHb29kLCBzbyBgTkZfTE9HX1NZU0xPR2AgYW5kIGBORVRGSUxURVJfTkVUTElOS19MT0dgIGlzIHdoYXQgSSdsbCBpbmNsdWRlLiBTaG91bGQgSSBlbmFibGUgYENPTkZJR19ORVRfTlNgPyBZZXMsIEknbGwgaW5jbHVkZSBpdCBiZWNhdXNlIGl0J3MgdXN1YWxseSBvbiBpbiBmdXp6aW5nIGVudmlyb25tZW50cy5cblxuTGV0J3MgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMuIFRoZSBjcml0ZXJpb24gZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIGJhc2VkIG9uIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgb25seSBleGVjdXRlZCBkdXJpbmcgaG90LXVucGx1ZyBvciBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuIFRoaXMgaXMgKm5vdCogdGhhdCBzaXR1YXRpb24uIFRoaXMgaXMgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24uIE5ldHdvcmsgbmFtZXNwYWNlcyBhcmUgcmVndWxhcmx5IGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCBkdXJpbmcgZnV6emluZywgYW5kIHByb2JsZW1zIGluIHRoZWlyIHRlYXJkb3duIGFyZSBwcmltZSBidWcgc291cmNlcy4gU28sIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkhlcmUncyBteSByZWFzb25pbmc6IFRoZSBwYXRjaCBpcyBhbHRlcmluZyB0aGUgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gZm9yIGBuZl9sb2dfc3lzbG9nYCBhbmQgYG5mbmV0bGlua19sb2dgIGJ5IHJlb3JnYW5pemluZyBjbGVhbnVwIGNvZGUuIFRoYXQgaXMsIG1vdmluZyBjb2RlIGZyb20gYC5leGl0YCB0byBgLnByZV9leGl0YC4gVGhpcyBjaGFuZ2VzIHRoZSAqZXhlY3V0aW9uIG9yZGVyKiBkdXJpbmcgbmV0IG5hbWVzcGFjZSBkZXN0cnVjdGlvbi4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggY2FuIHRyaWdnZXIgdXNlLWFmdGVyLWZyZWUgYnVncy4gTmV0d29yayBuYW1lc3BhY2VzIGFyZSBjb21tb25seSBmdXp6ZWQsIG1ha2luZyB0aGlzIGNoYW5nZSB2ZXJ5IGltcG9ydGFudC5cblxuKipIZXJlJ3MgdGhlIGRhdGEgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzOioqXG5cbiogICAqKmBGb2N1c1N5bWJvbHNgKio6XG4gICAgKiAgIGBuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdGBcbiAgICAqICAgYG5mbmxfbG9nX25ldF9wcmVfZXhpdGBcbiAgICAqICAgYG5mbmxfbG9nX25ldF9leGl0YFxuKiAgICoqYEVuYWJsZUNvbmZpZ3NgKio6XG4gICAgKiAgIGBORl9MT0dfU1lTTE9HYFxuICAgICogICBgTkVURklMVEVSX05FVExJTktfTE9HYFxuICAgIFxuTm93LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4NTgsIk91dHB1dFRva2VucyI6MTg1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjExOjMxLjY1ODY1MTM4N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTI1NjEzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfTE9HX1NZU0xPR1wiLFxuICAgIFwiTkVURklMVEVSX05FVExJTktfTE9HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfbG9nX3N5c2xvZ19uZXRfcHJlX2V4aXRcIixcbiAgICBcIm5mbmxfbG9nX25ldF9wcmVfZXhpdFwiLFxuICAgIFwibmZubF9sb2dfbmV0X2V4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gbG9naWMgZm9yIG5mX2xvZ19zeXNsb2cgYW5kIG5mbmV0bGlua19sb2cgYnkgbW92aW5nIGNsZWFudXAgY29kZSBmcm9tIHRoZSAuZXhpdCBjYWxsYmFjayB0byB0aGUgLnByZV9leGl0IGNhbGxiYWNrIGluIHRoZWlyIHBlcm5ldF9vcGVyYXRpb25zIHN0cnVjdHVyZXMuIFRoaXMgY2hhbmdlcyB0aGUgZXhlY3V0aW9uIG9yZGVyIGR1cmluZyBuZXQgbmFtZXNwYWNlIGRlc3RydWN0aW9uLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGFmZmVjdCBvYmplY3QgbGlmZXRpbWVzIGFuZCBwcmV2ZW50IG9yIGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUuIE5ldHdvcmsgbmFtZXNwYWNlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBhcmUgaGVhdmlseSBleGVyY2lzZWQgZHVyaW5nIGZ1enppbmcsIG1ha2luZyB0aGlzIGhpZ2hseSByZWxldmFudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9MT0dfU1lTTE9HXCIsXG4gICAgXCJORVRGSUxURVJfTkVUTElOS19MT0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9sb2dfc3lzbG9nX25ldF9wcmVfZXhpdFwiLFxuICAgIFwibmZubF9sb2dfbmV0X3ByZV9leGl0XCIsXG4gICAgXCJuZm5sX2xvZ19uZXRfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBsb2dpYyBmb3IgbmZfbG9nX3N5c2xvZyBhbmQgbmZuZXRsaW5rX2xvZyBieSBtb3ZpbmcgY2xlYW51cCBjb2RlIGZyb20gdGhlIC5leGl0IGNhbGxiYWNrIHRvIHRoZSAucHJlX2V4aXQgY2FsbGJhY2sgaW4gdGhlaXIgcGVybmV0X29wZXJhdGlvbnMgc3RydWN0dXJlcy4gVGhpcyBjaGFuZ2VzIHRoZSBleGVjdXRpb24gb3JkZXIgZHVyaW5nIG5ldCBuYW1lc3BhY2UgZGVzdHJ1Y3Rpb24sIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYWZmZWN0IG9iamVjdCBsaWZldGltZXMgYW5kIHByZXZlbnQgb3IgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZS4gTmV0d29yayBuYW1lc3BhY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIGFyZSBoZWF2aWx5IGV4ZXJjaXNlZCBkdXJpbmcgZnV6emluZywgbWFraW5nIHRoaXMgaGlnaGx5IHJlbGV2YW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2jgl[1] Phase: Succeeded StartedAt: 2026-08-03 09:11:43 +0000 UTC FinishedAt: 2026-08-03 09:11:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 09:11:43 +0000 UTC FinishedAt: 2026-08-03 09:11:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2] Phase: Succeeded StartedAt: 2026-08-03 09:11:43 +0000 UTC FinishedAt: 2026-08-03 13:07:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 09:11:43 +0000 UTC FinishedAt: 2026-08-03 13:07:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 09:11:43 +0000 UTC FinishedAt: 2026-08-03 09:11:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 09:11:43 +0000 UTC FinishedAt: 2026-08-03 09:11:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz2jgl/series-workflowz2jgl-convert-artifact-2827826939/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 09:11:53 +0000 UTC FinishedAt: 2026-08-03 09:30:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 09:11:53 +0000 UTC FinishedAt: 2026-08-03 09:30:38 +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:*be25b3b8-ba30-475f-9454-efb4d0588db0,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-workflowz2jgl/series-workflowz2jgl-convert-artifact-2827826939/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": "cc8c362d-c001-4397-b4d2-b9547482dc9b", "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-workflowz2jgl/series-workflowz2jgl-build-action-3163547193/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 09:11:53 +0000 UTC FinishedAt: 2026-08-03 09:30:28 +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:*be25b3b8-ba30-475f-9454-efb4d0588db0,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-workflowz2jgl/series-workflowz2jgl-convert-artifact-2827826939/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": "cc8c362d-c001-4397-b4d2-b9547482dc9b", "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-workflowz2jgl/series-workflowz2jgl-build-action-3163547193/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 09:30:38 +0000 UTC FinishedAt: 2026-08-03 09:30:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 09:30:38 +0000 UTC FinishedAt: 2026-08-03 09:30:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 09:30:38 +0000 UTC FinishedAt: 2026-08-03 09:31:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 09:30:38 +0000 UTC FinishedAt: 2026-08-03 09:30:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz2jgl/series-workflowz2jgl-convert-artifact-3463528274/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 09:31:01 +0000 UTC FinishedAt: 2026-08-03 09:33:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 09:31:01 +0000 UTC FinishedAt: 2026-08-03 09:32:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cc8c362d-c001-4397-b4d2-b9547482dc9b,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-workflowz2jgl/series-workflowz2jgl-build-action-3163547193/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-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 09:33:00 +0000 UTC FinishedAt: 2026-08-03 09:33:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 09:33:00 +0000 UTC FinishedAt: 2026-08-03 09:33:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 09:33:00 +0000 UTC FinishedAt: 2026-08-03 10:03:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 09:33:00 +0000 UTC FinishedAt: 2026-08-03 10:03:07 +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:*be25b3b8-ba30-475f-9454-efb4d0588db0,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-workflowz2jgl/series-workflowz2jgl-convert-artifact-3463528274/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": "f7aacac5-6eee-4565-9599-bdf6873129f7", "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-workflowz2jgl/series-workflowz2jgl-build-action-315604454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 09:33:00 +0000 UTC FinishedAt: 2026-08-03 10:02:57 +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:*be25b3b8-ba30-475f-9454-efb4d0588db0,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-workflowz2jgl/series-workflowz2jgl-convert-artifact-3463528274/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": "f7aacac5-6eee-4565-9599-bdf6873129f7", "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-workflowz2jgl/series-workflowz2jgl-build-action-315604454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 10:03:07 +0000 UTC FinishedAt: 2026-08-03 10:03:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 10:03:07 +0000 UTC FinishedAt: 2026-08-03 10:03:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 10:03:07 +0000 UTC FinishedAt: 2026-08-03 10:05:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 10:03:07 +0000 UTC FinishedAt: 2026-08-03 10:05:01 +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:*f7aacac5-6eee-4565-9599-bdf6873129f7,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-workflowz2jgl/series-workflowz2jgl-build-action-315604454/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-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 10:05:11 +0000 UTC FinishedAt: 2026-08-03 13:07:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 10:05:11 +0000 UTC FinishedAt: 2026-08-03 13:07:28 +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":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"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:*cc8c362d-c001-4397-b4d2-b9547482dc9b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f7aacac5-6eee-4565-9599-bdf6873129f7,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-workflowz2jgl/series-workflowz2jgl-build-action-3163547193/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-workflowz2jgl/series-workflowz2jgl-build-action-315604454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 10:05:11 +0000 UTC FinishedAt: 2026-08-03 10:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 10:05:11 +0000 UTC FinishedAt: 2026-08-03 10:05:17 +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":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"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-workflowz2jgl/series-workflowz2jgl-convert-artifact-2859069351/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 10:05:11 +0000 UTC FinishedAt: 2026-08-03 10:05:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 10:05:11 +0000 UTC FinishedAt: 2026-08-03 10:05:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 10:05:11 +0000 UTC FinishedAt: 2026-08-03 10:05:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 10:05:21 +0000 UTC FinishedAt: 2026-08-03 13:07:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2jgl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_log_syslog_net_pre_exit","nfnl_log_net_pre_exit","nfnl_log_net_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_LOG_SYSLOG","NETFILTER_NETLINK_LOG"],"series_id":"04c6fbee-b7d7-47e7-b3fa-cf32dc93c014","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 10:05:21 +0000 UTC FinishedAt: 2026-08-03 13:07:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cc8c362d-c001-4397-b4d2-b9547482dc9b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f7aacac5-6eee-4565-9599-bdf6873129f7,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-workflowz2jgl/series-workflowz2jgl-build-action-3163547193/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-workflowz2jgl/series-workflowz2jgl-build-action-315604454/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-workflowz2jgl/series-workflowz2jgl-convert-artifact-2859069351/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,}