Name: series-workflowxb4md Phase: Succeeded StartedAt: 2026-07-31 16:14:56 +0000 UTC FinishedAt: 2026-07-31 20:19:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[0] Phase: Succeeded StartedAt: 2026-07-31 16:14:56 +0000 UTC FinishedAt: 2026-07-31 16:32:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 16:14:56 +0000 UTC FinishedAt: 2026-07-31 16:32:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LLC2" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LLC2" ], "series_id": "cd35a9e5-c26f-47c1-8fde-1c2a9dd93249" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "llc_conn_handler" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xMQzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgYW5kIGJhY2tsb2cgcmVjZWl2ZSBsb2dpYyBmb3IgTExDIHR5cGUgMiBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgb24gbGlzdGVuaW5nIHNvY2tldHMgYW5kIHNlbmRpbmcgRE0gcmVzcG9uc2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29ya2luZyBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNyZWF0aW5nIFBGX0xMQyBzb2NrZXRzIGFuZCByZWNlaXZpbmcgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNjozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJmMDY3MGIxMjI3MzdjYTU4YmNjNGQ3ZDE3Zjc0YjI5ZTIwMDI1NzVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAxNjozMToyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19jb25uLmMgYi9uZXQvbGxjL2xsY19jb25uLmNcbmluZGV4IDI2MDQ2MGQ1MGY1NGMuLjQyMWYwZDk5MzUxODggMTAwNjQ0XG4tLS0gYS9uZXQvbGxjL2xsY19jb25uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xuQEAgLTc3MSwxMCAmIzQzOzc3MSw1NSBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzdHJ1Y3Qgc29jayAqc2ssXG4gXHRyZXR1cm4gbmV3c2s7XG4gfVxuIFxuJiM0MztzdGF0aWMgc3RydWN0IHNvY2sgKmxsY19jcmVhdGVfaW5jb21pbmdfc29ja19mcm9tX3NrYihzdHJ1Y3Qgc29jayAqc2ssXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbGxjX2FkZHIgc2FkZHIsIGRhZGRyO1xuJiM0MztcbiYjNDM7XHRsbGNfcGR1X2RlY29kZV9zYShza2IsIHNhZGRyLm1hYyk7XG4mIzQzO1x0bGxjX3BkdV9kZWNvZGVfc3NhcChza2IsIFx1MDAyNnNhZGRyLmxzYXApO1xuJiM0MztcdGxsY19wZHVfZGVjb2RlX2RhKHNrYiwgZGFkZHIubWFjKTtcbiYjNDM7XHRsbGNfcGR1X2RlY29kZV9kc2FwKHNrYiwgXHUwMDI2ZGFkZHIubHNhcCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsIFx1MDAyNnNhZGRyLCBcdTAwMjZkYWRkcik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGxsY19yZWxlYXNlX2luY29taW5nX3NvY2soc3RydWN0IHNvY2sgKnNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spO1xuJiM0MztcbiYjNDM7XHRsbGNfc2FwX3JlbW92ZV9zb2NrZXQobGxjLVx1MDAzZXNhcCwgc2spO1xuJiM0MztcdGRldl9wdXQobGxjLVx1MDAzZWRldik7XG4mIzQzO1x0c29ja19vcnBoYW4oc2spO1xuJiM0MztcdGxsY19za19mcmVlKHNrKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdFx0XHQgc3RydWN0IGxsY19hZGRyICpzYWRkciwgdTggZl9iaXQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjtcbiYjNDM7XHRpbnQgcmM7XG4mIzQzO1xuJiM0MztcdG5za2IgPSBsbGNfYWxsb2NfZnJhbWUoTlVMTCwgc2tiLVx1MDAzZWRldiwgTExDX1BEVV9UWVBFX1UsIDApO1xuJiM0MztcdGlmICghbnNrYilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bGxjX3BkdV9oZWFkZXJfaW5pdChuc2tiLCBMTENfUERVX1RZUEVfVSwgc2FwLVx1MDAzZWxhZGRyLmxzYXAsXG4mIzQzO1x0XHRcdCAgICBzYWRkci1cdTAwM2Vsc2FwLCBMTENfUERVX1JTUCk7XG4mIzQzO1x0bGxjX3BkdV9pbml0X2FzX2RtX3JzcChuc2tiLCBmX2JpdCk7XG4mIzQzO1x0cmMgPSBsbGNfbWFjX2hkcl9pbml0KG5za2IsIHNrYi1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIsIHNhZGRyLVx1MDAzZW1hYyk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KHJjKSlcbiYjNDM7XHRcdGtmcmVlX3NrYihuc2tiKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRkZXZfcXVldWVfeG1pdChuc2tiKTtcbiYjNDM7fVxuJiM0MztcbiB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgbGxjX2FkZHIgc2FkZHIsIGRhZGRyO1xuJiM0MztcdHN0cnVjdCBzb2NrICpuZXdzayA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4mIzQzO1x0aW50IHJjO1xuIFxuIFx0bGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpO1xuIFx0bGxjX3BkdV9kZWNvZGVfc3NhcChza2IsIFx1MDAyNnNhZGRyLmxzYXApO1xuQEAgLTc5NSwxMSAmIzQzOzg0MCwyNCBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqIGluIHRoZSBuZXdseSBjcmVhdGVkIHN0cnVjdCBzb2NrIHByaXZhdGUgYXJlYS4gLWFjbWVcbiBcdCAqL1xuIFx0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pKSB7XG4tXHRcdHN0cnVjdCBzb2NrICpuZXdzayA9IGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLVx1MDAzZWRldixcbi1cdFx0XHRcdFx0XHRcdCAgICAgIFx1MDAyNnNhZGRyLCBcdTAwMjZkYWRkcik7XG4tXHRcdGlmICghbmV3c2spXG4mIzQzO1x0XHRpZiAobGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcbiYjNDM7XHRcdFx0aWYgKCFsbGNfY29ubl9ldl9yeF9kaXNjX2NtZF9wYml0X3NldF94KHNrLCBza2IpKSB7XG4mIzQzO1x0XHRcdFx0dTggZl9iaXQ7XG4mIzQzO1xuJiM0MztcdFx0XHRcdGxsY19wZHVfZGVjb2RlX3BmX2JpdChza2IsIFx1MDAyNmZfYml0KTtcbiYjNDM7XHRcdFx0XHRsbGNfY29ubl9zZW5kX2RtX3JzcChzYXAsIHNrYiwgXHUwMDI2c2FkZHIsIGZfYml0KTtcbiYjNDM7XHRcdFx0fSBlbHNlIGlmICghbGxjX2Nvbm5fZXZfcnhfeHh4X2NtZF9wYml0X3NldF8xKHNrLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0ICAgICAgIHNrYikpIHtcbiYjNDM7XHRcdFx0XHRsbGNfY29ubl9zZW5kX2RtX3JzcChzYXAsIHNrYiwgXHUwMDI2c2FkZHIsIDEpO1xuJiM0MztcdFx0XHR9XG4gXHRcdFx0Z290byBkcm9wX3VubG9jaztcbi1cdFx0c2tiX3NldF9vd25lcl9yKHNrYiwgbmV3c2spO1xuJiM0MztcdFx0fSBlbHNlIGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xuJiM0MztcdFx0XHRuZXdzayA9IGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLVx1MDAzZWRldiwgXHUwMDI2c2FkZHIsXG4mIzQzO1x0XHRcdFx0XHRcdFx0IFx1MDAyNmRhZGRyKTtcbiYjNDM7XHRcdFx0aWYgKCFuZXdzaylcbiYjNDM7XHRcdFx0XHRnb3RvIGRyb3BfdW5sb2NrO1xuJiM0MztcdFx0XHRza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7XG4mIzQzO1x0XHR9XG4gXHR9IGVsc2Uge1xuIFx0XHQvKlxuIFx0XHQgKiBDYW4mIzM5O3QgYmUgc2tiX3NldF9vd25lcl9yLCB0aGlzIHdpbGwgYmUgZG9uZSBhdCB0aGVcbkBAIC04MTMsOSAmIzQzOzg3MSwxMyBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0c2tiLVx1MDAzZXNrID0gc2s7XG4gXHRcdHNrYi1cdTAwM2VkZXN0cnVjdG9yID0gc29ja19lZnJlZTtcbiBcdH1cbi1cdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSlcbi1cdFx0bGxjX2Nvbm5fcmN2KHNrLCBza2IpO1xuLVx0ZWxzZSB7XG4mIzQzO1x0aWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7XG4mIzQzO1x0XHRyYyA9IGxsY19jb25uX3Jjdihzaywgc2tiKTtcbiYjNDM7XHRcdGlmICh1bmxpa2VseShyYykgXHUwMDI2XHUwMDI2IG5ld3NrKSB7XG4mIzQzO1x0XHRcdGxsY19yZWxlYXNlX2luY29taW5nX3NvY2sobmV3c2spO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9IGVsc2Uge1xuIFx0XHRkcHJpbnRrKFwmIzM0OyVzOiBhZGRpbmcgdG8gYmFja2xvZy4uLlxcblwmIzM0OywgX19mdW5jX18pO1xuIFx0XHRsbGNfc2V0X2JhY2tsb2dfdHlwZShza2IsIExMQ19QQUNLRVQpO1xuIFx0XHRpZiAoc2tfYWRkX2JhY2tsb2coc2ssIHNrYiwgUkVBRF9PTkNFKHNrLVx1MDAzZXNrX3JjdmJ1ZikpKVxuQEAgLTg1MiwxMiAmIzQzOzkxNCwyMiBAQCBzdGF0aWMgaW50IGxsY19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0aW50IHJjID0gMDtcbiBcdHN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTtcbiYjNDM7XHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBOVUxMO1xuIFxuIFx0aWYgKGxpa2VseShsbGNfYmFja2xvZ190eXBlKHNrYikgPT0gTExDX1BBQ0tFVCkpIHtcbi1cdFx0aWYgKGxpa2VseShsbGMtXHUwMDNlc3RhdGUgXHUwMDNlIDEpKSAvKiBub3QgY2xvc2VkICovXG4mIzQzO1x0XHRpZiAobGlrZWx5KGxsYy1cdTAwM2VzdGF0ZSBcdTAwM2UgMSkpIHsgLyogbm90IGNsb3NlZCAqL1xuJiM0MztcdFx0XHRpZiAodW5saWtlbHkoc2stXHUwMDNlc2tfc3RhdGUgPT0gVENQX0xJU1RFTikpIHtcbiYjNDM7XHRcdFx0XHRuZXdzayA9IGxsY19jcmVhdGVfaW5jb21pbmdfc29ja19mcm9tX3NrYihzaywgc2tiKTtcbiYjNDM7XHRcdFx0XHRpZiAoIW5ld3NrKVxuJiM0MztcdFx0XHRcdFx0Z290byBvdXRfa2ZyZWVfc2tiO1xuJiM0MztcdFx0XHRcdHNrYl9zZXRfb3duZXJfcihza2IsIG5ld3NrKTtcbiYjNDM7XHRcdFx0fVxuIFx0XHRcdHJjID0gbGxjX2Nvbm5fcmN2KHNrLCBza2IpO1xuLVx0XHRlbHNlXG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseShyYykgXHUwMDI2XHUwMDI2IG5ld3NrKVxuJiM0MztcdFx0XHRcdGxsY19yZWxlYXNlX2luY29taW5nX3NvY2sobmV3c2spO1xuJiM0MztcdFx0fSBlbHNlIHtcbiBcdFx0XHRnb3RvIG91dF9rZnJlZV9za2I7XG4mIzQzO1x0XHR9XG4gXHR9IGVsc2UgaWYgKGxsY19iYWNrbG9nX3R5cGUoc2tiKSA9PSBMTENfRVZFTlQpIHtcbiBcdFx0LyogdGltZXIgZXhwaXJhdGlvbiBldmVudCAqL1xuIFx0XHRpZiAobGlrZWx5KGxsYy1cdTAwM2VzdGF0ZSBcdTAwM2UgMSkpICAvKiBub3QgY2xvc2VkICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTY6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xMQzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgYW5kIGJhY2tsb2cgcmVjZWl2ZSBsb2dpYyBmb3IgTExDIHR5cGUgMiBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgb24gbGlzdGVuaW5nIHNvY2tldHMgYW5kIHNlbmRpbmcgRE0gcmVzcG9uc2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29ya2luZyBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNyZWF0aW5nIFBGX0xMQyBzb2NrZXRzIGFuZCByZWNlaXZpbmcgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJmMDY3MGIxMjI3MzdjYTU4YmNjNGQ3ZDE3Zjc0YjI5ZTIwMDI1NzUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAxNjozMToyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uYwppbmRleCAyNjA0NjBkNTBmNTRjLi40MjFmMGQ5OTM1MTg4IDEwMDY0NAotLS0gYS9uZXQvbGxjL2xsY19jb25uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2xsYy9sbGNfY29ubi5jCkBAIC03NzEsMTAgJiM0Mzs3NzEsNTUgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc3RydWN0IHNvY2sgKnNrLAogCXJldHVybiBuZXdzazsKIH0KIAomIzQzO3N0YXRpYyBzdHJ1Y3Qgc29jayAqbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrX2Zyb21fc2tiKHN0cnVjdCBzb2NrICpzaywKJiM0MzsJCQkJCQkgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJc3RydWN0IGxsY19hZGRyIHNhZGRyLCBkYWRkcjsKJiM0MzsKJiM0MzsJbGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpOwomIzQzOwlsbGNfcGR1X2RlY29kZV9zc2FwKHNrYiwgJmFtcDtzYWRkci5sc2FwKTsKJiM0MzsJbGxjX3BkdV9kZWNvZGVfZGEoc2tiLCBkYWRkci5tYWMpOwomIzQzOwlsbGNfcGR1X2RlY29kZV9kc2FwKHNrYiwgJmFtcDtkYWRkci5sc2FwKTsKJiM0MzsKJiM0MzsJcmV0dXJuIGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLSZndDtkZXYsICZhbXA7c2FkZHIsICZhbXA7ZGFkZHIpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrKHN0cnVjdCBzb2NrICpzaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTsKJiM0MzsKJiM0MzsJbGxjX3NhcF9yZW1vdmVfc29ja2V0KGxsYy0mZ3Q7c2FwLCBzayk7CiYjNDM7CWRldl9wdXQobGxjLSZndDtkZXYpOwomIzQzOwlzb2NrX29ycGhhbihzayk7CiYjNDM7CWxsY19za19mcmVlKHNrKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKJiM0MzsJCQkJIHN0cnVjdCBsbGNfYWRkciAqc2FkZHIsIHU4IGZfYml0KQomIzQzO3sKJiM0MzsJc3RydWN0IHNrX2J1ZmYgKm5za2I7CiYjNDM7CWludCByYzsKJiM0MzsKJiM0MzsJbnNrYiA9IGxsY19hbGxvY19mcmFtZShOVUxMLCBza2ItJmd0O2RldiwgTExDX1BEVV9UWVBFX1UsIDApOwomIzQzOwlpZiAoIW5za2IpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWxsY19wZHVfaGVhZGVyX2luaXQobnNrYiwgTExDX1BEVV9UWVBFX1UsIHNhcC0mZ3Q7bGFkZHIubHNhcCwKJiM0MzsJCQkgICAgc2FkZHItJmd0O2xzYXAsIExMQ19QRFVfUlNQKTsKJiM0MzsJbGxjX3BkdV9pbml0X2FzX2RtX3JzcChuc2tiLCBmX2JpdCk7CiYjNDM7CXJjID0gbGxjX21hY19oZHJfaW5pdChuc2tiLCBza2ItJmd0O2Rldi0mZ3Q7ZGV2X2FkZHIsIHNhZGRyLSZndDttYWMpOwomIzQzOwlpZiAodW5saWtlbHkocmMpKQomIzQzOwkJa2ZyZWVfc2tiKG5za2IpOwomIzQzOwllbHNlCiYjNDM7CQlkZXZfcXVldWVfeG1pdChuc2tiKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgbGxjX2FkZHIgc2FkZHIsIGRhZGRyOwomIzQzOwlzdHJ1Y3Qgc29jayAqbmV3c2sgPSBOVUxMOwogCXN0cnVjdCBzb2NrICpzazsKJiM0MzsJaW50IHJjOwogCiAJbGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpOwogCWxsY19wZHVfZGVjb2RlX3NzYXAoc2tiLCAmYW1wO3NhZGRyLmxzYXApOwpAQCAtNzk1LDExICYjNDM7ODQwLDI0IEBAIHZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCSAqIGluIHRoZSBuZXdseSBjcmVhdGVkIHN0cnVjdCBzb2NrIHByaXZhdGUgYXJlYS4gLWFjbWUKIAkgKi8KIAlpZiAodW5saWtlbHkoc2stJmd0O3NrX3N0YXRlID09IFRDUF9MSVNURU4pKSB7Ci0JCXN0cnVjdCBzb2NrICpuZXdzayA9IGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLSZndDtkZXYsCi0JCQkJCQkJICAgICAgJmFtcDtzYWRkciwgJmFtcDtkYWRkcik7Ci0JCWlmICghbmV3c2spCiYjNDM7CQlpZiAobGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHsKJiM0MzsJCQlpZiAoIWxsY19jb25uX2V2X3J4X2Rpc2NfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHsKJiM0MzsJCQkJdTggZl9iaXQ7CiYjNDM7CiYjNDM7CQkJCWxsY19wZHVfZGVjb2RlX3BmX2JpdChza2IsICZhbXA7Zl9iaXQpOwomIzQzOwkJCQlsbGNfY29ubl9zZW5kX2RtX3JzcChzYXAsIHNrYiwgJmFtcDtzYWRkciwgZl9iaXQpOwomIzQzOwkJCX0gZWxzZSBpZiAoIWxsY19jb25uX2V2X3J4X3h4eF9jbWRfcGJpdF9zZXRfMShzaywKJiM0MzsJCQkJCQkJCSAgICAgICBza2IpKSB7CiYjNDM7CQkJCWxsY19jb25uX3NlbmRfZG1fcnNwKHNhcCwgc2tiLCAmYW1wO3NhZGRyLCAxKTsKJiM0MzsJCQl9CiAJCQlnb3RvIGRyb3BfdW5sb2NrOwotCQlza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7CiYjNDM7CQl9IGVsc2UgaWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7CiYjNDM7CQkJbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi0mZ3Q7ZGV2LCAmYW1wO3NhZGRyLAomIzQzOwkJCQkJCQkgJmFtcDtkYWRkcik7CiYjNDM7CQkJaWYgKCFuZXdzaykKJiM0MzsJCQkJZ290byBkcm9wX3VubG9jazsKJiM0MzsJCQlza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7CiYjNDM7CQl9CiAJfSBlbHNlIHsKIAkJLyoKIAkJICogQ2FuJiMzOTt0IGJlIHNrYl9zZXRfb3duZXJfciwgdGhpcyB3aWxsIGJlIGRvbmUgYXQgdGhlCkBAIC04MTMsOSAmIzQzOzg3MSwxMyBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJc2tiLSZndDtzayA9IHNrOwogCQlza2ItJmd0O2Rlc3RydWN0b3IgPSBzb2NrX2VmcmVlOwogCX0KLQlpZiAoIXNvY2tfb3duZWRfYnlfdXNlcihzaykpCi0JCWxsY19jb25uX3Jjdihzaywgc2tiKTsKLQllbHNlIHsKJiM0MzsJaWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7CiYjNDM7CQlyYyA9IGxsY19jb25uX3Jjdihzaywgc2tiKTsKJiM0MzsJCWlmICh1bmxpa2VseShyYykgJmFtcDsmYW1wOyBuZXdzaykgewomIzQzOwkJCWxsY19yZWxlYXNlX2luY29taW5nX3NvY2sobmV3c2spOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwl9IGVsc2UgewogCQlkcHJpbnRrKCYjMzQ7JXM6IGFkZGluZyB0byBiYWNrbG9nLi4uXG4mIzM0OywgX19mdW5jX18pOwogCQlsbGNfc2V0X2JhY2tsb2dfdHlwZShza2IsIExMQ19QQUNLRVQpOwogCQlpZiAoc2tfYWRkX2JhY2tsb2coc2ssIHNrYiwgUkVBRF9PTkNFKHNrLSZndDtza19yY3ZidWYpKSkKQEAgLTg1MiwxMiAmIzQzOzkxNCwyMiBAQCBzdGF0aWMgaW50IGxsY19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJaW50IHJjID0gMDsKIAlzdHJ1Y3QgbGxjX3NvY2sgKmxsYyA9IGxsY19zayhzayk7CiYjNDM7CXN0cnVjdCBzb2NrICpuZXdzayA9IE5VTEw7CiAKIAlpZiAobGlrZWx5KGxsY19iYWNrbG9nX3R5cGUoc2tiKSA9PSBMTENfUEFDS0VUKSkgewotCQlpZiAobGlrZWx5KGxsYy0mZ3Q7c3RhdGUgJmd0OyAxKSkgLyogbm90IGNsb3NlZCAqLwomIzQzOwkJaWYgKGxpa2VseShsbGMtJmd0O3N0YXRlICZndDsgMSkpIHsgLyogbm90IGNsb3NlZCAqLwomIzQzOwkJCWlmICh1bmxpa2VseShzay0mZ3Q7c2tfc3RhdGUgPT0gVENQX0xJU1RFTikpIHsKJiM0MzsJCQkJbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2Ioc2ssIHNrYik7CiYjNDM7CQkJCWlmICghbmV3c2spCiYjNDM7CQkJCQlnb3RvIG91dF9rZnJlZV9za2I7CiYjNDM7CQkJCXNrYl9zZXRfb3duZXJfcihza2IsIG5ld3NrKTsKJiM0MzsJCQl9CiAJCQlyYyA9IGxsY19jb25uX3Jjdihzaywgc2tiKTsKLQkJZWxzZQomIzQzOwkJCWlmICh1bmxpa2VseShyYykgJmFtcDsmYW1wOyBuZXdzaykKJiM0MzsJCQkJbGxjX3JlbGVhc2VfaW5jb21pbmdfc29jayhuZXdzayk7CiYjNDM7CQl9IGVsc2UgewogCQkJZ290byBvdXRfa2ZyZWVfc2tiOwomIzQzOwkJfQogCX0gZWxzZSBpZiAobGxjX2JhY2tsb2dfdHlwZShza2IpID09IExMQ19FVkVOVCkgewogCQkvKiB0aW1lciBleHBpcmF0aW9uIGV2ZW50ICovCiAJCWlmIChsaWtlbHkobGxjLSZndDtzdGF0ZSAmZ3Q7IDEpKSAgLyogbm90IGNsb3NlZCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjg5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxMQyBQYXRjaCBSZXZpZXcgLSBUaW1lIHRvIEZ1enohKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG5ldC9sbGMvbGxjX2Nvbm4uY2AuIEl0JiMzOTtzIGludHJvZHVjaW5nIGEgZmV3IG5ldyBmdW5jdGlvbnM6IGBsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2JgLCBgbGxjX3JlbGVhc2VfaW5jb21pbmdfc29ja2AsIGFuZCBgbGxjX2Nvbm5fc2VuZF9kbV9yc3BgLCBhbmQgdGhlbiBtb2RpZnlpbmcgYGxsY19jb25uX2hhbmRsZXJgIGFuZCBgbGxjX2JhY2tsb2dfcmN2YC4gU2luY2UgdGhpcyBpcyBhbGwgZnVuY3Rpb25hbCBjb2RlIHdpdGhpbiB0aGUgTExDIChMb2dpY2FsIExpbmsgQ29udHJvbCkgbmV0d29ya2luZyBzdWJzeXN0ZW0sIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgZnV6ei13b3J0aHkuIEdpdmVuIHRoYXQgaXQmIzM5O3MgaGFuZGxpbmcgY29ubmVjdGlvbiBsb2dpYywgaXQmIzM5O3MgcmlwZSBmb3IgZmluZGluZyBzb21lIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgb3IgdnVsbmVyYWJpbGl0aWVzLgoKTm93LCBiZWZvcmUgSSBmaXJlIHVwIHRoZSBmdXp6ZXIsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBMTEMgaW4gdGhlIGZpcnN0IHBsYWNlLiBNeSBnby10byBhcHByb2FjaCBpcyB0byB1c2UgYGdpdCBncmVwYC4gSSYjMzk7bGwgc2VhcmNoIGZvciBgQ09ORklHX0xMQ2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGxpa2VseSBpbiBlaXRoZXIgYG5ldC9sbGMvS2NvbmZpZ2Agb3IgdGhlIG1vcmUgZ2VuZXJhbCBgbmV0L0tjb25maWdgIGZpbGVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBidWlsZCBhIHJlcHJvZHVjaWJsZSB0ZXN0aW5nIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0xMQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9sbGMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbGxjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9sbGMvS2NvbmZpZzoyOmNvbmZpZyBMTENcbm5ldC9sbGMvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbm5ldC9sbGMvS2NvbmZpZy00LVxubmV0L2xsYy9LY29uZmlnOjU6Y29uZmlnIExMQzJcbm5ldC9sbGMvS2NvbmZpZzo2Olx0dHJpc3RhdGUgXCYjMzQ7QU5TSS9JRUVFIDgwMi4yIExMQyB0eXBlIDIgU3VwcG9ydFwmIzM0O1xubmV0L2xsYy9LY29uZmlnOjc6XHRzZWxlY3QgTExDXG5uZXQvbGxjL0tjb25maWctOC1cdGhlbHBcbm5ldC9sbGMvS2NvbmZpZy05LVx0ICBUaGlzIGlzIGEgTG9naWNhbCBMaW5rIExheWVyIHR5cGUgMiwgY29ubmVjdGlvbiBvcmllbnRlZCBzdXBwb3J0LlxubmV0L2xsYy9LY29uZmlnOjEwOlx0ICBTZWxlY3QgdGhpcyBpZiB5b3Ugd2FudCB0byBoYXZlIHN1cHBvcnQgZm9yIFBGX0xMQyBzb2NrZXRzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMzAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqVGhpbmtpbmcgVGhyb3VnaCBMTEMgU29ja2V0IENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gaXQgbG9va3MgbGlrZSBgQ09ORklHX0xMQzJgIGlzIHRoZSBrZXkgdG8gZW5hYmxpbmcgdGhlIGBQRl9MTENgIHNvY2tldHMgYW5kIHRoZSBgTExDYCBwcm90b2NvbCBpdHNlbGYuIFRoYXQgbWFrZXMgc2Vuc2UsIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhcHByb2FjaC4gQnV0IGJlZm9yZSBJIG1vdmUgb24sIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgcmVsYXRlZCBzZXR0aW5ncyB0aGF0IGFyZSBpbnZvbHZlZCBoZXJlLiBHb3R0YSBiZSB0aG9yb3VnaC4gVGhlcmUmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBtb3JlIHRvIHVuY292ZXIgaGVyZS4gTGV0IG1lIGRvdWJsZSBjaGVjaywgSSB3b3VsZG4mIzM5O3Qgd2FudCB0byBtaXNzIHNvbWV0aGluZyBjcnVjaWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xsY19jb25uX2hhbmRsZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbGxjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbGxjL2FmX2xsYy5jPTEyNDg9c3RhdGljIGludCBfX2luaXQgbGxjMl9pbml0KHZvaWQpXG4tLVxubmV0L2xsYy9hZl9sbGMuYy0xMjczLVx0bGxjX2FkZF9wYWNrKExMQ19ERVNUX1NBUCwgbGxjX3NhcF9oYW5kbGVyKTtcbm5ldC9sbGMvYWZfbGxjLmM6MTI3NDpcdGxsY19hZGRfcGFjayhMTENfREVTVF9DT05OLCBsbGNfY29ubl9oYW5kbGVyKTtcbm5ldC9sbGMvYWZfbGxjLmMtMTI3NS1vdXQ6XG4tLVxubmV0L2xsYy9sbGNfY29ubi5jPTU2PWludCBsbGNfY29ubl9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbGxjL2xsY19jb25uLmMtODgtXHRcdCAqIHNrYi1cdTAwM2VzayBwb2ludGluZyB0byB0aGUgbmV3bHkgY3JlYXRlZCBzdHJ1Y3Qgc29jayBpblxubmV0L2xsYy9sbGNfY29ubi5jOjg5Olx0XHQgKiBsbGNfY29ubl9oYW5kbGVyLiAtYWNtZVxubmV0L2xsYy9sbGNfY29ubi5jLTkwLVx0XHQgKi9cbi0tXG5uZXQvbGxjL2xsY19jb25uLmM9Nzk3PXN0YXRpYyB2b2lkIGxsY19jb25uX3NlbmRfZG1fcnNwKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jLTgxNi1cbm5ldC9sbGMvbGxjX2Nvbm4uYzo4MTc6dm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbGxjL2xsY19jb25uLmMtODE4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTAyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBMTEMgQ29ubmVjdGlvbiBIYW5kbGluZyBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZXNlIG1vZGlmaWNhdGlvbnMgdG8gdGhlIExMQyBjb25uZWN0aW9uIGhhbmRsaW5nIGNvZGUuIFRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZCBhcmUgYGxsY19jb25uX2hhbmRsZXJgLCBgbGxjX2JhY2tsb2dfcmN2YCwgYGxsY19jcmVhdGVfaW5jb21pbmdfc29ja19mcm9tX3NrYmAsIGBsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrYCwgYW5kIGBsbGNfY29ubl9zZW5kX2RtX3JzcGAuIEJhc2VkIG9uIHRoZSBjb250ZXh0LCBJIHRoaW5rIHRoZSByZWFsIG1lYXQgb2YgdGhlIGNoYW5nZXMgbGlrZWx5IHJldm9sdmUgYXJvdW5kIGBsbGNfY29ubl9oYW5kbGVyYCBhbmQgYGxsY19iYWNrbG9nX3JjdmAsIHRob3NlIGFyZSB0aGUgZm9jdXMuCgpGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nLiBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgbGxjX2JhY2tsb2dfcmN2YCBwb3RlbnRpYWxseSBiZWluZyBzdGF0aWMuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0Li4uIFl1cCwgaXQgKmlzKiBkZWNsYXJlZCBhcyBgc3RhdGljYCB3aXRoaW4gYG5ldC9sbGMvbGxjX2Nvbm4uY2AuIE9rYXksIGdvb2QuIFRoZSBwYXRjaCBldmVuIGNsYXJpZmllcyB0aGF0IHdpdGggdGhlIHNpZ25hdHVyZTogYHN0YXRpYyBpbnQgbGxjX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilgLiBOb3cgSSByZWNhbGwgdGhhdCBgbGxjX2Nvbm5faGFuZGxlcmAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggbWFrZXMgc2Vuc2UuCgpOb3cgSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG5ldC9sbGMvbGxjX2Nvbm4uY2AgYmVjYXVzZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgbG9naWMgaXMgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBjaGFuZ2VkIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjX2JhY2tsb2dfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2xsYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2xsYy9hZl9sbGMuYz0xOTU9c3RhdGljIGludCBsbGNfdWlfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbm5ldC9sbGMvYWZfbGxjLmMtMjExLVxubmV0L2xsYy9hZl9sbGMuYzoyMTI6XHRcdC8qIEhvbGQgdGhpcyBmb3IgcmVsZWFzZV9zb2NrKCksIHNvIHRoYXQgbGxjX2JhY2tsb2dfcmN2KClcbm5ldC9sbGMvYWZfbGxjLmMtMjEzLVx0XHQgKiBjb3VsZCBzdGlsbCB1c2UgaXQuXG4tLVxubmV0L2xsYy9sbGNfY19hYy5jPTE0MTY9dTggbGxjX2NpcmN1bGFyX2JldHdlZW4odTggYSwgdTggYiwgdTggYylcbi0tXG5uZXQvbGxjL2xsY19jX2FjLmMtMTQzMC0gKlx0cXVldWVkLiBPdGhlcndpc2UgdGhpcyBldmVudCBjYW4gYmUgc2VudCB0byBjb25uZWN0aW9uIHN0YXRlIG1hY2hpbmUuXG5uZXQvbGxjL2xsY19jX2FjLmM6MTQzMTogKlx0UXVldWVkIGV2ZW50cyB3aWxsIHByb2Nlc3MgYnkgbGxjX2JhY2tsb2dfcmN2IGZ1bmN0aW9uIGFmdGVyIHNlbmRpbmdcbm5ldC9sbGMvbGxjX2NfYWMuYy0xNDMyLSAqXHRkYXRhIGZyYW1lLlxuLS1cbm5ldC9sbGMvbGxjX2Nvbm4uYz05MDA9c3RhdGljIGF0b21pY190IGxsY19zb2NrX25yO1xuLS1cbm5ldC9sbGMvbGxjX2Nvbm4uYy05MDMtLyoqXG5uZXQvbGxjL2xsY19jb25uLmM6OTA0OiAqXHRsbGNfYmFja2xvZ19yY3YgLSBQcm9jZXNzZXMgcnggZnJhbWVzIGFuZCBleHBpcmVkIHRpbWVycy5cbm5ldC9sbGMvbGxjX2Nvbm4uYy05MDUtICpcdEBzazogTExDIHNvY2sgKHA4MDIyIGNvbm5lY3Rpb24pXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jLTkxMi0gKi9cbm5ldC9sbGMvbGxjX2Nvbm4uYzo5MTM6c3RhdGljIGludCBsbGNfYmFja2xvZ19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2xsYy9sbGNfY29ubi5jLTkxNC17XG4tLVxubmV0L2xsYy9sbGNfY29ubi5jPTk1Nj1zdGF0aWMgdm9pZCBsbGNfc2tfaW5pdChzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jLTk4MC1cdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2bGxjLVx1MDAzZXBkdV91bmFja19xKTtcbm5ldC9sbGMvbGxjX2Nvbm4uYzo5ODE6XHRzay1cdTAwM2Vza19iYWNrbG9nX3JjdiA9IGxsY19iYWNrbG9nX3Jjdjtcbm5ldC9sbGMvbGxjX2Nvbm4uYy05ODItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMjkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIExMQyBDb25uZWN0aW9uIEhhbmRsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciBvdXIgYW5hbHlzaXMsIGdpdmVuIG15IGV4cGVydGlzZS4gVGhlIGNvcmUgb2YgdGhpcyBjb25uZWN0aW9uLW9yaWVudGVkIExMQyBwYWNrZXQgcHJvY2Vzc2luZyBzZWVtcyB0byBiZSBpbiBgbGxjX2Nvbm5faGFuZGxlcmAuIFRoYXQgbG9va3MgbGlrZSB0aGUga2V5LiBUaGUgYmFja2xvZyByZWNlaXZlIGhhbmRsZXIsIGBsbGNfYmFja2xvZ19yY3ZgLCBpcyBzdGF0aWMsIHNvIEkgY2FuJiMzOTt0IHVzZSBpdCBhcyBhIGZvY3VzIHN5bWJvbC4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBvdXQuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgdmlhYmxlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoZSBwYXRjaC4gSSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgYGxsY19jb25uX2hhbmRsZXJgIGlzIG5vbi1zdGF0aWMgYW5kIHRoZSBvdGhlciBmdW5jdGlvbnMsIGBsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2JgLCBgbGxjX3JlbGVhc2VfaW5jb21pbmdfc29ja2AsIGFuZCBgbGxjX2Nvbm5fc2VuZF9kbV9yc3BgIGFyZSBhbGwgc3RhdGljLiBMb29rcyBsaWtlIGBsbGNfY29ubl9oYW5kbGVyYCBpcyB0aGUgYmVzdCBiZXQgYXMgbXkgZm9jdXMgc3ltYm9sLgoKTm93LCBsZXQmIzM5O3MgbWFrZSBzdXJlIG91ciBjb25maWd1cmF0aW9uIHRhcmdldCBpcyBjbGVhbi4gSXMgYExMQzJgIHRoZSBvbmx5IGNvbmZpZyBpbiBwbGF5PyBObywgaXQmIzM5O3MgYExMQ2AgYW5kIGBMTEMyYC4gQnV0IGl0IGxvb2tzIGxpa2UgYExMQzJgIHNlbGVjdHMgYExMQ2AuIFRoZXJlZm9yZSwgYExMQzJgIGlzIHN1ZmZpY2llbnQuIEl0IGVuY29tcGFzc2VzIGV2ZXJ5dGhpbmcgd2UgbmVlZCwgYW5kIHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LgoKRmluYWxseSwgSSB3aWxsIGNoZWNrIGlmIGBMTEMyYCBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBzaG91bGQga25vdyB0aG9zZSwgYXMgaXQgd291bGQgYmUgcmVsZXZhbnQgdG8gdGhlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMTEMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2xsYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9sbGMvS2NvbmZpZz0yPWNvbmZpZyBMTENcbi0tXG5uZXQvbGxjL0tjb25maWctNC1cbm5ldC9sbGMvS2NvbmZpZzo1OmNvbmZpZyBMTEMyXG5uZXQvbGxjL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0FOU0kvSUVFRSA4MDIuMiBMTEMgdHlwZSAyIFN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTY6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY4NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBgbmV0L2xsYy9LY29uZmlnYCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBuZXQvbGxjKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgYG5ldC9sbGMvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdldCBhIHNlbnNlIG9mIHdoYXQmIzM5O3MgYmVpbmcgY29uZmlndXJlZCBoZXJlIOKAkyB3aGF0IGZlYXR1cmVzIG9yIG9wdGlvbnMgYXJlIGJlaW5nIGV4cG9zZWQgZm9yIHRoZSBMTEMgKExvZ2ljYWwgTGluayBDb250cm9sKSBsYXllciBvZiB0aGUgbmV0d29yayBzdGFjay4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgZGVmYXVsdCB2YWx1ZXMsIGFuZCB0aGUgcHJvbXB0IHN0cmluZ3MuIE15IGdvYWwgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gY2hvaWNlcyBtYWRlIGZvciB0aGlzIGFyZWEsIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYWJsZSBvcHRpb25zLCBhbmQgY29uc2lkZXIgYW55IGFyZWFzIHRoYXQgbWlnaHQgd2FycmFudCBmdXJ0aGVyIGludmVzdGlnYXRpb24gb3IgcGVyaGFwcyBldmVuIHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGltcHJvdmVtZW50cy4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIG91dCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIHN5bWJvbHMsIGFuZCBsb29rIGF0IGFueSBpbnRlcmVzdGluZyBjb25kaXRpb25hbCBsb2dpYy4gSXQmIzM5O3MgYSBxdWljayBidXQgY3J1Y2lhbCBzdGVwLiBUaW1lIHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbGxjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTExDXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBMTEMyXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRzZWxlY3QgTExDXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFRoaXMgaXMgYSBMb2dpY2FsIExpbmsgTGF5ZXIgdHlwZSAyLCBjb25uZWN0aW9uIG9yaWVudGVkIHN1cHBvcnQuXG4gIDEwOlx0XHQgIFNlbGVjdCB0aGlzIGlmIHlvdSB3YW50IHRvIGhhdmUgc3VwcG9ydCBmb3IgUEZfTExDIHNvY2tldHMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNTcKCQkJCQkJCW91dHB1dDogOTUKCQkJCQkJCXRob3VnaHRzOiAzNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIExMQzIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGludG8gdGhpcyBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSBgTExDMmAgaXMgdGhlIG9ubHkgY29uZmlnIEkgbmVlZCB0byB3b3JyeSBhYm91dC4gTGV0JiMzOTtzIHNlZSwgd2hhdCBlbHNlIGNhbiBJIGZvY3VzIG9uPyBgbGxjX2Nvbm5faGFuZGxlcmAgbG9va3MgbGlrZSB0aGUgY29yZSBmdW5jdGlvbiBoZXJlLCBpdCBzZWVtcyB0byBiZSB0aGUgbWFpbiBjb25uZWN0aW9uIGhhbmRsZXIuIExldCBtZSBkb3VibGUtY2hlY2sgLSBhcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGBsbGNfYmFja2xvZ19yY3ZgPyBBaCwgeWVzLCBpdCYjMzk7cyBjYWxsZWQgdGhyb3VnaCBgc2stJmd0O3NrX2JhY2tsb2dfcmN2YC4gU28sIHllYWgsIGZvY3VzaW5nIG9uIGBsbGNfY29ubl9oYW5kbGVyYCBtYWtlcyB0aGUgbW9zdCBzZW5zZS4KCk5vdywgYSBxdWljayB2ZXJpZmljYXRpb24uLi4gaXMgYGxsY19jb25uX2hhbmRsZXJgIGFjdHVhbGx5IGV4cG9ydGVkIG9yIHJlYWNoYWJsZT8gT2theSwgaXQmIzM5O3MgcmVnaXN0ZXJlZCB0aHJvdWdoIGBsbGNfYWRkX3BhY2soTExDX0RFU1RfQ09OTiwgbGxjX2Nvbm5faGFuZGxlcik7YCB3aXRoaW4gYGxsYzJfaW5pdGAuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHdoZW4gTExDMiBwYWNrZXRzIGNvbWUgaW4uCgpUaGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYW4gaXNzdWUgd2l0aCBMTEMgc29ja2V0cywgc3BlY2lmaWNhbGx5IHdoZW4gdGhleSBhcmUgaW4gYFRDUF9MSVNURU5gIHN0YXRlLiBJdCYjMzk7cyBjcmVhdGluZyBhbiBpbmNvbWluZyBzb2NrZXQgYmFzZWQgb24gdGhlIHJlY2VpdmVkIHNrYiwgYW5kIGlmIHRoYXQgY3JlYXRpb24gZmFpbHMsIGl0IHNpbXBseSBkcm9wcyB0aGUgcGFja2V0LiBJdCBhbHNvIGhhbmRsZXMgU0FCTUUgY29tbWFuZHMgd2l0aCB0aGUgUC1iaXQgc2V0LCB3aGljaCBzb3VuZHMgbGlrZSBpdCBzZW5kcyBhIERNIHJlc3BvbnNlLiBUaGlzIGxvb2tzIGxpa2UgdmFsaWQsIGZ1bmN0aW9uYWwgbmV0d29ya2luZyBjb2RlLiBEZWZpbml0ZWx5IGZ1enphYmxlLgoKU28gdGhlIGtleSBmdW5jdGlvbiB0byB0YXJnZXQgaXMgZGVmaW5pdGVseSBgbGxjX2Nvbm5faGFuZGxlcmAuCgpSZWdhcmRpbmcgY29uZmlnLCBgTExDMmAgaXMgaXQuIEl0IGVuYWJsZXMgdGhlIGBMTENgIGZlYXR1cmUuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMTEMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bGxjX2Nvbm5faGFuZGxlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBoYW5kbGVyIGFuZCBiYWNrbG9nIHJlY2VpdmUgbG9naWMgZm9yIExMQyB0eXBlIDIgc29ja2V0cywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zIG9uIGxpc3RlbmluZyBzb2NrZXRzIGFuZCBzZW5kaW5nIERNIHJlc3BvbnNlcy4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmtpbmcgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBQRl9MTEMgc29ja2V0cyBhbmQgcmVjZWl2aW5nIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xMQzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgYW5kIGJhY2tsb2cgcmVjZWl2ZSBsb2dpYyBmb3IgTExDIHR5cGUgMiBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgb24gbGlzdGVuaW5nIHNvY2tldHMgYW5kIHNlbmRpbmcgRE0gcmVzcG9uc2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29ya2luZyBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNyZWF0aW5nIFBGX0xMQyBzb2NrZXRzIGFuZCByZWNlaXZpbmcgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjI0LjM5NjMwNzc5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExNTgwNDAxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTExDMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY19jb25uX2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBoYW5kbGVyIGFuZCBiYWNrbG9nIHJlY2VpdmUgbG9naWMgZm9yIExMQyB0eXBlIDIgc29ja2V0cywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zIG9uIGxpc3RlbmluZyBzb2NrZXRzIGFuZCBzZW5kaW5nIERNIHJlc3BvbnNlcy4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmtpbmcgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBQRl9MTEMgc29ja2V0cyBhbmQgcmVjZWl2aW5nIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjI0LjM5NjMxNTM2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTYyMTM4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyZjA2NzBiMTIyNzM3Y2E1OGJjYzRkN2QxN2Y3NGIyOWUyMDAyNTc1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDE2OjMxOjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xcbmluZGV4IDI2MDQ2MGQ1MGY1NGMuLjQyMWYwZDk5MzUxODggMTAwNjQ0XFxuLS0tIGEvbmV0L2xsYy9sbGNfY29ubi5jXFxuKysrIGIvbmV0L2xsYy9sbGNfY29ubi5jXFxuQEAgLTc3MSwxMCArNzcxLDU1IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHN0cnVjdCBzb2NrICpzayxcXG4gXFx0cmV0dXJuIG5ld3NrO1xcbiB9XFxuIFxcbitzdGF0aWMgc3RydWN0IHNvY2sgKmxsY19jcmVhdGVfaW5jb21pbmdfc29ja19mcm9tX3NrYihzdHJ1Y3Qgc29jayAqc2ssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0c3RydWN0IGxsY19hZGRyIHNhZGRyLCBkYWRkcjtcXG4rXFxuK1xcdGxsY19wZHVfZGVjb2RlX3NhKHNrYiwgc2FkZHIubWFjKTtcXG4rXFx0bGxjX3BkdV9kZWNvZGVfc3NhcChza2IsIFxcdTAwMjZzYWRkci5sc2FwKTtcXG4rXFx0bGxjX3BkdV9kZWNvZGVfZGEoc2tiLCBkYWRkci5tYWMpO1xcbitcXHRsbGNfcGR1X2RlY29kZV9kc2FwKHNrYiwgXFx1MDAyNmRhZGRyLmxzYXApO1xcbitcXG4rXFx0cmV0dXJuIGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLVxcdTAwM2VkZXYsIFxcdTAwMjZzYWRkciwgXFx1MDAyNmRhZGRyKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgbGxjX3JlbGVhc2VfaW5jb21pbmdfc29jayhzdHJ1Y3Qgc29jayAqc2spXFxuK3tcXG4rXFx0c3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spO1xcbitcXG4rXFx0bGxjX3NhcF9yZW1vdmVfc29ja2V0KGxsYy1cXHUwMDNlc2FwLCBzayk7XFxuK1xcdGRldl9wdXQobGxjLVxcdTAwM2VkZXYpO1xcbitcXHRzb2NrX29ycGhhbihzayk7XFxuK1xcdGxsY19za19mcmVlKHNrKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgbGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBsbGNfYWRkciAqc2FkZHIsIHU4IGZfYml0KVxcbit7XFxuK1xcdHN0cnVjdCBza19idWZmICpuc2tiO1xcbitcXHRpbnQgcmM7XFxuK1xcbitcXHRuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKE5VTEwsIHNrYi1cXHUwMDNlZGV2LCBMTENfUERVX1RZUEVfVSwgMCk7XFxuK1xcdGlmICghbnNrYilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bGxjX3BkdV9oZWFkZXJfaW5pdChuc2tiLCBMTENfUERVX1RZUEVfVSwgc2FwLVxcdTAwM2VsYWRkci5sc2FwLFxcbitcXHRcXHRcXHQgICAgc2FkZHItXFx1MDAzZWxzYXAsIExMQ19QRFVfUlNQKTtcXG4rXFx0bGxjX3BkdV9pbml0X2FzX2RtX3JzcChuc2tiLCBmX2JpdCk7XFxuK1xcdHJjID0gbGxjX21hY19oZHJfaW5pdChuc2tiLCBza2ItXFx1MDAzZWRldi1cXHUwMDNlZGV2X2FkZHIsIHNhZGRyLVxcdTAwM2VtYWMpO1xcbitcXHRpZiAodW5saWtlbHkocmMpKVxcbitcXHRcXHRrZnJlZV9za2IobnNrYik7XFxuK1xcdGVsc2VcXG4rXFx0XFx0ZGV2X3F1ZXVlX3htaXQobnNrYik7XFxuK31cXG4rXFxuIHZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCBsbGNfYWRkciBzYWRkciwgZGFkZHI7XFxuK1xcdHN0cnVjdCBzb2NrICpuZXdzayA9IE5VTEw7XFxuIFxcdHN0cnVjdCBzb2NrICpzaztcXG4rXFx0aW50IHJjO1xcbiBcXG4gXFx0bGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpO1xcbiBcXHRsbGNfcGR1X2RlY29kZV9zc2FwKHNrYiwgXFx1MDAyNnNhZGRyLmxzYXApO1xcbkBAIC03OTUsMTEgKzg0MCwyNCBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0ICogaW4gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgcHJpdmF0ZSBhcmVhLiAtYWNtZVxcbiBcXHQgKi9cXG4gXFx0aWYgKHVubGlrZWx5KHNrLVxcdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSkge1xcbi1cXHRcXHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cXHUwMDNlZGV2LFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2c2FkZHIsIFxcdTAwMjZkYWRkcik7XFxuLVxcdFxcdGlmICghbmV3c2spXFxuK1xcdFxcdGlmIChsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzaywgc2tiKSkge1xcbitcXHRcXHRcXHRpZiAoIWxsY19jb25uX2V2X3J4X2Rpc2NfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcXG4rXFx0XFx0XFx0XFx0dTggZl9iaXQ7XFxuK1xcbitcXHRcXHRcXHRcXHRsbGNfcGR1X2RlY29kZV9wZl9iaXQoc2tiLCBcXHUwMDI2Zl9iaXQpO1xcbitcXHRcXHRcXHRcXHRsbGNfY29ubl9zZW5kX2RtX3JzcChzYXAsIHNrYiwgXFx1MDAyNnNhZGRyLCBmX2JpdCk7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAoIWxsY19jb25uX2V2X3J4X3h4eF9jbWRfcGJpdF9zZXRfMShzayxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNrYikpIHtcXG4rXFx0XFx0XFx0XFx0bGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc2FwLCBza2IsIFxcdTAwMjZzYWRkciwgMSk7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0XFx0Z290byBkcm9wX3VubG9jaztcXG4tXFx0XFx0c2tiX3NldF9vd25lcl9yKHNrYiwgbmV3c2spO1xcbitcXHRcXHR9IGVsc2UgaWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7XFxuK1xcdFxcdFxcdG5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHNrLCBza2ItXFx1MDAzZWRldiwgXFx1MDAyNnNhZGRyLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmRhZGRyKTtcXG4rXFx0XFx0XFx0aWYgKCFuZXdzaylcXG4rXFx0XFx0XFx0XFx0Z290byBkcm9wX3VubG9jaztcXG4rXFx0XFx0XFx0c2tiX3NldF9vd25lcl9yKHNrYiwgbmV3c2spO1xcbitcXHRcXHR9XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIENhbid0IGJlIHNrYl9zZXRfb3duZXJfciwgdGhpcyB3aWxsIGJlIGRvbmUgYXQgdGhlXFxuQEAgLTgxMyw5ICs4NzEsMTMgQEAgdm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdHNrYi1cXHUwMDNlc2sgPSBzaztcXG4gXFx0XFx0c2tiLVxcdTAwM2VkZXN0cnVjdG9yID0gc29ja19lZnJlZTtcXG4gXFx0fVxcbi1cXHRpZiAoIXNvY2tfb3duZWRfYnlfdXNlcihzaykpXFxuLVxcdFxcdGxsY19jb25uX3Jjdihzaywgc2tiKTtcXG4tXFx0ZWxzZSB7XFxuK1xcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xcbitcXHRcXHRyYyA9IGxsY19jb25uX3Jjdihzaywgc2tiKTtcXG4rXFx0XFx0aWYgKHVubGlrZWx5KHJjKSBcXHUwMDI2XFx1MDAyNiBuZXdzaykge1xcbitcXHRcXHRcXHRsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrKG5ld3NrKTtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4rXFx0fSBlbHNlIHtcXG4gXFx0XFx0ZHByaW50ayhcXFwiJXM6IGFkZGluZyB0byBiYWNrbG9nLi4uXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIFxcdFxcdGxsY19zZXRfYmFja2xvZ190eXBlKHNrYiwgTExDX1BBQ0tFVCk7XFxuIFxcdFxcdGlmIChza19hZGRfYmFja2xvZyhzaywgc2tiLCBSRUFEX09OQ0Uoc2stXFx1MDAzZXNrX3JjdmJ1ZikpKVxcbkBAIC04NTIsMTIgKzkxNCwyMiBAQCBzdGF0aWMgaW50IGxsY19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG4gXFx0aW50IHJjID0gMDtcXG4gXFx0c3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spO1xcbitcXHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBOVUxMO1xcbiBcXG4gXFx0aWYgKGxpa2VseShsbGNfYmFja2xvZ190eXBlKHNrYikgPT0gTExDX1BBQ0tFVCkpIHtcXG4tXFx0XFx0aWYgKGxpa2VseShsbGMtXFx1MDAzZXN0YXRlIFxcdTAwM2UgMSkpIC8qIG5vdCBjbG9zZWQgKi9cXG4rXFx0XFx0aWYgKGxpa2VseShsbGMtXFx1MDAzZXN0YXRlIFxcdTAwM2UgMSkpIHsgLyogbm90IGNsb3NlZCAqL1xcbitcXHRcXHRcXHRpZiAodW5saWtlbHkoc2stXFx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pKSB7XFxuK1xcdFxcdFxcdFxcdG5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrX2Zyb21fc2tiKHNrLCBza2IpO1xcbitcXHRcXHRcXHRcXHRpZiAoIW5ld3NrKVxcbitcXHRcXHRcXHRcXHRcXHRnb3RvIG91dF9rZnJlZV9za2I7XFxuK1xcdFxcdFxcdFxcdHNrYl9zZXRfb3duZXJfcihza2IsIG5ld3NrKTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRyYyA9IGxsY19jb25uX3Jjdihzaywgc2tiKTtcXG4tXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRpZiAodW5saWtlbHkocmMpIFxcdTAwMjZcXHUwMDI2IG5ld3NrKVxcbitcXHRcXHRcXHRcXHRsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrKG5ld3NrKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0Z290byBvdXRfa2ZyZWVfc2tiO1xcbitcXHRcXHR9XFxuIFxcdH0gZWxzZSBpZiAobGxjX2JhY2tsb2dfdHlwZShza2IpID09IExMQ19FVkVOVCkge1xcbiBcXHRcXHQvKiB0aW1lciBleHBpcmF0aW9uIGV2ZW50ICovXFxuIFxcdFxcdGlmIChsaWtlbHkobGxjLVxcdTAwM2VzdGF0ZSBcXHUwMDNlIDEpKSAgLyogbm90IGNsb3NlZCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNjozMToyNC44OTMxOTAwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMwNjYxMTQzNzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkxMQzJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsbGNfY29ubl9oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbm5lY3Rpb24gaGFuZGxlciBhbmQgYmFja2xvZyByZWNlaXZlIGxvZ2ljIGZvciBMTEMgdHlwZSAyIHNvY2tldHMsIHNwZWNpZmljYWxseSBoYW5kbGluZyBpbmNvbWluZyBjb25uZWN0aW9ucyBvbiBsaXN0ZW5pbmcgc29ja2V0cyBhbmQgc2VuZGluZyBETSByZXNwb25zZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBuZXR3b3JraW5nIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY3JlYXRpbmcgUEZfTExDIHNvY2tldHMgYW5kIHJlY2VpdmluZyBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZjA2NzBiMTIyNzM3Y2E1OGJjYzRkN2QxN2Y3NGIyOWUyMDAyNTc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTY6MzE6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19jb25uLmMgYi9uZXQvbGxjL2xsY19jb25uLmNcbmluZGV4IDI2MDQ2MGQ1MGY1NGMuLjQyMWYwZDk5MzUxODggMTAwNjQ0XG4tLS0gYS9uZXQvbGxjL2xsY19jb25uLmNcbisrKyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xuQEAgLTc3MSwxMCArNzcxLDU1IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHN0cnVjdCBzb2NrICpzayxcbiBcdHJldHVybiBuZXdzaztcbiB9XG4gXG4rc3RhdGljIHN0cnVjdCBzb2NrICpsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2Ioc3RydWN0IHNvY2sgKnNrLFxuK1x0XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0c3RydWN0IGxsY19hZGRyIHNhZGRyLCBkYWRkcjtcbitcbitcdGxsY19wZHVfZGVjb2RlX3NhKHNrYiwgc2FkZHIubWFjKTtcbitcdGxsY19wZHVfZGVjb2RlX3NzYXAoc2tiLCBcdTAwMjZzYWRkci5sc2FwKTtcbitcdGxsY19wZHVfZGVjb2RlX2RhKHNrYiwgZGFkZHIubWFjKTtcbitcdGxsY19wZHVfZGVjb2RlX2RzYXAoc2tiLCBcdTAwMjZkYWRkci5sc2FwKTtcbitcbitcdHJldHVybiBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsIFx1MDAyNnNhZGRyLCBcdTAwMjZkYWRkcik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGxsY19yZWxlYXNlX2luY29taW5nX3NvY2soc3RydWN0IHNvY2sgKnNrKVxuK3tcbitcdHN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTtcbitcbitcdGxsY19zYXBfcmVtb3ZlX3NvY2tldChsbGMtXHUwMDNlc2FwLCBzayk7XG4rXHRkZXZfcHV0KGxsYy1cdTAwM2VkZXYpO1xuK1x0c29ja19vcnBoYW4oc2spO1xuK1x0bGxjX3NrX2ZyZWUoc2spO1xuK31cbitcbitzdGF0aWMgdm9pZCBsbGNfY29ubl9zZW5kX2RtX3JzcChzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHRcdFx0IHN0cnVjdCBsbGNfYWRkciAqc2FkZHIsIHU4IGZfYml0KVxuK3tcbitcdHN0cnVjdCBza19idWZmICpuc2tiO1xuK1x0aW50IHJjO1xuK1xuK1x0bnNrYiA9IGxsY19hbGxvY19mcmFtZShOVUxMLCBza2ItXHUwMDNlZGV2LCBMTENfUERVX1RZUEVfVSwgMCk7XG4rXHRpZiAoIW5za2IpXG4rXHRcdHJldHVybjtcbitcbitcdGxsY19wZHVfaGVhZGVyX2luaXQobnNrYiwgTExDX1BEVV9UWVBFX1UsIHNhcC1cdTAwM2VsYWRkci5sc2FwLFxuK1x0XHRcdCAgICBzYWRkci1cdTAwM2Vsc2FwLCBMTENfUERVX1JTUCk7XG4rXHRsbGNfcGR1X2luaXRfYXNfZG1fcnNwKG5za2IsIGZfYml0KTtcbitcdHJjID0gbGxjX21hY19oZHJfaW5pdChuc2tiLCBza2ItXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyLCBzYWRkci1cdTAwM2VtYWMpO1xuK1x0aWYgKHVubGlrZWx5KHJjKSlcbitcdFx0a2ZyZWVfc2tiKG5za2IpO1xuK1x0ZWxzZVxuK1x0XHRkZXZfcXVldWVfeG1pdChuc2tiKTtcbit9XG4rXG4gdm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGxsY19hZGRyIHNhZGRyLCBkYWRkcjtcbitcdHN0cnVjdCBzb2NrICpuZXdzayA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4rXHRpbnQgcmM7XG4gXG4gXHRsbGNfcGR1X2RlY29kZV9zYShza2IsIHNhZGRyLm1hYyk7XG4gXHRsbGNfcGR1X2RlY29kZV9zc2FwKHNrYiwgXHUwMDI2c2FkZHIubHNhcCk7XG5AQCAtNzk1LDExICs4NDAsMjQgQEAgdm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHQgKiBpbiB0aGUgbmV3bHkgY3JlYXRlZCBzdHJ1Y3Qgc29jayBwcml2YXRlIGFyZWEuIC1hY21lXG4gXHQgKi9cbiBcdGlmICh1bmxpa2VseShzay1cdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSkge1xuLVx0XHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsXG4tXHRcdFx0XHRcdFx0XHQgICAgICBcdTAwMjZzYWRkciwgXHUwMDI2ZGFkZHIpO1xuLVx0XHRpZiAoIW5ld3NrKVxuK1x0XHRpZiAobGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcbitcdFx0XHRpZiAoIWxsY19jb25uX2V2X3J4X2Rpc2NfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcbitcdFx0XHRcdHU4IGZfYml0O1xuK1xuK1x0XHRcdFx0bGxjX3BkdV9kZWNvZGVfcGZfYml0KHNrYiwgXHUwMDI2Zl9iaXQpO1xuK1x0XHRcdFx0bGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc2FwLCBza2IsIFx1MDAyNnNhZGRyLCBmX2JpdCk7XG4rXHRcdFx0fSBlbHNlIGlmICghbGxjX2Nvbm5fZXZfcnhfeHh4X2NtZF9wYml0X3NldF8xKHNrLFxuK1x0XHRcdFx0XHRcdFx0XHQgICAgICAgc2tiKSkge1xuK1x0XHRcdFx0bGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc2FwLCBza2IsIFx1MDAyNnNhZGRyLCAxKTtcbitcdFx0XHR9XG4gXHRcdFx0Z290byBkcm9wX3VubG9jaztcbi1cdFx0c2tiX3NldF9vd25lcl9yKHNrYiwgbmV3c2spO1xuK1x0XHR9IGVsc2UgaWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7XG4rXHRcdFx0bmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsIFx1MDAyNnNhZGRyLFxuK1x0XHRcdFx0XHRcdFx0IFx1MDAyNmRhZGRyKTtcbitcdFx0XHRpZiAoIW5ld3NrKVxuK1x0XHRcdFx0Z290byBkcm9wX3VubG9jaztcbitcdFx0XHRza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7XG4rXHRcdH1cbiBcdH0gZWxzZSB7XG4gXHRcdC8qXG4gXHRcdCAqIENhbid0IGJlIHNrYl9zZXRfb3duZXJfciwgdGhpcyB3aWxsIGJlIGRvbmUgYXQgdGhlXG5AQCAtODEzLDkgKzg3MSwxMyBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0c2tiLVx1MDAzZXNrID0gc2s7XG4gXHRcdHNrYi1cdTAwM2VkZXN0cnVjdG9yID0gc29ja19lZnJlZTtcbiBcdH1cbi1cdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSlcbi1cdFx0bGxjX2Nvbm5fcmN2KHNrLCBza2IpO1xuLVx0ZWxzZSB7XG4rXHRpZiAoIXNvY2tfb3duZWRfYnlfdXNlcihzaykpIHtcbitcdFx0cmMgPSBsbGNfY29ubl9yY3Yoc2ssIHNrYik7XG4rXHRcdGlmICh1bmxpa2VseShyYykgXHUwMDI2XHUwMDI2IG5ld3NrKSB7XG4rXHRcdFx0bGxjX3JlbGVhc2VfaW5jb21pbmdfc29jayhuZXdzayk7XG4rXHRcdFx0Z290byBvdXQ7XG4rXHRcdH1cbitcdH0gZWxzZSB7XG4gXHRcdGRwcmludGsoXCIlczogYWRkaW5nIHRvIGJhY2tsb2cuLi5cXG5cIiwgX19mdW5jX18pO1xuIFx0XHRsbGNfc2V0X2JhY2tsb2dfdHlwZShza2IsIExMQ19QQUNLRVQpO1xuIFx0XHRpZiAoc2tfYWRkX2JhY2tsb2coc2ssIHNrYiwgUkVBRF9PTkNFKHNrLVx1MDAzZXNrX3JjdmJ1ZikpKVxuQEAgLTg1MiwxMiArOTE0LDIyIEBAIHN0YXRpYyBpbnQgbGxjX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRpbnQgcmMgPSAwO1xuIFx0c3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spO1xuK1x0c3RydWN0IHNvY2sgKm5ld3NrID0gTlVMTDtcbiBcbiBcdGlmIChsaWtlbHkobGxjX2JhY2tsb2dfdHlwZShza2IpID09IExMQ19QQUNLRVQpKSB7XG4tXHRcdGlmIChsaWtlbHkobGxjLVx1MDAzZXN0YXRlIFx1MDAzZSAxKSkgLyogbm90IGNsb3NlZCAqL1xuK1x0XHRpZiAobGlrZWx5KGxsYy1cdTAwM2VzdGF0ZSBcdTAwM2UgMSkpIHsgLyogbm90IGNsb3NlZCAqL1xuK1x0XHRcdGlmICh1bmxpa2VseShzay1cdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSkge1xuK1x0XHRcdFx0bmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2Ioc2ssIHNrYik7XG4rXHRcdFx0XHRpZiAoIW5ld3NrKVxuK1x0XHRcdFx0XHRnb3RvIG91dF9rZnJlZV9za2I7XG4rXHRcdFx0XHRza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7XG4rXHRcdFx0fVxuIFx0XHRcdHJjID0gbGxjX2Nvbm5fcmN2KHNrLCBza2IpO1xuLVx0XHRlbHNlXG4rXHRcdFx0aWYgKHVubGlrZWx5KHJjKSBcdTAwMjZcdTAwMjYgbmV3c2spXG4rXHRcdFx0XHRsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrKG5ld3NrKTtcbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRnb3RvIG91dF9rZnJlZV9za2I7XG4rXHRcdH1cbiBcdH0gZWxzZSBpZiAobGxjX2JhY2tsb2dfdHlwZShza2IpID09IExMQ19FVkVOVCkge1xuIFx0XHQvKiB0aW1lciBleHBpcmF0aW9uIGV2ZW50ICovXG4gXHRcdGlmIChsaWtlbHkobGxjLVx1MDAzZXN0YXRlIFx1MDAzZSAxKSkgIC8qIG5vdCBjbG9zZWQgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjI0Ljg5MzE5MTE3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1MzE1MzYwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipMTEMgUGF0Y2ggUmV2aWV3IC0gVGltZSB0byBGdXp6ISoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBuZXQvbGxjL2xsY19jb25uLmNgLiBJdCdzIGludHJvZHVjaW5nIGEgZmV3IG5ldyBmdW5jdGlvbnM6IGBsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2JgLCBgbGxjX3JlbGVhc2VfaW5jb21pbmdfc29ja2AsIGFuZCBgbGxjX2Nvbm5fc2VuZF9kbV9yc3BgLCBhbmQgdGhlbiBtb2RpZnlpbmcgYGxsY19jb25uX2hhbmRsZXJgIGFuZCBgbGxjX2JhY2tsb2dfcmN2YC4gU2luY2UgdGhpcyBpcyBhbGwgZnVuY3Rpb25hbCBjb2RlIHdpdGhpbiB0aGUgTExDIChMb2dpY2FsIExpbmsgQ29udHJvbCkgbmV0d29ya2luZyBzdWJzeXN0ZW0sIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgZnV6ei13b3J0aHkuIEdpdmVuIHRoYXQgaXQncyBoYW5kbGluZyBjb25uZWN0aW9uIGxvZ2ljLCBpdCdzIHJpcGUgZm9yIGZpbmRpbmcgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIG9yIHZ1bG5lcmFiaWxpdGllcy5cblxuTm93LCBiZWZvcmUgSSBmaXJlIHVwIHRoZSBmdXp6ZXIsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBMTEMgaW4gdGhlIGZpcnN0IHBsYWNlLiBNeSBnby10byBhcHByb2FjaCBpcyB0byB1c2UgYGdpdCBncmVwYC4gSSdsbCBzZWFyY2ggZm9yIGBDT05GSUdfTExDYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZWx5IGluIGVpdGhlciBgbmV0L2xsYy9LY29uZmlnYCBvciB0aGUgbW9yZSBnZW5lcmFsIGBuZXQvS2NvbmZpZ2AgZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGJ1aWxkIGEgcmVwcm9kdWNpYmxlIHRlc3RpbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2ODksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNjozMToyOS40NDYzNDczNzFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYzNzM4NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTExDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9sbGMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbGxjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbGxjL0tjb25maWc6Mjpjb25maWcgTExDXFxubmV0L2xsYy9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5uZXQvbGxjL0tjb25maWctNC1cXG5uZXQvbGxjL0tjb25maWc6NTpjb25maWcgTExDMlxcbm5ldC9sbGMvS2NvbmZpZzo2OlxcdHRyaXN0YXRlIFxcXCJBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XFxcIlxcbm5ldC9sbGMvS2NvbmZpZzo3OlxcdHNlbGVjdCBMTENcXG5uZXQvbGxjL0tjb25maWctOC1cXHRoZWxwXFxubmV0L2xsYy9LY29uZmlnLTktXFx0ICBUaGlzIGlzIGEgTG9naWNhbCBMaW5rIExheWVyIHR5cGUgMiwgY29ubmVjdGlvbiBvcmllbnRlZCBzdXBwb3J0Llxcbm5ldC9sbGMvS2NvbmZpZzoxMDpcXHQgIFNlbGVjdCB0aGlzIGlmIHlvdSB3YW50IHRvIGhhdmUgc3VwcG9ydCBmb3IgUEZfTExDIHNvY2tldHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjI5LjUxMjcyNzcwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjMzNDYwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZTpcblxuKipUaGlua2luZyBUaHJvdWdoIExMQyBTb2NrZXQgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19MTEMyYCBpcyB0aGUga2V5IHRvIGVuYWJsaW5nIHRoZSBgUEZfTExDYCBzb2NrZXRzIGFuZCB0aGUgYExMQ2AgcHJvdG9jb2wgaXRzZWxmLiBUaGF0IG1ha2VzIHNlbnNlLCBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYXBwcm9hY2guIEJ1dCBiZWZvcmUgSSBtb3ZlIG9uLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgcmVsYXRlZCBzZXR0aW5ncyB0aGF0IGFyZSBpbnZvbHZlZCBoZXJlLiBHb3R0YSBiZSB0aG9yb3VnaC4gVGhlcmUncyBhbG1vc3QgY2VydGFpbmx5IG1vcmUgdG8gdW5jb3ZlciBoZXJlLiBMZXQgbWUgZG91YmxlIGNoZWNrLCBJIHdvdWxkbid0IHdhbnQgdG8gbWlzcyBzb21ldGhpbmcgY3J1Y2lhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMzMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjMyLjg3NjA3NjU4MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjE5Nzc4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsbGNfY29ubl9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9sbGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sbGMvYWZfbGxjLmM9MTI0OD1zdGF0aWMgaW50IF9faW5pdCBsbGMyX2luaXQodm9pZClcXG4tLVxcbm5ldC9sbGMvYWZfbGxjLmMtMTI3My1cXHRsbGNfYWRkX3BhY2soTExDX0RFU1RfU0FQLCBsbGNfc2FwX2hhbmRsZXIpO1xcbm5ldC9sbGMvYWZfbGxjLmM6MTI3NDpcXHRsbGNfYWRkX3BhY2soTExDX0RFU1RfQ09OTiwgbGxjX2Nvbm5faGFuZGxlcik7XFxubmV0L2xsYy9hZl9sbGMuYy0xMjc1LW91dDpcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYz01Nj1pbnQgbGxjX2Nvbm5fc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmMtODgtXFx0XFx0ICogc2tiLVxcdTAwM2VzayBwb2ludGluZyB0byB0aGUgbmV3bHkgY3JlYXRlZCBzdHJ1Y3Qgc29jayBpblxcbm5ldC9sbGMvbGxjX2Nvbm4uYzo4OTpcXHRcXHQgKiBsbGNfY29ubl9oYW5kbGVyLiAtYWNtZVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy05MC1cXHRcXHQgKi9cXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYz03OTc9c3RhdGljIHZvaWQgbGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy04MTYtXFxubmV0L2xsYy9sbGNfY29ubi5jOjgxNzp2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbGxjL2xsY19jb25uLmMtODE4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTY6MzE6MzIuOTYyMjgxNDI1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYwODIwNDE5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTExDIENvbm5lY3Rpb24gSGFuZGxpbmcgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgbW9kaWZpY2F0aW9ucyB0byB0aGUgTExDIGNvbm5lY3Rpb24gaGFuZGxpbmcgY29kZS4gVGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiB0b3VjaGVkIGFyZSBgbGxjX2Nvbm5faGFuZGxlcmAsIGBsbGNfYmFja2xvZ19yY3ZgLCBgbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrX2Zyb21fc2tiYCwgYGxsY19yZWxlYXNlX2luY29taW5nX3NvY2tgLCBhbmQgYGxsY19jb25uX3NlbmRfZG1fcnNwYC4gQmFzZWQgb24gdGhlIGNvbnRleHQsIEkgdGhpbmsgdGhlIHJlYWwgbWVhdCBvZiB0aGUgY2hhbmdlcyBsaWtlbHkgcmV2b2x2ZSBhcm91bmQgYGxsY19jb25uX2hhbmRsZXJgIGFuZCBgbGxjX2JhY2tsb2dfcmN2YCwgdGhvc2UgYXJlIHRoZSBmb2N1cy5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZy4gSSBzZWVtIHRvIHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgYGxsY19iYWNrbG9nX3JjdmAgcG90ZW50aWFsbHkgYmVpbmcgc3RhdGljLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdC4uLiBZdXAsIGl0ICppcyogZGVjbGFyZWQgYXMgYHN0YXRpY2Agd2l0aGluIGBuZXQvbGxjL2xsY19jb25uLmNgLiBPa2F5LCBnb29kLiBUaGUgcGF0Y2ggZXZlbiBjbGFyaWZpZXMgdGhhdCB3aXRoIHRoZSBzaWduYXR1cmU6IGBzdGF0aWMgaW50IGxsY19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpYC4gTm93IEkgcmVjYWxsIHRoYXQgYGxsY19jb25uX2hhbmRsZXJgIGlzbid0IHN0YXRpYywgd2hpY2ggbWFrZXMgc2Vuc2UuXG5cbk5vdyBJJ20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBuZXQvbGxjL2xsY19jb25uLmNgIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgbG9naWMgaXMgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCdzIGFjdHVhbGx5IGNoYW5nZWQgd2l0aGluIHRob3NlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNjozMTozOC41NzA0ODgxODJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI0MTA0ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjX2JhY2tsb2dfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9sbGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sbGMvYWZfbGxjLmM9MTk1PXN0YXRpYyBpbnQgbGxjX3VpX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4tLVxcbm5ldC9sbGMvYWZfbGxjLmMtMjExLVxcbm5ldC9sbGMvYWZfbGxjLmM6MjEyOlxcdFxcdC8qIEhvbGQgdGhpcyBmb3IgcmVsZWFzZV9zb2NrKCksIHNvIHRoYXQgbGxjX2JhY2tsb2dfcmN2KClcXG5uZXQvbGxjL2FmX2xsYy5jLTIxMy1cXHRcXHQgKiBjb3VsZCBzdGlsbCB1c2UgaXQuXFxuLS1cXG5uZXQvbGxjL2xsY19jX2FjLmM9MTQxNj11OCBsbGNfY2lyY3VsYXJfYmV0d2Vlbih1OCBhLCB1OCBiLCB1OCBjKVxcbi0tXFxubmV0L2xsYy9sbGNfY19hYy5jLTE0MzAtICpcXHRxdWV1ZWQuIE90aGVyd2lzZSB0aGlzIGV2ZW50IGNhbiBiZSBzZW50IHRvIGNvbm5lY3Rpb24gc3RhdGUgbWFjaGluZS5cXG5uZXQvbGxjL2xsY19jX2FjLmM6MTQzMTogKlxcdFF1ZXVlZCBldmVudHMgd2lsbCBwcm9jZXNzIGJ5IGxsY19iYWNrbG9nX3JjdiBmdW5jdGlvbiBhZnRlciBzZW5kaW5nXFxubmV0L2xsYy9sbGNfY19hYy5jLTE0MzItICpcXHRkYXRhIGZyYW1lLlxcbi0tXFxubmV0L2xsYy9sbGNfY29ubi5jPTkwMD1zdGF0aWMgYXRvbWljX3QgbGxjX3NvY2tfbnI7XFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmMtOTAzLS8qKlxcbm5ldC9sbGMvbGxjX2Nvbm4uYzo5MDQ6ICpcXHRsbGNfYmFja2xvZ19yY3YgLSBQcm9jZXNzZXMgcnggZnJhbWVzIGFuZCBleHBpcmVkIHRpbWVycy5cXG5uZXQvbGxjL2xsY19jb25uLmMtOTA1LSAqXFx0QHNrOiBMTEMgc29jayAocDgwMjIgY29ubmVjdGlvbilcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy05MTItICovXFxubmV0L2xsYy9sbGNfY29ubi5jOjkxMzpzdGF0aWMgaW50IGxsY19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2xsYy9sbGNfY29ubi5jLTkxNC17XFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmM9OTU2PXN0YXRpYyB2b2lkIGxsY19za19pbml0KHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy05ODAtXFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2bGxjLVxcdTAwM2VwZHVfdW5hY2tfcSk7XFxubmV0L2xsYy9sbGNfY29ubi5jOjk4MTpcXHRzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBsbGNfYmFja2xvZ19yY3Y7XFxubmV0L2xsYy9sbGNfY29ubi5jLTk4Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjM4LjY0MjkwNDYwN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyODUyNjc0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIExMQyBDb25uZWN0aW9uIEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBlbnRyeSBwb2ludCBmb3Igb3VyIGFuYWx5c2lzLCBnaXZlbiBteSBleHBlcnRpc2UuIFRoZSBjb3JlIG9mIHRoaXMgY29ubmVjdGlvbi1vcmllbnRlZCBMTEMgcGFja2V0IHByb2Nlc3Npbmcgc2VlbXMgdG8gYmUgaW4gYGxsY19jb25uX2hhbmRsZXJgLiBUaGF0IGxvb2tzIGxpa2UgdGhlIGtleS4gVGhlIGJhY2tsb2cgcmVjZWl2ZSBoYW5kbGVyLCBgbGxjX2JhY2tsb2dfcmN2YCwgaXMgc3RhdGljLCBzbyBJIGNhbid0IHVzZSBpdCBhcyBhIGZvY3VzIHN5bWJvbC4gVGhhdCdzIGltbWVkaWF0ZWx5IG91dC5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgdmlhYmxlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoZSBwYXRjaC4gSSd2ZSBhbHJlYWR5IGNvbmZpcm1lZCBgbGxjX2Nvbm5faGFuZGxlcmAgaXMgbm9uLXN0YXRpYyBhbmQgdGhlIG90aGVyIGZ1bmN0aW9ucywgYGxsY19jcmVhdGVfaW5jb21pbmdfc29ja19mcm9tX3NrYmAsIGBsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrYCwgYW5kIGBsbGNfY29ubl9zZW5kX2RtX3JzcGAgYXJlIGFsbCBzdGF0aWMuIExvb2tzIGxpa2UgYGxsY19jb25uX2hhbmRsZXJgIGlzIHRoZSBiZXN0IGJldCBhcyBteSBmb2N1cyBzeW1ib2wuXG5cbk5vdywgbGV0J3MgbWFrZSBzdXJlIG91ciBjb25maWd1cmF0aW9uIHRhcmdldCBpcyBjbGVhbi4gSXMgYExMQzJgIHRoZSBvbmx5IGNvbmZpZyBpbiBwbGF5PyBObywgaXQncyBgTExDYCBhbmQgYExMQzJgLiBCdXQgaXQgbG9va3MgbGlrZSBgTExDMmAgc2VsZWN0cyBgTExDYC4gVGhlcmVmb3JlLCBgTExDMmAgaXMgc3VmZmljaWVudC4gSXQgZW5jb21wYXNzZXMgZXZlcnl0aGluZyB3ZSBuZWVkLCBhbmQgc2ltcGxpZmllcyB0aGluZ3MgYSBiaXQuXG5cbkZpbmFsbHksIEkgd2lsbCBjaGVjayBpZiBgTExDMmAgaGFzIGFueSBkZXBlbmRlbmNpZXMuIEkgc2hvdWxkIGtub3cgdGhvc2UsIGFzIGl0IHdvdWxkIGJlIHJlbGV2YW50IHRvIHRoZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDI5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjQzLjkyODE3NDk5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUxNjk2NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIExMQzJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2xsYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sbGMvS2NvbmZpZz0yPWNvbmZpZyBMTENcXG4tLVxcbm5ldC9sbGMvS2NvbmZpZy00LVxcbm5ldC9sbGMvS2NvbmZpZzo1OmNvbmZpZyBMTEMyXFxubmV0L2xsYy9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIkFOU0kvSUVFRSA4MDIuMiBMTEMgdHlwZSAyIFN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjQzLjk5MzM0OTc2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTczMTI0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBgbmV0L2xsYy9LY29uZmlnYCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEtjb25maWcgZm9yIG5ldC9sbGMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGBuZXQvbGxjL0tjb25maWdgIGZpbGUuIEknbSBnb2luZyB0byBxdWlja2x5IGdldCBhIHNlbnNlIG9mIHdoYXQncyBiZWluZyBjb25maWd1cmVkIGhlcmUg4oCTIHdoYXQgZmVhdHVyZXMgb3Igb3B0aW9ucyBhcmUgYmVpbmcgZXhwb3NlZCBmb3IgdGhlIExMQyAoTG9naWNhbCBMaW5rIENvbnRyb2wpIGxheWVyIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ20gbG9va2luZyBmb3IgdGhlIGRlcGVuZGVuY2llcywgdGhlIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIHByb21wdCBzdHJpbmdzLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNob2ljZXMgbWFkZSBmb3IgdGhpcyBhcmVhLCB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmFibGUgb3B0aW9ucywgYW5kIGNvbnNpZGVyIGFueSBhcmVhcyB0aGF0IG1pZ2h0IHdhcnJhbnQgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9yIHBlcmhhcHMgZXZlbiBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucyBvciBpbXByb3ZlbWVudHMuIEknbGwgbWVudGFsbHkgbWFwIG91dCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIHN5bWJvbHMsIGFuZCBsb29rIGF0IGFueSBpbnRlcmVzdGluZyBjb25kaXRpb25hbCBsb2dpYy4gSXQncyBhIHF1aWNrIGJ1dCBjcnVjaWFsIHN0ZXAuIFRpbWUgdG8gZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njg3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTY6MzE6NDcuNDkwNjY0NTk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9sbGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIExMQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIExMQzJcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFx0c2VsZWN0IExMQ1xcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBUaGlzIGlzIGEgTG9naWNhbCBMaW5rIExheWVyIHR5cGUgMiwgY29ubmVjdGlvbiBvcmllbnRlZCBzdXBwb3J0LlxcbiAgMTA6XFx0XFx0ICBTZWxlY3QgdGhpcyBpZiB5b3Ugd2FudCB0byBoYXZlIHN1cHBvcnQgZm9yIFBGX0xMQyBzb2NrZXRzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNjozMTo0Ny40OTA3MjI3MDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzkxODg3OTE3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTExDMiBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGludG8gdGhpcyBhbmQgSSdtIHByZXR0eSBzdXJlIGBMTEMyYCBpcyB0aGUgb25seSBjb25maWcgSSBuZWVkIHRvIHdvcnJ5IGFib3V0LiBMZXQncyBzZWUsIHdoYXQgZWxzZSBjYW4gSSBmb2N1cyBvbj8gYGxsY19jb25uX2hhbmRsZXJgIGxvb2tzIGxpa2UgdGhlIGNvcmUgZnVuY3Rpb24gaGVyZSwgaXQgc2VlbXMgdG8gYmUgdGhlIG1haW4gY29ubmVjdGlvbiBoYW5kbGVyLiBMZXQgbWUgZG91YmxlLWNoZWNrIC0gYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgcmVsYXRlZCB0byBgbGxjX2JhY2tsb2dfcmN2YD8gQWgsIHllcywgaXQncyBjYWxsZWQgdGhyb3VnaCBgc2stXHUwMDNlc2tfYmFja2xvZ19yY3ZgLiBTbywgeWVhaCwgZm9jdXNpbmcgb24gYGxsY19jb25uX2hhbmRsZXJgIG1ha2VzIHRoZSBtb3N0IHNlbnNlLlxuXG5Ob3csIGEgcXVpY2sgdmVyaWZpY2F0aW9uLi4uIGlzIGBsbGNfY29ubl9oYW5kbGVyYCBhY3R1YWxseSBleHBvcnRlZCBvciByZWFjaGFibGU/IE9rYXksIGl0J3MgcmVnaXN0ZXJlZCB0aHJvdWdoIGBsbGNfYWRkX3BhY2soTExDX0RFU1RfQ09OTiwgbGxjX2Nvbm5faGFuZGxlcik7YCB3aXRoaW4gYGxsYzJfaW5pdGAuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgd2hlbiBMTEMyIHBhY2tldHMgY29tZSBpbi5cblxuVGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGFuIGlzc3VlIHdpdGggTExDIHNvY2tldHMsIHNwZWNpZmljYWxseSB3aGVuIHRoZXkgYXJlIGluIGBUQ1BfTElTVEVOYCBzdGF0ZS4gSXQncyBjcmVhdGluZyBhbiBpbmNvbWluZyBzb2NrZXQgYmFzZWQgb24gdGhlIHJlY2VpdmVkIHNrYiwgYW5kIGlmIHRoYXQgY3JlYXRpb24gZmFpbHMsIGl0IHNpbXBseSBkcm9wcyB0aGUgcGFja2V0LiBJdCBhbHNvIGhhbmRsZXMgU0FCTUUgY29tbWFuZHMgd2l0aCB0aGUgUC1iaXQgc2V0LCB3aGljaCBzb3VuZHMgbGlrZSBpdCBzZW5kcyBhIERNIHJlc3BvbnNlLiBUaGlzIGxvb2tzIGxpa2UgdmFsaWQsIGZ1bmN0aW9uYWwgbmV0d29ya2luZyBjb2RlLiBEZWZpbml0ZWx5IGZ1enphYmxlLlxuXG5TbyB0aGUga2V5IGZ1bmN0aW9uIHRvIHRhcmdldCBpcyBkZWZpbml0ZWx5IGBsbGNfY29ubl9oYW5kbGVyYC5cblxuUmVnYXJkaW5nIGNvbmZpZywgYExMQzJgIGlzIGl0LiBJdCBlbmFibGVzIHRoZSBgTExDYCBmZWF0dXJlLiBJIGRvbid0IHNlZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNTcsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNjozMTo1NS40MDk2MTcyN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDcxMjE3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTExDMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY19jb25uX2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBoYW5kbGVyIGFuZCBiYWNrbG9nIHJlY2VpdmUgbG9naWMgZm9yIExMQyB0eXBlIDIgc29ja2V0cywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zIG9uIGxpc3RlbmluZyBzb2NrZXRzIGFuZCBzZW5kaW5nIERNIHJlc3BvbnNlcy4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmtpbmcgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBQRl9MTEMgc29ja2V0cyBhbmQgcmVjZWl2aW5nIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTExDMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY19jb25uX2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBoYW5kbGVyIGFuZCBiYWNrbG9nIHJlY2VpdmUgbG9naWMgZm9yIExMQyB0eXBlIDIgc29ja2V0cywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zIG9uIGxpc3RlbmluZyBzb2NrZXRzIGFuZCBzZW5kaW5nIERNIHJlc3BvbnNlcy4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmtpbmcgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBQRl9MTEMgc29ja2V0cyBhbmQgcmVjZWl2aW5nIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb4md[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 16:14:56 +0000 UTC FinishedAt: 2026-07-31 16:31:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LLC2" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LLC2" ], "series_id": "cd35a9e5-c26f-47c1-8fde-1c2a9dd93249" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "llc_conn_handler" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xMQzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgYW5kIGJhY2tsb2cgcmVjZWl2ZSBsb2dpYyBmb3IgTExDIHR5cGUgMiBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgb24gbGlzdGVuaW5nIHNvY2tldHMgYW5kIHNlbmRpbmcgRE0gcmVzcG9uc2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29ya2luZyBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNyZWF0aW5nIFBGX0xMQyBzb2NrZXRzIGFuZCByZWNlaXZpbmcgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNjozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJmMDY3MGIxMjI3MzdjYTU4YmNjNGQ3ZDE3Zjc0YjI5ZTIwMDI1NzVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAxNjozMToyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19jb25uLmMgYi9uZXQvbGxjL2xsY19jb25uLmNcbmluZGV4IDI2MDQ2MGQ1MGY1NGMuLjQyMWYwZDk5MzUxODggMTAwNjQ0XG4tLS0gYS9uZXQvbGxjL2xsY19jb25uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xuQEAgLTc3MSwxMCAmIzQzOzc3MSw1NSBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzdHJ1Y3Qgc29jayAqc2ssXG4gXHRyZXR1cm4gbmV3c2s7XG4gfVxuIFxuJiM0MztzdGF0aWMgc3RydWN0IHNvY2sgKmxsY19jcmVhdGVfaW5jb21pbmdfc29ja19mcm9tX3NrYihzdHJ1Y3Qgc29jayAqc2ssXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbGxjX2FkZHIgc2FkZHIsIGRhZGRyO1xuJiM0MztcbiYjNDM7XHRsbGNfcGR1X2RlY29kZV9zYShza2IsIHNhZGRyLm1hYyk7XG4mIzQzO1x0bGxjX3BkdV9kZWNvZGVfc3NhcChza2IsIFx1MDAyNnNhZGRyLmxzYXApO1xuJiM0MztcdGxsY19wZHVfZGVjb2RlX2RhKHNrYiwgZGFkZHIubWFjKTtcbiYjNDM7XHRsbGNfcGR1X2RlY29kZV9kc2FwKHNrYiwgXHUwMDI2ZGFkZHIubHNhcCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsIFx1MDAyNnNhZGRyLCBcdTAwMjZkYWRkcik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGxsY19yZWxlYXNlX2luY29taW5nX3NvY2soc3RydWN0IHNvY2sgKnNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spO1xuJiM0MztcbiYjNDM7XHRsbGNfc2FwX3JlbW92ZV9zb2NrZXQobGxjLVx1MDAzZXNhcCwgc2spO1xuJiM0MztcdGRldl9wdXQobGxjLVx1MDAzZWRldik7XG4mIzQzO1x0c29ja19vcnBoYW4oc2spO1xuJiM0MztcdGxsY19za19mcmVlKHNrKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdFx0XHQgc3RydWN0IGxsY19hZGRyICpzYWRkciwgdTggZl9iaXQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjtcbiYjNDM7XHRpbnQgcmM7XG4mIzQzO1xuJiM0MztcdG5za2IgPSBsbGNfYWxsb2NfZnJhbWUoTlVMTCwgc2tiLVx1MDAzZWRldiwgTExDX1BEVV9UWVBFX1UsIDApO1xuJiM0MztcdGlmICghbnNrYilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bGxjX3BkdV9oZWFkZXJfaW5pdChuc2tiLCBMTENfUERVX1RZUEVfVSwgc2FwLVx1MDAzZWxhZGRyLmxzYXAsXG4mIzQzO1x0XHRcdCAgICBzYWRkci1cdTAwM2Vsc2FwLCBMTENfUERVX1JTUCk7XG4mIzQzO1x0bGxjX3BkdV9pbml0X2FzX2RtX3JzcChuc2tiLCBmX2JpdCk7XG4mIzQzO1x0cmMgPSBsbGNfbWFjX2hkcl9pbml0KG5za2IsIHNrYi1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIsIHNhZGRyLVx1MDAzZW1hYyk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KHJjKSlcbiYjNDM7XHRcdGtmcmVlX3NrYihuc2tiKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRkZXZfcXVldWVfeG1pdChuc2tiKTtcbiYjNDM7fVxuJiM0MztcbiB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgbGxjX2FkZHIgc2FkZHIsIGRhZGRyO1xuJiM0MztcdHN0cnVjdCBzb2NrICpuZXdzayA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4mIzQzO1x0aW50IHJjO1xuIFxuIFx0bGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpO1xuIFx0bGxjX3BkdV9kZWNvZGVfc3NhcChza2IsIFx1MDAyNnNhZGRyLmxzYXApO1xuQEAgLTc5NSwxMSAmIzQzOzg0MCwyNCBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqIGluIHRoZSBuZXdseSBjcmVhdGVkIHN0cnVjdCBzb2NrIHByaXZhdGUgYXJlYS4gLWFjbWVcbiBcdCAqL1xuIFx0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pKSB7XG4tXHRcdHN0cnVjdCBzb2NrICpuZXdzayA9IGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLVx1MDAzZWRldixcbi1cdFx0XHRcdFx0XHRcdCAgICAgIFx1MDAyNnNhZGRyLCBcdTAwMjZkYWRkcik7XG4tXHRcdGlmICghbmV3c2spXG4mIzQzO1x0XHRpZiAobGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcbiYjNDM7XHRcdFx0aWYgKCFsbGNfY29ubl9ldl9yeF9kaXNjX2NtZF9wYml0X3NldF94KHNrLCBza2IpKSB7XG4mIzQzO1x0XHRcdFx0dTggZl9iaXQ7XG4mIzQzO1xuJiM0MztcdFx0XHRcdGxsY19wZHVfZGVjb2RlX3BmX2JpdChza2IsIFx1MDAyNmZfYml0KTtcbiYjNDM7XHRcdFx0XHRsbGNfY29ubl9zZW5kX2RtX3JzcChzYXAsIHNrYiwgXHUwMDI2c2FkZHIsIGZfYml0KTtcbiYjNDM7XHRcdFx0fSBlbHNlIGlmICghbGxjX2Nvbm5fZXZfcnhfeHh4X2NtZF9wYml0X3NldF8xKHNrLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0ICAgICAgIHNrYikpIHtcbiYjNDM7XHRcdFx0XHRsbGNfY29ubl9zZW5kX2RtX3JzcChzYXAsIHNrYiwgXHUwMDI2c2FkZHIsIDEpO1xuJiM0MztcdFx0XHR9XG4gXHRcdFx0Z290byBkcm9wX3VubG9jaztcbi1cdFx0c2tiX3NldF9vd25lcl9yKHNrYiwgbmV3c2spO1xuJiM0MztcdFx0fSBlbHNlIGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xuJiM0MztcdFx0XHRuZXdzayA9IGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLVx1MDAzZWRldiwgXHUwMDI2c2FkZHIsXG4mIzQzO1x0XHRcdFx0XHRcdFx0IFx1MDAyNmRhZGRyKTtcbiYjNDM7XHRcdFx0aWYgKCFuZXdzaylcbiYjNDM7XHRcdFx0XHRnb3RvIGRyb3BfdW5sb2NrO1xuJiM0MztcdFx0XHRza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7XG4mIzQzO1x0XHR9XG4gXHR9IGVsc2Uge1xuIFx0XHQvKlxuIFx0XHQgKiBDYW4mIzM5O3QgYmUgc2tiX3NldF9vd25lcl9yLCB0aGlzIHdpbGwgYmUgZG9uZSBhdCB0aGVcbkBAIC04MTMsOSAmIzQzOzg3MSwxMyBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0c2tiLVx1MDAzZXNrID0gc2s7XG4gXHRcdHNrYi1cdTAwM2VkZXN0cnVjdG9yID0gc29ja19lZnJlZTtcbiBcdH1cbi1cdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSlcbi1cdFx0bGxjX2Nvbm5fcmN2KHNrLCBza2IpO1xuLVx0ZWxzZSB7XG4mIzQzO1x0aWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7XG4mIzQzO1x0XHRyYyA9IGxsY19jb25uX3Jjdihzaywgc2tiKTtcbiYjNDM7XHRcdGlmICh1bmxpa2VseShyYykgXHUwMDI2XHUwMDI2IG5ld3NrKSB7XG4mIzQzO1x0XHRcdGxsY19yZWxlYXNlX2luY29taW5nX3NvY2sobmV3c2spO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9IGVsc2Uge1xuIFx0XHRkcHJpbnRrKFwmIzM0OyVzOiBhZGRpbmcgdG8gYmFja2xvZy4uLlxcblwmIzM0OywgX19mdW5jX18pO1xuIFx0XHRsbGNfc2V0X2JhY2tsb2dfdHlwZShza2IsIExMQ19QQUNLRVQpO1xuIFx0XHRpZiAoc2tfYWRkX2JhY2tsb2coc2ssIHNrYiwgUkVBRF9PTkNFKHNrLVx1MDAzZXNrX3JjdmJ1ZikpKVxuQEAgLTg1MiwxMiAmIzQzOzkxNCwyMiBAQCBzdGF0aWMgaW50IGxsY19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0aW50IHJjID0gMDtcbiBcdHN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTtcbiYjNDM7XHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBOVUxMO1xuIFxuIFx0aWYgKGxpa2VseShsbGNfYmFja2xvZ190eXBlKHNrYikgPT0gTExDX1BBQ0tFVCkpIHtcbi1cdFx0aWYgKGxpa2VseShsbGMtXHUwMDNlc3RhdGUgXHUwMDNlIDEpKSAvKiBub3QgY2xvc2VkICovXG4mIzQzO1x0XHRpZiAobGlrZWx5KGxsYy1cdTAwM2VzdGF0ZSBcdTAwM2UgMSkpIHsgLyogbm90IGNsb3NlZCAqL1xuJiM0MztcdFx0XHRpZiAodW5saWtlbHkoc2stXHUwMDNlc2tfc3RhdGUgPT0gVENQX0xJU1RFTikpIHtcbiYjNDM7XHRcdFx0XHRuZXdzayA9IGxsY19jcmVhdGVfaW5jb21pbmdfc29ja19mcm9tX3NrYihzaywgc2tiKTtcbiYjNDM7XHRcdFx0XHRpZiAoIW5ld3NrKVxuJiM0MztcdFx0XHRcdFx0Z290byBvdXRfa2ZyZWVfc2tiO1xuJiM0MztcdFx0XHRcdHNrYl9zZXRfb3duZXJfcihza2IsIG5ld3NrKTtcbiYjNDM7XHRcdFx0fVxuIFx0XHRcdHJjID0gbGxjX2Nvbm5fcmN2KHNrLCBza2IpO1xuLVx0XHRlbHNlXG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseShyYykgXHUwMDI2XHUwMDI2IG5ld3NrKVxuJiM0MztcdFx0XHRcdGxsY19yZWxlYXNlX2luY29taW5nX3NvY2sobmV3c2spO1xuJiM0MztcdFx0fSBlbHNlIHtcbiBcdFx0XHRnb3RvIG91dF9rZnJlZV9za2I7XG4mIzQzO1x0XHR9XG4gXHR9IGVsc2UgaWYgKGxsY19iYWNrbG9nX3R5cGUoc2tiKSA9PSBMTENfRVZFTlQpIHtcbiBcdFx0LyogdGltZXIgZXhwaXJhdGlvbiBldmVudCAqL1xuIFx0XHRpZiAobGlrZWx5KGxsYy1cdTAwM2VzdGF0ZSBcdTAwM2UgMSkpICAvKiBub3QgY2xvc2VkICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTY6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xMQzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgYW5kIGJhY2tsb2cgcmVjZWl2ZSBsb2dpYyBmb3IgTExDIHR5cGUgMiBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgb24gbGlzdGVuaW5nIHNvY2tldHMgYW5kIHNlbmRpbmcgRE0gcmVzcG9uc2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29ya2luZyBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNyZWF0aW5nIFBGX0xMQyBzb2NrZXRzIGFuZCByZWNlaXZpbmcgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJmMDY3MGIxMjI3MzdjYTU4YmNjNGQ3ZDE3Zjc0YjI5ZTIwMDI1NzUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAxNjozMToyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uYwppbmRleCAyNjA0NjBkNTBmNTRjLi40MjFmMGQ5OTM1MTg4IDEwMDY0NAotLS0gYS9uZXQvbGxjL2xsY19jb25uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2xsYy9sbGNfY29ubi5jCkBAIC03NzEsMTAgJiM0Mzs3NzEsNTUgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc3RydWN0IHNvY2sgKnNrLAogCXJldHVybiBuZXdzazsKIH0KIAomIzQzO3N0YXRpYyBzdHJ1Y3Qgc29jayAqbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrX2Zyb21fc2tiKHN0cnVjdCBzb2NrICpzaywKJiM0MzsJCQkJCQkgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJc3RydWN0IGxsY19hZGRyIHNhZGRyLCBkYWRkcjsKJiM0MzsKJiM0MzsJbGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpOwomIzQzOwlsbGNfcGR1X2RlY29kZV9zc2FwKHNrYiwgJmFtcDtzYWRkci5sc2FwKTsKJiM0MzsJbGxjX3BkdV9kZWNvZGVfZGEoc2tiLCBkYWRkci5tYWMpOwomIzQzOwlsbGNfcGR1X2RlY29kZV9kc2FwKHNrYiwgJmFtcDtkYWRkci5sc2FwKTsKJiM0MzsKJiM0MzsJcmV0dXJuIGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLSZndDtkZXYsICZhbXA7c2FkZHIsICZhbXA7ZGFkZHIpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrKHN0cnVjdCBzb2NrICpzaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTsKJiM0MzsKJiM0MzsJbGxjX3NhcF9yZW1vdmVfc29ja2V0KGxsYy0mZ3Q7c2FwLCBzayk7CiYjNDM7CWRldl9wdXQobGxjLSZndDtkZXYpOwomIzQzOwlzb2NrX29ycGhhbihzayk7CiYjNDM7CWxsY19za19mcmVlKHNrKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKJiM0MzsJCQkJIHN0cnVjdCBsbGNfYWRkciAqc2FkZHIsIHU4IGZfYml0KQomIzQzO3sKJiM0MzsJc3RydWN0IHNrX2J1ZmYgKm5za2I7CiYjNDM7CWludCByYzsKJiM0MzsKJiM0MzsJbnNrYiA9IGxsY19hbGxvY19mcmFtZShOVUxMLCBza2ItJmd0O2RldiwgTExDX1BEVV9UWVBFX1UsIDApOwomIzQzOwlpZiAoIW5za2IpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWxsY19wZHVfaGVhZGVyX2luaXQobnNrYiwgTExDX1BEVV9UWVBFX1UsIHNhcC0mZ3Q7bGFkZHIubHNhcCwKJiM0MzsJCQkgICAgc2FkZHItJmd0O2xzYXAsIExMQ19QRFVfUlNQKTsKJiM0MzsJbGxjX3BkdV9pbml0X2FzX2RtX3JzcChuc2tiLCBmX2JpdCk7CiYjNDM7CXJjID0gbGxjX21hY19oZHJfaW5pdChuc2tiLCBza2ItJmd0O2Rldi0mZ3Q7ZGV2X2FkZHIsIHNhZGRyLSZndDttYWMpOwomIzQzOwlpZiAodW5saWtlbHkocmMpKQomIzQzOwkJa2ZyZWVfc2tiKG5za2IpOwomIzQzOwllbHNlCiYjNDM7CQlkZXZfcXVldWVfeG1pdChuc2tiKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgbGxjX2FkZHIgc2FkZHIsIGRhZGRyOwomIzQzOwlzdHJ1Y3Qgc29jayAqbmV3c2sgPSBOVUxMOwogCXN0cnVjdCBzb2NrICpzazsKJiM0MzsJaW50IHJjOwogCiAJbGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpOwogCWxsY19wZHVfZGVjb2RlX3NzYXAoc2tiLCAmYW1wO3NhZGRyLmxzYXApOwpAQCAtNzk1LDExICYjNDM7ODQwLDI0IEBAIHZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCSAqIGluIHRoZSBuZXdseSBjcmVhdGVkIHN0cnVjdCBzb2NrIHByaXZhdGUgYXJlYS4gLWFjbWUKIAkgKi8KIAlpZiAodW5saWtlbHkoc2stJmd0O3NrX3N0YXRlID09IFRDUF9MSVNURU4pKSB7Ci0JCXN0cnVjdCBzb2NrICpuZXdzayA9IGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLSZndDtkZXYsCi0JCQkJCQkJICAgICAgJmFtcDtzYWRkciwgJmFtcDtkYWRkcik7Ci0JCWlmICghbmV3c2spCiYjNDM7CQlpZiAobGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHsKJiM0MzsJCQlpZiAoIWxsY19jb25uX2V2X3J4X2Rpc2NfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHsKJiM0MzsJCQkJdTggZl9iaXQ7CiYjNDM7CiYjNDM7CQkJCWxsY19wZHVfZGVjb2RlX3BmX2JpdChza2IsICZhbXA7Zl9iaXQpOwomIzQzOwkJCQlsbGNfY29ubl9zZW5kX2RtX3JzcChzYXAsIHNrYiwgJmFtcDtzYWRkciwgZl9iaXQpOwomIzQzOwkJCX0gZWxzZSBpZiAoIWxsY19jb25uX2V2X3J4X3h4eF9jbWRfcGJpdF9zZXRfMShzaywKJiM0MzsJCQkJCQkJCSAgICAgICBza2IpKSB7CiYjNDM7CQkJCWxsY19jb25uX3NlbmRfZG1fcnNwKHNhcCwgc2tiLCAmYW1wO3NhZGRyLCAxKTsKJiM0MzsJCQl9CiAJCQlnb3RvIGRyb3BfdW5sb2NrOwotCQlza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7CiYjNDM7CQl9IGVsc2UgaWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7CiYjNDM7CQkJbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi0mZ3Q7ZGV2LCAmYW1wO3NhZGRyLAomIzQzOwkJCQkJCQkgJmFtcDtkYWRkcik7CiYjNDM7CQkJaWYgKCFuZXdzaykKJiM0MzsJCQkJZ290byBkcm9wX3VubG9jazsKJiM0MzsJCQlza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7CiYjNDM7CQl9CiAJfSBlbHNlIHsKIAkJLyoKIAkJICogQ2FuJiMzOTt0IGJlIHNrYl9zZXRfb3duZXJfciwgdGhpcyB3aWxsIGJlIGRvbmUgYXQgdGhlCkBAIC04MTMsOSAmIzQzOzg3MSwxMyBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJc2tiLSZndDtzayA9IHNrOwogCQlza2ItJmd0O2Rlc3RydWN0b3IgPSBzb2NrX2VmcmVlOwogCX0KLQlpZiAoIXNvY2tfb3duZWRfYnlfdXNlcihzaykpCi0JCWxsY19jb25uX3Jjdihzaywgc2tiKTsKLQllbHNlIHsKJiM0MzsJaWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7CiYjNDM7CQlyYyA9IGxsY19jb25uX3Jjdihzaywgc2tiKTsKJiM0MzsJCWlmICh1bmxpa2VseShyYykgJmFtcDsmYW1wOyBuZXdzaykgewomIzQzOwkJCWxsY19yZWxlYXNlX2luY29taW5nX3NvY2sobmV3c2spOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwl9IGVsc2UgewogCQlkcHJpbnRrKCYjMzQ7JXM6IGFkZGluZyB0byBiYWNrbG9nLi4uXG4mIzM0OywgX19mdW5jX18pOwogCQlsbGNfc2V0X2JhY2tsb2dfdHlwZShza2IsIExMQ19QQUNLRVQpOwogCQlpZiAoc2tfYWRkX2JhY2tsb2coc2ssIHNrYiwgUkVBRF9PTkNFKHNrLSZndDtza19yY3ZidWYpKSkKQEAgLTg1MiwxMiAmIzQzOzkxNCwyMiBAQCBzdGF0aWMgaW50IGxsY19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJaW50IHJjID0gMDsKIAlzdHJ1Y3QgbGxjX3NvY2sgKmxsYyA9IGxsY19zayhzayk7CiYjNDM7CXN0cnVjdCBzb2NrICpuZXdzayA9IE5VTEw7CiAKIAlpZiAobGlrZWx5KGxsY19iYWNrbG9nX3R5cGUoc2tiKSA9PSBMTENfUEFDS0VUKSkgewotCQlpZiAobGlrZWx5KGxsYy0mZ3Q7c3RhdGUgJmd0OyAxKSkgLyogbm90IGNsb3NlZCAqLwomIzQzOwkJaWYgKGxpa2VseShsbGMtJmd0O3N0YXRlICZndDsgMSkpIHsgLyogbm90IGNsb3NlZCAqLwomIzQzOwkJCWlmICh1bmxpa2VseShzay0mZ3Q7c2tfc3RhdGUgPT0gVENQX0xJU1RFTikpIHsKJiM0MzsJCQkJbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2Ioc2ssIHNrYik7CiYjNDM7CQkJCWlmICghbmV3c2spCiYjNDM7CQkJCQlnb3RvIG91dF9rZnJlZV9za2I7CiYjNDM7CQkJCXNrYl9zZXRfb3duZXJfcihza2IsIG5ld3NrKTsKJiM0MzsJCQl9CiAJCQlyYyA9IGxsY19jb25uX3Jjdihzaywgc2tiKTsKLQkJZWxzZQomIzQzOwkJCWlmICh1bmxpa2VseShyYykgJmFtcDsmYW1wOyBuZXdzaykKJiM0MzsJCQkJbGxjX3JlbGVhc2VfaW5jb21pbmdfc29jayhuZXdzayk7CiYjNDM7CQl9IGVsc2UgewogCQkJZ290byBvdXRfa2ZyZWVfc2tiOwomIzQzOwkJfQogCX0gZWxzZSBpZiAobGxjX2JhY2tsb2dfdHlwZShza2IpID09IExMQ19FVkVOVCkgewogCQkvKiB0aW1lciBleHBpcmF0aW9uIGV2ZW50ICovCiAJCWlmIChsaWtlbHkobGxjLSZndDtzdGF0ZSAmZ3Q7IDEpKSAgLyogbm90IGNsb3NlZCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjg5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxMQyBQYXRjaCBSZXZpZXcgLSBUaW1lIHRvIEZ1enohKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG5ldC9sbGMvbGxjX2Nvbm4uY2AuIEl0JiMzOTtzIGludHJvZHVjaW5nIGEgZmV3IG5ldyBmdW5jdGlvbnM6IGBsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2JgLCBgbGxjX3JlbGVhc2VfaW5jb21pbmdfc29ja2AsIGFuZCBgbGxjX2Nvbm5fc2VuZF9kbV9yc3BgLCBhbmQgdGhlbiBtb2RpZnlpbmcgYGxsY19jb25uX2hhbmRsZXJgIGFuZCBgbGxjX2JhY2tsb2dfcmN2YC4gU2luY2UgdGhpcyBpcyBhbGwgZnVuY3Rpb25hbCBjb2RlIHdpdGhpbiB0aGUgTExDIChMb2dpY2FsIExpbmsgQ29udHJvbCkgbmV0d29ya2luZyBzdWJzeXN0ZW0sIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgZnV6ei13b3J0aHkuIEdpdmVuIHRoYXQgaXQmIzM5O3MgaGFuZGxpbmcgY29ubmVjdGlvbiBsb2dpYywgaXQmIzM5O3MgcmlwZSBmb3IgZmluZGluZyBzb21lIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgb3IgdnVsbmVyYWJpbGl0aWVzLgoKTm93LCBiZWZvcmUgSSBmaXJlIHVwIHRoZSBmdXp6ZXIsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBMTEMgaW4gdGhlIGZpcnN0IHBsYWNlLiBNeSBnby10byBhcHByb2FjaCBpcyB0byB1c2UgYGdpdCBncmVwYC4gSSYjMzk7bGwgc2VhcmNoIGZvciBgQ09ORklHX0xMQ2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGxpa2VseSBpbiBlaXRoZXIgYG5ldC9sbGMvS2NvbmZpZ2Agb3IgdGhlIG1vcmUgZ2VuZXJhbCBgbmV0L0tjb25maWdgIGZpbGVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBidWlsZCBhIHJlcHJvZHVjaWJsZSB0ZXN0aW5nIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0xMQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9sbGMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbGxjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9sbGMvS2NvbmZpZzoyOmNvbmZpZyBMTENcbm5ldC9sbGMvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbm5ldC9sbGMvS2NvbmZpZy00LVxubmV0L2xsYy9LY29uZmlnOjU6Y29uZmlnIExMQzJcbm5ldC9sbGMvS2NvbmZpZzo2Olx0dHJpc3RhdGUgXCYjMzQ7QU5TSS9JRUVFIDgwMi4yIExMQyB0eXBlIDIgU3VwcG9ydFwmIzM0O1xubmV0L2xsYy9LY29uZmlnOjc6XHRzZWxlY3QgTExDXG5uZXQvbGxjL0tjb25maWctOC1cdGhlbHBcbm5ldC9sbGMvS2NvbmZpZy05LVx0ICBUaGlzIGlzIGEgTG9naWNhbCBMaW5rIExheWVyIHR5cGUgMiwgY29ubmVjdGlvbiBvcmllbnRlZCBzdXBwb3J0LlxubmV0L2xsYy9LY29uZmlnOjEwOlx0ICBTZWxlY3QgdGhpcyBpZiB5b3Ugd2FudCB0byBoYXZlIHN1cHBvcnQgZm9yIFBGX0xMQyBzb2NrZXRzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMzAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqVGhpbmtpbmcgVGhyb3VnaCBMTEMgU29ja2V0IENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gaXQgbG9va3MgbGlrZSBgQ09ORklHX0xMQzJgIGlzIHRoZSBrZXkgdG8gZW5hYmxpbmcgdGhlIGBQRl9MTENgIHNvY2tldHMgYW5kIHRoZSBgTExDYCBwcm90b2NvbCBpdHNlbGYuIFRoYXQgbWFrZXMgc2Vuc2UsIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhcHByb2FjaC4gQnV0IGJlZm9yZSBJIG1vdmUgb24sIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgcmVsYXRlZCBzZXR0aW5ncyB0aGF0IGFyZSBpbnZvbHZlZCBoZXJlLiBHb3R0YSBiZSB0aG9yb3VnaC4gVGhlcmUmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBtb3JlIHRvIHVuY292ZXIgaGVyZS4gTGV0IG1lIGRvdWJsZSBjaGVjaywgSSB3b3VsZG4mIzM5O3Qgd2FudCB0byBtaXNzIHNvbWV0aGluZyBjcnVjaWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xsY19jb25uX2hhbmRsZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbGxjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbGxjL2FmX2xsYy5jPTEyNDg9c3RhdGljIGludCBfX2luaXQgbGxjMl9pbml0KHZvaWQpXG4tLVxubmV0L2xsYy9hZl9sbGMuYy0xMjczLVx0bGxjX2FkZF9wYWNrKExMQ19ERVNUX1NBUCwgbGxjX3NhcF9oYW5kbGVyKTtcbm5ldC9sbGMvYWZfbGxjLmM6MTI3NDpcdGxsY19hZGRfcGFjayhMTENfREVTVF9DT05OLCBsbGNfY29ubl9oYW5kbGVyKTtcbm5ldC9sbGMvYWZfbGxjLmMtMTI3NS1vdXQ6XG4tLVxubmV0L2xsYy9sbGNfY29ubi5jPTU2PWludCBsbGNfY29ubl9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbGxjL2xsY19jb25uLmMtODgtXHRcdCAqIHNrYi1cdTAwM2VzayBwb2ludGluZyB0byB0aGUgbmV3bHkgY3JlYXRlZCBzdHJ1Y3Qgc29jayBpblxubmV0L2xsYy9sbGNfY29ubi5jOjg5Olx0XHQgKiBsbGNfY29ubl9oYW5kbGVyLiAtYWNtZVxubmV0L2xsYy9sbGNfY29ubi5jLTkwLVx0XHQgKi9cbi0tXG5uZXQvbGxjL2xsY19jb25uLmM9Nzk3PXN0YXRpYyB2b2lkIGxsY19jb25uX3NlbmRfZG1fcnNwKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jLTgxNi1cbm5ldC9sbGMvbGxjX2Nvbm4uYzo4MTc6dm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbGxjL2xsY19jb25uLmMtODE4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTAyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBMTEMgQ29ubmVjdGlvbiBIYW5kbGluZyBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZXNlIG1vZGlmaWNhdGlvbnMgdG8gdGhlIExMQyBjb25uZWN0aW9uIGhhbmRsaW5nIGNvZGUuIFRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZCBhcmUgYGxsY19jb25uX2hhbmRsZXJgLCBgbGxjX2JhY2tsb2dfcmN2YCwgYGxsY19jcmVhdGVfaW5jb21pbmdfc29ja19mcm9tX3NrYmAsIGBsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrYCwgYW5kIGBsbGNfY29ubl9zZW5kX2RtX3JzcGAuIEJhc2VkIG9uIHRoZSBjb250ZXh0LCBJIHRoaW5rIHRoZSByZWFsIG1lYXQgb2YgdGhlIGNoYW5nZXMgbGlrZWx5IHJldm9sdmUgYXJvdW5kIGBsbGNfY29ubl9oYW5kbGVyYCBhbmQgYGxsY19iYWNrbG9nX3JjdmAsIHRob3NlIGFyZSB0aGUgZm9jdXMuCgpGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nLiBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgbGxjX2JhY2tsb2dfcmN2YCBwb3RlbnRpYWxseSBiZWluZyBzdGF0aWMuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0Li4uIFl1cCwgaXQgKmlzKiBkZWNsYXJlZCBhcyBgc3RhdGljYCB3aXRoaW4gYG5ldC9sbGMvbGxjX2Nvbm4uY2AuIE9rYXksIGdvb2QuIFRoZSBwYXRjaCBldmVuIGNsYXJpZmllcyB0aGF0IHdpdGggdGhlIHNpZ25hdHVyZTogYHN0YXRpYyBpbnQgbGxjX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilgLiBOb3cgSSByZWNhbGwgdGhhdCBgbGxjX2Nvbm5faGFuZGxlcmAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggbWFrZXMgc2Vuc2UuCgpOb3cgSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG5ldC9sbGMvbGxjX2Nvbm4uY2AgYmVjYXVzZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgbG9naWMgaXMgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBjaGFuZ2VkIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjX2JhY2tsb2dfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2xsYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2xsYy9hZl9sbGMuYz0xOTU9c3RhdGljIGludCBsbGNfdWlfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbm5ldC9sbGMvYWZfbGxjLmMtMjExLVxubmV0L2xsYy9hZl9sbGMuYzoyMTI6XHRcdC8qIEhvbGQgdGhpcyBmb3IgcmVsZWFzZV9zb2NrKCksIHNvIHRoYXQgbGxjX2JhY2tsb2dfcmN2KClcbm5ldC9sbGMvYWZfbGxjLmMtMjEzLVx0XHQgKiBjb3VsZCBzdGlsbCB1c2UgaXQuXG4tLVxubmV0L2xsYy9sbGNfY19hYy5jPTE0MTY9dTggbGxjX2NpcmN1bGFyX2JldHdlZW4odTggYSwgdTggYiwgdTggYylcbi0tXG5uZXQvbGxjL2xsY19jX2FjLmMtMTQzMC0gKlx0cXVldWVkLiBPdGhlcndpc2UgdGhpcyBldmVudCBjYW4gYmUgc2VudCB0byBjb25uZWN0aW9uIHN0YXRlIG1hY2hpbmUuXG5uZXQvbGxjL2xsY19jX2FjLmM6MTQzMTogKlx0UXVldWVkIGV2ZW50cyB3aWxsIHByb2Nlc3MgYnkgbGxjX2JhY2tsb2dfcmN2IGZ1bmN0aW9uIGFmdGVyIHNlbmRpbmdcbm5ldC9sbGMvbGxjX2NfYWMuYy0xNDMyLSAqXHRkYXRhIGZyYW1lLlxuLS1cbm5ldC9sbGMvbGxjX2Nvbm4uYz05MDA9c3RhdGljIGF0b21pY190IGxsY19zb2NrX25yO1xuLS1cbm5ldC9sbGMvbGxjX2Nvbm4uYy05MDMtLyoqXG5uZXQvbGxjL2xsY19jb25uLmM6OTA0OiAqXHRsbGNfYmFja2xvZ19yY3YgLSBQcm9jZXNzZXMgcnggZnJhbWVzIGFuZCBleHBpcmVkIHRpbWVycy5cbm5ldC9sbGMvbGxjX2Nvbm4uYy05MDUtICpcdEBzazogTExDIHNvY2sgKHA4MDIyIGNvbm5lY3Rpb24pXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jLTkxMi0gKi9cbm5ldC9sbGMvbGxjX2Nvbm4uYzo5MTM6c3RhdGljIGludCBsbGNfYmFja2xvZ19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2xsYy9sbGNfY29ubi5jLTkxNC17XG4tLVxubmV0L2xsYy9sbGNfY29ubi5jPTk1Nj1zdGF0aWMgdm9pZCBsbGNfc2tfaW5pdChzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jLTk4MC1cdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2bGxjLVx1MDAzZXBkdV91bmFja19xKTtcbm5ldC9sbGMvbGxjX2Nvbm4uYzo5ODE6XHRzay1cdTAwM2Vza19iYWNrbG9nX3JjdiA9IGxsY19iYWNrbG9nX3Jjdjtcbm5ldC9sbGMvbGxjX2Nvbm4uYy05ODItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMjkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIExMQyBDb25uZWN0aW9uIEhhbmRsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciBvdXIgYW5hbHlzaXMsIGdpdmVuIG15IGV4cGVydGlzZS4gVGhlIGNvcmUgb2YgdGhpcyBjb25uZWN0aW9uLW9yaWVudGVkIExMQyBwYWNrZXQgcHJvY2Vzc2luZyBzZWVtcyB0byBiZSBpbiBgbGxjX2Nvbm5faGFuZGxlcmAuIFRoYXQgbG9va3MgbGlrZSB0aGUga2V5LiBUaGUgYmFja2xvZyByZWNlaXZlIGhhbmRsZXIsIGBsbGNfYmFja2xvZ19yY3ZgLCBpcyBzdGF0aWMsIHNvIEkgY2FuJiMzOTt0IHVzZSBpdCBhcyBhIGZvY3VzIHN5bWJvbC4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBvdXQuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgdmlhYmxlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoZSBwYXRjaC4gSSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgYGxsY19jb25uX2hhbmRsZXJgIGlzIG5vbi1zdGF0aWMgYW5kIHRoZSBvdGhlciBmdW5jdGlvbnMsIGBsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2JgLCBgbGxjX3JlbGVhc2VfaW5jb21pbmdfc29ja2AsIGFuZCBgbGxjX2Nvbm5fc2VuZF9kbV9yc3BgIGFyZSBhbGwgc3RhdGljLiBMb29rcyBsaWtlIGBsbGNfY29ubl9oYW5kbGVyYCBpcyB0aGUgYmVzdCBiZXQgYXMgbXkgZm9jdXMgc3ltYm9sLgoKTm93LCBsZXQmIzM5O3MgbWFrZSBzdXJlIG91ciBjb25maWd1cmF0aW9uIHRhcmdldCBpcyBjbGVhbi4gSXMgYExMQzJgIHRoZSBvbmx5IGNvbmZpZyBpbiBwbGF5PyBObywgaXQmIzM5O3MgYExMQ2AgYW5kIGBMTEMyYC4gQnV0IGl0IGxvb2tzIGxpa2UgYExMQzJgIHNlbGVjdHMgYExMQ2AuIFRoZXJlZm9yZSwgYExMQzJgIGlzIHN1ZmZpY2llbnQuIEl0IGVuY29tcGFzc2VzIGV2ZXJ5dGhpbmcgd2UgbmVlZCwgYW5kIHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LgoKRmluYWxseSwgSSB3aWxsIGNoZWNrIGlmIGBMTEMyYCBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBzaG91bGQga25vdyB0aG9zZSwgYXMgaXQgd291bGQgYmUgcmVsZXZhbnQgdG8gdGhlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMTEMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2xsYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9sbGMvS2NvbmZpZz0yPWNvbmZpZyBMTENcbi0tXG5uZXQvbGxjL0tjb25maWctNC1cbm5ldC9sbGMvS2NvbmZpZzo1OmNvbmZpZyBMTEMyXG5uZXQvbGxjL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0FOU0kvSUVFRSA4MDIuMiBMTEMgdHlwZSAyIFN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTY6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY4NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBgbmV0L2xsYy9LY29uZmlnYCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBuZXQvbGxjKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgYG5ldC9sbGMvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdldCBhIHNlbnNlIG9mIHdoYXQmIzM5O3MgYmVpbmcgY29uZmlndXJlZCBoZXJlIOKAkyB3aGF0IGZlYXR1cmVzIG9yIG9wdGlvbnMgYXJlIGJlaW5nIGV4cG9zZWQgZm9yIHRoZSBMTEMgKExvZ2ljYWwgTGluayBDb250cm9sKSBsYXllciBvZiB0aGUgbmV0d29yayBzdGFjay4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgZGVmYXVsdCB2YWx1ZXMsIGFuZCB0aGUgcHJvbXB0IHN0cmluZ3MuIE15IGdvYWwgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gY2hvaWNlcyBtYWRlIGZvciB0aGlzIGFyZWEsIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYWJsZSBvcHRpb25zLCBhbmQgY29uc2lkZXIgYW55IGFyZWFzIHRoYXQgbWlnaHQgd2FycmFudCBmdXJ0aGVyIGludmVzdGlnYXRpb24gb3IgcGVyaGFwcyBldmVuIHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGltcHJvdmVtZW50cy4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIG91dCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIHN5bWJvbHMsIGFuZCBsb29rIGF0IGFueSBpbnRlcmVzdGluZyBjb25kaXRpb25hbCBsb2dpYy4gSXQmIzM5O3MgYSBxdWljayBidXQgY3J1Y2lhbCBzdGVwLiBUaW1lIHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbGxjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTExDXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBMTEMyXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRzZWxlY3QgTExDXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFRoaXMgaXMgYSBMb2dpY2FsIExpbmsgTGF5ZXIgdHlwZSAyLCBjb25uZWN0aW9uIG9yaWVudGVkIHN1cHBvcnQuXG4gIDEwOlx0XHQgIFNlbGVjdCB0aGlzIGlmIHlvdSB3YW50IHRvIGhhdmUgc3VwcG9ydCBmb3IgUEZfTExDIHNvY2tldHMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNTcKCQkJCQkJCW91dHB1dDogOTUKCQkJCQkJCXRob3VnaHRzOiAzNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIExMQzIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGludG8gdGhpcyBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSBgTExDMmAgaXMgdGhlIG9ubHkgY29uZmlnIEkgbmVlZCB0byB3b3JyeSBhYm91dC4gTGV0JiMzOTtzIHNlZSwgd2hhdCBlbHNlIGNhbiBJIGZvY3VzIG9uPyBgbGxjX2Nvbm5faGFuZGxlcmAgbG9va3MgbGlrZSB0aGUgY29yZSBmdW5jdGlvbiBoZXJlLCBpdCBzZWVtcyB0byBiZSB0aGUgbWFpbiBjb25uZWN0aW9uIGhhbmRsZXIuIExldCBtZSBkb3VibGUtY2hlY2sgLSBhcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGBsbGNfYmFja2xvZ19yY3ZgPyBBaCwgeWVzLCBpdCYjMzk7cyBjYWxsZWQgdGhyb3VnaCBgc2stJmd0O3NrX2JhY2tsb2dfcmN2YC4gU28sIHllYWgsIGZvY3VzaW5nIG9uIGBsbGNfY29ubl9oYW5kbGVyYCBtYWtlcyB0aGUgbW9zdCBzZW5zZS4KCk5vdywgYSBxdWljayB2ZXJpZmljYXRpb24uLi4gaXMgYGxsY19jb25uX2hhbmRsZXJgIGFjdHVhbGx5IGV4cG9ydGVkIG9yIHJlYWNoYWJsZT8gT2theSwgaXQmIzM5O3MgcmVnaXN0ZXJlZCB0aHJvdWdoIGBsbGNfYWRkX3BhY2soTExDX0RFU1RfQ09OTiwgbGxjX2Nvbm5faGFuZGxlcik7YCB3aXRoaW4gYGxsYzJfaW5pdGAuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHdoZW4gTExDMiBwYWNrZXRzIGNvbWUgaW4uCgpUaGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYW4gaXNzdWUgd2l0aCBMTEMgc29ja2V0cywgc3BlY2lmaWNhbGx5IHdoZW4gdGhleSBhcmUgaW4gYFRDUF9MSVNURU5gIHN0YXRlLiBJdCYjMzk7cyBjcmVhdGluZyBhbiBpbmNvbWluZyBzb2NrZXQgYmFzZWQgb24gdGhlIHJlY2VpdmVkIHNrYiwgYW5kIGlmIHRoYXQgY3JlYXRpb24gZmFpbHMsIGl0IHNpbXBseSBkcm9wcyB0aGUgcGFja2V0LiBJdCBhbHNvIGhhbmRsZXMgU0FCTUUgY29tbWFuZHMgd2l0aCB0aGUgUC1iaXQgc2V0LCB3aGljaCBzb3VuZHMgbGlrZSBpdCBzZW5kcyBhIERNIHJlc3BvbnNlLiBUaGlzIGxvb2tzIGxpa2UgdmFsaWQsIGZ1bmN0aW9uYWwgbmV0d29ya2luZyBjb2RlLiBEZWZpbml0ZWx5IGZ1enphYmxlLgoKU28gdGhlIGtleSBmdW5jdGlvbiB0byB0YXJnZXQgaXMgZGVmaW5pdGVseSBgbGxjX2Nvbm5faGFuZGxlcmAuCgpSZWdhcmRpbmcgY29uZmlnLCBgTExDMmAgaXMgaXQuIEl0IGVuYWJsZXMgdGhlIGBMTENgIGZlYXR1cmUuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMTEMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bGxjX2Nvbm5faGFuZGxlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBoYW5kbGVyIGFuZCBiYWNrbG9nIHJlY2VpdmUgbG9naWMgZm9yIExMQyB0eXBlIDIgc29ja2V0cywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zIG9uIGxpc3RlbmluZyBzb2NrZXRzIGFuZCBzZW5kaW5nIERNIHJlc3BvbnNlcy4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmtpbmcgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBQRl9MTEMgc29ja2V0cyBhbmQgcmVjZWl2aW5nIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xMQzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgYW5kIGJhY2tsb2cgcmVjZWl2ZSBsb2dpYyBmb3IgTExDIHR5cGUgMiBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgb24gbGlzdGVuaW5nIHNvY2tldHMgYW5kIHNlbmRpbmcgRE0gcmVzcG9uc2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29ya2luZyBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNyZWF0aW5nIFBGX0xMQyBzb2NrZXRzIGFuZCByZWNlaXZpbmcgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjI0LjM5NjMwNzc5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExNTgwNDAxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTExDMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY19jb25uX2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBoYW5kbGVyIGFuZCBiYWNrbG9nIHJlY2VpdmUgbG9naWMgZm9yIExMQyB0eXBlIDIgc29ja2V0cywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zIG9uIGxpc3RlbmluZyBzb2NrZXRzIGFuZCBzZW5kaW5nIERNIHJlc3BvbnNlcy4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmtpbmcgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBQRl9MTEMgc29ja2V0cyBhbmQgcmVjZWl2aW5nIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjI0LjM5NjMxNTM2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTYyMTM4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyZjA2NzBiMTIyNzM3Y2E1OGJjYzRkN2QxN2Y3NGIyOWUyMDAyNTc1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDE2OjMxOjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xcbmluZGV4IDI2MDQ2MGQ1MGY1NGMuLjQyMWYwZDk5MzUxODggMTAwNjQ0XFxuLS0tIGEvbmV0L2xsYy9sbGNfY29ubi5jXFxuKysrIGIvbmV0L2xsYy9sbGNfY29ubi5jXFxuQEAgLTc3MSwxMCArNzcxLDU1IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHN0cnVjdCBzb2NrICpzayxcXG4gXFx0cmV0dXJuIG5ld3NrO1xcbiB9XFxuIFxcbitzdGF0aWMgc3RydWN0IHNvY2sgKmxsY19jcmVhdGVfaW5jb21pbmdfc29ja19mcm9tX3NrYihzdHJ1Y3Qgc29jayAqc2ssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0c3RydWN0IGxsY19hZGRyIHNhZGRyLCBkYWRkcjtcXG4rXFxuK1xcdGxsY19wZHVfZGVjb2RlX3NhKHNrYiwgc2FkZHIubWFjKTtcXG4rXFx0bGxjX3BkdV9kZWNvZGVfc3NhcChza2IsIFxcdTAwMjZzYWRkci5sc2FwKTtcXG4rXFx0bGxjX3BkdV9kZWNvZGVfZGEoc2tiLCBkYWRkci5tYWMpO1xcbitcXHRsbGNfcGR1X2RlY29kZV9kc2FwKHNrYiwgXFx1MDAyNmRhZGRyLmxzYXApO1xcbitcXG4rXFx0cmV0dXJuIGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLVxcdTAwM2VkZXYsIFxcdTAwMjZzYWRkciwgXFx1MDAyNmRhZGRyKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgbGxjX3JlbGVhc2VfaW5jb21pbmdfc29jayhzdHJ1Y3Qgc29jayAqc2spXFxuK3tcXG4rXFx0c3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spO1xcbitcXG4rXFx0bGxjX3NhcF9yZW1vdmVfc29ja2V0KGxsYy1cXHUwMDNlc2FwLCBzayk7XFxuK1xcdGRldl9wdXQobGxjLVxcdTAwM2VkZXYpO1xcbitcXHRzb2NrX29ycGhhbihzayk7XFxuK1xcdGxsY19za19mcmVlKHNrKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgbGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBsbGNfYWRkciAqc2FkZHIsIHU4IGZfYml0KVxcbit7XFxuK1xcdHN0cnVjdCBza19idWZmICpuc2tiO1xcbitcXHRpbnQgcmM7XFxuK1xcbitcXHRuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKE5VTEwsIHNrYi1cXHUwMDNlZGV2LCBMTENfUERVX1RZUEVfVSwgMCk7XFxuK1xcdGlmICghbnNrYilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bGxjX3BkdV9oZWFkZXJfaW5pdChuc2tiLCBMTENfUERVX1RZUEVfVSwgc2FwLVxcdTAwM2VsYWRkci5sc2FwLFxcbitcXHRcXHRcXHQgICAgc2FkZHItXFx1MDAzZWxzYXAsIExMQ19QRFVfUlNQKTtcXG4rXFx0bGxjX3BkdV9pbml0X2FzX2RtX3JzcChuc2tiLCBmX2JpdCk7XFxuK1xcdHJjID0gbGxjX21hY19oZHJfaW5pdChuc2tiLCBza2ItXFx1MDAzZWRldi1cXHUwMDNlZGV2X2FkZHIsIHNhZGRyLVxcdTAwM2VtYWMpO1xcbitcXHRpZiAodW5saWtlbHkocmMpKVxcbitcXHRcXHRrZnJlZV9za2IobnNrYik7XFxuK1xcdGVsc2VcXG4rXFx0XFx0ZGV2X3F1ZXVlX3htaXQobnNrYik7XFxuK31cXG4rXFxuIHZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCBsbGNfYWRkciBzYWRkciwgZGFkZHI7XFxuK1xcdHN0cnVjdCBzb2NrICpuZXdzayA9IE5VTEw7XFxuIFxcdHN0cnVjdCBzb2NrICpzaztcXG4rXFx0aW50IHJjO1xcbiBcXG4gXFx0bGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpO1xcbiBcXHRsbGNfcGR1X2RlY29kZV9zc2FwKHNrYiwgXFx1MDAyNnNhZGRyLmxzYXApO1xcbkBAIC03OTUsMTEgKzg0MCwyNCBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0ICogaW4gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgcHJpdmF0ZSBhcmVhLiAtYWNtZVxcbiBcXHQgKi9cXG4gXFx0aWYgKHVubGlrZWx5KHNrLVxcdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSkge1xcbi1cXHRcXHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cXHUwMDNlZGV2LFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2c2FkZHIsIFxcdTAwMjZkYWRkcik7XFxuLVxcdFxcdGlmICghbmV3c2spXFxuK1xcdFxcdGlmIChsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzaywgc2tiKSkge1xcbitcXHRcXHRcXHRpZiAoIWxsY19jb25uX2V2X3J4X2Rpc2NfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcXG4rXFx0XFx0XFx0XFx0dTggZl9iaXQ7XFxuK1xcbitcXHRcXHRcXHRcXHRsbGNfcGR1X2RlY29kZV9wZl9iaXQoc2tiLCBcXHUwMDI2Zl9iaXQpO1xcbitcXHRcXHRcXHRcXHRsbGNfY29ubl9zZW5kX2RtX3JzcChzYXAsIHNrYiwgXFx1MDAyNnNhZGRyLCBmX2JpdCk7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAoIWxsY19jb25uX2V2X3J4X3h4eF9jbWRfcGJpdF9zZXRfMShzayxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNrYikpIHtcXG4rXFx0XFx0XFx0XFx0bGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc2FwLCBza2IsIFxcdTAwMjZzYWRkciwgMSk7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0XFx0Z290byBkcm9wX3VubG9jaztcXG4tXFx0XFx0c2tiX3NldF9vd25lcl9yKHNrYiwgbmV3c2spO1xcbitcXHRcXHR9IGVsc2UgaWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7XFxuK1xcdFxcdFxcdG5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHNrLCBza2ItXFx1MDAzZWRldiwgXFx1MDAyNnNhZGRyLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmRhZGRyKTtcXG4rXFx0XFx0XFx0aWYgKCFuZXdzaylcXG4rXFx0XFx0XFx0XFx0Z290byBkcm9wX3VubG9jaztcXG4rXFx0XFx0XFx0c2tiX3NldF9vd25lcl9yKHNrYiwgbmV3c2spO1xcbitcXHRcXHR9XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIENhbid0IGJlIHNrYl9zZXRfb3duZXJfciwgdGhpcyB3aWxsIGJlIGRvbmUgYXQgdGhlXFxuQEAgLTgxMyw5ICs4NzEsMTMgQEAgdm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdHNrYi1cXHUwMDNlc2sgPSBzaztcXG4gXFx0XFx0c2tiLVxcdTAwM2VkZXN0cnVjdG9yID0gc29ja19lZnJlZTtcXG4gXFx0fVxcbi1cXHRpZiAoIXNvY2tfb3duZWRfYnlfdXNlcihzaykpXFxuLVxcdFxcdGxsY19jb25uX3Jjdihzaywgc2tiKTtcXG4tXFx0ZWxzZSB7XFxuK1xcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xcbitcXHRcXHRyYyA9IGxsY19jb25uX3Jjdihzaywgc2tiKTtcXG4rXFx0XFx0aWYgKHVubGlrZWx5KHJjKSBcXHUwMDI2XFx1MDAyNiBuZXdzaykge1xcbitcXHRcXHRcXHRsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrKG5ld3NrKTtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4rXFx0fSBlbHNlIHtcXG4gXFx0XFx0ZHByaW50ayhcXFwiJXM6IGFkZGluZyB0byBiYWNrbG9nLi4uXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIFxcdFxcdGxsY19zZXRfYmFja2xvZ190eXBlKHNrYiwgTExDX1BBQ0tFVCk7XFxuIFxcdFxcdGlmIChza19hZGRfYmFja2xvZyhzaywgc2tiLCBSRUFEX09OQ0Uoc2stXFx1MDAzZXNrX3JjdmJ1ZikpKVxcbkBAIC04NTIsMTIgKzkxNCwyMiBAQCBzdGF0aWMgaW50IGxsY19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG4gXFx0aW50IHJjID0gMDtcXG4gXFx0c3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spO1xcbitcXHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBOVUxMO1xcbiBcXG4gXFx0aWYgKGxpa2VseShsbGNfYmFja2xvZ190eXBlKHNrYikgPT0gTExDX1BBQ0tFVCkpIHtcXG4tXFx0XFx0aWYgKGxpa2VseShsbGMtXFx1MDAzZXN0YXRlIFxcdTAwM2UgMSkpIC8qIG5vdCBjbG9zZWQgKi9cXG4rXFx0XFx0aWYgKGxpa2VseShsbGMtXFx1MDAzZXN0YXRlIFxcdTAwM2UgMSkpIHsgLyogbm90IGNsb3NlZCAqL1xcbitcXHRcXHRcXHRpZiAodW5saWtlbHkoc2stXFx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pKSB7XFxuK1xcdFxcdFxcdFxcdG5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrX2Zyb21fc2tiKHNrLCBza2IpO1xcbitcXHRcXHRcXHRcXHRpZiAoIW5ld3NrKVxcbitcXHRcXHRcXHRcXHRcXHRnb3RvIG91dF9rZnJlZV9za2I7XFxuK1xcdFxcdFxcdFxcdHNrYl9zZXRfb3duZXJfcihza2IsIG5ld3NrKTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRyYyA9IGxsY19jb25uX3Jjdihzaywgc2tiKTtcXG4tXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRpZiAodW5saWtlbHkocmMpIFxcdTAwMjZcXHUwMDI2IG5ld3NrKVxcbitcXHRcXHRcXHRcXHRsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrKG5ld3NrKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0Z290byBvdXRfa2ZyZWVfc2tiO1xcbitcXHRcXHR9XFxuIFxcdH0gZWxzZSBpZiAobGxjX2JhY2tsb2dfdHlwZShza2IpID09IExMQ19FVkVOVCkge1xcbiBcXHRcXHQvKiB0aW1lciBleHBpcmF0aW9uIGV2ZW50ICovXFxuIFxcdFxcdGlmIChsaWtlbHkobGxjLVxcdTAwM2VzdGF0ZSBcXHUwMDNlIDEpKSAgLyogbm90IGNsb3NlZCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNjozMToyNC44OTMxOTAwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMwNjYxMTQzNzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkxMQzJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsbGNfY29ubl9oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbm5lY3Rpb24gaGFuZGxlciBhbmQgYmFja2xvZyByZWNlaXZlIGxvZ2ljIGZvciBMTEMgdHlwZSAyIHNvY2tldHMsIHNwZWNpZmljYWxseSBoYW5kbGluZyBpbmNvbWluZyBjb25uZWN0aW9ucyBvbiBsaXN0ZW5pbmcgc29ja2V0cyBhbmQgc2VuZGluZyBETSByZXNwb25zZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBuZXR3b3JraW5nIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY3JlYXRpbmcgUEZfTExDIHNvY2tldHMgYW5kIHJlY2VpdmluZyBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZjA2NzBiMTIyNzM3Y2E1OGJjYzRkN2QxN2Y3NGIyOWUyMDAyNTc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTY6MzE6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19jb25uLmMgYi9uZXQvbGxjL2xsY19jb25uLmNcbmluZGV4IDI2MDQ2MGQ1MGY1NGMuLjQyMWYwZDk5MzUxODggMTAwNjQ0XG4tLS0gYS9uZXQvbGxjL2xsY19jb25uLmNcbisrKyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xuQEAgLTc3MSwxMCArNzcxLDU1IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHN0cnVjdCBzb2NrICpzayxcbiBcdHJldHVybiBuZXdzaztcbiB9XG4gXG4rc3RhdGljIHN0cnVjdCBzb2NrICpsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2Ioc3RydWN0IHNvY2sgKnNrLFxuK1x0XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0c3RydWN0IGxsY19hZGRyIHNhZGRyLCBkYWRkcjtcbitcbitcdGxsY19wZHVfZGVjb2RlX3NhKHNrYiwgc2FkZHIubWFjKTtcbitcdGxsY19wZHVfZGVjb2RlX3NzYXAoc2tiLCBcdTAwMjZzYWRkci5sc2FwKTtcbitcdGxsY19wZHVfZGVjb2RlX2RhKHNrYiwgZGFkZHIubWFjKTtcbitcdGxsY19wZHVfZGVjb2RlX2RzYXAoc2tiLCBcdTAwMjZkYWRkci5sc2FwKTtcbitcbitcdHJldHVybiBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsIFx1MDAyNnNhZGRyLCBcdTAwMjZkYWRkcik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGxsY19yZWxlYXNlX2luY29taW5nX3NvY2soc3RydWN0IHNvY2sgKnNrKVxuK3tcbitcdHN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTtcbitcbitcdGxsY19zYXBfcmVtb3ZlX3NvY2tldChsbGMtXHUwMDNlc2FwLCBzayk7XG4rXHRkZXZfcHV0KGxsYy1cdTAwM2VkZXYpO1xuK1x0c29ja19vcnBoYW4oc2spO1xuK1x0bGxjX3NrX2ZyZWUoc2spO1xuK31cbitcbitzdGF0aWMgdm9pZCBsbGNfY29ubl9zZW5kX2RtX3JzcChzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHRcdFx0IHN0cnVjdCBsbGNfYWRkciAqc2FkZHIsIHU4IGZfYml0KVxuK3tcbitcdHN0cnVjdCBza19idWZmICpuc2tiO1xuK1x0aW50IHJjO1xuK1xuK1x0bnNrYiA9IGxsY19hbGxvY19mcmFtZShOVUxMLCBza2ItXHUwMDNlZGV2LCBMTENfUERVX1RZUEVfVSwgMCk7XG4rXHRpZiAoIW5za2IpXG4rXHRcdHJldHVybjtcbitcbitcdGxsY19wZHVfaGVhZGVyX2luaXQobnNrYiwgTExDX1BEVV9UWVBFX1UsIHNhcC1cdTAwM2VsYWRkci5sc2FwLFxuK1x0XHRcdCAgICBzYWRkci1cdTAwM2Vsc2FwLCBMTENfUERVX1JTUCk7XG4rXHRsbGNfcGR1X2luaXRfYXNfZG1fcnNwKG5za2IsIGZfYml0KTtcbitcdHJjID0gbGxjX21hY19oZHJfaW5pdChuc2tiLCBza2ItXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyLCBzYWRkci1cdTAwM2VtYWMpO1xuK1x0aWYgKHVubGlrZWx5KHJjKSlcbitcdFx0a2ZyZWVfc2tiKG5za2IpO1xuK1x0ZWxzZVxuK1x0XHRkZXZfcXVldWVfeG1pdChuc2tiKTtcbit9XG4rXG4gdm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGxsY19hZGRyIHNhZGRyLCBkYWRkcjtcbitcdHN0cnVjdCBzb2NrICpuZXdzayA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4rXHRpbnQgcmM7XG4gXG4gXHRsbGNfcGR1X2RlY29kZV9zYShza2IsIHNhZGRyLm1hYyk7XG4gXHRsbGNfcGR1X2RlY29kZV9zc2FwKHNrYiwgXHUwMDI2c2FkZHIubHNhcCk7XG5AQCAtNzk1LDExICs4NDAsMjQgQEAgdm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHQgKiBpbiB0aGUgbmV3bHkgY3JlYXRlZCBzdHJ1Y3Qgc29jayBwcml2YXRlIGFyZWEuIC1hY21lXG4gXHQgKi9cbiBcdGlmICh1bmxpa2VseShzay1cdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSkge1xuLVx0XHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsXG4tXHRcdFx0XHRcdFx0XHQgICAgICBcdTAwMjZzYWRkciwgXHUwMDI2ZGFkZHIpO1xuLVx0XHRpZiAoIW5ld3NrKVxuK1x0XHRpZiAobGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcbitcdFx0XHRpZiAoIWxsY19jb25uX2V2X3J4X2Rpc2NfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcbitcdFx0XHRcdHU4IGZfYml0O1xuK1xuK1x0XHRcdFx0bGxjX3BkdV9kZWNvZGVfcGZfYml0KHNrYiwgXHUwMDI2Zl9iaXQpO1xuK1x0XHRcdFx0bGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc2FwLCBza2IsIFx1MDAyNnNhZGRyLCBmX2JpdCk7XG4rXHRcdFx0fSBlbHNlIGlmICghbGxjX2Nvbm5fZXZfcnhfeHh4X2NtZF9wYml0X3NldF8xKHNrLFxuK1x0XHRcdFx0XHRcdFx0XHQgICAgICAgc2tiKSkge1xuK1x0XHRcdFx0bGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc2FwLCBza2IsIFx1MDAyNnNhZGRyLCAxKTtcbitcdFx0XHR9XG4gXHRcdFx0Z290byBkcm9wX3VubG9jaztcbi1cdFx0c2tiX3NldF9vd25lcl9yKHNrYiwgbmV3c2spO1xuK1x0XHR9IGVsc2UgaWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7XG4rXHRcdFx0bmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsIFx1MDAyNnNhZGRyLFxuK1x0XHRcdFx0XHRcdFx0IFx1MDAyNmRhZGRyKTtcbitcdFx0XHRpZiAoIW5ld3NrKVxuK1x0XHRcdFx0Z290byBkcm9wX3VubG9jaztcbitcdFx0XHRza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7XG4rXHRcdH1cbiBcdH0gZWxzZSB7XG4gXHRcdC8qXG4gXHRcdCAqIENhbid0IGJlIHNrYl9zZXRfb3duZXJfciwgdGhpcyB3aWxsIGJlIGRvbmUgYXQgdGhlXG5AQCAtODEzLDkgKzg3MSwxMyBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0c2tiLVx1MDAzZXNrID0gc2s7XG4gXHRcdHNrYi1cdTAwM2VkZXN0cnVjdG9yID0gc29ja19lZnJlZTtcbiBcdH1cbi1cdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSlcbi1cdFx0bGxjX2Nvbm5fcmN2KHNrLCBza2IpO1xuLVx0ZWxzZSB7XG4rXHRpZiAoIXNvY2tfb3duZWRfYnlfdXNlcihzaykpIHtcbitcdFx0cmMgPSBsbGNfY29ubl9yY3Yoc2ssIHNrYik7XG4rXHRcdGlmICh1bmxpa2VseShyYykgXHUwMDI2XHUwMDI2IG5ld3NrKSB7XG4rXHRcdFx0bGxjX3JlbGVhc2VfaW5jb21pbmdfc29jayhuZXdzayk7XG4rXHRcdFx0Z290byBvdXQ7XG4rXHRcdH1cbitcdH0gZWxzZSB7XG4gXHRcdGRwcmludGsoXCIlczogYWRkaW5nIHRvIGJhY2tsb2cuLi5cXG5cIiwgX19mdW5jX18pO1xuIFx0XHRsbGNfc2V0X2JhY2tsb2dfdHlwZShza2IsIExMQ19QQUNLRVQpO1xuIFx0XHRpZiAoc2tfYWRkX2JhY2tsb2coc2ssIHNrYiwgUkVBRF9PTkNFKHNrLVx1MDAzZXNrX3JjdmJ1ZikpKVxuQEAgLTg1MiwxMiArOTE0LDIyIEBAIHN0YXRpYyBpbnQgbGxjX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRpbnQgcmMgPSAwO1xuIFx0c3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spO1xuK1x0c3RydWN0IHNvY2sgKm5ld3NrID0gTlVMTDtcbiBcbiBcdGlmIChsaWtlbHkobGxjX2JhY2tsb2dfdHlwZShza2IpID09IExMQ19QQUNLRVQpKSB7XG4tXHRcdGlmIChsaWtlbHkobGxjLVx1MDAzZXN0YXRlIFx1MDAzZSAxKSkgLyogbm90IGNsb3NlZCAqL1xuK1x0XHRpZiAobGlrZWx5KGxsYy1cdTAwM2VzdGF0ZSBcdTAwM2UgMSkpIHsgLyogbm90IGNsb3NlZCAqL1xuK1x0XHRcdGlmICh1bmxpa2VseShzay1cdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSkge1xuK1x0XHRcdFx0bmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2Ioc2ssIHNrYik7XG4rXHRcdFx0XHRpZiAoIW5ld3NrKVxuK1x0XHRcdFx0XHRnb3RvIG91dF9rZnJlZV9za2I7XG4rXHRcdFx0XHRza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7XG4rXHRcdFx0fVxuIFx0XHRcdHJjID0gbGxjX2Nvbm5fcmN2KHNrLCBza2IpO1xuLVx0XHRlbHNlXG4rXHRcdFx0aWYgKHVubGlrZWx5KHJjKSBcdTAwMjZcdTAwMjYgbmV3c2spXG4rXHRcdFx0XHRsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrKG5ld3NrKTtcbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRnb3RvIG91dF9rZnJlZV9za2I7XG4rXHRcdH1cbiBcdH0gZWxzZSBpZiAobGxjX2JhY2tsb2dfdHlwZShza2IpID09IExMQ19FVkVOVCkge1xuIFx0XHQvKiB0aW1lciBleHBpcmF0aW9uIGV2ZW50ICovXG4gXHRcdGlmIChsaWtlbHkobGxjLVx1MDAzZXN0YXRlIFx1MDAzZSAxKSkgIC8qIG5vdCBjbG9zZWQgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjI0Ljg5MzE5MTE3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1MzE1MzYwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipMTEMgUGF0Y2ggUmV2aWV3IC0gVGltZSB0byBGdXp6ISoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBuZXQvbGxjL2xsY19jb25uLmNgLiBJdCdzIGludHJvZHVjaW5nIGEgZmV3IG5ldyBmdW5jdGlvbnM6IGBsbGNfY3JlYXRlX2luY29taW5nX3NvY2tfZnJvbV9za2JgLCBgbGxjX3JlbGVhc2VfaW5jb21pbmdfc29ja2AsIGFuZCBgbGxjX2Nvbm5fc2VuZF9kbV9yc3BgLCBhbmQgdGhlbiBtb2RpZnlpbmcgYGxsY19jb25uX2hhbmRsZXJgIGFuZCBgbGxjX2JhY2tsb2dfcmN2YC4gU2luY2UgdGhpcyBpcyBhbGwgZnVuY3Rpb25hbCBjb2RlIHdpdGhpbiB0aGUgTExDIChMb2dpY2FsIExpbmsgQ29udHJvbCkgbmV0d29ya2luZyBzdWJzeXN0ZW0sIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgZnV6ei13b3J0aHkuIEdpdmVuIHRoYXQgaXQncyBoYW5kbGluZyBjb25uZWN0aW9uIGxvZ2ljLCBpdCdzIHJpcGUgZm9yIGZpbmRpbmcgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIG9yIHZ1bG5lcmFiaWxpdGllcy5cblxuTm93LCBiZWZvcmUgSSBmaXJlIHVwIHRoZSBmdXp6ZXIsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBMTEMgaW4gdGhlIGZpcnN0IHBsYWNlLiBNeSBnby10byBhcHByb2FjaCBpcyB0byB1c2UgYGdpdCBncmVwYC4gSSdsbCBzZWFyY2ggZm9yIGBDT05GSUdfTExDYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZWx5IGluIGVpdGhlciBgbmV0L2xsYy9LY29uZmlnYCBvciB0aGUgbW9yZSBnZW5lcmFsIGBuZXQvS2NvbmZpZ2AgZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGJ1aWxkIGEgcmVwcm9kdWNpYmxlIHRlc3RpbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2ODksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNjozMToyOS40NDYzNDczNzFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYzNzM4NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTExDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9sbGMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbGxjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbGxjL0tjb25maWc6Mjpjb25maWcgTExDXFxubmV0L2xsYy9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5uZXQvbGxjL0tjb25maWctNC1cXG5uZXQvbGxjL0tjb25maWc6NTpjb25maWcgTExDMlxcbm5ldC9sbGMvS2NvbmZpZzo2OlxcdHRyaXN0YXRlIFxcXCJBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XFxcIlxcbm5ldC9sbGMvS2NvbmZpZzo3OlxcdHNlbGVjdCBMTENcXG5uZXQvbGxjL0tjb25maWctOC1cXHRoZWxwXFxubmV0L2xsYy9LY29uZmlnLTktXFx0ICBUaGlzIGlzIGEgTG9naWNhbCBMaW5rIExheWVyIHR5cGUgMiwgY29ubmVjdGlvbiBvcmllbnRlZCBzdXBwb3J0Llxcbm5ldC9sbGMvS2NvbmZpZzoxMDpcXHQgIFNlbGVjdCB0aGlzIGlmIHlvdSB3YW50IHRvIGhhdmUgc3VwcG9ydCBmb3IgUEZfTExDIHNvY2tldHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjI5LjUxMjcyNzcwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjMzNDYwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZTpcblxuKipUaGlua2luZyBUaHJvdWdoIExMQyBTb2NrZXQgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19MTEMyYCBpcyB0aGUga2V5IHRvIGVuYWJsaW5nIHRoZSBgUEZfTExDYCBzb2NrZXRzIGFuZCB0aGUgYExMQ2AgcHJvdG9jb2wgaXRzZWxmLiBUaGF0IG1ha2VzIHNlbnNlLCBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYXBwcm9hY2guIEJ1dCBiZWZvcmUgSSBtb3ZlIG9uLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgcmVsYXRlZCBzZXR0aW5ncyB0aGF0IGFyZSBpbnZvbHZlZCBoZXJlLiBHb3R0YSBiZSB0aG9yb3VnaC4gVGhlcmUncyBhbG1vc3QgY2VydGFpbmx5IG1vcmUgdG8gdW5jb3ZlciBoZXJlLiBMZXQgbWUgZG91YmxlIGNoZWNrLCBJIHdvdWxkbid0IHdhbnQgdG8gbWlzcyBzb21ldGhpbmcgY3J1Y2lhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMzMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjMyLjg3NjA3NjU4MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjE5Nzc4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsbGNfY29ubl9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9sbGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sbGMvYWZfbGxjLmM9MTI0OD1zdGF0aWMgaW50IF9faW5pdCBsbGMyX2luaXQodm9pZClcXG4tLVxcbm5ldC9sbGMvYWZfbGxjLmMtMTI3My1cXHRsbGNfYWRkX3BhY2soTExDX0RFU1RfU0FQLCBsbGNfc2FwX2hhbmRsZXIpO1xcbm5ldC9sbGMvYWZfbGxjLmM6MTI3NDpcXHRsbGNfYWRkX3BhY2soTExDX0RFU1RfQ09OTiwgbGxjX2Nvbm5faGFuZGxlcik7XFxubmV0L2xsYy9hZl9sbGMuYy0xMjc1LW91dDpcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYz01Nj1pbnQgbGxjX2Nvbm5fc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmMtODgtXFx0XFx0ICogc2tiLVxcdTAwM2VzayBwb2ludGluZyB0byB0aGUgbmV3bHkgY3JlYXRlZCBzdHJ1Y3Qgc29jayBpblxcbm5ldC9sbGMvbGxjX2Nvbm4uYzo4OTpcXHRcXHQgKiBsbGNfY29ubl9oYW5kbGVyLiAtYWNtZVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy05MC1cXHRcXHQgKi9cXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYz03OTc9c3RhdGljIHZvaWQgbGxjX2Nvbm5fc2VuZF9kbV9yc3Aoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy04MTYtXFxubmV0L2xsYy9sbGNfY29ubi5jOjgxNzp2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbGxjL2xsY19jb25uLmMtODE4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTY6MzE6MzIuOTYyMjgxNDI1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYwODIwNDE5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTExDIENvbm5lY3Rpb24gSGFuZGxpbmcgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgbW9kaWZpY2F0aW9ucyB0byB0aGUgTExDIGNvbm5lY3Rpb24gaGFuZGxpbmcgY29kZS4gVGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiB0b3VjaGVkIGFyZSBgbGxjX2Nvbm5faGFuZGxlcmAsIGBsbGNfYmFja2xvZ19yY3ZgLCBgbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrX2Zyb21fc2tiYCwgYGxsY19yZWxlYXNlX2luY29taW5nX3NvY2tgLCBhbmQgYGxsY19jb25uX3NlbmRfZG1fcnNwYC4gQmFzZWQgb24gdGhlIGNvbnRleHQsIEkgdGhpbmsgdGhlIHJlYWwgbWVhdCBvZiB0aGUgY2hhbmdlcyBsaWtlbHkgcmV2b2x2ZSBhcm91bmQgYGxsY19jb25uX2hhbmRsZXJgIGFuZCBgbGxjX2JhY2tsb2dfcmN2YCwgdGhvc2UgYXJlIHRoZSBmb2N1cy5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZy4gSSBzZWVtIHRvIHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgYGxsY19iYWNrbG9nX3JjdmAgcG90ZW50aWFsbHkgYmVpbmcgc3RhdGljLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdC4uLiBZdXAsIGl0ICppcyogZGVjbGFyZWQgYXMgYHN0YXRpY2Agd2l0aGluIGBuZXQvbGxjL2xsY19jb25uLmNgLiBPa2F5LCBnb29kLiBUaGUgcGF0Y2ggZXZlbiBjbGFyaWZpZXMgdGhhdCB3aXRoIHRoZSBzaWduYXR1cmU6IGBzdGF0aWMgaW50IGxsY19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpYC4gTm93IEkgcmVjYWxsIHRoYXQgYGxsY19jb25uX2hhbmRsZXJgIGlzbid0IHN0YXRpYywgd2hpY2ggbWFrZXMgc2Vuc2UuXG5cbk5vdyBJJ20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBuZXQvbGxjL2xsY19jb25uLmNgIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgbG9naWMgaXMgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCdzIGFjdHVhbGx5IGNoYW5nZWQgd2l0aGluIHRob3NlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNjozMTozOC41NzA0ODgxODJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI0MTA0ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjX2JhY2tsb2dfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9sbGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sbGMvYWZfbGxjLmM9MTk1PXN0YXRpYyBpbnQgbGxjX3VpX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4tLVxcbm5ldC9sbGMvYWZfbGxjLmMtMjExLVxcbm5ldC9sbGMvYWZfbGxjLmM6MjEyOlxcdFxcdC8qIEhvbGQgdGhpcyBmb3IgcmVsZWFzZV9zb2NrKCksIHNvIHRoYXQgbGxjX2JhY2tsb2dfcmN2KClcXG5uZXQvbGxjL2FmX2xsYy5jLTIxMy1cXHRcXHQgKiBjb3VsZCBzdGlsbCB1c2UgaXQuXFxuLS1cXG5uZXQvbGxjL2xsY19jX2FjLmM9MTQxNj11OCBsbGNfY2lyY3VsYXJfYmV0d2Vlbih1OCBhLCB1OCBiLCB1OCBjKVxcbi0tXFxubmV0L2xsYy9sbGNfY19hYy5jLTE0MzAtICpcXHRxdWV1ZWQuIE90aGVyd2lzZSB0aGlzIGV2ZW50IGNhbiBiZSBzZW50IHRvIGNvbm5lY3Rpb24gc3RhdGUgbWFjaGluZS5cXG5uZXQvbGxjL2xsY19jX2FjLmM6MTQzMTogKlxcdFF1ZXVlZCBldmVudHMgd2lsbCBwcm9jZXNzIGJ5IGxsY19iYWNrbG9nX3JjdiBmdW5jdGlvbiBhZnRlciBzZW5kaW5nXFxubmV0L2xsYy9sbGNfY19hYy5jLTE0MzItICpcXHRkYXRhIGZyYW1lLlxcbi0tXFxubmV0L2xsYy9sbGNfY29ubi5jPTkwMD1zdGF0aWMgYXRvbWljX3QgbGxjX3NvY2tfbnI7XFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmMtOTAzLS8qKlxcbm5ldC9sbGMvbGxjX2Nvbm4uYzo5MDQ6ICpcXHRsbGNfYmFja2xvZ19yY3YgLSBQcm9jZXNzZXMgcnggZnJhbWVzIGFuZCBleHBpcmVkIHRpbWVycy5cXG5uZXQvbGxjL2xsY19jb25uLmMtOTA1LSAqXFx0QHNrOiBMTEMgc29jayAocDgwMjIgY29ubmVjdGlvbilcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy05MTItICovXFxubmV0L2xsYy9sbGNfY29ubi5jOjkxMzpzdGF0aWMgaW50IGxsY19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2xsYy9sbGNfY29ubi5jLTkxNC17XFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmM9OTU2PXN0YXRpYyB2b2lkIGxsY19za19pbml0KHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy05ODAtXFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2bGxjLVxcdTAwM2VwZHVfdW5hY2tfcSk7XFxubmV0L2xsYy9sbGNfY29ubi5jOjk4MTpcXHRzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBsbGNfYmFja2xvZ19yY3Y7XFxubmV0L2xsYy9sbGNfY29ubi5jLTk4Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjM4LjY0MjkwNDYwN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyODUyNjc0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIExMQyBDb25uZWN0aW9uIEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBlbnRyeSBwb2ludCBmb3Igb3VyIGFuYWx5c2lzLCBnaXZlbiBteSBleHBlcnRpc2UuIFRoZSBjb3JlIG9mIHRoaXMgY29ubmVjdGlvbi1vcmllbnRlZCBMTEMgcGFja2V0IHByb2Nlc3Npbmcgc2VlbXMgdG8gYmUgaW4gYGxsY19jb25uX2hhbmRsZXJgLiBUaGF0IGxvb2tzIGxpa2UgdGhlIGtleS4gVGhlIGJhY2tsb2cgcmVjZWl2ZSBoYW5kbGVyLCBgbGxjX2JhY2tsb2dfcmN2YCwgaXMgc3RhdGljLCBzbyBJIGNhbid0IHVzZSBpdCBhcyBhIGZvY3VzIHN5bWJvbC4gVGhhdCdzIGltbWVkaWF0ZWx5IG91dC5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgdmlhYmxlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoZSBwYXRjaC4gSSd2ZSBhbHJlYWR5IGNvbmZpcm1lZCBgbGxjX2Nvbm5faGFuZGxlcmAgaXMgbm9uLXN0YXRpYyBhbmQgdGhlIG90aGVyIGZ1bmN0aW9ucywgYGxsY19jcmVhdGVfaW5jb21pbmdfc29ja19mcm9tX3NrYmAsIGBsbGNfcmVsZWFzZV9pbmNvbWluZ19zb2NrYCwgYW5kIGBsbGNfY29ubl9zZW5kX2RtX3JzcGAgYXJlIGFsbCBzdGF0aWMuIExvb2tzIGxpa2UgYGxsY19jb25uX2hhbmRsZXJgIGlzIHRoZSBiZXN0IGJldCBhcyBteSBmb2N1cyBzeW1ib2wuXG5cbk5vdywgbGV0J3MgbWFrZSBzdXJlIG91ciBjb25maWd1cmF0aW9uIHRhcmdldCBpcyBjbGVhbi4gSXMgYExMQzJgIHRoZSBvbmx5IGNvbmZpZyBpbiBwbGF5PyBObywgaXQncyBgTExDYCBhbmQgYExMQzJgLiBCdXQgaXQgbG9va3MgbGlrZSBgTExDMmAgc2VsZWN0cyBgTExDYC4gVGhlcmVmb3JlLCBgTExDMmAgaXMgc3VmZmljaWVudC4gSXQgZW5jb21wYXNzZXMgZXZlcnl0aGluZyB3ZSBuZWVkLCBhbmQgc2ltcGxpZmllcyB0aGluZ3MgYSBiaXQuXG5cbkZpbmFsbHksIEkgd2lsbCBjaGVjayBpZiBgTExDMmAgaGFzIGFueSBkZXBlbmRlbmNpZXMuIEkgc2hvdWxkIGtub3cgdGhvc2UsIGFzIGl0IHdvdWxkIGJlIHJlbGV2YW50IHRvIHRoZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDI5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjQzLjkyODE3NDk5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUxNjk2NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIExMQzJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2xsYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sbGMvS2NvbmZpZz0yPWNvbmZpZyBMTENcXG4tLVxcbm5ldC9sbGMvS2NvbmZpZy00LVxcbm5ldC9sbGMvS2NvbmZpZzo1OmNvbmZpZyBMTEMyXFxubmV0L2xsYy9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIkFOU0kvSUVFRSA4MDIuMiBMTEMgdHlwZSAyIFN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE2OjMxOjQzLjk5MzM0OTc2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTczMTI0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBgbmV0L2xsYy9LY29uZmlnYCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEtjb25maWcgZm9yIG5ldC9sbGMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGBuZXQvbGxjL0tjb25maWdgIGZpbGUuIEknbSBnb2luZyB0byBxdWlja2x5IGdldCBhIHNlbnNlIG9mIHdoYXQncyBiZWluZyBjb25maWd1cmVkIGhlcmUg4oCTIHdoYXQgZmVhdHVyZXMgb3Igb3B0aW9ucyBhcmUgYmVpbmcgZXhwb3NlZCBmb3IgdGhlIExMQyAoTG9naWNhbCBMaW5rIENvbnRyb2wpIGxheWVyIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ20gbG9va2luZyBmb3IgdGhlIGRlcGVuZGVuY2llcywgdGhlIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIHByb21wdCBzdHJpbmdzLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNob2ljZXMgbWFkZSBmb3IgdGhpcyBhcmVhLCB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmFibGUgb3B0aW9ucywgYW5kIGNvbnNpZGVyIGFueSBhcmVhcyB0aGF0IG1pZ2h0IHdhcnJhbnQgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9yIHBlcmhhcHMgZXZlbiBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucyBvciBpbXByb3ZlbWVudHMuIEknbGwgbWVudGFsbHkgbWFwIG91dCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIHN5bWJvbHMsIGFuZCBsb29rIGF0IGFueSBpbnRlcmVzdGluZyBjb25kaXRpb25hbCBsb2dpYy4gSXQncyBhIHF1aWNrIGJ1dCBjcnVjaWFsIHN0ZXAuIFRpbWUgdG8gZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njg3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTY6MzE6NDcuNDkwNjY0NTk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9sbGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIExMQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIExMQzJcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFx0c2VsZWN0IExMQ1xcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBUaGlzIGlzIGEgTG9naWNhbCBMaW5rIExheWVyIHR5cGUgMiwgY29ubmVjdGlvbiBvcmllbnRlZCBzdXBwb3J0LlxcbiAgMTA6XFx0XFx0ICBTZWxlY3QgdGhpcyBpZiB5b3Ugd2FudCB0byBoYXZlIHN1cHBvcnQgZm9yIFBGX0xMQyBzb2NrZXRzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNjozMTo0Ny40OTA3MjI3MDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzkxODg3OTE3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTExDMiBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGludG8gdGhpcyBhbmQgSSdtIHByZXR0eSBzdXJlIGBMTEMyYCBpcyB0aGUgb25seSBjb25maWcgSSBuZWVkIHRvIHdvcnJ5IGFib3V0LiBMZXQncyBzZWUsIHdoYXQgZWxzZSBjYW4gSSBmb2N1cyBvbj8gYGxsY19jb25uX2hhbmRsZXJgIGxvb2tzIGxpa2UgdGhlIGNvcmUgZnVuY3Rpb24gaGVyZSwgaXQgc2VlbXMgdG8gYmUgdGhlIG1haW4gY29ubmVjdGlvbiBoYW5kbGVyLiBMZXQgbWUgZG91YmxlLWNoZWNrIC0gYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgcmVsYXRlZCB0byBgbGxjX2JhY2tsb2dfcmN2YD8gQWgsIHllcywgaXQncyBjYWxsZWQgdGhyb3VnaCBgc2stXHUwMDNlc2tfYmFja2xvZ19yY3ZgLiBTbywgeWVhaCwgZm9jdXNpbmcgb24gYGxsY19jb25uX2hhbmRsZXJgIG1ha2VzIHRoZSBtb3N0IHNlbnNlLlxuXG5Ob3csIGEgcXVpY2sgdmVyaWZpY2F0aW9uLi4uIGlzIGBsbGNfY29ubl9oYW5kbGVyYCBhY3R1YWxseSBleHBvcnRlZCBvciByZWFjaGFibGU/IE9rYXksIGl0J3MgcmVnaXN0ZXJlZCB0aHJvdWdoIGBsbGNfYWRkX3BhY2soTExDX0RFU1RfQ09OTiwgbGxjX2Nvbm5faGFuZGxlcik7YCB3aXRoaW4gYGxsYzJfaW5pdGAuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgd2hlbiBMTEMyIHBhY2tldHMgY29tZSBpbi5cblxuVGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGFuIGlzc3VlIHdpdGggTExDIHNvY2tldHMsIHNwZWNpZmljYWxseSB3aGVuIHRoZXkgYXJlIGluIGBUQ1BfTElTVEVOYCBzdGF0ZS4gSXQncyBjcmVhdGluZyBhbiBpbmNvbWluZyBzb2NrZXQgYmFzZWQgb24gdGhlIHJlY2VpdmVkIHNrYiwgYW5kIGlmIHRoYXQgY3JlYXRpb24gZmFpbHMsIGl0IHNpbXBseSBkcm9wcyB0aGUgcGFja2V0LiBJdCBhbHNvIGhhbmRsZXMgU0FCTUUgY29tbWFuZHMgd2l0aCB0aGUgUC1iaXQgc2V0LCB3aGljaCBzb3VuZHMgbGlrZSBpdCBzZW5kcyBhIERNIHJlc3BvbnNlLiBUaGlzIGxvb2tzIGxpa2UgdmFsaWQsIGZ1bmN0aW9uYWwgbmV0d29ya2luZyBjb2RlLiBEZWZpbml0ZWx5IGZ1enphYmxlLlxuXG5TbyB0aGUga2V5IGZ1bmN0aW9uIHRvIHRhcmdldCBpcyBkZWZpbml0ZWx5IGBsbGNfY29ubl9oYW5kbGVyYC5cblxuUmVnYXJkaW5nIGNvbmZpZywgYExMQzJgIGlzIGl0LiBJdCBlbmFibGVzIHRoZSBgTExDYCBmZWF0dXJlLiBJIGRvbid0IHNlZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNTcsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNjozMTo1NS40MDk2MTcyN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDcxMjE3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTExDMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY19jb25uX2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBoYW5kbGVyIGFuZCBiYWNrbG9nIHJlY2VpdmUgbG9naWMgZm9yIExMQyB0eXBlIDIgc29ja2V0cywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zIG9uIGxpc3RlbmluZyBzb2NrZXRzIGFuZCBzZW5kaW5nIERNIHJlc3BvbnNlcy4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmtpbmcgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBQRl9MTEMgc29ja2V0cyBhbmQgcmVjZWl2aW5nIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTExDMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY19jb25uX2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBoYW5kbGVyIGFuZCBiYWNrbG9nIHJlY2VpdmUgbG9naWMgZm9yIExMQyB0eXBlIDIgc29ja2V0cywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zIG9uIGxpc3RlbmluZyBzb2NrZXRzIGFuZCBzZW5kaW5nIERNIHJlc3BvbnNlcy4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmtpbmcgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBQRl9MTEMgc29ja2V0cyBhbmQgcmVjZWl2aW5nIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb4md[1] Phase: Succeeded StartedAt: 2026-07-31 16:32:07 +0000 UTC FinishedAt: 2026-07-31 16:32:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 16:32:07 +0000 UTC FinishedAt: 2026-07-31 16:32:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2] Phase: Succeeded StartedAt: 2026-07-31 16:32:07 +0000 UTC FinishedAt: 2026-07-31 20:19:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 16:32:07 +0000 UTC FinishedAt: 2026-07-31 20:19:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 16:32:07 +0000 UTC FinishedAt: 2026-07-31 16:32:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 16:32:07 +0000 UTC FinishedAt: 2026-07-31 16:32:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxb4md/series-workflowxb4md-convert-artifact-2141131492/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 16:32:38 +0000 UTC FinishedAt: 2026-07-31 16:53:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 16:32:38 +0000 UTC FinishedAt: 2026-07-31 16:53:22 +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:*d14754ed-004b-4707-a790-9f7cd6abbab4,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-workflowxb4md/series-workflowxb4md-convert-artifact-2141131492/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": "180d530d-7580-40ed-97e4-dd7f0c8990f5", "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-workflowxb4md/series-workflowxb4md-build-action-2865410850/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 16:32:38 +0000 UTC FinishedAt: 2026-07-31 16:53:11 +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:*d14754ed-004b-4707-a790-9f7cd6abbab4,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-workflowxb4md/series-workflowxb4md-convert-artifact-2141131492/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": "180d530d-7580-40ed-97e4-dd7f0c8990f5", "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-workflowxb4md/series-workflowxb4md-build-action-2865410850/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 16:53:22 +0000 UTC FinishedAt: 2026-07-31 16:53:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 16:53:22 +0000 UTC FinishedAt: 2026-07-31 16:53:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 16:53:22 +0000 UTC FinishedAt: 2026-07-31 16:53:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 16:53:22 +0000 UTC FinishedAt: 2026-07-31 16:53:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxb4md/series-workflowxb4md-convert-artifact-3410334947/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 16:53:33 +0000 UTC FinishedAt: 2026-07-31 16:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 16:53:33 +0000 UTC FinishedAt: 2026-07-31 16:55:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*180d530d-7580-40ed-97e4-dd7f0c8990f5,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-workflowxb4md/series-workflowxb4md-build-action-2865410850/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-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 16:55:38 +0000 UTC FinishedAt: 2026-07-31 16:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 16:55:38 +0000 UTC FinishedAt: 2026-07-31 16:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 16:55:38 +0000 UTC FinishedAt: 2026-07-31 17:15:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 16:55:38 +0000 UTC FinishedAt: 2026-07-31 17:15:21 +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:*d14754ed-004b-4707-a790-9f7cd6abbab4,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-workflowxb4md/series-workflowxb4md-convert-artifact-3410334947/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": "c2ee9327-1fa7-4c0f-927c-7a1ecef2c5bd", "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-workflowxb4md/series-workflowxb4md-build-action-1499128215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 16:55:38 +0000 UTC FinishedAt: 2026-07-31 17:15:11 +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:*d14754ed-004b-4707-a790-9f7cd6abbab4,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-workflowxb4md/series-workflowxb4md-convert-artifact-3410334947/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": "c2ee9327-1fa7-4c0f-927c-7a1ecef2c5bd", "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-workflowxb4md/series-workflowxb4md-build-action-1499128215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 17:15:21 +0000 UTC FinishedAt: 2026-07-31 17:15:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 17:15:21 +0000 UTC FinishedAt: 2026-07-31 17:15:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 17:15:21 +0000 UTC FinishedAt: 2026-07-31 17:17:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 17:15:21 +0000 UTC FinishedAt: 2026-07-31 17:16:59 +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:*c2ee9327-1fa7-4c0f-927c-7a1ecef2c5bd,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-workflowxb4md/series-workflowxb4md-build-action-1499128215/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-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 17:17:08 +0000 UTC FinishedAt: 2026-07-31 20:19:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 17:17:08 +0000 UTC FinishedAt: 2026-07-31 20:19:35 +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":["llc_conn_handler"],"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:*180d530d-7580-40ed-97e4-dd7f0c8990f5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c2ee9327-1fa7-4c0f-927c-7a1ecef2c5bd,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-workflowxb4md/series-workflowxb4md-build-action-2865410850/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-workflowxb4md/series-workflowxb4md-build-action-1499128215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 17:17:08 +0000 UTC FinishedAt: 2026-07-31 17:17:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 17:17:08 +0000 UTC FinishedAt: 2026-07-31 17:17:14 +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":["llc_conn_handler"],"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-workflowxb4md/series-workflowxb4md-convert-artifact-764944124/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 17:17:08 +0000 UTC FinishedAt: 2026-07-31 17:17:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 17:17:08 +0000 UTC FinishedAt: 2026-07-31 17:17:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 17:17:08 +0000 UTC FinishedAt: 2026-07-31 17:17:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 17:17:18 +0000 UTC FinishedAt: 2026-07-31 20:19:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb4md[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"cd35a9e5-c26f-47c1-8fde-1c2a9dd93249","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 17:17:18 +0000 UTC FinishedAt: 2026-07-31 20:19:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*180d530d-7580-40ed-97e4-dd7f0c8990f5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c2ee9327-1fa7-4c0f-927c-7a1ecef2c5bd,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-workflowxb4md/series-workflowxb4md-build-action-2865410850/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-workflowxb4md/series-workflowxb4md-build-action-1499128215/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-workflowxb4md/series-workflowxb4md-convert-artifact-764944124/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,}