Name: series-workflowpthxt Phase: Succeeded StartedAt: 2026-07-10 06:46:44 +0000 UTC FinishedAt: 2026-07-10 11:19:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[0] Phase: Succeeded StartedAt: 2026-07-10 06:46:44 +0000 UTC FinishedAt: 2026-07-10 07:17:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 06:46:44 +0000 UTC FinishedAt: 2026-07-10 07:17:24 +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": "24c4c88259464d38b35c3fbaecb68675de64137d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE", "NFT_FLOW_OFFLOAD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "24c4c88259464d38b35c3fbaecb68675de64137d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE", "NFT_FLOW_OFFLOAD" ], "series_id": "27d34668-5913-4ebe-b62f-a5002a12fdaa" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "flow_offload_fill_route", "flow_offload_route_init", "nft_flow_offload_eval" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OywKICAgICYjMzQ7TkZUX0ZMT1dfT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zsb3dfb2ZmbG9hZF9maWxsX3JvdXRlJiMzNDssCiAgICAmIzM0O2Zsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0JiMzNDssCiAgICAmIzM0O25mdF9mbG93X29mZmxvYWRfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIG5ldGZpbHRlciBmbG93IG9mZmxvYWQgcm91dGluZyBsb2dpYyB3aGVyZSBhIGRlc3RpbmF0aW9uIGVudHJ5IHdhcyBpbmNvcnJlY3RseSByZWxlYXNlZCBvciBsZWFrZWQgYmFzZWQgb24gYSB3cm9uZyBjb25kaXRpb24uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGZsb3cgb2ZmbG9hZCBleHByZXNzaW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjQ5MTFjMDY1MzQzY2UxNGY3NmM1NWFhNjIxZWI0ZDU4NjNhYTc3MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDA3OjE2OjMwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG5pbmRleCAyYTgyOWI1ZTgyNDBhNy4uYjY2ZTY1NDM5MzQxMTcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG5AQCAtMTI3LDE4ICYjNDM7MTI3LDE4IEBAIHN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbiBcbiBcdHN3aXRjaCAocm91dGUtXHUwMDNldHVwbGVbZGlyXS54bWl0X3R5cGUpIHtcbiBcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxuLVx0XHRpZiAoZmxvd190dXBsZS1cdTAwM2V0dW5fbnVtKSB7XG4mIzQzO1x0XHRpZiAocm91dGUtXHUwMDNldHVwbGVbIWRpcl0uaW4ubnVtX3R1bnMpIHtcbiBcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jYWNoZSA9IGRzdDtcbiBcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jb29raWUgPVxuIFx0XHRcdFx0Zmxvd19vZmZsb2FkX2RzdF9jb29raWUoZmxvd190dXBsZSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRkc3RfcmVsZWFzZShkc3QpO1xuIFx0XHR9XG4gXHRcdG1lbWNweShmbG93X3R1cGxlLVx1MDAzZW91dC5oX2Rlc3QsIHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ub3V0LmhfZGVzdCxcbiBcdFx0ICAgICAgIEVUSF9BTEVOKTtcbiBcdFx0bWVtY3B5KGZsb3dfdHVwbGUtXHUwMDNlb3V0Lmhfc291cmNlLCByb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLm91dC5oX3NvdXJjZSxcbiBcdFx0ICAgICAgIEVUSF9BTEVOKTtcbiBcdFx0Zmxvd190dXBsZS1cdTAwM2VvdXQuaWZpZHggPSByb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLm91dC5pZmluZGV4O1xuLVx0XHRpZiAoIWZsb3dfdHVwbGUtXHUwMDNldHVuX251bSlcbi1cdFx0XHRkc3RfcmVsZWFzZShkc3QpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfWEZSTTpcbiBcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfTkVJR0g6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfRkxPV19UQUJMRSYjMzQ7LAogICAgJiMzNDtORlRfRkxPV19PRkZMT0FEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zmxvd19vZmZsb2FkX2ZpbGxfcm91dGUmIzM0OywKICAgICYjMzQ7Zmxvd19vZmZsb2FkX3JvdXRlX2luaXQmIzM0OywKICAgICYjMzQ7bmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCByb3V0aW5nIGxvZ2ljIHdoZXJlIGEgZGVzdGluYXRpb24gZW50cnkgd2FzIGluY29ycmVjdGx5IHJlbGVhc2VkIG9yIGxlYWtlZCBiYXNlZCBvbiBhIHdyb25nIGNvbmRpdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgZmxvdyBvZmZsb2FkIGV4cHJlc3Npb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI0OTExYzA2NTM0M2NlMTRmNzZjNTVhYTYyMWViNGQ1ODYzYWE3NzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAwNzoxNjozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jCmluZGV4IDJhODI5YjVlODI0MGE3Li5iNjZlNjU0MzkzNDExNyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jCkBAIC0xMjcsMTggJiM0MzsxMjcsMTggQEAgc3RhdGljIGludCBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LAogCiAJc3dpdGNoIChyb3V0ZS0mZ3Q7dHVwbGVbZGlyXS54bWl0X3R5cGUpIHsKIAljYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDoKLQkJaWYgKGZsb3dfdHVwbGUtJmd0O3R1bl9udW0pIHsKJiM0MzsJCWlmIChyb3V0ZS0mZ3Q7dHVwbGVbIWRpcl0uaW4ubnVtX3R1bnMpIHsKIAkJCWZsb3dfdHVwbGUtJmd0O2RzdF9jYWNoZSA9IGRzdDsKIAkJCWZsb3dfdHVwbGUtJmd0O2RzdF9jb29raWUgPQogCQkJCWZsb3dfb2ZmbG9hZF9kc3RfY29va2llKGZsb3dfdHVwbGUpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlkc3RfcmVsZWFzZShkc3QpOwogCQl9CiAJCW1lbWNweShmbG93X3R1cGxlLSZndDtvdXQuaF9kZXN0LCByb3V0ZS0mZ3Q7dHVwbGVbZGlyXS5vdXQuaF9kZXN0LAogCQkgICAgICAgRVRIX0FMRU4pOwogCQltZW1jcHkoZmxvd190dXBsZS0mZ3Q7b3V0Lmhfc291cmNlLCByb3V0ZS0mZ3Q7dHVwbGVbZGlyXS5vdXQuaF9zb3VyY2UsCiAJCSAgICAgICBFVEhfQUxFTik7CiAJCWZsb3dfdHVwbGUtJmd0O291dC5pZmlkeCA9IHJvdXRlLSZndDt0dXBsZVtkaXJdLm91dC5pZmluZGV4OwotCQlpZiAoIWZsb3dfdHVwbGUtJmd0O3R1bl9udW0pCi0JCQlkc3RfcmVsZWFzZShkc3QpOwogCQlicmVhazsKIAljYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX1hGUk06CiAJY2FzZSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSDoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5GLUZsb3d0YWJsZSBPZmZsb2FkIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY2AsIHNwZWNpZmljYWxseSB0aGUgYGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGEgY29uZGl0aW9uYWwgcmVsZWFzZSBvZiB0aGUgZGVzdGluYXRpb24gcm91dGUgKGBkc3RfcmVsZWFzZShkc3QpYCkuICBDdXJyZW50bHksIGl0IGFwcGVhcnMgdGhlIHBhdGNoIGlzIHN3YXBwaW5nIG91dCB0aGUgY29uZGl0aW9uIHRvIGRldGVybWluZSB3aGVuIHRvIGNhbGwgYGRzdF9yZWxlYXNlYC4gT3JpZ2luYWxseSB0aGUgY29kZSB3YXMgY2hlY2tpbmcgYGZsb3dfdHVwbGUtJmd0O3R1bl9udW1gIGFuZCBub3cgaXQgaXMgY2hlY2tpbmcgYHJvdXRlLSZndDt0dXBsZVshZGlyXS5pbi5udW1fdHVuc2AuCgpJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGUgc2lnbmlmaWNhbmNlLiBUaGVyZSYjMzk7cyBhIHBvdGVudGlhbCBzdWJ0bGUgYnVnIGhlcmUgcmVsYXRlZCB0byB0dW5uZWwgaGFuZGxpbmcgd2l0aGluIHRoZSBmbG93IG9mZmxvYWQgcGF0aC4gSXQgc2VlbXMgbGlrZSB0aGUgb3JpZ2luYWwgbG9naWMgd2FzIHRpZWQgdG8gd2hldGhlciB0aGUgZmxvdyB0dXBsZSBpdHNlbGYgd2FzIHR1bm5lbGVkIG9yIG5vdCBiYXNlZCBvbiBgZmxvd190dXBsZS0mZ3Q7dHVuX251bWAuIE5vdywgdGhlIGNoZWNrIGlzIGJhc2VkIG9uIHRoZSByb3V0ZSYjMzk7cyB0dW5uZWwgaW5mb3JtYXRpb24gYHJvdXRlLSZndDt0dXBsZVshZGlyXS5pbi5udW1fdHVuc2AuIFRoaXMgY2hhbmdlIGxpa2VseSBhaW1zIHRvIGFsaWduIHRoZSBkZXN0aW5hdGlvbiByb3V0ZSByZWxlYXNlIHdpdGggdGhlIGFjdHVhbCB0dW5uZWwgc2V0dXAgb3IgbGFjayB0aGVyZW9mLCB3aGljaCBtYWtlcyBzZW5zZS4gSSB3b3VsZCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG1hZGUsIGJ1dCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGUgb3JpZ2luYWwgbG9naWMgd2FzIGluY29ycmVjdCwgbGVhZGluZyB0byBhIHBvc3NpYmxlIHJlc291cmNlIGxlYWsgb3IgY29ycnVwdGlvbiBpZiB0aGUgYGRzdF9yZWxlYXNlYCBjYWxsIHdhcyBtYWRlIGF0IHRoZSB3cm9uZyB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Zsb3dfb2ZmbG9hZF9maWxsX3JvdXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jPTg3PXN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpuZnRfcm91dGVfZHN0X2ZldGNoKHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTk2LVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYzo5NzpzdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTk4LVx0XHRcdFx0ICAgc3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM9MTY0PXZvaWQgZmxvd19vZmZsb2FkX3JvdXRlX2luaXQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTE2Ni17XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jOjE2NzpcdGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlKGZsb3csIHJvdXRlLCBGTE9XX09GRkxPQURfRElSX09SSUdJTkFMKTtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM6MTY4Olx0Zmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoZmxvdywgcm91dGUsIEZMT1dfT0ZGTE9BRF9ESVJfUkVQTFkpO1xubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xNjktXHRmbG93LVx1MDAzZXR5cGUgPSBORl9GTE9XX09GRkxPQURfUk9VVEU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgT2ZmbG9hZCBSb3V0ZSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgYXJjaGl0ZWN0dXJlIEkmIzM5O20gbG9va2luZyBhdCBoYXMgdGhpcyBmdW5jdGlvbiwgYGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlYCwgYW5kIGl0JiMzOTtzIGNhbGxlZCBieSBgZmxvd19vZmZsb2FkX3JvdXRlX2luaXRgLiBNYWtlcyBzZW5zZSwgcm91dGUgZmlsbGluZyBoYXBwZW5zIGR1cmluZyBpbml0aWFsaXphdGlvbi4gTXkgbmV4dCBzdGVwLCBvZiBjb3Vyc2UsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMgb2YgYGZsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0YC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHRvIGlkZW50aWZ5IHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0JiMzOTtzIHRyaWdnZXJlZC4gVW5kZXJzdGFuZGluZyAqdGhhdCogaXMga2V5IHRvIGdyYXNwaW5nIHRoZSBvdmVyYWxsIGZsb3cgb2ZmbG9hZCBiZWhhdmlvci4gV2hhdCBtb2R1bGVzLCBzdWJzeXN0ZW1zLCBvciBldmVudCBoYW5kbGVycyBkZXBlbmQgb24gdGhlIGNvcnJlY3QgZXhlY3V0aW9uIG9mIGBmbG93X29mZmxvYWRfcm91dGVfaW5pdGA/IFRoYXQmIzM5O3Mgd2hhdCBJJiMzOTtsbCBiZSBkaWdnaW5nIGludG8uIEkgc3VzcGVjdCBpdCYjMzk7bGwgcXVpY2tseSByZXZlYWwgdGhlIGNyaXRpY2FsIHBhdGhzIGZvciBvZmZsb2FkaW5nIHRyYWZmaWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zmxvd19vZmZsb2FkX3JvdXRlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jPTE1OD1zdGF0aWMgdm9pZCBuZnRfZmxvd19kc3RfcmVsZWFzZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTYzLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYzoxNjQ6dm9pZCBmbG93X29mZmxvYWRfcm91dGVfaW5pdChzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xNjUtXHRcdFx0ICAgICBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUpXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xNzAtfVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYzoxNzE6RVhQT1JUX1NZTUJPTF9HUEwoZmxvd19vZmZsb2FkX3JvdXRlX2luaXQpO1xubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xNzItXG4tLVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM9NTA9c3RhdGljIHZvaWQgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy0xMTUtXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYzoxMTY6XHRmbG93X29mZmxvYWRfcm91dGVfaW5pdChmbG93LCBcdTAwMjZyb3V0ZSk7XG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy0xMTctXHRpZiAodGNwaClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjc4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIEZsb3cgT2ZmbG9hZCBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkLCBhbmQgbXkgbWVudGFsIHJhZGFyIGlzIHBpbmdpbmcgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBUaGlzIGZ1bmN0aW9uIGlzICprZXkqIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBvZmZsb2FkIG9wZXJhdGVzIHdpdGhpbiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yay4gVG8gZ2V0IGEgY29tcGxldGUgaGFuZGxlIG9uIHRoaXMgc3BlY2lmaWMgb2ZmbG9hZCBpbXBsZW1lbnRhdGlvbiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LgoKSSBuZWVkIHRvIHF1aWNrbHkgcmV2aWV3IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gY2hlY2sgYG5mX2Zsb3dfdGFibGVfY29yZS5jYCBhbmQgYWxzbyB0aGUgYXNzb2NpYXRlZCBgbmZ0X2Zsb3dfb2ZmbG9hZC5jYCBmaWxlIGFnYWluLiBXZSBoYXZlIHRvIGVuc3VyZSB0aGF0IGFsbCBuZWVkZWQgZmxhZ3MgYXJlIHNldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9mbG93X3RhYmxlX2NvcmUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDI9b2JqLSQoQ09ORklHX05GX0ZMT1dfVEFCTEUpXHQmIzQzOz0gbmZfZmxvd190YWJsZS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0MzpuZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA3NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gTmV0ZmlsdGVyIEZsb3cgT2ZmbG9hZCoqCgpBbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBDT05GSUdfTkZfRkxPV19UQUJMRWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB3aGF0IEkmIzM5O20gd29ya2luZyBvbi4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cg4oCTIGl0IGdpdmVzIG1lIGEgY2xlYXIgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCYjMzk7cyBlbmFibGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gYG5mdF9mbG93X29mZmxvYWQub2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGZsb3cgb2ZmbG9hZCBmcmFtZXdvcmsuIEkmIzM5O2xsIG5lZWQgdG8gYW5hbHl6ZSBpdHMgY29kZSwgaXRzIGRlcGVuZGVuY2llcywgYW5kIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gc2VlIGhvdyB0byBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfZmxvd19vZmZsb2FkLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTEyPW9iai0kKENPTkZJR19ORlRfQ1QpXHRcdCYjNDM7PSBuZnRfY3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMTM6b2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXHQmIzQzOz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTExNC1vYmotJChDT05GSUdfTkZUX0xJTUlUKVx0XHQmIzQzOz0gbmZ0X2xpbWl0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM4MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gYENPTkZJR19ORlRfRkxPV19PRkZMT0FEYCBpcyBkZWZpbml0ZWx5IGEga2V5IHJlcXVpcmVtZW50LiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gZXhwYW5kIG9uIHRoaXMuIEkmIzM5O3ZlIGdvdCB0byBpbnZlc3RpZ2F0ZSB0aGUgcG90ZW50aWFsIGtub2NrLW9uIGVmZmVjdHMgYW5kIGludGVyZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbi4gVGhlcmUgYXJlIGFsbW9zdCBjZXJ0YWlubHkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFsc28gbmVlZCBhdHRlbnRpb24uIExldCYjMzk7cyBzZWUgd2hhdCBlbHNlIHdlJiMzOTt2ZSBnb3QgdG8gY29uc2lkZXIgYWxvbmdzaWRlIHRoaXMgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfRkxPV19UQUJMRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzAxPWVuZGlmICMgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzAyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjcwMzpjb25maWcgTkZfRkxPV19UQUJMRV9JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzA0LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGZsb3cgdGFibGUgbWl4ZWQgSVB2NC9JUHY2IG1vZHVsZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzExOmNvbmZpZyBORl9GTE9XX1RBQkxFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEyLVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MjE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzIyLVx0Ym9vbCBcJiMzNDtTdXBwbHkgZmxvdyB0YWJsZSBzdGF0aXN0aWNzIGluIHByb2Nmc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzU5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgQ29uZmlndXJhdGlvbiBmb3IgTkZUIEZsb3cgT2ZmbG9hZCoqCgpPa2F5LCBsZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoaXMgYGNvbmZpZyBORlRfRkxPV19PRkZMT0FEYCBzZXR0aW5nLiBUaGlzIGZlZWxzIGxpa2UgYSBjb3JlIHBpZWNlIG9mIHRoZSBwdXp6bGUgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGFyb3VuZCBOZXR3b3JrIEZpbHRlcmluZyBUYWJsZXMgKE5GVCkuIFRoaXMgaXMgYSBmYW1pbGlhciBhcmVhLCBvZiBjb3Vyc2UuIE15IGluaXRpYWwgdGhvdWdodHMgYXJlOiBpcyBpdCBlbmFibGVkPyBEaXNhYmxlZD8gV2hhdCYjMzk7cyB0aGUgY3VycmVudCB2YWx1ZSwgYW5kIGhvdyBpcyB0aGF0IGltcGFjdGluZyB0aGUgZmxvdyBvZmZsb2FkIGJlaGF2aW9yPyBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB2YXJpb3VzIGNvbnRleHRzIHdoZXJlIHRoaXMgd291bGQgYmUgc2lnbmlmaWNhbnQg4oCTIGxpa2VseSBpbiBoaWdoLXRocm91Z2hwdXQgZW52aXJvbm1lbnRzLCBvciB3aXRoIHBhcnRpY3VsYXIgdHJhZmZpYyBwYXR0ZXJucyB3aGVyZSB3ZSYjMzk7cmUgbG9va2luZyB0byBwdXNoIGZpbHRlcmluZyBkZWNpc2lvbnMgZG93biB0byB0aGUgaGFyZHdhcmUgbGV2ZWwgZm9yIGVmZmljaWVuY3kuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgdGhpcyBpcyBhIGNvbXBpbGUtdGltZSBvcHRpb24sIGEgcnVudGltZSBzZXR0aW5nLCBvciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgYm90aC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGVkaWNhdGVkIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLCBvciBpcyB0aGlzIG1vcmUgYWJvdXQgYWNjZWxlcmF0aW5nIHRoZSBzb2Z0d2FyZSBwcm9jZXNzaW5nIG9mIGZsb3dzPyBMZXQmIzM5O3MgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORlRfRkxPV19PRkZMT0FEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz00OTg9Y29uZmlnIE5GVF9FWFRIRFJfRENDUFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MDMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTA0OmNvbmZpZyBORlRfRkxPV19PRkZMT0FEXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTA1LVx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX0ZMT1dfVEFCTEVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTExNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZsb3cgT2ZmbG9hZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZGluZywgYW5kIHRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGhpbmdlIGFyb3VuZCBgTkZfRkxPV19UQUJMRWAgYW5kIGBORlRfRkxPV19PRkZMT0FEYCBjb25maWd1cmF0aW9ucy4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIG9mIGludGVyZXN0IGlzIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBmdW5jdGlvbiByZWFjaGFibGU/IExldCYjMzk7cyB0cmFjZSBpdC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYGZsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0YCwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAuIEFoLCByaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAgaXMgdGhlIGFjdHVhbCBldmFsdWF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgYGZsb3dfb2ZmbG9hZGAgbmV0ZmlsdGVyIGV4cHJlc3Npb24uIEdvb2QsIHNvIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0aGVyZWZvcmUgdGVzdGFibGUuCgpUaGUgcGF0Y2ggaXRzZWxmIGFkZHJlc3NlcyBhIGJ1Zy4gVGhlIG9sZCBjb2RlIGhhZCBhIGNvbmRpdGlvbmFsIGBkc3RfcmVsZWFzZShkc3QpYCBiYXNlZCBvbiB3aGV0aGVyIGBmbG93X3R1cGxlLSZndDt0dW5fbnVtYCB3YXMgemVyby4gVGhlIGNhdGNoPyBgZmxvd190dXBsZS0mZ3Q7dHVuX251bWAgd2FzIGFzc2lnbmVkICp3aXRoaW4qIHRoYXQgdmVyeSBgaWZgIGJsb2NrLiAgRXNzZW50aWFsbHksIGl0IHdhc24mIzM5O3QgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIGNoZWNrZWQuIFRoZSBmaXgsIGZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgaW52b2x2ZXMgY2hlY2tpbmcgYHJvdXRlLSZndDt0dXBsZVshZGlyXS5pbi5udW1fdHVuc2Agbm93LiBUaGUgY29yZSBzeW1ib2xzIGhlcmUgYXJlIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAsIGBmbG93X29mZmxvYWRfcm91dGVfaW5pdGAsIGFuZCBgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsYC4KCkxldCBtZSBxdWlja2x5IGNvbmZpcm0gdGhhdCBgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVgIGlzIHN0YXRpYywgd2hpY2ggSSBzdXNwZWN0IGl0IGlzLiBPa2F5LCB5ZXAsIHRoYXQgbWVhbnMgYGZsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0YCBpcyB0aGUgZXhwb3J0ZWQgc3ltYm9sLiBBbmQgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAgaXMgdGhlIGFjdHVhbCBldmFsdWF0aW9uIGZ1bmN0aW9uLgoKTmV4dCwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgdGhlIHVzYWdlIG9mIGBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1RgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jPTk3PXN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTEyOC1cdHN3aXRjaCAocm91dGUtXHUwMDNldHVwbGVbZGlyXS54bWl0X3R5cGUpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM6MTI5Olx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTEzMC1cdFx0aWYgKHJvdXRlLVx1MDAzZXR1cGxlWyFkaXJdLmluLm51bV90dW5zKSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmM9ODA2PW5mX2Zsb3dfb2ZmbG9hZF9pcF9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMtODY1LVx0XHRicmVhaztcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jOjg2NjpcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMtODY3LVx0XHR4bWl0Lm91dGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHN0YXRlLVx1MDAzZW5ldCwgdHVwbGVoYXNoLVx1MDAzZXR1cGxlLm91dC5pZmlkeCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmM9MTEyMj1uZl9mbG93X29mZmxvYWRfaXB2Nl9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMtMTE4Mi1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYzoxMTgzOlx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYy0xMTg0LVx0XHR4bWl0Lm91dGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHN0YXRlLVx1MDAzZW5ldCwgdHVwbGVoYXNoLVx1MDAzZXR1cGxlLm91dC5pZmlkeCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz0yMzI9c3RhdGljIGludCBmbG93X29mZmxvYWRfZXRoX3NyYyhzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0yNTAtXHRzd2l0Y2ggKHRoaXNfdHVwbGUtXHUwMDNleG1pdF90eXBlKSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jOjI1MTpcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0yNTItXHRcdGFkZHIgPSB0aGlzX3R1cGxlLVx1MDAzZW91dC5oX3NvdXJjZTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jPTI4Mj1zdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9ldGhfZHN0KHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTMwMy1cdHN3aXRjaCAodGhpc190dXBsZS1cdTAwM2V4bWl0X3R5cGUpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6MzA0Olx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTMwNS1cdFx0ZXRoZXJfYWRkcl9jb3B5KGhhLCB0aGlzX3R1cGxlLVx1MDAzZW91dC5oX2Rlc3QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM9NTg1PXN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX3JlZGlyZWN0KHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTU5Ni1cdHN3aXRjaCAodGhpc190dXBsZS1cdTAwM2V4bWl0X3R5cGUpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6NTk3Olx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTU5OC1cdFx0dGhpc190dXBsZSA9IFx1MDAyNmZsb3ctXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGU7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz02MjU9c3RhdGljIGludCBmbG93X29mZmxvYWRfZW5jYXBfdHVubmVsKGNvbnN0IHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy02MzMtXHR0aGlzX3R1cGxlID0gXHUwMDI2Zmxvdy1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZTtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6NjM0Olx0aWYgKHRoaXNfdHVwbGUtXHUwMDNleG1pdF90eXBlID09IEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVClcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtNjM1LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jPTY1ND1zdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9kZWNhcF90dW5uZWwoY29uc3Qgc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTY2Mi1cdG90aGVyX3R1cGxlID0gXHUwMDI2Zmxvdy1cdTAwM2V0dXBsZWhhc2hbIWRpcl0udHVwbGU7XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jOjY2MzpcdGlmIChvdGhlcl90dXBsZS1cdTAwM2V4bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUKVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy02NjQtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9OTU9c3RhdGljIGludCBuZnRfZGV2X3BhdGhfaW5mbyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjayxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTE0My1cdFx0XHRcdG1lbWNweShpbmZvLVx1MDAzZWhfZGVzdCwgcGF0aC1cdTAwM2VlbmNhcC5oX2Rlc3QsIEVUSF9BTEVOKTtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MTQ0Olx0XHRcdFx0aW5mby1cdTAwM2V4bWl0X3R5cGUgPSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q7XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTE0NS1cdFx0XHRcdGluZm8tXHUwMDNlbmVlZHNfZ3NvX3NlZ21lbnQgPSAxO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMTc1LVx0XHRcdH1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MTc2Olx0XHRcdGluZm8tXHUwMDNleG1pdF90eXBlID0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUO1xubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0xNzctXHRcdFx0YnJlYWs7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0xODUtXHQgICAgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShpbmZvLVx1MDAzZWluZGV2KSlcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MTg2Olx0XHRpbmZvLVx1MDAzZXhtaXRfdHlwZSA9IEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMTg3LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjQ2PXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yODQtXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjI4NTpcdGlmIChpbmZvLnhtaXRfdHlwZSA9PSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1QpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjg2LVx0XHRtZW1jcHkocm91dGUtXHUwMDNldHVwbGVbZGlyXS5vdXQuaF9zb3VyY2UsIGluZm8uaF9zb3VyY2UsIEVUSF9BTEVOKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU2MwoJCQkJCQkJb3V0cHV0OiAxMjEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnk6CgoqKkNvZGUgQXNzZXNzbWVudCBhbmQgQWN0aW9uKioKCk9rYXksIGFmdGVyIGV4YW1pbmluZyB0aGUgc2l0dWF0aW9uLCB0aGVyZSYjMzk7cyBubyBkb3VidCBpbiBteSBtaW5kOiB0aGUgY29kZSBwYXRoIGluIHF1ZXN0aW9uIGlzIGJvdGggYWNjZXNzaWJsZSBhbmQsIGFzIGZhciBhcyBJIGNhbiB0ZWxsLCBmdWxseSBvcGVyYXRpb25hbC4gVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBwcm9jZWVkaW5nIHdpdGggdGhlIG5leHQgc3RlcC4gTXkgaW1tZWRpYXRlIGNvdXJzZSBvZiBhY3Rpb24gd2lsbCBiZSB0byBkZWZpbmUgYW5kIHNldCB0aGUgaW50ZW5kZWQgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OywKICAgICYjMzQ7TkZUX0ZMT1dfT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zsb3dfb2ZmbG9hZF9maWxsX3JvdXRlJiMzNDssCiAgICAmIzM0O2Zsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0JiMzNDssCiAgICAmIzM0O25mdF9mbG93X29mZmxvYWRfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIG5ldGZpbHRlciBmbG93IG9mZmxvYWQgcm91dGluZyBsb2dpYyB3aGVyZSBhIGRlc3RpbmF0aW9uIGVudHJ5IHdhcyBpbmNvcnJlY3RseSByZWxlYXNlZCBvciBsZWFrZWQgYmFzZWQgb24gYSB3cm9uZyBjb25kaXRpb24uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGZsb3cgb2ZmbG9hZCBleHByZXNzaW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDssCiAgICAmIzM0O05GVF9GTE9XX09GRkxPQUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X29mZmxvYWRfZmlsbF9yb3V0ZSYjMzQ7LAogICAgJiMzNDtmbG93X29mZmxvYWRfcm91dGVfaW5pdCYjMzQ7LAogICAgJiMzNDtuZnRfZmxvd19vZmZsb2FkX2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHJvdXRpbmcgbG9naWMgd2hlcmUgYSBkZXN0aW5hdGlvbiBlbnRyeSB3YXMgaW5jb3JyZWN0bHkgcmVsZWFzZWQgb3IgbGVha2VkIGJhc2VkIG9uIGEgd3JvbmcgY29uZGl0aW9uLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBuZnRhYmxlcyBmbG93IG9mZmxvYWQgZXhwcmVzc2lvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE2OjMxLjg4MzAxMDE0NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNzIxMDU1ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GVF9GTE9XX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbG93X29mZmxvYWRfZmlsbF9yb3V0ZVwiLFxuICAgIFwiZmxvd19vZmZsb2FkX3JvdXRlX2luaXRcIixcbiAgICBcIm5mdF9mbG93X29mZmxvYWRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCByb3V0aW5nIGxvZ2ljIHdoZXJlIGEgZGVzdGluYXRpb24gZW50cnkgd2FzIGluY29ycmVjdGx5IHJlbGVhc2VkIG9yIGxlYWtlZCBiYXNlZCBvbiBhIHdyb25nIGNvbmRpdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgZmxvdyBvZmZsb2FkIGV4cHJlc3Npb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE2OjMxLjg4MzAxNTI2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkwODkxMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjQ5MTFjMDY1MzQzY2UxNGY3NmM1NWFhNjIxZWI0ZDU4NjNhYTc3MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAwNzoxNjozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY1xcbmluZGV4IDJhODI5YjVlODI0MGE3Li5iNjZlNjU0MzkzNDExNyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY1xcbkBAIC0xMjcsMTggKzEyNywxOCBAQCBzdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXFxuIFxcbiBcXHRzd2l0Y2ggKHJvdXRlLVxcdTAwM2V0dXBsZVtkaXJdLnhtaXRfdHlwZSkge1xcbiBcXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDpcXG4tXFx0XFx0aWYgKGZsb3dfdHVwbGUtXFx1MDAzZXR1bl9udW0pIHtcXG4rXFx0XFx0aWYgKHJvdXRlLVxcdTAwM2V0dXBsZVshZGlyXS5pbi5udW1fdHVucykge1xcbiBcXHRcXHRcXHRmbG93X3R1cGxlLVxcdTAwM2Vkc3RfY2FjaGUgPSBkc3Q7XFxuIFxcdFxcdFxcdGZsb3dfdHVwbGUtXFx1MDAzZWRzdF9jb29raWUgPVxcbiBcXHRcXHRcXHRcXHRmbG93X29mZmxvYWRfZHN0X2Nvb2tpZShmbG93X3R1cGxlKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZHN0X3JlbGVhc2UoZHN0KTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRtZW1jcHkoZmxvd190dXBsZS1cXHUwMDNlb3V0LmhfZGVzdCwgcm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ub3V0LmhfZGVzdCxcXG4gXFx0XFx0ICAgICAgIEVUSF9BTEVOKTtcXG4gXFx0XFx0bWVtY3B5KGZsb3dfdHVwbGUtXFx1MDAzZW91dC5oX3NvdXJjZSwgcm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ub3V0Lmhfc291cmNlLFxcbiBcXHRcXHQgICAgICAgRVRIX0FMRU4pO1xcbiBcXHRcXHRmbG93X3R1cGxlLVxcdTAwM2VvdXQuaWZpZHggPSByb3V0ZS1cXHUwMDNldHVwbGVbZGlyXS5vdXQuaWZpbmRleDtcXG4tXFx0XFx0aWYgKCFmbG93X3R1cGxlLVxcdTAwM2V0dW5fbnVtKVxcbi1cXHRcXHRcXHRkc3RfcmVsZWFzZShkc3QpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9YRlJNOlxcbiBcXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxNjozMi43NzQ5MTYxOTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODI5MTQwODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GVF9GTE9XX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbG93X29mZmxvYWRfZmlsbF9yb3V0ZVwiLFxuICAgIFwiZmxvd19vZmZsb2FkX3JvdXRlX2luaXRcIixcbiAgICBcIm5mdF9mbG93X29mZmxvYWRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCByb3V0aW5nIGxvZ2ljIHdoZXJlIGEgZGVzdGluYXRpb24gZW50cnkgd2FzIGluY29ycmVjdGx5IHJlbGVhc2VkIG9yIGxlYWtlZCBiYXNlZCBvbiBhIHdyb25nIGNvbmRpdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgZmxvdyBvZmZsb2FkIGV4cHJlc3Npb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjQ5MTFjMDY1MzQzY2UxNGY3NmM1NWFhNjIxZWI0ZDU4NjNhYTc3MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDA3OjE2OjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNcbmluZGV4IDJhODI5YjVlODI0MGE3Li5iNjZlNjU0MzkzNDExNyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNcbkBAIC0xMjcsMTggKzEyNywxOCBAQCBzdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXG4gXG4gXHRzd2l0Y2ggKHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ueG1pdF90eXBlKSB7XG4gXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDpcbi1cdFx0aWYgKGZsb3dfdHVwbGUtXHUwMDNldHVuX251bSkge1xuK1x0XHRpZiAocm91dGUtXHUwMDNldHVwbGVbIWRpcl0uaW4ubnVtX3R1bnMpIHtcbiBcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jYWNoZSA9IGRzdDtcbiBcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jb29raWUgPVxuIFx0XHRcdFx0Zmxvd19vZmZsb2FkX2RzdF9jb29raWUoZmxvd190dXBsZSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZHN0X3JlbGVhc2UoZHN0KTtcbiBcdFx0fVxuIFx0XHRtZW1jcHkoZmxvd190dXBsZS1cdTAwM2VvdXQuaF9kZXN0LCByb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLm91dC5oX2Rlc3QsXG4gXHRcdCAgICAgICBFVEhfQUxFTik7XG4gXHRcdG1lbWNweShmbG93X3R1cGxlLVx1MDAzZW91dC5oX3NvdXJjZSwgcm91dGUtXHUwMDNldHVwbGVbZGlyXS5vdXQuaF9zb3VyY2UsXG4gXHRcdCAgICAgICBFVEhfQUxFTik7XG4gXHRcdGZsb3dfdHVwbGUtXHUwMDNlb3V0LmlmaWR4ID0gcm91dGUtXHUwMDNldHVwbGVbZGlyXS5vdXQuaWZpbmRleDtcbi1cdFx0aWYgKCFmbG93X3R1cGxlLVx1MDAzZXR1bl9udW0pXG4tXHRcdFx0ZHN0X3JlbGVhc2UoZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX1hGUk06XG4gXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6MzIuNzc0OTE4NzAyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ2MDI2MzI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GLUZsb3d0YWJsZSBPZmZsb2FkIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAgZnVuY3Rpb24uIFRoZSBrZXkgaGVyZSBzZWVtcyB0byBiZSBhIGNvbmRpdGlvbmFsIHJlbGVhc2Ugb2YgdGhlIGRlc3RpbmF0aW9uIHJvdXRlIChgZHN0X3JlbGVhc2UoZHN0KWApLiAgQ3VycmVudGx5LCBpdCBhcHBlYXJzIHRoZSBwYXRjaCBpcyBzd2FwcGluZyBvdXQgdGhlIGNvbmRpdGlvbiB0byBkZXRlcm1pbmUgd2hlbiB0byBjYWxsIGBkc3RfcmVsZWFzZWAuIE9yaWdpbmFsbHkgdGhlIGNvZGUgd2FzIGNoZWNraW5nIGBmbG93X3R1cGxlLVx1MDAzZXR1bl9udW1gIGFuZCBub3cgaXQgaXMgY2hlY2tpbmcgYHJvdXRlLVx1MDAzZXR1cGxlWyFkaXJdLmluLm51bV90dW5zYC5cblxuSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhlIHNpZ25pZmljYW5jZS4gVGhlcmUncyBhIHBvdGVudGlhbCBzdWJ0bGUgYnVnIGhlcmUgcmVsYXRlZCB0byB0dW5uZWwgaGFuZGxpbmcgd2l0aGluIHRoZSBmbG93IG9mZmxvYWQgcGF0aC4gSXQgc2VlbXMgbGlrZSB0aGUgb3JpZ2luYWwgbG9naWMgd2FzIHRpZWQgdG8gd2hldGhlciB0aGUgZmxvdyB0dXBsZSBpdHNlbGYgd2FzIHR1bm5lbGVkIG9yIG5vdCBiYXNlZCBvbiBgZmxvd190dXBsZS1cdTAwM2V0dW5fbnVtYC4gTm93LCB0aGUgY2hlY2sgaXMgYmFzZWQgb24gdGhlIHJvdXRlJ3MgdHVubmVsIGluZm9ybWF0aW9uIGByb3V0ZS1cdTAwM2V0dXBsZVshZGlyXS5pbi5udW1fdHVuc2AuIFRoaXMgY2hhbmdlIGxpa2VseSBhaW1zIHRvIGFsaWduIHRoZSBkZXN0aW5hdGlvbiByb3V0ZSByZWxlYXNlIHdpdGggdGhlIGFjdHVhbCB0dW5uZWwgc2V0dXAgb3IgbGFjayB0aGVyZW9mLCB3aGljaCBtYWtlcyBzZW5zZS4gSSB3b3VsZCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG1hZGUsIGJ1dCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGUgb3JpZ2luYWwgbG9naWMgd2FzIGluY29ycmVjdCwgbGVhZGluZyB0byBhIHBvc3NpYmxlIHJlc291cmNlIGxlYWsgb3IgY29ycnVwdGlvbiBpZiB0aGUgYGRzdF9yZWxlYXNlYCBjYWxsIHdhcyBtYWRlIGF0IHRoZSB3cm9uZyB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQ4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6MzkuMjM1MTg0NjkxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjE5MzcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbG93X29mZmxvYWRfZmlsbF9yb3V0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM9ODc9c3RhdGljIHN0cnVjdCBkc3RfZW50cnkgKm5mdF9yb3V0ZV9kc3RfZmV0Y2goc3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy05Ni1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jOjk3OnN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTk4LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM9MTY0PXZvaWQgZmxvd19vZmZsb2FkX3JvdXRlX2luaXQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTY2LXtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jOjE2NzpcXHRmbG93X29mZmxvYWRfZmlsbF9yb3V0ZShmbG93LCByb3V0ZSwgRkxPV19PRkZMT0FEX0RJUl9PUklHSU5BTCk7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYzoxNjg6XFx0Zmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoZmxvdywgcm91dGUsIEZMT1dfT0ZGTE9BRF9ESVJfUkVQTFkpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTY5LVxcdGZsb3ctXFx1MDAzZXR5cGUgPSBORl9GTE9XX09GRkxPQURfUk9VVEU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE2OjM5LjM4NzM4MjQyOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTAxMTMzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgT2ZmbG9hZCBSb3V0ZSBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBhcmNoaXRlY3R1cmUgSSdtIGxvb2tpbmcgYXQgaGFzIHRoaXMgZnVuY3Rpb24sIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAsIGFuZCBpdCdzIGNhbGxlZCBieSBgZmxvd19vZmZsb2FkX3JvdXRlX2luaXRgLiBNYWtlcyBzZW5zZSwgcm91dGUgZmlsbGluZyBoYXBwZW5zIGR1cmluZyBpbml0aWFsaXphdGlvbi4gTXkgbmV4dCBzdGVwLCBvZiBjb3Vyc2UsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMgb2YgYGZsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0YC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHRvIGlkZW50aWZ5IHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0J3MgdHJpZ2dlcmVkLiBVbmRlcnN0YW5kaW5nICp0aGF0KiBpcyBrZXkgdG8gZ3Jhc3BpbmcgdGhlIG92ZXJhbGwgZmxvdyBvZmZsb2FkIGJlaGF2aW9yLiBXaGF0IG1vZHVsZXMsIHN1YnN5c3RlbXMsIG9yIGV2ZW50IGhhbmRsZXJzIGRlcGVuZCBvbiB0aGUgY29ycmVjdCBleGVjdXRpb24gb2YgYGZsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0YD8gVGhhdCdzIHdoYXQgSSdsbCBiZSBkaWdnaW5nIGludG8uIEkgc3VzcGVjdCBpdCdsbCBxdWlja2x5IHJldmVhbCB0aGUgY3JpdGljYWwgcGF0aHMgZm9yIG9mZmxvYWRpbmcgdHJhZmZpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA3NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE2OjQyLjkzNzQ5ODA5M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk2Nzc5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmxvd19vZmZsb2FkX3JvdXRlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYz0xNTg9c3RhdGljIHZvaWQgbmZ0X2Zsb3dfZHN0X3JlbGVhc2Uoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTYzLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM6MTY0OnZvaWQgZmxvd19vZmZsb2FkX3JvdXRlX2luaXQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTE2NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTcwLX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jOjE3MTpFWFBPUlRfU1lNQk9MX0dQTChmbG93X29mZmxvYWRfcm91dGVfaW5pdCk7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xNzItXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYz01MD1zdGF0aWMgdm9pZCBuZnRfZmxvd19vZmZsb2FkX2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtMTE1LVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jOjExNjpcXHRmbG93X29mZmxvYWRfcm91dGVfaW5pdChmbG93LCBcXHUwMDI2cm91dGUpO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTExNy1cXHRpZiAodGNwaClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6NDMuMDQ3MTg2OTUxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MjYxMDcyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIEZsb3cgT2ZmbG9hZCBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCwgYW5kIG15IG1lbnRhbCByYWRhciBpcyBwaW5naW5nIGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgIHdpdGhpbiBgbmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBUaGlzIGZ1bmN0aW9uIGlzICprZXkqIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBvZmZsb2FkIG9wZXJhdGVzIHdpdGhpbiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yay4gVG8gZ2V0IGEgY29tcGxldGUgaGFuZGxlIG9uIHRoaXMgc3BlY2lmaWMgb2ZmbG9hZCBpbXBsZW1lbnRhdGlvbiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LlxuXG5JIG5lZWQgdG8gcXVpY2tseSByZXZpZXcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGltZSB0byBjaGVjayBgbmZfZmxvd190YWJsZV9jb3JlLmNgIGFuZCBhbHNvIHRoZSBhc3NvY2lhdGVkIGBuZnRfZmxvd19vZmZsb2FkLmNgIGZpbGUgYWdhaW4uIFdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgYWxsIG5lZWRlZCBmbGFncyBhcmUgc2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6NDcuMTk5Nzk5Nzg3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMDEzMTYwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlX2NvcmUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTQyPW9iai0kKENPTkZJR19ORl9GTE9XX1RBQkxFKVxcdCs9IG5mX2Zsb3dfdGFibGUub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTQzOm5mX2Zsb3dfdGFibGUtb2Jqc1xcdFxcdDo9IG5mX2Zsb3dfdGFibGVfY29yZS5vIG5mX2Zsb3dfdGFibGVfaXAubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDQtXFx0XFx0XFx0XFx0ICAgbmZfZmxvd190YWJsZV9wYXRoLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxNjo0Ny43Mjk5MzY5NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzA3OTI2OTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIE5ldGZpbHRlciBGbG93IE9mZmxvYWQqKlxuXG5BbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBDT05GSUdfTkZfRkxPV19UQUJMRWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB3aGF0IEknbSB3b3JraW5nIG9uLiBUaGF0J3MgZ29vZCB0byBrbm93IOKAkyBpdCBnaXZlcyBtZSBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBlbmFibGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gYG5mdF9mbG93X29mZmxvYWQub2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGZsb3cgb2ZmbG9hZCBmcmFtZXdvcmsuIEknbGwgbmVlZCB0byBhbmFseXplIGl0cyBjb2RlLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBzZWUgaG93IHRvIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxNjo1Mi4wMzc4NjYzMDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTY4OTg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfZmxvd19vZmZsb2FkLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTExMj1vYmotJChDT05GSUdfTkZUX0NUKVxcdFxcdCs9IG5mdF9jdC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMTM6b2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXFx0Kz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMTQtb2JqLSQoQ09ORklHX05GVF9MSU1JVClcXHRcXHQrPSBuZnRfbGltaXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxNjo1Mi4xODM1NjExMTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ2NjEzODcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkFzc2Vzc2luZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIGBDT05GSUdfTkZUX0ZMT1dfT0ZGTE9BRGAgaXMgZGVmaW5pdGVseSBhIGtleSByZXF1aXJlbWVudC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gZXhwYW5kIG9uIHRoaXMuIEkndmUgZ290IHRvIGludmVzdGlnYXRlIHRoZSBwb3RlbnRpYWwga25vY2stb24gZWZmZWN0cyBhbmQgaW50ZXJkZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGVyZSBhcmUgYWxtb3N0IGNlcnRhaW5seSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgYWxzbyBuZWVkIGF0dGVudGlvbi4gTGV0J3Mgc2VlIHdoYXQgZWxzZSB3ZSd2ZSBnb3QgdG8gY29uc2lkZXIgYWxvbmdzaWRlIHRoaXMgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzgwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6NTcuNjQ5NzAyNTY0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI4MzA2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0ZMT1dfVEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MDE9ZW5kaWYgIyBORl9UQUJMRVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzAyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MDM6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfSU5FVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MDQtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBmbG93IHRhYmxlIG1peGVkIElQdjQvSVB2NiBtb2R1bGVcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MTE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEyLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtb2R1bGVcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzIwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MjE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfUFJPQ0ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMi1cXHRib29sIFxcXCJTdXBwbHkgZmxvdyB0YWJsZSBzdGF0aXN0aWNzIGluIHByb2Nmc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6NTcuNzgyNTM4MDMyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDM0NjU5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIENvbmZpZ3VyYXRpb24gZm9yIE5GVCBGbG93IE9mZmxvYWQqKlxuXG5Pa2F5LCBsZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gdGhpcyBgY29uZmlnIE5GVF9GTE9XX09GRkxPQURgIHNldHRpbmcuIFRoaXMgZmVlbHMgbGlrZSBhIGNvcmUgcGllY2Ugb2YgdGhlIHB1enpsZSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHdpdGhpbiB0aGUga2VybmVsJ3MgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGFyb3VuZCBOZXR3b3JrIEZpbHRlcmluZyBUYWJsZXMgKE5GVCkuIFRoaXMgaXMgYSBmYW1pbGlhciBhcmVhLCBvZiBjb3Vyc2UuIE15IGluaXRpYWwgdGhvdWdodHMgYXJlOiBpcyBpdCBlbmFibGVkPyBEaXNhYmxlZD8gV2hhdCdzIHRoZSBjdXJyZW50IHZhbHVlLCBhbmQgaG93IGlzIHRoYXQgaW1wYWN0aW5nIHRoZSBmbG93IG9mZmxvYWQgYmVoYXZpb3I/IEknbSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdmFyaW91cyBjb250ZXh0cyB3aGVyZSB0aGlzIHdvdWxkIGJlIHNpZ25pZmljYW50IOKAkyBsaWtlbHkgaW4gaGlnaC10aHJvdWdocHV0IGVudmlyb25tZW50cywgb3Igd2l0aCBwYXJ0aWN1bGFyIHRyYWZmaWMgcGF0dGVybnMgd2hlcmUgd2UncmUgbG9va2luZyB0byBwdXNoIGZpbHRlcmluZyBkZWNpc2lvbnMgZG93biB0byB0aGUgaGFyZHdhcmUgbGV2ZWwgZm9yIGVmZmljaWVuY3kuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgdGhpcyBpcyBhIGNvbXBpbGUtdGltZSBvcHRpb24sIGEgcnVudGltZSBzZXR0aW5nLCBvciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgYm90aC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGVkaWNhdGVkIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLCBvciBpcyB0aGlzIG1vcmUgYWJvdXQgYWNjZWxlcmF0aW5nIHRoZSBzb2Z0d2FyZSBwcm9jZXNzaW5nIG9mIGZsb3dzPyBMZXQncyBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc1OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE3OjAwLjgyNjAwNjg4NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM3MTEwNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GVF9GTE9XX09GRkxPQURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00OTg9Y29uZmlnIE5GVF9FWFRIRFJfRENDUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTUwMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTA0OmNvbmZpZyBORlRfRkxPV19PRkZMT0FEXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTUwNS1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9GTE9XX1RBQkxFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE3OjAwLjkwOTcyMjMwM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzkxODQ5OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmxvdyBPZmZsb2FkIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZGluZywgYW5kIHRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGhpbmdlIGFyb3VuZCBgTkZfRkxPV19UQUJMRWAgYW5kIGBORlRfRkxPV19PRkZMT0FEYCBjb25maWd1cmF0aW9ucy4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIG9mIGludGVyZXN0IGlzIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBmdW5jdGlvbiByZWFjaGFibGU/IExldCdzIHRyYWNlIGl0LiBJdCdzIGNhbGxlZCBmcm9tIGBmbG93X29mZmxvYWRfcm91dGVfaW5pdGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgLiBBaCwgcmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2Ug4oCTIGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgIGlzIHRoZSBhY3R1YWwgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGBmbG93X29mZmxvYWRgIG5ldGZpbHRlciBleHByZXNzaW9uLiBHb29kLCBzbyBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0aGVyZWZvcmUgdGVzdGFibGUuXG5cblRoZSBwYXRjaCBpdHNlbGYgYWRkcmVzc2VzIGEgYnVnLiBUaGUgb2xkIGNvZGUgaGFkIGEgY29uZGl0aW9uYWwgYGRzdF9yZWxlYXNlKGRzdClgIGJhc2VkIG9uIHdoZXRoZXIgYGZsb3dfdHVwbGUtXHUwMDNldHVuX251bWAgd2FzIHplcm8uIFRoZSBjYXRjaD8gYGZsb3dfdHVwbGUtXHUwMDNldHVuX251bWAgd2FzIGFzc2lnbmVkICp3aXRoaW4qIHRoYXQgdmVyeSBgaWZgIGJsb2NrLiAgRXNzZW50aWFsbHksIGl0IHdhc24ndCBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgY2hlY2tlZC4gVGhlIGZpeCwgZnJvbSB3aGF0IEknbSBzZWVpbmcsIGludm9sdmVzIGNoZWNraW5nIGByb3V0ZS1cdTAwM2V0dXBsZVshZGlyXS5pbi5udW1fdHVuc2Agbm93LiBUaGUgY29yZSBzeW1ib2xzIGhlcmUgYXJlIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAsIGBmbG93X29mZmxvYWRfcm91dGVfaW5pdGAsIGFuZCBgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsYC5cblxuTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGF0IGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAgaXMgc3RhdGljLCB3aGljaCBJIHN1c3BlY3QgaXQgaXMuIE9rYXksIHllcCwgdGhhdCBtZWFucyBgZmxvd19vZmZsb2FkX3JvdXRlX2luaXRgIGlzIHRoZSBleHBvcnRlZCBzeW1ib2wuIEFuZCBgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsYCBpcyB0aGUgYWN0dWFsIGV2YWx1YXRpb24gZnVuY3Rpb24uXG5cbk5leHQsIEknbGwgcXVpY2tseSBjaGVjayBmb3IgdGhlIHVzYWdlIG9mIGBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1RgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTE0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE3OjA4LjMwMTU3NDYxOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NjM5NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jPTk3PXN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTI4LVxcdHN3aXRjaCAocm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ueG1pdF90eXBlKSB7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYzoxMjk6XFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xMzAtXFx0XFx0aWYgKHJvdXRlLVxcdTAwM2V0dXBsZVshZGlyXS5pbi5udW1fdHVucykge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmM9ODA2PW5mX2Zsb3dfb2ZmbG9hZF9pcF9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYy04NjUtXFx0XFx0YnJlYWs7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmM6ODY2OlxcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jLTg2Ny1cXHRcXHR4bWl0Lm91dGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHN0YXRlLVxcdTAwM2VuZXQsIHR1cGxlaGFzaC1cXHUwMDNldHVwbGUub3V0LmlmaWR4KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jPTExMjI9bmZfZmxvd19vZmZsb2FkX2lwdjZfaG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMtMTE4Mi1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYzoxMTgzOlxcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jLTExODQtXFx0XFx0eG1pdC5vdXRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzdGF0ZS1cXHUwMDNlbmV0LCB0dXBsZWhhc2gtXFx1MDAzZXR1cGxlLm91dC5pZmlkeCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jPTIzMj1zdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9ldGhfc3JjKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtMjUwLVxcdHN3aXRjaCAodGhpc190dXBsZS1cXHUwMDNleG1pdF90eXBlKSB7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYzoyNTE6XFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0yNTItXFx0XFx0YWRkciA9IHRoaXNfdHVwbGUtXFx1MDAzZW91dC5oX3NvdXJjZTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM9MjgyPXN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2V0aF9kc3Qoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0zMDMtXFx0c3dpdGNoICh0aGlzX3R1cGxlLVxcdTAwM2V4bWl0X3R5cGUpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jOjMwNDpcXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDpcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTMwNS1cXHRcXHRldGhlcl9hZGRyX2NvcHkoaGEsIHRoaXNfdHVwbGUtXFx1MDAzZW91dC5oX2Rlc3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz01ODU9c3RhdGljIGludCBmbG93X29mZmxvYWRfcmVkaXJlY3Qoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy01OTYtXFx0c3dpdGNoICh0aGlzX3R1cGxlLVxcdTAwM2V4bWl0X3R5cGUpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jOjU5NzpcXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDpcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTU5OC1cXHRcXHR0aGlzX3R1cGxlID0gXFx1MDAyNmZsb3ctXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz02MjU9c3RhdGljIGludCBmbG93X29mZmxvYWRfZW5jYXBfdHVubmVsKGNvbnN0IHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTYzMy1cXHR0aGlzX3R1cGxlID0gXFx1MDAyNmZsb3ctXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlO1xcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6NjM0OlxcdGlmICh0aGlzX3R1cGxlLVxcdTAwM2V4bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUKVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtNjM1LVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz02NTQ9c3RhdGljIGludCBmbG93X29mZmxvYWRfZGVjYXBfdHVubmVsKGNvbnN0IHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTY2Mi1cXHRvdGhlcl90dXBsZSA9IFxcdTAwMjZmbG93LVxcdTAwM2V0dXBsZWhhc2hbIWRpcl0udHVwbGU7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYzo2NjM6XFx0aWYgKG90aGVyX3R1cGxlLVxcdTAwM2V4bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUKVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtNjY0LVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz05NT1zdGF0aWMgaW50IG5mdF9kZXZfcGF0aF9pbmZvKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0xNDMtXFx0XFx0XFx0XFx0bWVtY3B5KGluZm8tXFx1MDAzZWhfZGVzdCwgcGF0aC1cXHUwMDNlZW5jYXAuaF9kZXN0LCBFVEhfQUxFTik7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzoxNDQ6XFx0XFx0XFx0XFx0aW5mby1cXHUwMDNleG1pdF90eXBlID0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUO1xcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMTQ1LVxcdFxcdFxcdFxcdGluZm8tXFx1MDAzZW5lZWRzX2dzb19zZWdtZW50ID0gMTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMTc1LVxcdFxcdFxcdH1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjE3NjpcXHRcXHRcXHRpbmZvLVxcdTAwM2V4bWl0X3R5cGUgPSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0xNzctXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTE4NS1cXHQgICAgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShpbmZvLVxcdTAwM2VpbmRldikpXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzoxODY6XFx0XFx0aW5mby1cXHUwMDNleG1pdF90eXBlID0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUO1xcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMTg3LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0yNDY9c3RhdGljIGludCBuZnRfZGV2X2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjg0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6Mjg1OlxcdGlmIChpbmZvLnhtaXRfdHlwZSA9PSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1QpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI4Ni1cXHRcXHRtZW1jcHkocm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ub3V0Lmhfc291cmNlLCBpbmZvLmhfc291cmNlLCBFVEhfQUxFTik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE3OjA4LjQwNjIxODI0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDcxMzk0NTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgeW91ciBzdW1tYXJ5OlxuXG4qKkNvZGUgQXNzZXNzbWVudCBhbmQgQWN0aW9uKipcblxuT2theSwgYWZ0ZXIgZXhhbWluaW5nIHRoZSBzaXR1YXRpb24sIHRoZXJlJ3Mgbm8gZG91YnQgaW4gbXkgbWluZDogdGhlIGNvZGUgcGF0aCBpbiBxdWVzdGlvbiBpcyBib3RoIGFjY2Vzc2libGUgYW5kLCBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgZnVsbHkgb3BlcmF0aW9uYWwuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBwcm9jZWVkaW5nIHdpdGggdGhlIG5leHQgc3RlcC4gTXkgaW1tZWRpYXRlIGNvdXJzZSBvZiBhY3Rpb24gd2lsbCBiZSB0byBkZWZpbmUgYW5kIHNldCB0aGUgaW50ZW5kZWQgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU2MywiT3V0cHV0VG9rZW5zIjoxMjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxNzoxMy40Nzc2MTUwMjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY0Mzg3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GVF9GTE9XX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbG93X29mZmxvYWRfZmlsbF9yb3V0ZVwiLFxuICAgIFwiZmxvd19vZmZsb2FkX3JvdXRlX2luaXRcIixcbiAgICBcIm5mdF9mbG93X29mZmxvYWRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCByb3V0aW5nIGxvZ2ljIHdoZXJlIGEgZGVzdGluYXRpb24gZW50cnkgd2FzIGluY29ycmVjdGx5IHJlbGVhc2VkIG9yIGxlYWtlZCBiYXNlZCBvbiBhIHdyb25nIGNvbmRpdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgZmxvdyBvZmZsb2FkIGV4cHJlc3Npb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfRkxPV19UQUJMRVwiLFxuICAgIFwiTkZUX0ZMT1dfT0ZGTE9BRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlXCIsXG4gICAgXCJmbG93X29mZmxvYWRfcm91dGVfaW5pdFwiLFxuICAgIFwibmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHJvdXRpbmcgbG9naWMgd2hlcmUgYSBkZXN0aW5hdGlvbiBlbnRyeSB3YXMgaW5jb3JyZWN0bHkgcmVsZWFzZWQgb3IgbGVha2VkIGJhc2VkIG9uIGEgd3JvbmcgY29uZGl0aW9uLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBuZnRhYmxlcyBmbG93IG9mZmxvYWQgZXhwcmVzc2lvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpthxt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 06:46:44 +0000 UTC FinishedAt: 2026-07-10 07:17:14 +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": "24c4c88259464d38b35c3fbaecb68675de64137d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE", "NFT_FLOW_OFFLOAD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "24c4c88259464d38b35c3fbaecb68675de64137d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE", "NFT_FLOW_OFFLOAD" ], "series_id": "27d34668-5913-4ebe-b62f-a5002a12fdaa" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "flow_offload_fill_route", "flow_offload_route_init", "nft_flow_offload_eval" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OywKICAgICYjMzQ7TkZUX0ZMT1dfT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zsb3dfb2ZmbG9hZF9maWxsX3JvdXRlJiMzNDssCiAgICAmIzM0O2Zsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0JiMzNDssCiAgICAmIzM0O25mdF9mbG93X29mZmxvYWRfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIG5ldGZpbHRlciBmbG93IG9mZmxvYWQgcm91dGluZyBsb2dpYyB3aGVyZSBhIGRlc3RpbmF0aW9uIGVudHJ5IHdhcyBpbmNvcnJlY3RseSByZWxlYXNlZCBvciBsZWFrZWQgYmFzZWQgb24gYSB3cm9uZyBjb25kaXRpb24uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGZsb3cgb2ZmbG9hZCBleHByZXNzaW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjQ5MTFjMDY1MzQzY2UxNGY3NmM1NWFhNjIxZWI0ZDU4NjNhYTc3MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDA3OjE2OjMwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG5pbmRleCAyYTgyOWI1ZTgyNDBhNy4uYjY2ZTY1NDM5MzQxMTcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG5AQCAtMTI3LDE4ICYjNDM7MTI3LDE4IEBAIHN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbiBcbiBcdHN3aXRjaCAocm91dGUtXHUwMDNldHVwbGVbZGlyXS54bWl0X3R5cGUpIHtcbiBcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxuLVx0XHRpZiAoZmxvd190dXBsZS1cdTAwM2V0dW5fbnVtKSB7XG4mIzQzO1x0XHRpZiAocm91dGUtXHUwMDNldHVwbGVbIWRpcl0uaW4ubnVtX3R1bnMpIHtcbiBcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jYWNoZSA9IGRzdDtcbiBcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jb29raWUgPVxuIFx0XHRcdFx0Zmxvd19vZmZsb2FkX2RzdF9jb29raWUoZmxvd190dXBsZSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRkc3RfcmVsZWFzZShkc3QpO1xuIFx0XHR9XG4gXHRcdG1lbWNweShmbG93X3R1cGxlLVx1MDAzZW91dC5oX2Rlc3QsIHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ub3V0LmhfZGVzdCxcbiBcdFx0ICAgICAgIEVUSF9BTEVOKTtcbiBcdFx0bWVtY3B5KGZsb3dfdHVwbGUtXHUwMDNlb3V0Lmhfc291cmNlLCByb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLm91dC5oX3NvdXJjZSxcbiBcdFx0ICAgICAgIEVUSF9BTEVOKTtcbiBcdFx0Zmxvd190dXBsZS1cdTAwM2VvdXQuaWZpZHggPSByb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLm91dC5pZmluZGV4O1xuLVx0XHRpZiAoIWZsb3dfdHVwbGUtXHUwMDNldHVuX251bSlcbi1cdFx0XHRkc3RfcmVsZWFzZShkc3QpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfWEZSTTpcbiBcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfTkVJR0g6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfRkxPV19UQUJMRSYjMzQ7LAogICAgJiMzNDtORlRfRkxPV19PRkZMT0FEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zmxvd19vZmZsb2FkX2ZpbGxfcm91dGUmIzM0OywKICAgICYjMzQ7Zmxvd19vZmZsb2FkX3JvdXRlX2luaXQmIzM0OywKICAgICYjMzQ7bmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCByb3V0aW5nIGxvZ2ljIHdoZXJlIGEgZGVzdGluYXRpb24gZW50cnkgd2FzIGluY29ycmVjdGx5IHJlbGVhc2VkIG9yIGxlYWtlZCBiYXNlZCBvbiBhIHdyb25nIGNvbmRpdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgZmxvdyBvZmZsb2FkIGV4cHJlc3Npb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI0OTExYzA2NTM0M2NlMTRmNzZjNTVhYTYyMWViNGQ1ODYzYWE3NzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAwNzoxNjozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jCmluZGV4IDJhODI5YjVlODI0MGE3Li5iNjZlNjU0MzkzNDExNyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jCkBAIC0xMjcsMTggJiM0MzsxMjcsMTggQEAgc3RhdGljIGludCBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LAogCiAJc3dpdGNoIChyb3V0ZS0mZ3Q7dHVwbGVbZGlyXS54bWl0X3R5cGUpIHsKIAljYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDoKLQkJaWYgKGZsb3dfdHVwbGUtJmd0O3R1bl9udW0pIHsKJiM0MzsJCWlmIChyb3V0ZS0mZ3Q7dHVwbGVbIWRpcl0uaW4ubnVtX3R1bnMpIHsKIAkJCWZsb3dfdHVwbGUtJmd0O2RzdF9jYWNoZSA9IGRzdDsKIAkJCWZsb3dfdHVwbGUtJmd0O2RzdF9jb29raWUgPQogCQkJCWZsb3dfb2ZmbG9hZF9kc3RfY29va2llKGZsb3dfdHVwbGUpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlkc3RfcmVsZWFzZShkc3QpOwogCQl9CiAJCW1lbWNweShmbG93X3R1cGxlLSZndDtvdXQuaF9kZXN0LCByb3V0ZS0mZ3Q7dHVwbGVbZGlyXS5vdXQuaF9kZXN0LAogCQkgICAgICAgRVRIX0FMRU4pOwogCQltZW1jcHkoZmxvd190dXBsZS0mZ3Q7b3V0Lmhfc291cmNlLCByb3V0ZS0mZ3Q7dHVwbGVbZGlyXS5vdXQuaF9zb3VyY2UsCiAJCSAgICAgICBFVEhfQUxFTik7CiAJCWZsb3dfdHVwbGUtJmd0O291dC5pZmlkeCA9IHJvdXRlLSZndDt0dXBsZVtkaXJdLm91dC5pZmluZGV4OwotCQlpZiAoIWZsb3dfdHVwbGUtJmd0O3R1bl9udW0pCi0JCQlkc3RfcmVsZWFzZShkc3QpOwogCQlicmVhazsKIAljYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX1hGUk06CiAJY2FzZSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSDoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5GLUZsb3d0YWJsZSBPZmZsb2FkIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY2AsIHNwZWNpZmljYWxseSB0aGUgYGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGEgY29uZGl0aW9uYWwgcmVsZWFzZSBvZiB0aGUgZGVzdGluYXRpb24gcm91dGUgKGBkc3RfcmVsZWFzZShkc3QpYCkuICBDdXJyZW50bHksIGl0IGFwcGVhcnMgdGhlIHBhdGNoIGlzIHN3YXBwaW5nIG91dCB0aGUgY29uZGl0aW9uIHRvIGRldGVybWluZSB3aGVuIHRvIGNhbGwgYGRzdF9yZWxlYXNlYC4gT3JpZ2luYWxseSB0aGUgY29kZSB3YXMgY2hlY2tpbmcgYGZsb3dfdHVwbGUtJmd0O3R1bl9udW1gIGFuZCBub3cgaXQgaXMgY2hlY2tpbmcgYHJvdXRlLSZndDt0dXBsZVshZGlyXS5pbi5udW1fdHVuc2AuCgpJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGUgc2lnbmlmaWNhbmNlLiBUaGVyZSYjMzk7cyBhIHBvdGVudGlhbCBzdWJ0bGUgYnVnIGhlcmUgcmVsYXRlZCB0byB0dW5uZWwgaGFuZGxpbmcgd2l0aGluIHRoZSBmbG93IG9mZmxvYWQgcGF0aC4gSXQgc2VlbXMgbGlrZSB0aGUgb3JpZ2luYWwgbG9naWMgd2FzIHRpZWQgdG8gd2hldGhlciB0aGUgZmxvdyB0dXBsZSBpdHNlbGYgd2FzIHR1bm5lbGVkIG9yIG5vdCBiYXNlZCBvbiBgZmxvd190dXBsZS0mZ3Q7dHVuX251bWAuIE5vdywgdGhlIGNoZWNrIGlzIGJhc2VkIG9uIHRoZSByb3V0ZSYjMzk7cyB0dW5uZWwgaW5mb3JtYXRpb24gYHJvdXRlLSZndDt0dXBsZVshZGlyXS5pbi5udW1fdHVuc2AuIFRoaXMgY2hhbmdlIGxpa2VseSBhaW1zIHRvIGFsaWduIHRoZSBkZXN0aW5hdGlvbiByb3V0ZSByZWxlYXNlIHdpdGggdGhlIGFjdHVhbCB0dW5uZWwgc2V0dXAgb3IgbGFjayB0aGVyZW9mLCB3aGljaCBtYWtlcyBzZW5zZS4gSSB3b3VsZCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG1hZGUsIGJ1dCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGUgb3JpZ2luYWwgbG9naWMgd2FzIGluY29ycmVjdCwgbGVhZGluZyB0byBhIHBvc3NpYmxlIHJlc291cmNlIGxlYWsgb3IgY29ycnVwdGlvbiBpZiB0aGUgYGRzdF9yZWxlYXNlYCBjYWxsIHdhcyBtYWRlIGF0IHRoZSB3cm9uZyB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Zsb3dfb2ZmbG9hZF9maWxsX3JvdXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jPTg3PXN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpuZnRfcm91dGVfZHN0X2ZldGNoKHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTk2LVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYzo5NzpzdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTk4LVx0XHRcdFx0ICAgc3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM9MTY0PXZvaWQgZmxvd19vZmZsb2FkX3JvdXRlX2luaXQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTE2Ni17XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jOjE2NzpcdGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlKGZsb3csIHJvdXRlLCBGTE9XX09GRkxPQURfRElSX09SSUdJTkFMKTtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM6MTY4Olx0Zmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoZmxvdywgcm91dGUsIEZMT1dfT0ZGTE9BRF9ESVJfUkVQTFkpO1xubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xNjktXHRmbG93LVx1MDAzZXR5cGUgPSBORl9GTE9XX09GRkxPQURfUk9VVEU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgT2ZmbG9hZCBSb3V0ZSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgYXJjaGl0ZWN0dXJlIEkmIzM5O20gbG9va2luZyBhdCBoYXMgdGhpcyBmdW5jdGlvbiwgYGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlYCwgYW5kIGl0JiMzOTtzIGNhbGxlZCBieSBgZmxvd19vZmZsb2FkX3JvdXRlX2luaXRgLiBNYWtlcyBzZW5zZSwgcm91dGUgZmlsbGluZyBoYXBwZW5zIGR1cmluZyBpbml0aWFsaXphdGlvbi4gTXkgbmV4dCBzdGVwLCBvZiBjb3Vyc2UsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMgb2YgYGZsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0YC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHRvIGlkZW50aWZ5IHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0JiMzOTtzIHRyaWdnZXJlZC4gVW5kZXJzdGFuZGluZyAqdGhhdCogaXMga2V5IHRvIGdyYXNwaW5nIHRoZSBvdmVyYWxsIGZsb3cgb2ZmbG9hZCBiZWhhdmlvci4gV2hhdCBtb2R1bGVzLCBzdWJzeXN0ZW1zLCBvciBldmVudCBoYW5kbGVycyBkZXBlbmQgb24gdGhlIGNvcnJlY3QgZXhlY3V0aW9uIG9mIGBmbG93X29mZmxvYWRfcm91dGVfaW5pdGA/IFRoYXQmIzM5O3Mgd2hhdCBJJiMzOTtsbCBiZSBkaWdnaW5nIGludG8uIEkgc3VzcGVjdCBpdCYjMzk7bGwgcXVpY2tseSByZXZlYWwgdGhlIGNyaXRpY2FsIHBhdGhzIGZvciBvZmZsb2FkaW5nIHRyYWZmaWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zmxvd19vZmZsb2FkX3JvdXRlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jPTE1OD1zdGF0aWMgdm9pZCBuZnRfZmxvd19kc3RfcmVsZWFzZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTYzLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYzoxNjQ6dm9pZCBmbG93X29mZmxvYWRfcm91dGVfaW5pdChzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xNjUtXHRcdFx0ICAgICBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUpXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xNzAtfVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYzoxNzE6RVhQT1JUX1NZTUJPTF9HUEwoZmxvd19vZmZsb2FkX3JvdXRlX2luaXQpO1xubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xNzItXG4tLVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM9NTA9c3RhdGljIHZvaWQgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy0xMTUtXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYzoxMTY6XHRmbG93X29mZmxvYWRfcm91dGVfaW5pdChmbG93LCBcdTAwMjZyb3V0ZSk7XG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy0xMTctXHRpZiAodGNwaClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjc4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIEZsb3cgT2ZmbG9hZCBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkLCBhbmQgbXkgbWVudGFsIHJhZGFyIGlzIHBpbmdpbmcgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBUaGlzIGZ1bmN0aW9uIGlzICprZXkqIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBvZmZsb2FkIG9wZXJhdGVzIHdpdGhpbiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yay4gVG8gZ2V0IGEgY29tcGxldGUgaGFuZGxlIG9uIHRoaXMgc3BlY2lmaWMgb2ZmbG9hZCBpbXBsZW1lbnRhdGlvbiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LgoKSSBuZWVkIHRvIHF1aWNrbHkgcmV2aWV3IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gY2hlY2sgYG5mX2Zsb3dfdGFibGVfY29yZS5jYCBhbmQgYWxzbyB0aGUgYXNzb2NpYXRlZCBgbmZ0X2Zsb3dfb2ZmbG9hZC5jYCBmaWxlIGFnYWluLiBXZSBoYXZlIHRvIGVuc3VyZSB0aGF0IGFsbCBuZWVkZWQgZmxhZ3MgYXJlIHNldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9mbG93X3RhYmxlX2NvcmUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDI9b2JqLSQoQ09ORklHX05GX0ZMT1dfVEFCTEUpXHQmIzQzOz0gbmZfZmxvd190YWJsZS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0MzpuZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA3NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gTmV0ZmlsdGVyIEZsb3cgT2ZmbG9hZCoqCgpBbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBDT05GSUdfTkZfRkxPV19UQUJMRWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB3aGF0IEkmIzM5O20gd29ya2luZyBvbi4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cg4oCTIGl0IGdpdmVzIG1lIGEgY2xlYXIgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCYjMzk7cyBlbmFibGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gYG5mdF9mbG93X29mZmxvYWQub2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGZsb3cgb2ZmbG9hZCBmcmFtZXdvcmsuIEkmIzM5O2xsIG5lZWQgdG8gYW5hbHl6ZSBpdHMgY29kZSwgaXRzIGRlcGVuZGVuY2llcywgYW5kIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gc2VlIGhvdyB0byBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfZmxvd19vZmZsb2FkLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTEyPW9iai0kKENPTkZJR19ORlRfQ1QpXHRcdCYjNDM7PSBuZnRfY3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMTM6b2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXHQmIzQzOz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTExNC1vYmotJChDT05GSUdfTkZUX0xJTUlUKVx0XHQmIzQzOz0gbmZ0X2xpbWl0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM4MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gYENPTkZJR19ORlRfRkxPV19PRkZMT0FEYCBpcyBkZWZpbml0ZWx5IGEga2V5IHJlcXVpcmVtZW50LiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gZXhwYW5kIG9uIHRoaXMuIEkmIzM5O3ZlIGdvdCB0byBpbnZlc3RpZ2F0ZSB0aGUgcG90ZW50aWFsIGtub2NrLW9uIGVmZmVjdHMgYW5kIGludGVyZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbi4gVGhlcmUgYXJlIGFsbW9zdCBjZXJ0YWlubHkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFsc28gbmVlZCBhdHRlbnRpb24uIExldCYjMzk7cyBzZWUgd2hhdCBlbHNlIHdlJiMzOTt2ZSBnb3QgdG8gY29uc2lkZXIgYWxvbmdzaWRlIHRoaXMgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfRkxPV19UQUJMRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzAxPWVuZGlmICMgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzAyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjcwMzpjb25maWcgTkZfRkxPV19UQUJMRV9JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzA0LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGZsb3cgdGFibGUgbWl4ZWQgSVB2NC9JUHY2IG1vZHVsZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzExOmNvbmZpZyBORl9GTE9XX1RBQkxFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEyLVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MjE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzIyLVx0Ym9vbCBcJiMzNDtTdXBwbHkgZmxvdyB0YWJsZSBzdGF0aXN0aWNzIGluIHByb2Nmc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzU5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgQ29uZmlndXJhdGlvbiBmb3IgTkZUIEZsb3cgT2ZmbG9hZCoqCgpPa2F5LCBsZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoaXMgYGNvbmZpZyBORlRfRkxPV19PRkZMT0FEYCBzZXR0aW5nLiBUaGlzIGZlZWxzIGxpa2UgYSBjb3JlIHBpZWNlIG9mIHRoZSBwdXp6bGUgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGFyb3VuZCBOZXR3b3JrIEZpbHRlcmluZyBUYWJsZXMgKE5GVCkuIFRoaXMgaXMgYSBmYW1pbGlhciBhcmVhLCBvZiBjb3Vyc2UuIE15IGluaXRpYWwgdGhvdWdodHMgYXJlOiBpcyBpdCBlbmFibGVkPyBEaXNhYmxlZD8gV2hhdCYjMzk7cyB0aGUgY3VycmVudCB2YWx1ZSwgYW5kIGhvdyBpcyB0aGF0IGltcGFjdGluZyB0aGUgZmxvdyBvZmZsb2FkIGJlaGF2aW9yPyBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB2YXJpb3VzIGNvbnRleHRzIHdoZXJlIHRoaXMgd291bGQgYmUgc2lnbmlmaWNhbnQg4oCTIGxpa2VseSBpbiBoaWdoLXRocm91Z2hwdXQgZW52aXJvbm1lbnRzLCBvciB3aXRoIHBhcnRpY3VsYXIgdHJhZmZpYyBwYXR0ZXJucyB3aGVyZSB3ZSYjMzk7cmUgbG9va2luZyB0byBwdXNoIGZpbHRlcmluZyBkZWNpc2lvbnMgZG93biB0byB0aGUgaGFyZHdhcmUgbGV2ZWwgZm9yIGVmZmljaWVuY3kuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgdGhpcyBpcyBhIGNvbXBpbGUtdGltZSBvcHRpb24sIGEgcnVudGltZSBzZXR0aW5nLCBvciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgYm90aC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGVkaWNhdGVkIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLCBvciBpcyB0aGlzIG1vcmUgYWJvdXQgYWNjZWxlcmF0aW5nIHRoZSBzb2Z0d2FyZSBwcm9jZXNzaW5nIG9mIGZsb3dzPyBMZXQmIzM5O3MgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORlRfRkxPV19PRkZMT0FEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz00OTg9Y29uZmlnIE5GVF9FWFRIRFJfRENDUFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MDMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTA0OmNvbmZpZyBORlRfRkxPV19PRkZMT0FEXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTA1LVx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX0ZMT1dfVEFCTEVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTExNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZsb3cgT2ZmbG9hZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZGluZywgYW5kIHRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGhpbmdlIGFyb3VuZCBgTkZfRkxPV19UQUJMRWAgYW5kIGBORlRfRkxPV19PRkZMT0FEYCBjb25maWd1cmF0aW9ucy4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIG9mIGludGVyZXN0IGlzIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBmdW5jdGlvbiByZWFjaGFibGU/IExldCYjMzk7cyB0cmFjZSBpdC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYGZsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0YCwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAuIEFoLCByaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAgaXMgdGhlIGFjdHVhbCBldmFsdWF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgYGZsb3dfb2ZmbG9hZGAgbmV0ZmlsdGVyIGV4cHJlc3Npb24uIEdvb2QsIHNvIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0aGVyZWZvcmUgdGVzdGFibGUuCgpUaGUgcGF0Y2ggaXRzZWxmIGFkZHJlc3NlcyBhIGJ1Zy4gVGhlIG9sZCBjb2RlIGhhZCBhIGNvbmRpdGlvbmFsIGBkc3RfcmVsZWFzZShkc3QpYCBiYXNlZCBvbiB3aGV0aGVyIGBmbG93X3R1cGxlLSZndDt0dW5fbnVtYCB3YXMgemVyby4gVGhlIGNhdGNoPyBgZmxvd190dXBsZS0mZ3Q7dHVuX251bWAgd2FzIGFzc2lnbmVkICp3aXRoaW4qIHRoYXQgdmVyeSBgaWZgIGJsb2NrLiAgRXNzZW50aWFsbHksIGl0IHdhc24mIzM5O3QgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIGNoZWNrZWQuIFRoZSBmaXgsIGZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgaW52b2x2ZXMgY2hlY2tpbmcgYHJvdXRlLSZndDt0dXBsZVshZGlyXS5pbi5udW1fdHVuc2Agbm93LiBUaGUgY29yZSBzeW1ib2xzIGhlcmUgYXJlIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAsIGBmbG93X29mZmxvYWRfcm91dGVfaW5pdGAsIGFuZCBgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsYC4KCkxldCBtZSBxdWlja2x5IGNvbmZpcm0gdGhhdCBgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVgIGlzIHN0YXRpYywgd2hpY2ggSSBzdXNwZWN0IGl0IGlzLiBPa2F5LCB5ZXAsIHRoYXQgbWVhbnMgYGZsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0YCBpcyB0aGUgZXhwb3J0ZWQgc3ltYm9sLiBBbmQgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAgaXMgdGhlIGFjdHVhbCBldmFsdWF0aW9uIGZ1bmN0aW9uLgoKTmV4dCwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgdGhlIHVzYWdlIG9mIGBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1RgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jPTk3PXN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTEyOC1cdHN3aXRjaCAocm91dGUtXHUwMDNldHVwbGVbZGlyXS54bWl0X3R5cGUpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM6MTI5Olx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTEzMC1cdFx0aWYgKHJvdXRlLVx1MDAzZXR1cGxlWyFkaXJdLmluLm51bV90dW5zKSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmM9ODA2PW5mX2Zsb3dfb2ZmbG9hZF9pcF9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMtODY1LVx0XHRicmVhaztcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jOjg2NjpcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMtODY3LVx0XHR4bWl0Lm91dGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHN0YXRlLVx1MDAzZW5ldCwgdHVwbGVoYXNoLVx1MDAzZXR1cGxlLm91dC5pZmlkeCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmM9MTEyMj1uZl9mbG93X29mZmxvYWRfaXB2Nl9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMtMTE4Mi1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYzoxMTgzOlx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYy0xMTg0LVx0XHR4bWl0Lm91dGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHN0YXRlLVx1MDAzZW5ldCwgdHVwbGVoYXNoLVx1MDAzZXR1cGxlLm91dC5pZmlkeCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz0yMzI9c3RhdGljIGludCBmbG93X29mZmxvYWRfZXRoX3NyYyhzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0yNTAtXHRzd2l0Y2ggKHRoaXNfdHVwbGUtXHUwMDNleG1pdF90eXBlKSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jOjI1MTpcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0yNTItXHRcdGFkZHIgPSB0aGlzX3R1cGxlLVx1MDAzZW91dC5oX3NvdXJjZTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jPTI4Mj1zdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9ldGhfZHN0KHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTMwMy1cdHN3aXRjaCAodGhpc190dXBsZS1cdTAwM2V4bWl0X3R5cGUpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6MzA0Olx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTMwNS1cdFx0ZXRoZXJfYWRkcl9jb3B5KGhhLCB0aGlzX3R1cGxlLVx1MDAzZW91dC5oX2Rlc3QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM9NTg1PXN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX3JlZGlyZWN0KHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTU5Ni1cdHN3aXRjaCAodGhpc190dXBsZS1cdTAwM2V4bWl0X3R5cGUpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6NTk3Olx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTU5OC1cdFx0dGhpc190dXBsZSA9IFx1MDAyNmZsb3ctXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGU7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz02MjU9c3RhdGljIGludCBmbG93X29mZmxvYWRfZW5jYXBfdHVubmVsKGNvbnN0IHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy02MzMtXHR0aGlzX3R1cGxlID0gXHUwMDI2Zmxvdy1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZTtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6NjM0Olx0aWYgKHRoaXNfdHVwbGUtXHUwMDNleG1pdF90eXBlID09IEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVClcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtNjM1LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jPTY1ND1zdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9kZWNhcF90dW5uZWwoY29uc3Qgc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTY2Mi1cdG90aGVyX3R1cGxlID0gXHUwMDI2Zmxvdy1cdTAwM2V0dXBsZWhhc2hbIWRpcl0udHVwbGU7XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jOjY2MzpcdGlmIChvdGhlcl90dXBsZS1cdTAwM2V4bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUKVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy02NjQtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9OTU9c3RhdGljIGludCBuZnRfZGV2X3BhdGhfaW5mbyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjayxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTE0My1cdFx0XHRcdG1lbWNweShpbmZvLVx1MDAzZWhfZGVzdCwgcGF0aC1cdTAwM2VlbmNhcC5oX2Rlc3QsIEVUSF9BTEVOKTtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MTQ0Olx0XHRcdFx0aW5mby1cdTAwM2V4bWl0X3R5cGUgPSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q7XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTE0NS1cdFx0XHRcdGluZm8tXHUwMDNlbmVlZHNfZ3NvX3NlZ21lbnQgPSAxO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMTc1LVx0XHRcdH1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MTc2Olx0XHRcdGluZm8tXHUwMDNleG1pdF90eXBlID0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUO1xubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0xNzctXHRcdFx0YnJlYWs7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0xODUtXHQgICAgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShpbmZvLVx1MDAzZWluZGV2KSlcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MTg2Olx0XHRpbmZvLVx1MDAzZXhtaXRfdHlwZSA9IEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMTg3LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjQ2PXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yODQtXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjI4NTpcdGlmIChpbmZvLnhtaXRfdHlwZSA9PSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1QpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjg2LVx0XHRtZW1jcHkocm91dGUtXHUwMDNldHVwbGVbZGlyXS5vdXQuaF9zb3VyY2UsIGluZm8uaF9zb3VyY2UsIEVUSF9BTEVOKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU2MwoJCQkJCQkJb3V0cHV0OiAxMjEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnk6CgoqKkNvZGUgQXNzZXNzbWVudCBhbmQgQWN0aW9uKioKCk9rYXksIGFmdGVyIGV4YW1pbmluZyB0aGUgc2l0dWF0aW9uLCB0aGVyZSYjMzk7cyBubyBkb3VidCBpbiBteSBtaW5kOiB0aGUgY29kZSBwYXRoIGluIHF1ZXN0aW9uIGlzIGJvdGggYWNjZXNzaWJsZSBhbmQsIGFzIGZhciBhcyBJIGNhbiB0ZWxsLCBmdWxseSBvcGVyYXRpb25hbC4gVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBwcm9jZWVkaW5nIHdpdGggdGhlIG5leHQgc3RlcC4gTXkgaW1tZWRpYXRlIGNvdXJzZSBvZiBhY3Rpb24gd2lsbCBiZSB0byBkZWZpbmUgYW5kIHNldCB0aGUgaW50ZW5kZWQgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OywKICAgICYjMzQ7TkZUX0ZMT1dfT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zsb3dfb2ZmbG9hZF9maWxsX3JvdXRlJiMzNDssCiAgICAmIzM0O2Zsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0JiMzNDssCiAgICAmIzM0O25mdF9mbG93X29mZmxvYWRfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIG5ldGZpbHRlciBmbG93IG9mZmxvYWQgcm91dGluZyBsb2dpYyB3aGVyZSBhIGRlc3RpbmF0aW9uIGVudHJ5IHdhcyBpbmNvcnJlY3RseSByZWxlYXNlZCBvciBsZWFrZWQgYmFzZWQgb24gYSB3cm9uZyBjb25kaXRpb24uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGZsb3cgb2ZmbG9hZCBleHByZXNzaW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDssCiAgICAmIzM0O05GVF9GTE9XX09GRkxPQUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X29mZmxvYWRfZmlsbF9yb3V0ZSYjMzQ7LAogICAgJiMzNDtmbG93X29mZmxvYWRfcm91dGVfaW5pdCYjMzQ7LAogICAgJiMzNDtuZnRfZmxvd19vZmZsb2FkX2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHJvdXRpbmcgbG9naWMgd2hlcmUgYSBkZXN0aW5hdGlvbiBlbnRyeSB3YXMgaW5jb3JyZWN0bHkgcmVsZWFzZWQgb3IgbGVha2VkIGJhc2VkIG9uIGEgd3JvbmcgY29uZGl0aW9uLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBuZnRhYmxlcyBmbG93IG9mZmxvYWQgZXhwcmVzc2lvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE2OjMxLjg4MzAxMDE0NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNzIxMDU1ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GVF9GTE9XX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbG93X29mZmxvYWRfZmlsbF9yb3V0ZVwiLFxuICAgIFwiZmxvd19vZmZsb2FkX3JvdXRlX2luaXRcIixcbiAgICBcIm5mdF9mbG93X29mZmxvYWRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCByb3V0aW5nIGxvZ2ljIHdoZXJlIGEgZGVzdGluYXRpb24gZW50cnkgd2FzIGluY29ycmVjdGx5IHJlbGVhc2VkIG9yIGxlYWtlZCBiYXNlZCBvbiBhIHdyb25nIGNvbmRpdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgZmxvdyBvZmZsb2FkIGV4cHJlc3Npb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE2OjMxLjg4MzAxNTI2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkwODkxMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjQ5MTFjMDY1MzQzY2UxNGY3NmM1NWFhNjIxZWI0ZDU4NjNhYTc3MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAwNzoxNjozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY1xcbmluZGV4IDJhODI5YjVlODI0MGE3Li5iNjZlNjU0MzkzNDExNyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY1xcbkBAIC0xMjcsMTggKzEyNywxOCBAQCBzdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXFxuIFxcbiBcXHRzd2l0Y2ggKHJvdXRlLVxcdTAwM2V0dXBsZVtkaXJdLnhtaXRfdHlwZSkge1xcbiBcXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDpcXG4tXFx0XFx0aWYgKGZsb3dfdHVwbGUtXFx1MDAzZXR1bl9udW0pIHtcXG4rXFx0XFx0aWYgKHJvdXRlLVxcdTAwM2V0dXBsZVshZGlyXS5pbi5udW1fdHVucykge1xcbiBcXHRcXHRcXHRmbG93X3R1cGxlLVxcdTAwM2Vkc3RfY2FjaGUgPSBkc3Q7XFxuIFxcdFxcdFxcdGZsb3dfdHVwbGUtXFx1MDAzZWRzdF9jb29raWUgPVxcbiBcXHRcXHRcXHRcXHRmbG93X29mZmxvYWRfZHN0X2Nvb2tpZShmbG93X3R1cGxlKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZHN0X3JlbGVhc2UoZHN0KTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRtZW1jcHkoZmxvd190dXBsZS1cXHUwMDNlb3V0LmhfZGVzdCwgcm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ub3V0LmhfZGVzdCxcXG4gXFx0XFx0ICAgICAgIEVUSF9BTEVOKTtcXG4gXFx0XFx0bWVtY3B5KGZsb3dfdHVwbGUtXFx1MDAzZW91dC5oX3NvdXJjZSwgcm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ub3V0Lmhfc291cmNlLFxcbiBcXHRcXHQgICAgICAgRVRIX0FMRU4pO1xcbiBcXHRcXHRmbG93X3R1cGxlLVxcdTAwM2VvdXQuaWZpZHggPSByb3V0ZS1cXHUwMDNldHVwbGVbZGlyXS5vdXQuaWZpbmRleDtcXG4tXFx0XFx0aWYgKCFmbG93X3R1cGxlLVxcdTAwM2V0dW5fbnVtKVxcbi1cXHRcXHRcXHRkc3RfcmVsZWFzZShkc3QpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9YRlJNOlxcbiBcXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxNjozMi43NzQ5MTYxOTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODI5MTQwODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GVF9GTE9XX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbG93X29mZmxvYWRfZmlsbF9yb3V0ZVwiLFxuICAgIFwiZmxvd19vZmZsb2FkX3JvdXRlX2luaXRcIixcbiAgICBcIm5mdF9mbG93X29mZmxvYWRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCByb3V0aW5nIGxvZ2ljIHdoZXJlIGEgZGVzdGluYXRpb24gZW50cnkgd2FzIGluY29ycmVjdGx5IHJlbGVhc2VkIG9yIGxlYWtlZCBiYXNlZCBvbiBhIHdyb25nIGNvbmRpdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgZmxvdyBvZmZsb2FkIGV4cHJlc3Npb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjQ5MTFjMDY1MzQzY2UxNGY3NmM1NWFhNjIxZWI0ZDU4NjNhYTc3MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDA3OjE2OjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNcbmluZGV4IDJhODI5YjVlODI0MGE3Li5iNjZlNjU0MzkzNDExNyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNcbkBAIC0xMjcsMTggKzEyNywxOCBAQCBzdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXG4gXG4gXHRzd2l0Y2ggKHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ueG1pdF90eXBlKSB7XG4gXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDpcbi1cdFx0aWYgKGZsb3dfdHVwbGUtXHUwMDNldHVuX251bSkge1xuK1x0XHRpZiAocm91dGUtXHUwMDNldHVwbGVbIWRpcl0uaW4ubnVtX3R1bnMpIHtcbiBcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jYWNoZSA9IGRzdDtcbiBcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jb29raWUgPVxuIFx0XHRcdFx0Zmxvd19vZmZsb2FkX2RzdF9jb29raWUoZmxvd190dXBsZSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZHN0X3JlbGVhc2UoZHN0KTtcbiBcdFx0fVxuIFx0XHRtZW1jcHkoZmxvd190dXBsZS1cdTAwM2VvdXQuaF9kZXN0LCByb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLm91dC5oX2Rlc3QsXG4gXHRcdCAgICAgICBFVEhfQUxFTik7XG4gXHRcdG1lbWNweShmbG93X3R1cGxlLVx1MDAzZW91dC5oX3NvdXJjZSwgcm91dGUtXHUwMDNldHVwbGVbZGlyXS5vdXQuaF9zb3VyY2UsXG4gXHRcdCAgICAgICBFVEhfQUxFTik7XG4gXHRcdGZsb3dfdHVwbGUtXHUwMDNlb3V0LmlmaWR4ID0gcm91dGUtXHUwMDNldHVwbGVbZGlyXS5vdXQuaWZpbmRleDtcbi1cdFx0aWYgKCFmbG93X3R1cGxlLVx1MDAzZXR1bl9udW0pXG4tXHRcdFx0ZHN0X3JlbGVhc2UoZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX1hGUk06XG4gXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6MzIuNzc0OTE4NzAyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ2MDI2MzI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GLUZsb3d0YWJsZSBPZmZsb2FkIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAgZnVuY3Rpb24uIFRoZSBrZXkgaGVyZSBzZWVtcyB0byBiZSBhIGNvbmRpdGlvbmFsIHJlbGVhc2Ugb2YgdGhlIGRlc3RpbmF0aW9uIHJvdXRlIChgZHN0X3JlbGVhc2UoZHN0KWApLiAgQ3VycmVudGx5LCBpdCBhcHBlYXJzIHRoZSBwYXRjaCBpcyBzd2FwcGluZyBvdXQgdGhlIGNvbmRpdGlvbiB0byBkZXRlcm1pbmUgd2hlbiB0byBjYWxsIGBkc3RfcmVsZWFzZWAuIE9yaWdpbmFsbHkgdGhlIGNvZGUgd2FzIGNoZWNraW5nIGBmbG93X3R1cGxlLVx1MDAzZXR1bl9udW1gIGFuZCBub3cgaXQgaXMgY2hlY2tpbmcgYHJvdXRlLVx1MDAzZXR1cGxlWyFkaXJdLmluLm51bV90dW5zYC5cblxuSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhlIHNpZ25pZmljYW5jZS4gVGhlcmUncyBhIHBvdGVudGlhbCBzdWJ0bGUgYnVnIGhlcmUgcmVsYXRlZCB0byB0dW5uZWwgaGFuZGxpbmcgd2l0aGluIHRoZSBmbG93IG9mZmxvYWQgcGF0aC4gSXQgc2VlbXMgbGlrZSB0aGUgb3JpZ2luYWwgbG9naWMgd2FzIHRpZWQgdG8gd2hldGhlciB0aGUgZmxvdyB0dXBsZSBpdHNlbGYgd2FzIHR1bm5lbGVkIG9yIG5vdCBiYXNlZCBvbiBgZmxvd190dXBsZS1cdTAwM2V0dW5fbnVtYC4gTm93LCB0aGUgY2hlY2sgaXMgYmFzZWQgb24gdGhlIHJvdXRlJ3MgdHVubmVsIGluZm9ybWF0aW9uIGByb3V0ZS1cdTAwM2V0dXBsZVshZGlyXS5pbi5udW1fdHVuc2AuIFRoaXMgY2hhbmdlIGxpa2VseSBhaW1zIHRvIGFsaWduIHRoZSBkZXN0aW5hdGlvbiByb3V0ZSByZWxlYXNlIHdpdGggdGhlIGFjdHVhbCB0dW5uZWwgc2V0dXAgb3IgbGFjayB0aGVyZW9mLCB3aGljaCBtYWtlcyBzZW5zZS4gSSB3b3VsZCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG1hZGUsIGJ1dCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGUgb3JpZ2luYWwgbG9naWMgd2FzIGluY29ycmVjdCwgbGVhZGluZyB0byBhIHBvc3NpYmxlIHJlc291cmNlIGxlYWsgb3IgY29ycnVwdGlvbiBpZiB0aGUgYGRzdF9yZWxlYXNlYCBjYWxsIHdhcyBtYWRlIGF0IHRoZSB3cm9uZyB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQ4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6MzkuMjM1MTg0NjkxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjE5MzcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbG93X29mZmxvYWRfZmlsbF9yb3V0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM9ODc9c3RhdGljIHN0cnVjdCBkc3RfZW50cnkgKm5mdF9yb3V0ZV9kc3RfZmV0Y2goc3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy05Ni1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jOjk3OnN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTk4LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM9MTY0PXZvaWQgZmxvd19vZmZsb2FkX3JvdXRlX2luaXQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTY2LXtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jOjE2NzpcXHRmbG93X29mZmxvYWRfZmlsbF9yb3V0ZShmbG93LCByb3V0ZSwgRkxPV19PRkZMT0FEX0RJUl9PUklHSU5BTCk7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYzoxNjg6XFx0Zmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoZmxvdywgcm91dGUsIEZMT1dfT0ZGTE9BRF9ESVJfUkVQTFkpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTY5LVxcdGZsb3ctXFx1MDAzZXR5cGUgPSBORl9GTE9XX09GRkxPQURfUk9VVEU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE2OjM5LjM4NzM4MjQyOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTAxMTMzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgT2ZmbG9hZCBSb3V0ZSBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBhcmNoaXRlY3R1cmUgSSdtIGxvb2tpbmcgYXQgaGFzIHRoaXMgZnVuY3Rpb24sIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAsIGFuZCBpdCdzIGNhbGxlZCBieSBgZmxvd19vZmZsb2FkX3JvdXRlX2luaXRgLiBNYWtlcyBzZW5zZSwgcm91dGUgZmlsbGluZyBoYXBwZW5zIGR1cmluZyBpbml0aWFsaXphdGlvbi4gTXkgbmV4dCBzdGVwLCBvZiBjb3Vyc2UsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMgb2YgYGZsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0YC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHRvIGlkZW50aWZ5IHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0J3MgdHJpZ2dlcmVkLiBVbmRlcnN0YW5kaW5nICp0aGF0KiBpcyBrZXkgdG8gZ3Jhc3BpbmcgdGhlIG92ZXJhbGwgZmxvdyBvZmZsb2FkIGJlaGF2aW9yLiBXaGF0IG1vZHVsZXMsIHN1YnN5c3RlbXMsIG9yIGV2ZW50IGhhbmRsZXJzIGRlcGVuZCBvbiB0aGUgY29ycmVjdCBleGVjdXRpb24gb2YgYGZsb3dfb2ZmbG9hZF9yb3V0ZV9pbml0YD8gVGhhdCdzIHdoYXQgSSdsbCBiZSBkaWdnaW5nIGludG8uIEkgc3VzcGVjdCBpdCdsbCBxdWlja2x5IHJldmVhbCB0aGUgY3JpdGljYWwgcGF0aHMgZm9yIG9mZmxvYWRpbmcgdHJhZmZpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA3NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE2OjQyLjkzNzQ5ODA5M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk2Nzc5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmxvd19vZmZsb2FkX3JvdXRlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYz0xNTg9c3RhdGljIHZvaWQgbmZ0X2Zsb3dfZHN0X3JlbGVhc2Uoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTYzLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmM6MTY0OnZvaWQgZmxvd19vZmZsb2FkX3JvdXRlX2luaXQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jLTE2NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTcwLX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jOjE3MTpFWFBPUlRfU1lNQk9MX0dQTChmbG93X29mZmxvYWRfcm91dGVfaW5pdCk7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xNzItXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYz01MD1zdGF0aWMgdm9pZCBuZnRfZmxvd19vZmZsb2FkX2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtMTE1LVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jOjExNjpcXHRmbG93X29mZmxvYWRfcm91dGVfaW5pdChmbG93LCBcXHUwMDI2cm91dGUpO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTExNy1cXHRpZiAodGNwaClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6NDMuMDQ3MTg2OTUxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MjYxMDcyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIEZsb3cgT2ZmbG9hZCBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCwgYW5kIG15IG1lbnRhbCByYWRhciBpcyBwaW5naW5nIGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgIHdpdGhpbiBgbmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBUaGlzIGZ1bmN0aW9uIGlzICprZXkqIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBvZmZsb2FkIG9wZXJhdGVzIHdpdGhpbiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yay4gVG8gZ2V0IGEgY29tcGxldGUgaGFuZGxlIG9uIHRoaXMgc3BlY2lmaWMgb2ZmbG9hZCBpbXBsZW1lbnRhdGlvbiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LlxuXG5JIG5lZWQgdG8gcXVpY2tseSByZXZpZXcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGltZSB0byBjaGVjayBgbmZfZmxvd190YWJsZV9jb3JlLmNgIGFuZCBhbHNvIHRoZSBhc3NvY2lhdGVkIGBuZnRfZmxvd19vZmZsb2FkLmNgIGZpbGUgYWdhaW4uIFdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgYWxsIG5lZWRlZCBmbGFncyBhcmUgc2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6NDcuMTk5Nzk5Nzg3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMDEzMTYwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlX2NvcmUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTQyPW9iai0kKENPTkZJR19ORl9GTE9XX1RBQkxFKVxcdCs9IG5mX2Zsb3dfdGFibGUub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTQzOm5mX2Zsb3dfdGFibGUtb2Jqc1xcdFxcdDo9IG5mX2Zsb3dfdGFibGVfY29yZS5vIG5mX2Zsb3dfdGFibGVfaXAubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDQtXFx0XFx0XFx0XFx0ICAgbmZfZmxvd190YWJsZV9wYXRoLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxNjo0Ny43Mjk5MzY5NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzA3OTI2OTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIE5ldGZpbHRlciBGbG93IE9mZmxvYWQqKlxuXG5BbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBDT05GSUdfTkZfRkxPV19UQUJMRWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB3aGF0IEknbSB3b3JraW5nIG9uLiBUaGF0J3MgZ29vZCB0byBrbm93IOKAkyBpdCBnaXZlcyBtZSBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBlbmFibGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gYG5mdF9mbG93X29mZmxvYWQub2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGZsb3cgb2ZmbG9hZCBmcmFtZXdvcmsuIEknbGwgbmVlZCB0byBhbmFseXplIGl0cyBjb2RlLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBzZWUgaG93IHRvIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxNjo1Mi4wMzc4NjYzMDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTY4OTg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfZmxvd19vZmZsb2FkLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTExMj1vYmotJChDT05GSUdfTkZUX0NUKVxcdFxcdCs9IG5mdF9jdC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMTM6b2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXFx0Kz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMTQtb2JqLSQoQ09ORklHX05GVF9MSU1JVClcXHRcXHQrPSBuZnRfbGltaXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxNjo1Mi4xODM1NjExMTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ2NjEzODcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkFzc2Vzc2luZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIGBDT05GSUdfTkZUX0ZMT1dfT0ZGTE9BRGAgaXMgZGVmaW5pdGVseSBhIGtleSByZXF1aXJlbWVudC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gZXhwYW5kIG9uIHRoaXMuIEkndmUgZ290IHRvIGludmVzdGlnYXRlIHRoZSBwb3RlbnRpYWwga25vY2stb24gZWZmZWN0cyBhbmQgaW50ZXJkZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGVyZSBhcmUgYWxtb3N0IGNlcnRhaW5seSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgYWxzbyBuZWVkIGF0dGVudGlvbi4gTGV0J3Mgc2VlIHdoYXQgZWxzZSB3ZSd2ZSBnb3QgdG8gY29uc2lkZXIgYWxvbmdzaWRlIHRoaXMgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzgwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6NTcuNjQ5NzAyNTY0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI4MzA2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0ZMT1dfVEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MDE9ZW5kaWYgIyBORl9UQUJMRVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzAyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MDM6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfSU5FVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MDQtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBmbG93IHRhYmxlIG1peGVkIElQdjQvSVB2NiBtb2R1bGVcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MTE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEyLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtb2R1bGVcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzIwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MjE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfUFJPQ0ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMi1cXHRib29sIFxcXCJTdXBwbHkgZmxvdyB0YWJsZSBzdGF0aXN0aWNzIGluIHByb2Nmc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTY6NTcuNzgyNTM4MDMyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDM0NjU5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIENvbmZpZ3VyYXRpb24gZm9yIE5GVCBGbG93IE9mZmxvYWQqKlxuXG5Pa2F5LCBsZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gdGhpcyBgY29uZmlnIE5GVF9GTE9XX09GRkxPQURgIHNldHRpbmcuIFRoaXMgZmVlbHMgbGlrZSBhIGNvcmUgcGllY2Ugb2YgdGhlIHB1enpsZSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHdpdGhpbiB0aGUga2VybmVsJ3MgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGFyb3VuZCBOZXR3b3JrIEZpbHRlcmluZyBUYWJsZXMgKE5GVCkuIFRoaXMgaXMgYSBmYW1pbGlhciBhcmVhLCBvZiBjb3Vyc2UuIE15IGluaXRpYWwgdGhvdWdodHMgYXJlOiBpcyBpdCBlbmFibGVkPyBEaXNhYmxlZD8gV2hhdCdzIHRoZSBjdXJyZW50IHZhbHVlLCBhbmQgaG93IGlzIHRoYXQgaW1wYWN0aW5nIHRoZSBmbG93IG9mZmxvYWQgYmVoYXZpb3I/IEknbSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdmFyaW91cyBjb250ZXh0cyB3aGVyZSB0aGlzIHdvdWxkIGJlIHNpZ25pZmljYW50IOKAkyBsaWtlbHkgaW4gaGlnaC10aHJvdWdocHV0IGVudmlyb25tZW50cywgb3Igd2l0aCBwYXJ0aWN1bGFyIHRyYWZmaWMgcGF0dGVybnMgd2hlcmUgd2UncmUgbG9va2luZyB0byBwdXNoIGZpbHRlcmluZyBkZWNpc2lvbnMgZG93biB0byB0aGUgaGFyZHdhcmUgbGV2ZWwgZm9yIGVmZmljaWVuY3kuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgdGhpcyBpcyBhIGNvbXBpbGUtdGltZSBvcHRpb24sIGEgcnVudGltZSBzZXR0aW5nLCBvciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgYm90aC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGVkaWNhdGVkIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLCBvciBpcyB0aGlzIG1vcmUgYWJvdXQgYWNjZWxlcmF0aW5nIHRoZSBzb2Z0d2FyZSBwcm9jZXNzaW5nIG9mIGZsb3dzPyBMZXQncyBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc1OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE3OjAwLjgyNjAwNjg4NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM3MTEwNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GVF9GTE9XX09GRkxPQURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00OTg9Y29uZmlnIE5GVF9FWFRIRFJfRENDUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTUwMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTA0OmNvbmZpZyBORlRfRkxPV19PRkZMT0FEXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTUwNS1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9GTE9XX1RBQkxFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE3OjAwLjkwOTcyMjMwM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzkxODQ5OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmxvdyBPZmZsb2FkIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZGluZywgYW5kIHRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGhpbmdlIGFyb3VuZCBgTkZfRkxPV19UQUJMRWAgYW5kIGBORlRfRkxPV19PRkZMT0FEYCBjb25maWd1cmF0aW9ucy4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIG9mIGludGVyZXN0IGlzIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBmdW5jdGlvbiByZWFjaGFibGU/IExldCdzIHRyYWNlIGl0LiBJdCdzIGNhbGxlZCBmcm9tIGBmbG93X29mZmxvYWRfcm91dGVfaW5pdGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgLiBBaCwgcmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2Ug4oCTIGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgIGlzIHRoZSBhY3R1YWwgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGBmbG93X29mZmxvYWRgIG5ldGZpbHRlciBleHByZXNzaW9uLiBHb29kLCBzbyBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0aGVyZWZvcmUgdGVzdGFibGUuXG5cblRoZSBwYXRjaCBpdHNlbGYgYWRkcmVzc2VzIGEgYnVnLiBUaGUgb2xkIGNvZGUgaGFkIGEgY29uZGl0aW9uYWwgYGRzdF9yZWxlYXNlKGRzdClgIGJhc2VkIG9uIHdoZXRoZXIgYGZsb3dfdHVwbGUtXHUwMDNldHVuX251bWAgd2FzIHplcm8uIFRoZSBjYXRjaD8gYGZsb3dfdHVwbGUtXHUwMDNldHVuX251bWAgd2FzIGFzc2lnbmVkICp3aXRoaW4qIHRoYXQgdmVyeSBgaWZgIGJsb2NrLiAgRXNzZW50aWFsbHksIGl0IHdhc24ndCBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgY2hlY2tlZC4gVGhlIGZpeCwgZnJvbSB3aGF0IEknbSBzZWVpbmcsIGludm9sdmVzIGNoZWNraW5nIGByb3V0ZS1cdTAwM2V0dXBsZVshZGlyXS5pbi5udW1fdHVuc2Agbm93LiBUaGUgY29yZSBzeW1ib2xzIGhlcmUgYXJlIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAsIGBmbG93X29mZmxvYWRfcm91dGVfaW5pdGAsIGFuZCBgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsYC5cblxuTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGF0IGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAgaXMgc3RhdGljLCB3aGljaCBJIHN1c3BlY3QgaXQgaXMuIE9rYXksIHllcCwgdGhhdCBtZWFucyBgZmxvd19vZmZsb2FkX3JvdXRlX2luaXRgIGlzIHRoZSBleHBvcnRlZCBzeW1ib2wuIEFuZCBgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsYCBpcyB0aGUgYWN0dWFsIGV2YWx1YXRpb24gZnVuY3Rpb24uXG5cbk5leHQsIEknbGwgcXVpY2tseSBjaGVjayBmb3IgdGhlIHVzYWdlIG9mIGBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1RgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTE0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE3OjA4LjMwMTU3NDYxOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NjM5NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jPTk3PXN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMtMTI4LVxcdHN3aXRjaCAocm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ueG1pdF90eXBlKSB7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYzoxMjk6XFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYy0xMzAtXFx0XFx0aWYgKHJvdXRlLVxcdTAwM2V0dXBsZVshZGlyXS5pbi5udW1fdHVucykge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmM9ODA2PW5mX2Zsb3dfb2ZmbG9hZF9pcF9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYy04NjUtXFx0XFx0YnJlYWs7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmM6ODY2OlxcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jLTg2Ny1cXHRcXHR4bWl0Lm91dGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHN0YXRlLVxcdTAwM2VuZXQsIHR1cGxlaGFzaC1cXHUwMDNldHVwbGUub3V0LmlmaWR4KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jPTExMjI9bmZfZmxvd19vZmZsb2FkX2lwdjZfaG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMtMTE4Mi1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYzoxMTgzOlxcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jLTExODQtXFx0XFx0eG1pdC5vdXRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzdGF0ZS1cXHUwMDNlbmV0LCB0dXBsZWhhc2gtXFx1MDAzZXR1cGxlLm91dC5pZmlkeCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jPTIzMj1zdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9ldGhfc3JjKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtMjUwLVxcdHN3aXRjaCAodGhpc190dXBsZS1cXHUwMDNleG1pdF90eXBlKSB7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYzoyNTE6XFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0yNTItXFx0XFx0YWRkciA9IHRoaXNfdHVwbGUtXFx1MDAzZW91dC5oX3NvdXJjZTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM9MjgyPXN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2V0aF9kc3Qoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0zMDMtXFx0c3dpdGNoICh0aGlzX3R1cGxlLVxcdTAwM2V4bWl0X3R5cGUpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jOjMwNDpcXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDpcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTMwNS1cXHRcXHRldGhlcl9hZGRyX2NvcHkoaGEsIHRoaXNfdHVwbGUtXFx1MDAzZW91dC5oX2Rlc3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz01ODU9c3RhdGljIGludCBmbG93X29mZmxvYWRfcmVkaXJlY3Qoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy01OTYtXFx0c3dpdGNoICh0aGlzX3R1cGxlLVxcdTAwM2V4bWl0X3R5cGUpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jOjU5NzpcXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDpcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTU5OC1cXHRcXHR0aGlzX3R1cGxlID0gXFx1MDAyNmZsb3ctXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz02MjU9c3RhdGljIGludCBmbG93X29mZmxvYWRfZW5jYXBfdHVubmVsKGNvbnN0IHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTYzMy1cXHR0aGlzX3R1cGxlID0gXFx1MDAyNmZsb3ctXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlO1xcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6NjM0OlxcdGlmICh0aGlzX3R1cGxlLVxcdTAwM2V4bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUKVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtNjM1LVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz02NTQ9c3RhdGljIGludCBmbG93X29mZmxvYWRfZGVjYXBfdHVubmVsKGNvbnN0IHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jLTY2Mi1cXHRvdGhlcl90dXBsZSA9IFxcdTAwMjZmbG93LVxcdTAwM2V0dXBsZWhhc2hbIWRpcl0udHVwbGU7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYzo2NjM6XFx0aWYgKG90aGVyX3R1cGxlLVxcdTAwM2V4bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUKVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtNjY0LVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz05NT1zdGF0aWMgaW50IG5mdF9kZXZfcGF0aF9pbmZvKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0xNDMtXFx0XFx0XFx0XFx0bWVtY3B5KGluZm8tXFx1MDAzZWhfZGVzdCwgcGF0aC1cXHUwMDNlZW5jYXAuaF9kZXN0LCBFVEhfQUxFTik7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzoxNDQ6XFx0XFx0XFx0XFx0aW5mby1cXHUwMDNleG1pdF90eXBlID0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUO1xcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMTQ1LVxcdFxcdFxcdFxcdGluZm8tXFx1MDAzZW5lZWRzX2dzb19zZWdtZW50ID0gMTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMTc1LVxcdFxcdFxcdH1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjE3NjpcXHRcXHRcXHRpbmZvLVxcdTAwM2V4bWl0X3R5cGUgPSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q7XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0xNzctXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTE4NS1cXHQgICAgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShpbmZvLVxcdTAwM2VpbmRldikpXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzoxODY6XFx0XFx0aW5mby1cXHUwMDNleG1pdF90eXBlID0gRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUO1xcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMTg3LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0yNDY9c3RhdGljIGludCBuZnRfZGV2X2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjg0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6Mjg1OlxcdGlmIChpbmZvLnhtaXRfdHlwZSA9PSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1QpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI4Ni1cXHRcXHRtZW1jcHkocm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ub3V0Lmhfc291cmNlLCBpbmZvLmhfc291cmNlLCBFVEhfQUxFTik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE3OjA4LjQwNjIxODI0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDcxMzk0NTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgeW91ciBzdW1tYXJ5OlxuXG4qKkNvZGUgQXNzZXNzbWVudCBhbmQgQWN0aW9uKipcblxuT2theSwgYWZ0ZXIgZXhhbWluaW5nIHRoZSBzaXR1YXRpb24sIHRoZXJlJ3Mgbm8gZG91YnQgaW4gbXkgbWluZDogdGhlIGNvZGUgcGF0aCBpbiBxdWVzdGlvbiBpcyBib3RoIGFjY2Vzc2libGUgYW5kLCBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgZnVsbHkgb3BlcmF0aW9uYWwuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBwcm9jZWVkaW5nIHdpdGggdGhlIG5leHQgc3RlcC4gTXkgaW1tZWRpYXRlIGNvdXJzZSBvZiBhY3Rpb24gd2lsbCBiZSB0byBkZWZpbmUgYW5kIHNldCB0aGUgaW50ZW5kZWQgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU2MywiT3V0cHV0VG9rZW5zIjoxMjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxNzoxMy40Nzc2MTUwMjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY0Mzg3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GVF9GTE9XX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbG93X29mZmxvYWRfZmlsbF9yb3V0ZVwiLFxuICAgIFwiZmxvd19vZmZsb2FkX3JvdXRlX2luaXRcIixcbiAgICBcIm5mdF9mbG93X29mZmxvYWRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCByb3V0aW5nIGxvZ2ljIHdoZXJlIGEgZGVzdGluYXRpb24gZW50cnkgd2FzIGluY29ycmVjdGx5IHJlbGVhc2VkIG9yIGxlYWtlZCBiYXNlZCBvbiBhIHdyb25nIGNvbmRpdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgZmxvdyBvZmZsb2FkIGV4cHJlc3Npb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfRkxPV19UQUJMRVwiLFxuICAgIFwiTkZUX0ZMT1dfT0ZGTE9BRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlXCIsXG4gICAgXCJmbG93X29mZmxvYWRfcm91dGVfaW5pdFwiLFxuICAgIFwibmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHJvdXRpbmcgbG9naWMgd2hlcmUgYSBkZXN0aW5hdGlvbiBlbnRyeSB3YXMgaW5jb3JyZWN0bHkgcmVsZWFzZWQgb3IgbGVha2VkIGJhc2VkIG9uIGEgd3JvbmcgY29uZGl0aW9uLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBuZnRhYmxlcyBmbG93IG9mZmxvYWQgZXhwcmVzc2lvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpthxt[1] Phase: Succeeded StartedAt: 2026-07-10 07:17:24 +0000 UTC FinishedAt: 2026-07-10 07:17:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-10 07:17:24 +0000 UTC FinishedAt: 2026-07-10 07:17:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2] Phase: Succeeded StartedAt: 2026-07-10 07:17:24 +0000 UTC FinishedAt: 2026-07-10 11:19:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-10 07:17:24 +0000 UTC FinishedAt: 2026-07-10 11:19:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","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-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-10 07:17:24 +0000 UTC FinishedAt: 2026-07-10 07:17:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-10 07:17:24 +0000 UTC FinishedAt: 2026-07-10 07:17:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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-workflowpthxt/series-workflowpthxt-convert-artifact-1533368280/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-10 07:17:34 +0000 UTC FinishedAt: 2026-07-10 07:48:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-10 07:17:34 +0000 UTC FinishedAt: 2026-07-10 07:48:16 +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:*305ef752-807b-42e6-a168-76aafb19cad6,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-workflowpthxt/series-workflowpthxt-convert-artifact-1533368280/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": "942dbaf6-bcd9-41b2-9d67-4ac21b4165e8", "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-workflowpthxt/series-workflowpthxt-build-action-458354702/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-10 07:17:34 +0000 UTC FinishedAt: 2026-07-10 07:48:06 +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:*305ef752-807b-42e6-a168-76aafb19cad6,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-workflowpthxt/series-workflowpthxt-convert-artifact-1533368280/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": "942dbaf6-bcd9-41b2-9d67-4ac21b4165e8", "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-workflowpthxt/series-workflowpthxt-build-action-458354702/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-10 07:48:16 +0000 UTC FinishedAt: 2026-07-10 07:48:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-10 07:48:16 +0000 UTC FinishedAt: 2026-07-10 07:48:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-10 07:48:16 +0000 UTC FinishedAt: 2026-07-10 07:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-10 07:48:16 +0000 UTC FinishedAt: 2026-07-10 07:48:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","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-workflowpthxt/series-workflowpthxt-convert-artifact-1739806783/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-10 07:48:26 +0000 UTC FinishedAt: 2026-07-10 07:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-10 07:48:26 +0000 UTC FinishedAt: 2026-07-10 07:50:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*942dbaf6-bcd9-41b2-9d67-4ac21b4165e8,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-workflowpthxt/series-workflowpthxt-build-action-458354702/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-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-10 07:50:48 +0000 UTC FinishedAt: 2026-07-10 07:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-10 07:50:48 +0000 UTC FinishedAt: 2026-07-10 07:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-10 07:50:48 +0000 UTC FinishedAt: 2026-07-10 08:13:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-10 07:50:48 +0000 UTC FinishedAt: 2026-07-10 08:13:32 +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:*305ef752-807b-42e6-a168-76aafb19cad6,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-workflowpthxt/series-workflowpthxt-convert-artifact-1739806783/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": "1aa7fde1-0746-465d-abd9-e871c4f75fbe", "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-workflowpthxt/series-workflowpthxt-build-action-2594790483/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-10 07:50:48 +0000 UTC FinishedAt: 2026-07-10 08:13:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*305ef752-807b-42e6-a168-76aafb19cad6,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-workflowpthxt/series-workflowpthxt-convert-artifact-1739806783/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": "1aa7fde1-0746-465d-abd9-e871c4f75fbe", "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-workflowpthxt/series-workflowpthxt-build-action-2594790483/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-10 08:13:32 +0000 UTC FinishedAt: 2026-07-10 08:13:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-10 08:13:32 +0000 UTC FinishedAt: 2026-07-10 08:13:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-10 08:13:32 +0000 UTC FinishedAt: 2026-07-10 08:15:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-10 08:13:32 +0000 UTC FinishedAt: 2026-07-10 08:15:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1aa7fde1-0746-465d-abd9-e871c4f75fbe,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-workflowpthxt/series-workflowpthxt-build-action-2594790483/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-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-10 08:15:47 +0000 UTC FinishedAt: 2026-07-10 11:19:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-10 08:15:47 +0000 UTC FinishedAt: 2026-07-10 11:19:23 +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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*942dbaf6-bcd9-41b2-9d67-4ac21b4165e8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1aa7fde1-0746-465d-abd9-e871c4f75fbe,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-workflowpthxt/series-workflowpthxt-build-action-458354702/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-workflowpthxt/series-workflowpthxt-build-action-2594790483/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-10 08:15:47 +0000 UTC FinishedAt: 2026-07-10 08:16:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-10 08:15:47 +0000 UTC FinishedAt: 2026-07-10 08:15:58 +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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpthxt/series-workflowpthxt-convert-artifact-3471127768/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-10 08:15:47 +0000 UTC FinishedAt: 2026-07-10 08:15:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-10 08:15:47 +0000 UTC FinishedAt: 2026-07-10 08:15:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-10 08:15:47 +0000 UTC FinishedAt: 2026-07-10 08:15:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-10 08:16:07 +0000 UTC FinishedAt: 2026-07-10 11:19:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpthxt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"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":["flow_offload_fill_route","flow_offload_route_init","nft_flow_offload_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"27d34668-5913-4ebe-b62f-a5002a12fdaa","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-10 08:16:07 +0000 UTC FinishedAt: 2026-07-10 11:19:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*942dbaf6-bcd9-41b2-9d67-4ac21b4165e8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1aa7fde1-0746-465d-abd9-e871c4f75fbe,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-workflowpthxt/series-workflowpthxt-build-action-458354702/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-workflowpthxt/series-workflowpthxt-build-action-2594790483/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-workflowpthxt/series-workflowpthxt-convert-artifact-3471127768/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,}