Name: series-workflowbgpq5 Phase: Succeeded StartedAt: 2026-07-27 00:31:10 +0000 UTC FinishedAt: 2026-07-27 05:57:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[0] Phase: Succeeded StartedAt: 2026-07-27 00:31:10 +0000 UTC FinishedAt: 2026-07-27 00:50:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 00:31:10 +0000 UTC FinishedAt: 2026-07-27 00:50:43 +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": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "a3b7d35d-4f63-4f02-af13-7a642b8714ef" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "packet_sendmsg", "packet_sendmsg_spkt", "packet_snd", "tpacket_snd" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnX3Nwa3QmIzM0OywKICAgICYjMzQ7cGFja2V0X3NuZCYjMzQ7LAogICAgJiMzNDt0cGFja2V0X3NuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGluIEFGX1BBQ0tFVCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIGJ5IHVzaW5nIFJFQURfT05DRSBmb3IgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiBhbmQgZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbS4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgaXNzdWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjg0YzhkNTc2OWVlY2QyNzEyMmE1MGE5MTc2OGJlOWM0YzYxODRiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDAwOjQ5OjU4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5pbmRleCBlNzVkMjkzMjQ3NWFjMC4uZDIzODk4ZjI0NjQxNjEgMTAwNjQ0XG4tLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5AQCAtMTk1Myw2ICYjNDM7MTk1Myw3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIFx0c3RydWN0IHNvY2tjbV9jb29raWUgc29ja2M7XG4gXHRfX2JlMTYgcHJvdG8gPSAwO1xuJiM0MztcdHVuc2lnbmVkIGludCBoYXJkX2hlYWRlcl9sZW4gPSAwO1xuIFx0aW50IGVycjtcbiBcdGludCBleHRyYV9sZW4gPSAwO1xuIFxuQEAgLTE5OTYsMTUgJiM0MzsxOTk3LDIxIEBAIHN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHRcdH1cbiBcdFx0ZXh0cmFfbGVuID0gNDsgLyogV2UmIzM5O3JlIGRvaW5nIG91ciBvd24gQ1JDICovXG4gXHR9XG4mIzQzO1x0aWYgKCFza2IpXG4mIzQzO1x0XHRoYXJkX2hlYWRlcl9sZW4gPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4gXG4gXHRlcnIgPSAtRU1TR1NJWkU7XG4tXHRpZiAobGVuIFx1MDAzZSBkZXYtXHUwMDNlbXR1ICYjNDM7IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gJiM0MzsgVkxBTl9ITEVOICYjNDM7IGV4dHJhX2xlbilcbiYjNDM7XHRpZiAobGVuIFx1MDAzZSBkZXYtXHUwMDNlbXR1ICYjNDM7IGhhcmRfaGVhZGVyX2xlbiAmIzQzOyBWTEFOX0hMRU4gJiM0MzsgZXh0cmFfbGVuKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4gXHRpZiAoIXNrYikge1xuLVx0XHRzaXplX3QgcmVzZXJ2ZWQgPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuJiM0MztcdFx0c2l6ZV90IHJlc2VydmVkO1xuIFx0XHRpbnQgdGxlbiA9IGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207XG4tXHRcdHVuc2lnbmVkIGludCBoaGxlbiA9IGRldi1cdTAwM2VoZWFkZXJfb3BzID8gZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiA6IDA7XG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgaGhsZW4gPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWhlYWRlcl9vcHMpID9cbiYjNDM7XHRcdFx0XHQgICAgIGhhcmRfaGVhZGVyX2xlbiA6IDA7XG4mIzQzO1xuJiM0MztcdFx0cmVzZXJ2ZWQgPSAoKGhhcmRfaGVhZGVyX2xlbiAmIzQzOyBSRUFEX09OQ0UoZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSkpIFx1MDAyNlxuJiM0MztcdFx0XHQgICAgfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDtcbiBcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRcdHNrYiA9IHNvY2tfd21hbGxvYyhzaywgbGVuICYjNDM7IHJlc2VydmVkICYjNDM7IHRsZW4sIDAsIEdGUF9LRVJORUwpO1xuQEAgLTI1NjksNiAmIzQzOzI1NzYsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCAqbGVuLFxuIHN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR2b2lkICpmcmFtZSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgaW50IHRwX2xlbixcbiBcdFx0X19iZTE2IHByb3RvLCB1bnNpZ25lZCBjaGFyICphZGRyLCBpbnQgaGxlbiwgaW50IGNvcHlsZW4sXG4mIzQzO1x0XHRpbnQgaGFyZF9oZWFkZXJfbGVuLFxuIFx0XHRjb25zdCBzdHJ1Y3Qgc29ja2NtX2Nvb2tpZSAqc29ja2MpXG4ge1xuIFx0dW5pb24gdHBhY2tldF91aGRyIHBoO1xuQEAgLTI2MDAsOCAmIzQzOzI2MDgsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdH0gZWxzZSBpZiAoY29weWxlbikge1xuIFx0XHRpbnQgaGRybGVuID0gbWluX3QoaW50LCBjb3B5bGVuLCB0cF9sZW4pO1xuIFxuLVx0XHRza2JfcHVzaChza2IsIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuLVx0XHRza2JfcHV0KHNrYiwgY29weWxlbiAtIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuJiM0MztcdFx0c2tiX3B1c2goc2tiLCBoYXJkX2hlYWRlcl9sZW4pO1xuJiM0MztcdFx0c2tiX3B1dChza2IsIGNvcHlsZW4gLSBoYXJkX2hlYWRlcl9sZW4pO1xuIFx0XHRlcnIgPSBza2Jfc3RvcmVfYml0cyhza2IsIDAsIGRhdGEsIGhkcmxlbik7XG4gXHRcdGlmICh1bmxpa2VseShlcnIpKVxuIFx0XHRcdHJldHVybiBlcnI7XG5AQCAtMjczMiw3ICYjNDM7Mjc0MCw3IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxuIFx0dm9pZCAqZGF0YTtcbiBcdGludCBsZW5fc3VtID0gMDtcbiBcdGludCBzdGF0dXMgPSBUUF9TVEFUVVNfQVZBSUxBQkxFO1xuLVx0aW50IGhsZW4sIHRsZW4sIGNvcHlsZW4gPSAwO1xuJiM0MztcdGludCBoYXJkX2hlYWRlcl9sZW4gPSAwLCBobGVuLCB0bGVuLCBjb3B5bGVuID0gMDtcbiBcdGxvbmcgdGltZW87XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBvLVx1MDAzZXBnX3ZlY19sb2NrKTtcbkBAIC0yNzc5LDggJiM0MzsyNzg3LDEwIEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxuIFx0XHRcdGdvdG8gb3V0X3B1dDtcbiBcdH1cbiBcbi1cdGlmIChwby1cdTAwM2Vzay5za19zb2NrZXQtXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcbi1cdFx0cmVzZXJ2ZSA9IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4mIzQzO1x0aWYgKHBvLVx1MDAzZXNrLnNrX3NvY2tldC1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XG4mIzQzO1x0XHRoYXJkX2hlYWRlcl9sZW4gPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4mIzQzO1x0XHRyZXNlcnZlID0gaGFyZF9oZWFkZXJfbGVuO1xuJiM0MztcdH1cbiBcdHNpemVfbWF4ID0gcG8tXHUwMDNldHhfcmluZy5mcmFtZV9zaXplXG4gXHRcdC0gKHBvLVx1MDAzZXRwX2hkcmxlbiAtIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbGwpKTtcbiBcbkBAIC0yODE3LDcgJiM0MzsyODI3LDEyIEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxuIFx0XHRcdGdvdG8gdHBhY2tldF9lcnJvcjtcbiBcbiBcdFx0c3RhdHVzID0gVFBfU1RBVFVTX1NFTkRfUkVRVUVTVDtcbi1cdFx0aGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XG4mIzQzO1x0XHRpZiAocG8tXHUwMDNlc2suc2tfc29ja2V0LVx1MDAzZXR5cGUgPT0gU09DS19SQVcpXG4mIzQzO1x0XHRcdGhsZW4gPSAoKGhhcmRfaGVhZGVyX2xlbiAmIzQzO1xuJiM0MztcdFx0XHRcdCBSRUFEX09OQ0UoZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSkpIFx1MDAyNlxuJiM0MztcdFx0XHRcdH4oSEhfREFUQV9NT0QgLSAxKSkgJiM0MzsgSEhfREFUQV9NT0Q7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuIFx0XHR0bGVuID0gZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdFx0aWYgKHZuZXRfaGRyX3N6KSB7XG4gXHRcdFx0ZGF0YSAmIzQzOz0gdm5ldF9oZHJfc3o7XG5AQCAtMjgzNSwxMCAmIzQzOzI4NTAsMTQgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG4gXHRcdFx0XHRcdFx0ICAgIHZuZXRfaGRyLmhkcl9sZW4pO1xuIFx0XHRcdGhhc192bmV0X2hkciA9IHRydWU7XG4gXHRcdH1cbi1cdFx0Y29weWxlbiA9IG1heF90KGludCwgY29weWxlbiwgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4mIzQzO1x0XHRpZiAocG8tXHUwMDNlc2suc2tfc29ja2V0LVx1MDAzZXR5cGUgPT0gU09DS19SQVcpXG4mIzQzO1x0XHRcdGNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGhhcmRfaGVhZGVyX2xlbik7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuIFx0XHRza2IgPSBzb2NrX2FsbG9jX3NlbmRfc2tiKFx1MDAyNnBvLVx1MDAzZXNrLFxuIFx0XHRcdFx0aGxlbiAmIzQzOyB0bGVuICYjNDM7IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbGwpICYjNDM7XG4tXHRcdFx0XHQoY29weWxlbiAtIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pLFxuJiM0MztcdFx0XHRcdChjb3B5bGVuIC0gKHBvLVx1MDAzZXNrLnNrX3NvY2tldC1cdTAwM2V0eXBlID09IFNPQ0tfUkFXID9cbiYjNDM7XHRcdFx0XHQgaGFyZF9oZWFkZXJfbGVuIDogZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbikpLFxuIFx0XHRcdFx0IW5lZWRfd2FpdCwgXHUwMDI2ZXJyKTtcbiBcbiBcdFx0aWYgKHVubGlrZWx5KHNrYiA9PSBOVUxMKSkge1xuQEAgLTI4NDgsNyAmIzQzOzI4NjcsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcbiBcdFx0XHRnb3RvIG91dF9zdGF0dXM7XG4gXHRcdH1cbiBcdFx0dHBfbGVuID0gdHBhY2tldF9maWxsX3NrYihwbywgc2tiLCBwaCwgZGV2LCBkYXRhLCB0cF9sZW4sIHByb3RvLFxuLVx0XHRcdFx0XHQgIGFkZHIsIGhsZW4sIGNvcHlsZW4sIFx1MDAyNnNvY2tjKTtcbiYjNDM7XHRcdFx0XHRcdCAgYWRkciwgaGxlbiwgY29weWxlbiwgaGFyZF9oZWFkZXJfbGVuLFxuJiM0MztcdFx0XHRcdFx0ICBcdTAwMjZzb2NrYyk7XG4gXHRcdGlmIChsaWtlbHkodHBfbGVuIFx1MDAzZT0gMCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICB0cF9sZW4gXHUwMDNlIGRldi1cdTAwM2VtdHUgJiM0MzsgcmVzZXJ2ZSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICF2bmV0X2hkcl9zeiBcdTAwMjZcdTAwMjZcbkBAIC0yOTU2LDcgJiM0MzsyOTc2LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbiBcdGludCBvZmZzZXQgPSAwO1xuIFx0c3RydWN0IHBhY2tldF9zb2NrICpwbyA9IHBrdF9zayhzayk7XG4gXHRpbnQgdm5ldF9oZHJfc3ogPSBSRUFEX09OQ0UocG8tXHUwMDNldm5ldF9oZHJfc3opO1xuLVx0aW50IGhsZW4sIHRsZW4sIGxpbmVhcjtcbiYjNDM7XHRpbnQgaGFyZF9oZWFkZXJfbGVuID0gMCwgaGxlbiwgdGxlbiwgbGluZWFyO1xuIFx0aW50IGV4dHJhX2xlbiA9IDA7XG4gXG4gXHQvKlxuQEAgLTI5OTYsMTQgJiM0MzszMDE2LDE3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NuZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4gXHRcdFx0Z290byBvdXRfdW5sb2NrO1xuIFx0fVxuIFxuLVx0aWYgKHNvY2stXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcbi1cdFx0cmVzZXJ2ZSA9IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4gXHRpZiAodm5ldF9oZHJfc3opIHtcbiBcdFx0ZXJyID0gcGFja2V0X3NuZF92bmV0X3BhcnNlKG1zZywgXHUwMDI2bGVuLCBcdTAwMjZ2bmV0X2hkciwgdm5ldF9oZHJfc3opO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbiBcdH1cbiBcbiYjNDM7XHRpZiAoc29jay1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XG4mIzQzO1x0XHRoYXJkX2hlYWRlcl9sZW4gPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4mIzQzO1x0XHRyZXNlcnZlID0gaGFyZF9oZWFkZXJfbGVuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAodW5saWtlbHkoc29ja19mbGFnKHNrLCBTT0NLX05PRkNTKSkpIHtcbiBcdFx0aWYgKCFuZXRpZl9zdXBwb3J0c19ub2ZjcyhkZXYpKSB7XG4gXHRcdFx0ZXJyID0gLUVQUk9UT05PU1VQUE9SVDtcbkBAIC0zMDE4LDEwICYjNDM7MzA0MSwxNSBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4gXHRlcnIgPSAtRU5PQlVGUztcbi1cdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuJiM0MztcdGlmIChzb2NrLVx1MDAzZXR5cGUgPT0gU09DS19SQVcpXG4mIzQzO1x0XHRobGVuID0gKChoYXJkX2hlYWRlcl9sZW4gJiM0MzsgUkVBRF9PTkNFKGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcdTAwMjZcbiYjNDM7XHRcdFx0fihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcbiBcdHRsZW4gPSBkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xuIFx0bGluZWFyID0gX192aXJ0aW8xNl90b19jcHUodmlvX2xlKCksIHZuZXRfaGRyLmhkcl9sZW4pO1xuLVx0bGluZWFyID0gbWF4KGxpbmVhciwgbWluX3QoaW50LCBsZW4sIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pKTtcbiYjNDM7XHRsaW5lYXIgPSBtYXgobGluZWFyLCBtaW5fdChpbnQsIGxlbiwgc29jay1cdTAwM2V0eXBlID09IFNPQ0tfUkFXID9cbiYjNDM7XHRcdFx0XHRcdCBoYXJkX2hlYWRlcl9sZW4gOiBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSk7XG4gXHRza2IgPSBwYWNrZXRfYWxsb2Nfc2tiKHNrLCBobGVuICYjNDM7IHRsZW4sIGhsZW4sIGxlbiwgbGluZWFyLFxuIFx0XHRcdCAgICAgICBtc2ctXHUwMDNlbXNnX2ZsYWdzIFx1MDAyNiBNU0dfRE9OVFdBSVQsIFx1MDAyNmVycik7XG4gXHRpZiAoc2tiID09IE5VTEwpXG5AQCAtMzAzNyw3ICYjNDM7MzA2NSw3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NuZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4gXHR9IGVsc2UgaWYgKHJlc2VydmUpIHtcbiBcdFx0c2tiX3Jlc2VydmUoc2tiLCAtcmVzZXJ2ZSk7XG4gXHRcdGlmIChsZW4gXHUwMDNjIHJlc2VydmUgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIGRldi1cdTAwM2VtaW5faGVhZGVyX2xlbiAhPSBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKVxuJiM0MztcdFx0ICAgIGRldi1cdTAwM2VtaW5faGVhZGVyX2xlbiAhPSBoYXJkX2hlYWRlcl9sZW4pXG4gXHRcdFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnX3Nwa3QmIzM0OywKICAgICYjMzQ7cGFja2V0X3NuZCYjMzQ7LAogICAgJiMzNDt0cGFja2V0X3NuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGluIEFGX1BBQ0tFVCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIGJ5IHVzaW5nIFJFQURfT05DRSBmb3IgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiBhbmQgZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbS4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgaXNzdWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjg0YzhkNTc2OWVlY2QyNzEyMmE1MGE5MTc2OGJlOWM0YzYxODRiMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDAwOjQ5OjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKaW5kZXggZTc1ZDI5MzI0NzVhYzAuLmQyMzg5OGYyNDY0MTYxIDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTE5NTMsNiAmIzQzOzE5NTMsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAJc3RydWN0IHNvY2tjbV9jb29raWUgc29ja2M7CiAJX19iZTE2IHByb3RvID0gMDsKJiM0MzsJdW5zaWduZWQgaW50IGhhcmRfaGVhZGVyX2xlbiA9IDA7CiAJaW50IGVycjsKIAlpbnQgZXh0cmFfbGVuID0gMDsKIApAQCAtMTk5NiwxNSAmIzQzOzE5OTcsMjEgQEAgc3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywKIAkJfQogCQlleHRyYV9sZW4gPSA0OyAvKiBXZSYjMzk7cmUgZG9pbmcgb3VyIG93biBDUkMgKi8KIAl9CiYjNDM7CWlmICghc2tiKQomIzQzOwkJaGFyZF9oZWFkZXJfbGVuID0gUkVBRF9PTkNFKGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKIAogCWVyciA9IC1FTVNHU0laRTsKLQlpZiAobGVuICZndDsgZGV2LSZndDttdHUgJiM0MzsgZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gJiM0MzsgVkxBTl9ITEVOICYjNDM7IGV4dHJhX2xlbikKJiM0MzsJaWYgKGxlbiAmZ3Q7IGRldi0mZ3Q7bXR1ICYjNDM7IGhhcmRfaGVhZGVyX2xlbiAmIzQzOyBWTEFOX0hMRU4gJiM0MzsgZXh0cmFfbGVuKQogCQlnb3RvIG91dF91bmxvY2s7CiAKIAlpZiAoIXNrYikgewotCQlzaXplX3QgcmVzZXJ2ZWQgPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpOwomIzQzOwkJc2l6ZV90IHJlc2VydmVkOwogCQlpbnQgdGxlbiA9IGRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tOwotCQl1bnNpZ25lZCBpbnQgaGhsZW4gPSBkZXYtJmd0O2hlYWRlcl9vcHMgPyBkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbiA6IDA7CiYjNDM7CQl1bnNpZ25lZCBpbnQgaGhsZW4gPSBSRUFEX09OQ0UoZGV2LSZndDtoZWFkZXJfb3BzKSA/CiYjNDM7CQkJCSAgICAgaGFyZF9oZWFkZXJfbGVuIDogMDsKJiM0MzsKJiM0MzsJCXJlc2VydmVkID0gKChoYXJkX2hlYWRlcl9sZW4gJiM0MzsgUkVBRF9PTkNFKGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tKSkgJmFtcDsKJiM0MzsJCQkgICAgfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDsKIAogCQlyY3VfcmVhZF91bmxvY2soKTsKIAkJc2tiID0gc29ja193bWFsbG9jKHNrLCBsZW4gJiM0MzsgcmVzZXJ2ZWQgJiM0MzsgdGxlbiwgMCwgR0ZQX0tFUk5FTCk7CkBAIC0yNTY5LDYgJiM0MzsyNTc2LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kX3ZuZXRfcGFyc2Uoc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgKmxlbiwKIHN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQl2b2lkICpmcmFtZSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgaW50IHRwX2xlbiwKIAkJX19iZTE2IHByb3RvLCB1bnNpZ25lZCBjaGFyICphZGRyLCBpbnQgaGxlbiwgaW50IGNvcHlsZW4sCiYjNDM7CQlpbnQgaGFyZF9oZWFkZXJfbGVuLAogCQljb25zdCBzdHJ1Y3Qgc29ja2NtX2Nvb2tpZSAqc29ja2MpCiB7CiAJdW5pb24gdHBhY2tldF91aGRyIHBoOwpAQCAtMjYwMCw4ICYjNDM7MjYwOCw4IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCX0gZWxzZSBpZiAoY29weWxlbikgewogCQlpbnQgaGRybGVuID0gbWluX3QoaW50LCBjb3B5bGVuLCB0cF9sZW4pOwogCi0JCXNrYl9wdXNoKHNrYiwgZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pOwotCQlza2JfcHV0KHNrYiwgY29weWxlbiAtIGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsJCXNrYl9wdXNoKHNrYiwgaGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsJCXNrYl9wdXQoc2tiLCBjb3B5bGVuIC0gaGFyZF9oZWFkZXJfbGVuKTsKIAkJZXJyID0gc2tiX3N0b3JlX2JpdHMoc2tiLCAwLCBkYXRhLCBoZHJsZW4pOwogCQlpZiAodW5saWtlbHkoZXJyKSkKIAkJCXJldHVybiBlcnI7CkBAIC0yNzMyLDcgJiM0MzsyNzQwLDcgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpCiAJdm9pZCAqZGF0YTsKIAlpbnQgbGVuX3N1bSA9IDA7CiAJaW50IHN0YXR1cyA9IFRQX1NUQVRVU19BVkFJTEFCTEU7Ci0JaW50IGhsZW4sIHRsZW4sIGNvcHlsZW4gPSAwOwomIzQzOwlpbnQgaGFyZF9oZWFkZXJfbGVuID0gMCwgaGxlbiwgdGxlbiwgY29weWxlbiA9IDA7CiAJbG9uZyB0aW1lbzsKIAogCW11dGV4X2xvY2soJmFtcDtwby0mZ3Q7cGdfdmVjX2xvY2spOwpAQCAtMjc3OSw4ICYjNDM7Mjc4NywxMCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZykKIAkJCWdvdG8gb3V0X3B1dDsKIAl9CiAKLQlpZiAocG8tJmd0O3NrLnNrX3NvY2tldC0mZ3Q7dHlwZSA9PSBTT0NLX1JBVykKLQkJcmVzZXJ2ZSA9IGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuOwomIzQzOwlpZiAocG8tJmd0O3NrLnNrX3NvY2tldC0mZ3Q7dHlwZSA9PSBTT0NLX1JBVykgewomIzQzOwkJaGFyZF9oZWFkZXJfbGVuID0gUkVBRF9PTkNFKGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsJCXJlc2VydmUgPSBoYXJkX2hlYWRlcl9sZW47CiYjNDM7CX0KIAlzaXplX21heCA9IHBvLSZndDt0eF9yaW5nLmZyYW1lX3NpemUKIAkJLSAocG8tJmd0O3RwX2hkcmxlbiAtIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbGwpKTsKIApAQCAtMjgxNyw3ICYjNDM7MjgyNywxMiBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZykKIAkJCWdvdG8gdHBhY2tldF9lcnJvcjsKIAogCQlzdGF0dXMgPSBUUF9TVEFUVVNfU0VORF9SRVFVRVNUOwotCQlobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTsKJiM0MzsJCWlmIChwby0mZ3Q7c2suc2tfc29ja2V0LSZndDt0eXBlID09IFNPQ0tfUkFXKQomIzQzOwkJCWhsZW4gPSAoKGhhcmRfaGVhZGVyX2xlbiAmIzQzOwomIzQzOwkJCQkgUkVBRF9PTkNFKGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tKSkgJmFtcDsKJiM0MzsJCQkJfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDsKJiM0MzsJCWVsc2UKJiM0MzsJCQlobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTsKIAkJdGxlbiA9IGRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tOwogCQlpZiAodm5ldF9oZHJfc3opIHsKIAkJCWRhdGEgJiM0Mzs9IHZuZXRfaGRyX3N6OwpAQCAtMjgzNSwxMCAmIzQzOzI4NTAsMTQgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpCiAJCQkJCQkgICAgdm5ldF9oZHIuaGRyX2xlbik7CiAJCQloYXNfdm5ldF9oZHIgPSB0cnVlOwogCQl9Ci0JCWNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsJCWlmIChwby0mZ3Q7c2suc2tfc29ja2V0LSZndDt0eXBlID09IFNPQ0tfUkFXKQomIzQzOwkJCWNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGhhcmRfaGVhZGVyX2xlbik7CiYjNDM7CQllbHNlCiYjNDM7CQkJY29weWxlbiA9IG1heF90KGludCwgY29weWxlbiwgZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pOwogCQlza2IgPSBzb2NrX2FsbG9jX3NlbmRfc2tiKCZhbXA7cG8tJmd0O3NrLAogCQkJCWhsZW4gJiM0MzsgdGxlbiAmIzQzOyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2xsKSAmIzQzOwotCQkJCShjb3B5bGVuIC0gZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pLAomIzQzOwkJCQkoY29weWxlbiAtIChwby0mZ3Q7c2suc2tfc29ja2V0LSZndDt0eXBlID09IFNPQ0tfUkFXID8KJiM0MzsJCQkJIGhhcmRfaGVhZGVyX2xlbiA6IGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKSksCiAJCQkJIW5lZWRfd2FpdCwgJmFtcDtlcnIpOwogCiAJCWlmICh1bmxpa2VseShza2IgPT0gTlVMTCkpIHsKQEAgLTI4NDgsNyAmIzQzOzI4NjcsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZykKIAkJCWdvdG8gb3V0X3N0YXR1czsKIAkJfQogCQl0cF9sZW4gPSB0cGFja2V0X2ZpbGxfc2tiKHBvLCBza2IsIHBoLCBkZXYsIGRhdGEsIHRwX2xlbiwgcHJvdG8sCi0JCQkJCSAgYWRkciwgaGxlbiwgY29weWxlbiwgJmFtcDtzb2NrYyk7CiYjNDM7CQkJCQkgIGFkZHIsIGhsZW4sIGNvcHlsZW4sIGhhcmRfaGVhZGVyX2xlbiwKJiM0MzsJCQkJCSAgJmFtcDtzb2NrYyk7CiAJCWlmIChsaWtlbHkodHBfbGVuICZndDs9IDApICZhbXA7JmFtcDsKIAkJICAgIHRwX2xlbiAmZ3Q7IGRldi0mZ3Q7bXR1ICYjNDM7IHJlc2VydmUgJmFtcDsmYW1wOwogCQkgICAgIXZuZXRfaGRyX3N6ICZhbXA7JmFtcDsKQEAgLTI5NTYsNyAmIzQzOzI5NzYsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKQogCWludCBvZmZzZXQgPSAwOwogCXN0cnVjdCBwYWNrZXRfc29jayAqcG8gPSBwa3Rfc2soc2spOwogCWludCB2bmV0X2hkcl9zeiA9IFJFQURfT05DRShwby0mZ3Q7dm5ldF9oZHJfc3opOwotCWludCBobGVuLCB0bGVuLCBsaW5lYXI7CiYjNDM7CWludCBoYXJkX2hlYWRlcl9sZW4gPSAwLCBobGVuLCB0bGVuLCBsaW5lYXI7CiAJaW50IGV4dHJhX2xlbiA9IDA7CiAKIAkvKgpAQCAtMjk5NiwxNCAmIzQzOzMwMTYsMTcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAkJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAKLQlpZiAoc29jay0mZ3Q7dHlwZSA9PSBTT0NLX1JBVykKLQkJcmVzZXJ2ZSA9IGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuOwogCWlmICh2bmV0X2hkcl9zeikgewogCQllcnIgPSBwYWNrZXRfc25kX3ZuZXRfcGFyc2UobXNnLCAmYW1wO2xlbiwgJmFtcDt2bmV0X2hkciwgdm5ldF9oZHJfc3opOwogCQlpZiAoZXJyKQogCQkJZ290byBvdXRfdW5sb2NrOwogCX0KIAomIzQzOwlpZiAoc29jay0mZ3Q7dHlwZSA9PSBTT0NLX1JBVykgewomIzQzOwkJaGFyZF9oZWFkZXJfbGVuID0gUkVBRF9PTkNFKGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsJCXJlc2VydmUgPSBoYXJkX2hlYWRlcl9sZW47CiYjNDM7CX0KJiM0MzsKIAlpZiAodW5saWtlbHkoc29ja19mbGFnKHNrLCBTT0NLX05PRkNTKSkpIHsKIAkJaWYgKCFuZXRpZl9zdXBwb3J0c19ub2ZjcyhkZXYpKSB7CiAJCQllcnIgPSAtRVBST1RPTk9TVVBQT1JUOwpAQCAtMzAxOCwxMCAmIzQzOzMwNDEsMTUgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAkJZ290byBvdXRfdW5sb2NrOwogCiAJZXJyID0gLUVOT0JVRlM7Ci0JaGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7CiYjNDM7CWlmIChzb2NrLSZndDt0eXBlID09IFNPQ0tfUkFXKQomIzQzOwkJaGxlbiA9ICgoaGFyZF9oZWFkZXJfbGVuICYjNDM7IFJFQURfT05DRShkZXYtJmd0O25lZWRlZF9oZWFkcm9vbSkpICZhbXA7CiYjNDM7CQkJfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDsKJiM0MzsJZWxzZQomIzQzOwkJaGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7CiAJdGxlbiA9IGRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tOwogCWxpbmVhciA9IF9fdmlydGlvMTZfdG9fY3B1KHZpb19sZSgpLCB2bmV0X2hkci5oZHJfbGVuKTsKLQlsaW5lYXIgPSBtYXgobGluZWFyLCBtaW5fdChpbnQsIGxlbiwgZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pKTsKJiM0MzsJbGluZWFyID0gbWF4KGxpbmVhciwgbWluX3QoaW50LCBsZW4sIHNvY2stJmd0O3R5cGUgPT0gU09DS19SQVcgPwomIzQzOwkJCQkJIGhhcmRfaGVhZGVyX2xlbiA6IGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKSk7CiAJc2tiID0gcGFja2V0X2FsbG9jX3NrYihzaywgaGxlbiAmIzQzOyB0bGVuLCBobGVuLCBsZW4sIGxpbmVhciwKIAkJCSAgICAgICBtc2ctJmd0O21zZ19mbGFncyAmYW1wOyBNU0dfRE9OVFdBSVQsICZhbXA7ZXJyKTsKIAlpZiAoc2tiID09IE5VTEwpCkBAIC0zMDM3LDcgJiM0MzszMDY1LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAl9IGVsc2UgaWYgKHJlc2VydmUpIHsKIAkJc2tiX3Jlc2VydmUoc2tiLCAtcmVzZXJ2ZSk7CiAJCWlmIChsZW4gJmx0OyByZXNlcnZlICYjNDM7IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJmFtcDsmYW1wOwotCQkgICAgZGV2LSZndDttaW5faGVhZGVyX2xlbiAhPSBkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbikKJiM0MzsJCSAgICBkZXYtJmd0O21pbl9oZWFkZXJfbGVuICE9IGhhcmRfaGVhZGVyX2xlbikKIAkJCXNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihza2IpOwogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTQ4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmtpbmcgUGF0Y2ggZm9yIFJvYnVzdG5lc3MgYW5kIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYC4gSXQgc2VlbXMgdGhleSYjMzk7cmUgbWFraW5nIGEgcHJldHR5IGZ1bmRhbWVudGFsIGNoYW5nZSDigJMgYWx0ZXJpbmcgaG93IGBoYXJkX2hlYWRlcl9sZW5gIGlzIGhhbmRsZWQgaW4gdGhlc2UgY3JpdGljYWwgZnVuY3Rpb25zOiBgcGFja2V0X3NlbmRtc2dfc3BrdGAsIGB0cGFja2V0X2ZpbGxfc2tiYCwgYHRwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc25kYC4gVGhlIGNvcmUgaWRlYSBpcyB0byB1c2UgYFJFQURfT05DRWAgb24gYGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuYCBhbmQgc3RvcmUgaXQgaW4gYSBsb2NhbCB2YXJpYWJsZS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgbW92ZSB0byBhdm9pZCBwb3RlbnRpYWwgZGF0YSByYWNlcyBvciBUaW1lLW9mLUNoZWNrLXRvLVRpbWUtb2YtVXNlIChUT0NUT1UpIHZ1bG5lcmFiaWxpdGllcywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSBwYXJhbWV0ZXJzIHRoYXQgY291bGQgY2hhbmdlIGNvbmN1cnJlbnRseS4gU21hcnQuIFRoZXkmIzM5O3JlIGFsc28gYWRqdXN0aW5nIGhvdyBgaGxlbmAgYW5kIGBjb3B5bGVuYCBhcmUgZGVyaXZlZCwgbGV2ZXJhZ2luZyB0aGUgYGhhcmRfaGVhZGVyX2xlbmAgYW5kIGBSRUFEX09OQ0UoZGV2LSZndDtuZWVkZWRfaGVhZHJvb20pYC4KClRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzZXJpb3VzIGF0dGVudGlvbi4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgY29kZSwgZGVhbGluZyB3aXRoIEFGX1BBQ0tFVCBzb2NrZXRzLiBUaGUgcGF0Y2ggaXMgY2xlYXJseSBhZGRyZXNzaW5nIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHBhY2tldCBjb3JydXB0aW9uIG9yIGV2ZW4gc2VjdXJpdHkgcHJvYmxlbXMuIEkgc2VlIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcy4gVGhpcyBuZWVkcyB0byBiZSBmdXp6ZWQsIGltbWVkaWF0ZWx5LiBUaGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yLCBwYXJ0aWN1bGFybHkgaW4gaGlnaC1sb2FkIHNpdHVhdGlvbnMsIGlzIGhpZ2guCgpMZXQgbWUgcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgZm9yIGZvY3VzZWQgZnV6emluZzogYHBhY2tldF9zZW5kbXNnX3Nwa3RgLCBgdHBhY2tldF9maWxsX3NrYmAsIGB0cGFja2V0X3NuZGAsIGFuZCBgcGFja2V0X3NuZGAuCgpXYWl0IGEgbWludXRlLCBgcGFja2V0X3NlbmRtc2dfc3BrdGAgaXMgc3RhdGljISBJJiMzOTtkIGJldHRlciBjb25maXJtIGl0JiMzOTtzIGFjdHVhbGx5IGV4cG9zZWQuIFRpbWUgdG8gZ28gYmFjayBhbmQgY2hlY2sgdGhlIGNvZGUuIFl1cCwgaXQmIzM5O3MgdGhlIGBzZW5kbXNnYCBoYW5kbGVyIGZvciBgU09DS19QQUNLRVRgIOKAkyB0aGUgb2xkIHBhY2tldCBzb2NrZXQgdHlwZS4gYHBhY2tldF9zbmRgIGhhbmRsZXMgYFNPQ0tfUkFXYCBhbmQgYFNPQ0tfREdSQU1gLCBhbmQgYHRwYWNrZXRfc25kYCBpcyByZWxhdGVkIHRvIFRYX1JJTkcgZm9yIG1lbW9yeS1tYXBwZWQgc29ja2V0cy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBwcm90b19vcHNgIGRlZmluaXRpb25zIGZvciB0aGVzZSBzb2NrZXQgdHlwZXMgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWNrZXRfc2VuZG1zZ19zcGt0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5MjM9c3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5NDc6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0OC1cdFx0XHQgICAgICAgc2l6ZV90IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ2Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wc19zcGt0ID0ge1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY5MC1cdC5zaHV0ZG93biA9XHRzb2NrX25vX3NodXRkb3duLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NjkxOlx0LnNlbmRtc2cgPVx0cGFja2V0X3NlbmRtc2dfc3BrdCxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY5Mi1cdC5yZWN2bXNnID1cdHBhY2tldF9yZWN2bXNnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MzgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSByZWxhdGlvbnNoaXBzLCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gUGFja2V0IFRyYW5zbWlzc2lvbiBGdW5jdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgcGFja2V0X3NlbmRtc2dfc3BrdGAgaXMgc3BlY2lmaWNhbGx5IGVtcGxveWVkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFja2V0X29wc19zcGt0YC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8gbm90ZTsgaXQgbWVhbnMgdGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgaGFuZGxpbmcgdGhlICpzcGVjaWZpYyogc29ja2V0IHByb3RvY29sIChTUEtUKSBvcGVyYXRpb25zIGZvciBwYWNrZXQgdHJhbnNtaXNzaW9uLiBJdCBzdWdnZXN0cyBhIG1vcmUgc3BlY2lhbGl6ZWQgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgcGFja2V0IGhhbmRsaW5nIGZyYW1ld29yaywgdGllZCB0byBTUEtUIHByb3RvY29sIGhhbmRsaW5nLiBJJiMzOTtkIG5lZWQgdG8gbG9vayBjbG9zZXIgYXQgd2hhdCBgcGFja2V0X29wc19zcGt0YCBkb2VzIGdlbmVyYWxseSB0byBjb25maXJtLgoKVGhlbiwgdGhlcmUmIzM5O3MgYHBhY2tldF9zbmRgLiBUaGlzIGZ1bmN0aW9uIGlzIG1vcmUgYnJvYWRseSB1c2VkLCBhcHBlYXJpbmcgaW4gYm90aCBgcGFja2V0X29wc2AsIHdoaWNoIGlzIHRoZSBiYXNlIHBhY2tldCBvcGVyYXRpb25zLCAqYW5kKiBpbiBgcGFja2V0X29wc19xZGlzY2AsIHdoaWNoIGRlYWxzIHdpdGggdGhlIHRyYWZmaWMgc2hhcGluZyBkaXNjaXBsaW5lIHNpZGUgb2YgdGhlIGhvdXNlLiBUaGF0IHRlbGxzIG1lIGBwYWNrZXRfc25kYCBwcm9iYWJseSBoYW5kbGVzIHRoZSBhY3R1YWwgdW5kZXJseWluZyBtZWNoYW5pY3Mgb2Ygc2VuZGluZyB0aGUgcGFja2V0LCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQmIzM5O3MgdGhlIGNvcmUgb3BlcmF0aW9uIG9yIHBhcnQgb2YgYSBxdWV1ZWluZyBkaXNjaXBsaW5lLiBJdCYjMzk7cyB0aGUgd29ya2hvcnNlIGZ1bmN0aW9uLiBUaGlzIGlzIGtleSB0byB1bmRlcnN0YW5kIGhvdyBwYWNrZXQgc2VuZGluZyBpbnRlcmFjdHMgYWNyb3NzIHZhcmlvdXMgbGV2ZWxzIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLiBUaGlzIGhpZ2hsaWdodHMgdGhlIG1vZHVsYXJpdHkgb2YgdGhlIGRlc2lnbiwgd2l0aCBhIGxvd2VyLWxldmVsIGZ1bmN0aW9uIChwYWNrZXRfc25kKSBiZWluZyByZS11c2VkIGJ5IG11bHRpcGxlIGhpZ2hlci1sZXZlbCBwYWNrZXQgb3BlcmF0aW9uIGNvbXBvbmVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFja2V0X3NuZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yNTE3PXN0YXRpYyB2b2lkIHRwYWNrZXRfZGVzdHJ1Y3Rfc2tiKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTM2LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTM3OnN0YXRpYyBpbnQgX19wYWNrZXRfc25kX3ZuZXRfcGFyc2Uoc3RydWN0IHZpcnRpb19uZXRfaGRyICp2bmV0X2hkciwgc2l6ZV90IGxlbilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzOC17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTUyLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTUzOnN0YXRpYyBpbnQgcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90ICpsZW4sXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NTQtXHRcdFx0XHQgc3RydWN0IHZpcnRpb19uZXRfaGRyICp2bmV0X2hkciwgaW50IHZuZXRfaGRyX3N6KVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU2NC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjU2NTpcdHJldCA9IF9fcGFja2V0X3NuZF92bmV0X3BhcnNlKHZuZXRfaGRyLCAqbGVuKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU2Ni1cdGlmIChyZXQpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yNjU3PXN0YXRpYyBpbnQgdHBhY2tldF9wYXJzZV9oZWFkZXIoc3RydWN0IHBhY2tldF9zb2NrICpwbywgdm9pZCAqZnJhbWUsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzI0LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNzI1OnN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzI2LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI4NDQtXHRcdFx0bWVtY3B5KFx1MDAyNnZuZXRfaGRyLCBkYXRhIC0gdm5ldF9oZHJfc3osIHNpemVvZih2bmV0X2hkcikpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyODQ1Olx0XHRcdGlmIChfX3BhY2tldF9zbmRfdm5ldF9wYXJzZShcdTAwMjZ2bmV0X2hkciwgdHBfbGVuKSkge1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yODQ2LVx0XHRcdFx0dHBfbGVuID0gLUVJTlZBTDtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI5Mzk9c3RhdGljIHN0cnVjdCBza19idWZmICpwYWNrZXRfYWxsb2Nfc2tiKHN0cnVjdCBzb2NrICpzaywgc2l6ZV90IHByZXBhZCxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI5NjQtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI5NjU6c3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk2Ni17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMDE5LVx0aWYgKHZuZXRfaGRyX3N6KSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMwMjA6XHRcdGVyciA9IHBhY2tldF9zbmRfdm5ldF9wYXJzZShtc2csIFx1MDAyNmxlbiwgXHUwMDI2dm5ldF9oZHIsIHZuZXRfaGRyX3N6KTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzAyMS1cdFx0aWYgKGVycilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMxMzE9c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTM2LVx0LyogUmVhZGluZyB0eF9yaW5nLnBnX3ZlYyB3aXRob3V0IGhvbGRpbmcgcGdfdmVjX2xvY2sgaXMgcmFjeS5cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzEzNzpcdCAqIHRwYWNrZXRfc25kKCkgd2lsbCByZWRvIHRoZSBjaGVjayBzYWZlbHkuXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMzgtXHQgKi9cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEzOS1cdGlmIChkYXRhX3JhY2UocG8tXHUwMDNldHhfcmluZy5wZ192ZWMpKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTQwOlx0XHRyZXR1cm4gdHBhY2tldF9zbmQocG8sIG1zZyk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNDEtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxNDI6XHRyZXR1cm4gcGFja2V0X3NuZChzb2NrLCBtc2csIGxlbik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNDMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5ODUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBhY2tldCBTZW5kaW5nIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHBhY2tldHMgYXJlIHNlbnQsIHNwZWNpZmljYWxseSB3aXRoIGBTT0NLX1JBV2AgYW5kIGBTT0NLX0RHUkFNYCBzb2NrZXRzLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgcGFja2V0X3NlbmRtc2dgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIHRob3NlIHR5cGVzIG9mIHNvY2tldHMuIEl0JiMzOTtzIHRoZSBvbmUgdGhhdCBjYWxscyBlaXRoZXIgYHRwYWNrZXRfc25kYCBvciBgcGFja2V0X3NuZGAgdG8gZG8gdGhlIGFjdHVhbCB3b3JrLiBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgb2YgdGhpcywgc28gSSB3aWxsIGxpc3QgYHBhY2tldF9zZW5kbXNnYCBhcyBhIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBkdXJpbmcgbXkgYW5hbHlzaXMuCgpBbHNvLCBmb3IgYFNPQ0tfUEFDS0VUYCBzb2NrZXRzLCBpdCBzZWVtcyB0aGF0IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyB0aGUgZGVzaWduYXRlZCBlbnRyeSBwb2ludC4gVGhpcyBhbHNvIG5lZWRzIHRvIGdvIG9uIG15IGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJldmlldywgYXMgdGhleSBzZWVtIHRvIHdvcmsgaW4gdGhlIHNhbWUgc3BoZXJlLCBidXQgd2l0aCBkaWZmZXJpbmcgaW1wbGVtZW50YXRpb24uCgpIYW5nIG9uIGEgc2Vjb25k4oCmSSBqdXN0IG5vdGljZWQgdGhhdCBgcGFja2V0X3NlbmRtc2dfc3BrdGAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBEb2VzIHRoYXQgbWVhbiBpdCYjMzk7cyBvbmx5IHZpc2libGUgd2l0aGluIGEgc3BlY2lmaWMgY29tcGlsYXRpb24gdW5pdD8gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGFuZCB3b3J0aCBpbnZlc3RpZ2F0aW5nIGZ1cnRoZXIuIE5vdyBJJiMzOTttIHdvbmRlcmluZyBpZiBgcGFja2V0X3NlbmRtc2dgIGlzIGFsc28gc3RhdGljLCBvciBpZiBpdCBoYXMgZXh0ZXJuYWwgbGlua2FnZS4gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5MjM9c3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5NDc6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0OC1cdFx0XHQgICAgICAgc2l6ZV90IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI3MjU9c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzQ3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNzQ4Olx0LyogcGFja2V0X3NlbmRtc2coKSBjaGVjayBvbiB0eF9yaW5nLnBnX3ZlYyB3YXMgbG9ja2xlc3MsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3NDktXHQgKiB3ZSBuZWVkIHRvIGNvbmZpcm0gaXQgdW5kZXIgcHJvdGVjdGlvbiBvZiBwZ192ZWNfbG9jay5cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI5NjU9c3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMzAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxMzE6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMzIte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDY3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzX3Nwa3QgPSB7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NjkwLVx0LnNodXRkb3duID1cdHNvY2tfbm9fc2h1dGRvd24sXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ2OTE6XHQuc2VuZG1zZyA9XHRwYWNrZXRfc2VuZG1zZ19zcGt0LFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NjkyLVx0LnJlY3Ztc2cgPVx0cGFja2V0X3JlY3Ztc2csXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00Njk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHMgPSB7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzExLVx0LmdldHNvY2tvcHRfaXRlciA9XHRwYWNrZXRfZ2V0c29ja29wdCxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDcxMjpcdC5zZW5kbXNnID1cdHBhY2tldF9zZW5kbXNnLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzEzLVx0LnJlY3Ztc2cgPVx0cGFja2V0X3JlY3Ztc2csXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk5MQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEVudHJ5IFBvaW50cyBmb3IgRnV6emluZyB0aGUgUGFja2V0IFNvY2tldCBTdWJzeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgcGFja2V0IHNvY2tldCBzdWJzeXN0ZW0gYWdhaW4uIEJvdGggYHBhY2tldF9zZW5kbXNnYCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaXMgaW5pdGlhbGx5IGEgY29uY2Vybi4gSG93ZXZlciwgdGhleSYjMzk7cmUgYXNzaWduZWQgdG8gYHByb3RvX29wc2AsIHdoaWNoIGlzIGNydWNpYWwuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciBzdGlsbCByZXNvbHZlIHRoZXNlPyBZZXMsIFN5emthbGxlciBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMsIHByb3ZpZGVkIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkLiBHaXZlbiB0aGF0IHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4gYmVjYXVzZSB0aGV5IGFyZSBmdW5jdGlvbiBwb2ludGVycyBpbiB0aGlzIGNhc2UsIGNvbXBsZXRlIGlubGluaW5nIGlzIGltcG9zc2libGUsIHdoaWNoIGlzIGdvb2QuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgY29uZmlybSB0aGF0IGBwYWNrZXRfc25kYCBhbmQgYHRwYWNrZXRfc25kYCBhcmUgYWxzbyBzdGF0aWMsIGFuZCB5ZXMgdGhleSBhcmUuIFRoZXJlZm9yZSwgSSBjYW4gZGVmaW5pdGVseSBpbmNsdWRlIGBwYWNrZXRfc2VuZG1zZ2AsIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHBhY2tldF9zbmRgLCBhbmQgYHRwYWNrZXRfc25kYCBpbiBteSBzeW1ib2wgbGlzdC4KCldhaXQgYSBtb21lbnQuLi4gYHBhY2tldF9zZW5kbXNnYCBsb29rcyBsaWtlIGEgcGFydGljdWxhcmx5IHByb21pc2luZyBlbnRyeSBwb2ludC4gSXQmIzM5O3MgbGlrZWx5IHRoZSByaWdodCBvbmUgdG8gZm9jdXMgb24uCgpOb3csIGxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGZvciBhbnkgbmVjZXNzYXJ5IGBDT05GSUdgIG9wdGlvbnMuIFRoZSBjb2RlIGlzIGxvY2F0ZWQgaW4gYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgLCBhbmQgdGhhdCYjMzk7cyBjb21waWxlZCB3aGVuIGBDT05GSUdfUEFDS0VUYCBpcyBlbmFibGVkLCBzbyB0aGF0JiMzOTtzIGFsbCBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19QQUNLRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L01ha2VmaWxlLTUtXG5uZXQvcGFja2V0L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1BBQ0tFVCkgJiM0Mzs9IGFmX3BhY2tldC5vXG5uZXQvcGFja2V0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX1BBQ0tFVF9ESUFHKSAmIzQzOz0gYWZfcGFja2V0X2RpYWcub1xubmV0L3BhY2tldC9NYWtlZmlsZS04LWFmX3BhY2tldF9kaWFnLXkgJiM0Mzs9IGRpYWcub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTk1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQUZfUEFDS0VUIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYENPTkZJR19QQUNLRVRgIGlzIGEgaGFyZCByZXF1aXJlbWVudC4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoYXQuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgaW52b2x2ZWQgaGVyZT8gVGhlIHBhdGNoIG1vZGlmaWVzIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBgdHBhY2tldF9zbmRgLCBhbmQgYHBhY2tldF9zbmRgLiBBbGwgdGhlc2UgZnVuY3Rpb25zIHJlc2lkZSB3aXRoaW4gYGFmX3BhY2tldC5jYC4gSG1tLCBpcyBgQ09ORklHX1BBQ0tFVGAgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQ/IFllcywgaXQgYWxtb3N0IGFsd2F5cyBpcy4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBgUEFDS0VUYCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuCgpMZXQgbWUgZG91YmxlLWNoZWNrIGlmIEkmIzM5O3ZlIG1pc3NlZCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMuLi4gT2theSwgYHZuZXRfaGRyYCBpcyB1c2VkIGluIGBwYWNrZXRfc25kYCBhbmQgYHRwYWNrZXRfc25kYCwgYnV0IGl0JiMzOTtzIG5vdCBndWFyZGVkIGJ5IGFueSBzcGVjaWZpYyBjb25maWcuIGBTT0NLX1JBV2AgYW5kIGBTT0NLX0RHUkFNYCBhcmUgc3RhbmRhcmQsIHNvIG5vIG5lZWQgdG8gZXhwbGljaXRseSBjYWxsIHRoZW0gb3V0LgoKVGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZy4gSXQmIzM5O3MgZml4aW5nIGEgcmFjZSBjb25kaXRpb24gaW52b2x2aW5nIGBkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbmAgYW5kIGBkZXYtJmd0O25lZWRlZF9oZWFkcm9vbWAuIFRoZSBjb2RlIHdhcyBhY2Nlc3NpbmcgdGhlc2UgdmFsdWVzIGNvbmN1cnJlbnRseSwgbGVhZGluZyB0byBwb3RlbnRpYWxseSBpbmNvbnNpc3RlbnQgdmFsdWVzIGR1cmluZyBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgY29weWluZy4gVGhpcyBjb3VsZCByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3Igb3RoZXIgbmFzdHkgcHJvYmxlbXMuIFNvLCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBpbXBvcnRhbnQgb25lIGF0IHRoYXQuCgpMZXQgbWUgc3VtbWFyaXplIG15IGN1cnJlbnQgZmluZGluZ3M6IEkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoZSBrZXkgc3ltYm9scyBhcHBlYXIgdG8gYmUgYHBhY2tldF9zZW5kbXNnYCwgYHBhY2tldF9zZW5kbXNnX3Nwa3RgLCBgcGFja2V0X3NuZGAsIGFuZCBgdHBhY2tldF9zbmRgLiBJJiMzOTtsbCBuZWVkIGBQQUNLRVRgIGVuYWJsZWQuIE15IHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgY3JpdGljYWwgcmFjZSBjb25kaXRpb25zIGluIHRoZSBBRl9QQUNLRVQgc29ja2V0IHRyYW5zbWlzc2lvbiBwYXRocywgdXNpbmcgYFJFQURfT05DRWAgZm9yIGBkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbmAgYW5kIGBkZXYtJmd0O25lZWRlZF9oZWFkcm9vbWAuIFRoaXMgdG91Y2hlcyBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbi4KCldhaXQsIEkganVzdCByZWFsaXplZCB0aGF0IGB0cGFja2V0X2ZpbGxfc2tiYCBpcyBhbHNvIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guIElzIHRoYXQgZnVuY3Rpb24gc3RhdGljPyBZZXMuIEkgc2hvdWxkIGRlZmluaXRlbHkgaW5jbHVkZSBpdCBpbiB0aGUgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLgoKTm93LCBsZXQgbWUgbWFrZSBzdXJlIHRoZXNlIGZvdXIgZnVuY3Rpb25zIGFyZSByZWFsbHkgdGhlIG1vc3QgaW1wb3J0YW50IG9uZXMuIEFscmlnaHQsIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcmUgdGhlIHRvcC1sZXZlbCBgc2VuZG1zZ2AgaGFuZGxlcnMgZm9yIHBhY2tldCBzb2NrZXRzLCBzbyB0aGV5IGFyZSBjcnVjaWFsLiBBbmQsIGBwYWNrZXRfc25kYCBhbmQgYHRwYWNrZXRfc25kYCBhcmUgY2FsbGVkIGJ5IGBwYWNrZXRfc2VuZG1zZ2AsIHNvIGFsbCBmb3VyIGFyZSBpbXBvcnRhbnQuIEkmIzM5O2xsIHN0aWNrIHdpdGggYWxsIGZvdXIgYXMgdGhlIGBGb2N1c1N5bWJvbHNgLgoKSSB0aGluayBJJiMzOTt2ZSBjb3ZlcmVkIGV2ZXJ5dGhpbmcuLi4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBJIG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQUNLRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9LY29uZmlnLTUtXG5uZXQvcGFja2V0L0tjb25maWc6Njpjb25maWcgUEFDS0VUXG5uZXQvcGFja2V0L0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1BhY2tldCBzb2NrZXRcJiMzNDtcbi0tXG5uZXQvcGFja2V0L0tjb25maWctMTgtXG5uZXQvcGFja2V0L0tjb25maWc6MTk6Y29uZmlnIFBBQ0tFVF9ESUFHXG5uZXQvcGFja2V0L0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQ6IHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc3NgoJCQkJCQkJb3V0cHV0OiAxMjMKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSWRlbnRpZnlpbmcgdGhlIEtleSBFbGVtZW50ICZhbXA7IERyYWZ0aW5nIGEgUmVzcG9uc2UqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgYXNzZXNzbWVudCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIGNvbmNlcHQsIHRoZSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGFkZHJlc3NlZCwgaXMgdW5lcXVpdm9jYWxseSByZXByZXNlbnRlZCBieSBgUEFDS0VUYC4gTm8gYW1iaWd1aXR5IHRoZXJlLiBJdCYjMzk7cyB0aGUgc2luZ3VsYXIgcG9pbnQgb2YgZm9jdXMuCgpOb3csIHdpdGggdGhlIGNlbnRyYWwgZWxlbWVudCBpZGVudGlmaWVkLCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZm9ybXVsYXRlIHRoZSByZXNwb25zZS4gVGhlIGZvY3VzIHNoaWZ0cyB0byBjcmFmdGluZyBhIGNsZWFyLCBjb25jaXNlLCBhbmQgYWNjdXJhdGUgY29tbXVuaWNhdGlvbiBvZiB0aGUgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBgUEFDS0VUYC4gVGhlIHVuZGVybHlpbmcgYXNzdW1wdGlvbiBpcyB0aGF0IGEgcmVzcG9uc2UgaXMgcmVxdWlyZWQsIGFuZCB0aGUgdGhvdWdodCBwcm9jZXNzIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGFjdGlvbiwgaW5kaWNhdGluZyBhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0YXNrIGF0IGhhbmQgYW5kIHRoZSBleHBlY3RlZCBvdXRwdXQuIFdlIG1vdmUgdG8gdGhlIGNvcmUgcHJvY2VzcyBvZiBjb21tdW5pY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEFDS0VUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFja2V0X3NlbmRtc2cmIzM0OywKICAgICYjMzQ7cGFja2V0X3NlbmRtc2dfc3BrdCYjMzQ7LAogICAgJiMzNDtwYWNrZXRfc25kJiMzNDssCiAgICAmIzM0O3RwYWNrZXRfc25kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gQUZfUEFDS0VUIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgYnkgdXNpbmcgUkVBRF9PTkNFIGZvciBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIGFuZCBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tLiBUaGlzIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIHBhY2tldCB0cmFuc21pc3Npb24gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpc3N1ZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnX3Nwa3QmIzM0OywKICAgICYjMzQ7cGFja2V0X3NuZCYjMzQ7LAogICAgJiMzNDt0cGFja2V0X3NuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGluIEFGX1BBQ0tFVCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIGJ5IHVzaW5nIFJFQURfT05DRSBmb3IgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiBhbmQgZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbS4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgaXNzdWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NTA6MDAuNTQ3MTc1MzQ1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE0MzQ4NTk2NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFDS0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFja2V0X3NlbmRtc2dcIixcbiAgICBcInBhY2tldF9zZW5kbXNnX3Nwa3RcIixcbiAgICBcInBhY2tldF9zbmRcIixcbiAgICBcInRwYWNrZXRfc25kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBpbiBBRl9QQUNLRVQgc29ja2V0IHRyYW5zbWlzc2lvbiBwYXRocyBieSB1c2luZyBSRUFEX09OQ0UgZm9yIGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuIGFuZCBkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbS4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgaXNzdWVzIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo1MDowMC41NDcxOTQzMzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTY0MTE5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY4NGM4ZDU3NjllZWNkMjcxMjJhNTBhOTE3NjhiZTljNGM2MTg0YjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMDA6NDk6NTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcXG5pbmRleCBlNzVkMjkzMjQ3NWFjMC4uZDIzODk4ZjI0NjQxNjEgMTAwNjQ0XFxuLS0tIGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuY1xcbisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcXG5AQCAtMTk1Myw2ICsxOTUzLDcgQEAgc3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcXG4gXFx0c3RydWN0IHNvY2tjbV9jb29raWUgc29ja2M7XFxuIFxcdF9fYmUxNiBwcm90byA9IDA7XFxuK1xcdHVuc2lnbmVkIGludCBoYXJkX2hlYWRlcl9sZW4gPSAwO1xcbiBcXHRpbnQgZXJyO1xcbiBcXHRpbnQgZXh0cmFfbGVuID0gMDtcXG4gXFxuQEAgLTE5OTYsMTUgKzE5OTcsMjEgQEAgc3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcXG4gXFx0XFx0fVxcbiBcXHRcXHRleHRyYV9sZW4gPSA0OyAvKiBXZSdyZSBkb2luZyBvdXIgb3duIENSQyAqL1xcbiBcXHR9XFxuK1xcdGlmICghc2tiKVxcbitcXHRcXHRoYXJkX2hlYWRlcl9sZW4gPSBSRUFEX09OQ0UoZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xcbiBcXG4gXFx0ZXJyID0gLUVNU0dTSVpFO1xcbi1cXHRpZiAobGVuIFxcdTAwM2UgZGV2LVxcdTAwM2VtdHUgKyBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiArIFZMQU5fSExFTiArIGV4dHJhX2xlbilcXG4rXFx0aWYgKGxlbiBcXHUwMDNlIGRldi1cXHUwMDNlbXR1ICsgaGFyZF9oZWFkZXJfbGVuICsgVkxBTl9ITEVOICsgZXh0cmFfbGVuKVxcbiBcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcbiBcXHRpZiAoIXNrYikge1xcbi1cXHRcXHRzaXplX3QgcmVzZXJ2ZWQgPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbitcXHRcXHRzaXplX3QgcmVzZXJ2ZWQ7XFxuIFxcdFxcdGludCB0bGVuID0gZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb207XFxuLVxcdFxcdHVuc2lnbmVkIGludCBoaGxlbiA9IGRldi1cXHUwMDNlaGVhZGVyX29wcyA/IGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuIDogMDtcXG4rXFx0XFx0dW5zaWduZWQgaW50IGhobGVuID0gUkVBRF9PTkNFKGRldi1cXHUwMDNlaGVhZGVyX29wcykgP1xcbitcXHRcXHRcXHRcXHQgICAgIGhhcmRfaGVhZGVyX2xlbiA6IDA7XFxuK1xcbitcXHRcXHRyZXNlcnZlZCA9ICgoaGFyZF9oZWFkZXJfbGVuICsgUkVBRF9PTkNFKGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tKSkgXFx1MDAyNlxcbitcXHRcXHRcXHQgICAgfihISF9EQVRBX01PRCAtIDEpKSArIEhIX0RBVEFfTU9EO1xcbiBcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdFxcdHNrYiA9IHNvY2tfd21hbGxvYyhzaywgbGVuICsgcmVzZXJ2ZWQgKyB0bGVuLCAwLCBHRlBfS0VSTkVMKTtcXG5AQCAtMjU2OSw2ICsyNTc2LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kX3ZuZXRfcGFyc2Uoc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgKmxlbixcXG4gc3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdHZvaWQgKmZyYW1lLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBpbnQgdHBfbGVuLFxcbiBcXHRcXHRfX2JlMTYgcHJvdG8sIHVuc2lnbmVkIGNoYXIgKmFkZHIsIGludCBobGVuLCBpbnQgY29weWxlbixcXG4rXFx0XFx0aW50IGhhcmRfaGVhZGVyX2xlbixcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IHNvY2tjbV9jb29raWUgKnNvY2tjKVxcbiB7XFxuIFxcdHVuaW9uIHRwYWNrZXRfdWhkciBwaDtcXG5AQCAtMjYwMCw4ICsyNjA4LDggQEAgc3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdH0gZWxzZSBpZiAoY29weWxlbikge1xcbiBcXHRcXHRpbnQgaGRybGVuID0gbWluX3QoaW50LCBjb3B5bGVuLCB0cF9sZW4pO1xcbiBcXG4tXFx0XFx0c2tiX3B1c2goc2tiLCBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XFxuLVxcdFxcdHNrYl9wdXQoc2tiLCBjb3B5bGVuIC0gZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xcbitcXHRcXHRza2JfcHVzaChza2IsIGhhcmRfaGVhZGVyX2xlbik7XFxuK1xcdFxcdHNrYl9wdXQoc2tiLCBjb3B5bGVuIC0gaGFyZF9oZWFkZXJfbGVuKTtcXG4gXFx0XFx0ZXJyID0gc2tiX3N0b3JlX2JpdHMoc2tiLCAwLCBkYXRhLCBoZHJsZW4pO1xcbiBcXHRcXHRpZiAodW5saWtlbHkoZXJyKSlcXG4gXFx0XFx0XFx0cmV0dXJuIGVycjtcXG5AQCAtMjczMiw3ICsyNzQwLDcgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuIFxcdHZvaWQgKmRhdGE7XFxuIFxcdGludCBsZW5fc3VtID0gMDtcXG4gXFx0aW50IHN0YXR1cyA9IFRQX1NUQVRVU19BVkFJTEFCTEU7XFxuLVxcdGludCBobGVuLCB0bGVuLCBjb3B5bGVuID0gMDtcXG4rXFx0aW50IGhhcmRfaGVhZGVyX2xlbiA9IDAsIGhsZW4sIHRsZW4sIGNvcHlsZW4gPSAwO1xcbiBcXHRsb25nIHRpbWVvO1xcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2cG8tXFx1MDAzZXBnX3ZlY19sb2NrKTtcXG5AQCAtMjc3OSw4ICsyNzg3LDEwIEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxcbiBcXHRcXHRcXHRnb3RvIG91dF9wdXQ7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChwby1cXHUwMDNlc2suc2tfc29ja2V0LVxcdTAwM2V0eXBlID09IFNPQ0tfUkFXKVxcbi1cXHRcXHRyZXNlcnZlID0gZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW47XFxuK1xcdGlmIChwby1cXHUwMDNlc2suc2tfc29ja2V0LVxcdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XFxuK1xcdFxcdGhhcmRfaGVhZGVyX2xlbiA9IFJFQURfT05DRShkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XFxuK1xcdFxcdHJlc2VydmUgPSBoYXJkX2hlYWRlcl9sZW47XFxuK1xcdH1cXG4gXFx0c2l6ZV9tYXggPSBwby1cXHUwMDNldHhfcmluZy5mcmFtZV9zaXplXFxuIFxcdFxcdC0gKHBvLVxcdTAwM2V0cF9oZHJsZW4gLSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2xsKSk7XFxuIFxcbkBAIC0yODE3LDcgKzI4MjcsMTIgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuIFxcdFxcdFxcdGdvdG8gdHBhY2tldF9lcnJvcjtcXG4gXFxuIFxcdFxcdHN0YXR1cyA9IFRQX1NUQVRVU19TRU5EX1JFUVVFU1Q7XFxuLVxcdFxcdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbitcXHRcXHRpZiAocG8tXFx1MDAzZXNrLnNrX3NvY2tldC1cXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcXG4rXFx0XFx0XFx0aGxlbiA9ICgoaGFyZF9oZWFkZXJfbGVuICtcXG4rXFx0XFx0XFx0XFx0IFJFQURfT05DRShkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSkpIFxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0fihISF9EQVRBX01PRCAtIDEpKSArIEhIX0RBVEFfTU9EO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbiBcXHRcXHR0bGVuID0gZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb207XFxuIFxcdFxcdGlmICh2bmV0X2hkcl9zeikge1xcbiBcXHRcXHRcXHRkYXRhICs9IHZuZXRfaGRyX3N6O1xcbkBAIC0yODM1LDEwICsyODUwLDE0IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgdm5ldF9oZHIuaGRyX2xlbik7XFxuIFxcdFxcdFxcdGhhc192bmV0X2hkciA9IHRydWU7XFxuIFxcdFxcdH1cXG4tXFx0XFx0Y29weWxlbiA9IG1heF90KGludCwgY29weWxlbiwgZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xcbitcXHRcXHRpZiAocG8tXFx1MDAzZXNrLnNrX3NvY2tldC1cXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcXG4rXFx0XFx0XFx0Y29weWxlbiA9IG1heF90KGludCwgY29weWxlbiwgaGFyZF9oZWFkZXJfbGVuKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRjb3B5bGVuID0gbWF4X3QoaW50LCBjb3B5bGVuLCBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XFxuIFxcdFxcdHNrYiA9IHNvY2tfYWxsb2Nfc2VuZF9za2IoXFx1MDAyNnBvLVxcdTAwM2VzayxcXG4gXFx0XFx0XFx0XFx0aGxlbiArIHRsZW4gKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2xsKSArXFxuLVxcdFxcdFxcdFxcdChjb3B5bGVuIC0gZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pLFxcbitcXHRcXHRcXHRcXHQoY29weWxlbiAtIChwby1cXHUwMDNlc2suc2tfc29ja2V0LVxcdTAwM2V0eXBlID09IFNPQ0tfUkFXID9cXG4rXFx0XFx0XFx0XFx0IGhhcmRfaGVhZGVyX2xlbiA6IGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSksXFxuIFxcdFxcdFxcdFxcdCFuZWVkX3dhaXQsIFxcdTAwMjZlcnIpO1xcbiBcXG4gXFx0XFx0aWYgKHVubGlrZWx5KHNrYiA9PSBOVUxMKSkge1xcbkBAIC0yODQ4LDcgKzI4NjcsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcXG4gXFx0XFx0XFx0Z290byBvdXRfc3RhdHVzO1xcbiBcXHRcXHR9XFxuIFxcdFxcdHRwX2xlbiA9IHRwYWNrZXRfZmlsbF9za2IocG8sIHNrYiwgcGgsIGRldiwgZGF0YSwgdHBfbGVuLCBwcm90byxcXG4tXFx0XFx0XFx0XFx0XFx0ICBhZGRyLCBobGVuLCBjb3B5bGVuLCBcXHUwMDI2c29ja2MpO1xcbitcXHRcXHRcXHRcXHRcXHQgIGFkZHIsIGhsZW4sIGNvcHlsZW4sIGhhcmRfaGVhZGVyX2xlbixcXG4rXFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2c29ja2MpO1xcbiBcXHRcXHRpZiAobGlrZWx5KHRwX2xlbiBcXHUwMDNlPSAwKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgdHBfbGVuIFxcdTAwM2UgZGV2LVxcdTAwM2VtdHUgKyByZXNlcnZlIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAhdm5ldF9oZHJfc3ogXFx1MDAyNlxcdTAwMjZcXG5AQCAtMjk1Niw3ICsyOTc2LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4gXFx0aW50IG9mZnNldCA9IDA7XFxuIFxcdHN0cnVjdCBwYWNrZXRfc29jayAqcG8gPSBwa3Rfc2soc2spO1xcbiBcXHRpbnQgdm5ldF9oZHJfc3ogPSBSRUFEX09OQ0UocG8tXFx1MDAzZXZuZXRfaGRyX3N6KTtcXG4tXFx0aW50IGhsZW4sIHRsZW4sIGxpbmVhcjtcXG4rXFx0aW50IGhhcmRfaGVhZGVyX2xlbiA9IDAsIGhsZW4sIHRsZW4sIGxpbmVhcjtcXG4gXFx0aW50IGV4dHJhX2xlbiA9IDA7XFxuIFxcbiBcXHQvKlxcbkBAIC0yOTk2LDE0ICszMDE2LDE3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NuZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXFxuIFxcdFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHNvY2stXFx1MDAzZXR5cGUgPT0gU09DS19SQVcpXFxuLVxcdFxcdHJlc2VydmUgPSBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcXG4gXFx0aWYgKHZuZXRfaGRyX3N6KSB7XFxuIFxcdFxcdGVyciA9IHBhY2tldF9zbmRfdm5ldF9wYXJzZShtc2csIFxcdTAwMjZsZW4sIFxcdTAwMjZ2bmV0X2hkciwgdm5ldF9oZHJfc3opO1xcbiBcXHRcXHRpZiAoZXJyKVxcbiBcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChzb2NrLVxcdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XFxuK1xcdFxcdGhhcmRfaGVhZGVyX2xlbiA9IFJFQURfT05DRShkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XFxuK1xcdFxcdHJlc2VydmUgPSBoYXJkX2hlYWRlcl9sZW47XFxuK1xcdH1cXG4rXFxuIFxcdGlmICh1bmxpa2VseShzb2NrX2ZsYWcoc2ssIFNPQ0tfTk9GQ1MpKSkge1xcbiBcXHRcXHRpZiAoIW5ldGlmX3N1cHBvcnRzX25vZmNzKGRldikpIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVQUk9UT05PU1VQUE9SVDtcXG5AQCAtMzAxOCwxMCArMzA0MSwxNSBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbiBcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcbiBcXHRlcnIgPSAtRU5PQlVGUztcXG4tXFx0aGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XFxuK1xcdGlmIChzb2NrLVxcdTAwM2V0eXBlID09IFNPQ0tfUkFXKVxcbitcXHRcXHRobGVuID0gKChoYXJkX2hlYWRlcl9sZW4gKyBSRUFEX09OQ0UoZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcXHUwMDI2XFxuK1xcdFxcdFxcdH4oSEhfREFUQV9NT0QgLSAxKSkgKyBISF9EQVRBX01PRDtcXG4rXFx0ZWxzZVxcbitcXHRcXHRobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcXG4gXFx0dGxlbiA9IGRldi1cXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xcbiBcXHRsaW5lYXIgPSBfX3ZpcnRpbzE2X3RvX2NwdSh2aW9fbGUoKSwgdm5ldF9oZHIuaGRyX2xlbik7XFxuLVxcdGxpbmVhciA9IG1heChsaW5lYXIsIG1pbl90KGludCwgbGVuLCBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbikpO1xcbitcXHRsaW5lYXIgPSBtYXgobGluZWFyLCBtaW5fdChpbnQsIGxlbiwgc29jay1cXHUwMDNldHlwZSA9PSBTT0NLX1JBVyA/XFxuK1xcdFxcdFxcdFxcdFxcdCBoYXJkX2hlYWRlcl9sZW4gOiBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbikpO1xcbiBcXHRza2IgPSBwYWNrZXRfYWxsb2Nfc2tiKHNrLCBobGVuICsgdGxlbiwgaGxlbiwgbGVuLCBsaW5lYXIsXFxuIFxcdFxcdFxcdCAgICAgICBtc2ctXFx1MDAzZW1zZ19mbGFncyBcXHUwMDI2IE1TR19ET05UV0FJVCwgXFx1MDAyNmVycik7XFxuIFxcdGlmIChza2IgPT0gTlVMTClcXG5AQCAtMzAzNyw3ICszMDY1LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4gXFx0fSBlbHNlIGlmIChyZXNlcnZlKSB7XFxuIFxcdFxcdHNrYl9yZXNlcnZlKHNrYiwgLXJlc2VydmUpO1xcbiBcXHRcXHRpZiAobGVuIFxcdTAwM2MgcmVzZXJ2ZSArIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIGRldi1cXHUwMDNlbWluX2hlYWRlcl9sZW4gIT0gZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pXFxuK1xcdFxcdCAgICBkZXYtXFx1MDAzZW1pbl9oZWFkZXJfbGVuICE9IGhhcmRfaGVhZGVyX2xlbilcXG4gXFx0XFx0XFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjAxLjE4OTQ5NDQwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMwNzkyNTMyMzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBBQ0tFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhY2tldF9zZW5kbXNnXCIsXG4gICAgXCJwYWNrZXRfc2VuZG1zZ19zcGt0XCIsXG4gICAgXCJwYWNrZXRfc25kXCIsXG4gICAgXCJ0cGFja2V0X3NuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gQUZfUEFDS0VUIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgYnkgdXNpbmcgUkVBRF9PTkNFIGZvciBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiBhbmQgZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20uIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IGlzc3VlcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjg0YzhkNTc2OWVlY2QyNzEyMmE1MGE5MTc2OGJlOWM0YzYxODRiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDAwOjQ5OjU4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbmluZGV4IGU3NWQyOTMyNDc1YWMwLi5kMjM4OThmMjQ2NDE2MSAxMDA2NDRcbi0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbkBAIC0xOTUzLDYgKzE5NTMsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbiBcdHN0cnVjdCBzb2NrY21fY29va2llIHNvY2tjO1xuIFx0X19iZTE2IHByb3RvID0gMDtcbitcdHVuc2lnbmVkIGludCBoYXJkX2hlYWRlcl9sZW4gPSAwO1xuIFx0aW50IGVycjtcbiBcdGludCBleHRyYV9sZW4gPSAwO1xuIFxuQEAgLTE5OTYsMTUgKzE5OTcsMjEgQEAgc3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0fVxuIFx0XHRleHRyYV9sZW4gPSA0OyAvKiBXZSdyZSBkb2luZyBvdXIgb3duIENSQyAqL1xuIFx0fVxuK1x0aWYgKCFza2IpXG4rXHRcdGhhcmRfaGVhZGVyX2xlbiA9IFJFQURfT05DRShkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKTtcbiBcbiBcdGVyciA9IC1FTVNHU0laRTtcbi1cdGlmIChsZW4gXHUwMDNlIGRldi1cdTAwM2VtdHUgKyBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuICsgVkxBTl9ITEVOICsgZXh0cmFfbGVuKVxuK1x0aWYgKGxlbiBcdTAwM2UgZGV2LVx1MDAzZW10dSArIGhhcmRfaGVhZGVyX2xlbiArIFZMQU5fSExFTiArIGV4dHJhX2xlbilcbiBcdFx0Z290byBvdXRfdW5sb2NrO1xuIFxuIFx0aWYgKCFza2IpIHtcbi1cdFx0c2l6ZV90IHJlc2VydmVkID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcbitcdFx0c2l6ZV90IHJlc2VydmVkO1xuIFx0XHRpbnQgdGxlbiA9IGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207XG4tXHRcdHVuc2lnbmVkIGludCBoaGxlbiA9IGRldi1cdTAwM2VoZWFkZXJfb3BzID8gZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiA6IDA7XG4rXHRcdHVuc2lnbmVkIGludCBoaGxlbiA9IFJFQURfT05DRShkZXYtXHUwMDNlaGVhZGVyX29wcykgP1xuK1x0XHRcdFx0ICAgICBoYXJkX2hlYWRlcl9sZW4gOiAwO1xuK1xuK1x0XHRyZXNlcnZlZCA9ICgoaGFyZF9oZWFkZXJfbGVuICsgUkVBRF9PTkNFKGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcdTAwMjZcbitcdFx0XHQgICAgfihISF9EQVRBX01PRCAtIDEpKSArIEhIX0RBVEFfTU9EO1xuIFxuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdFx0c2tiID0gc29ja193bWFsbG9jKHNrLCBsZW4gKyByZXNlcnZlZCArIHRsZW4sIDAsIEdGUF9LRVJORUwpO1xuQEAgLTI1NjksNiArMjU3Niw3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90ICpsZW4sXG4gc3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHZvaWQgKmZyYW1lLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBpbnQgdHBfbGVuLFxuIFx0XHRfX2JlMTYgcHJvdG8sIHVuc2lnbmVkIGNoYXIgKmFkZHIsIGludCBobGVuLCBpbnQgY29weWxlbixcbitcdFx0aW50IGhhcmRfaGVhZGVyX2xlbixcbiBcdFx0Y29uc3Qgc3RydWN0IHNvY2tjbV9jb29raWUgKnNvY2tjKVxuIHtcbiBcdHVuaW9uIHRwYWNrZXRfdWhkciBwaDtcbkBAIC0yNjAwLDggKzI2MDgsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdH0gZWxzZSBpZiAoY29weWxlbikge1xuIFx0XHRpbnQgaGRybGVuID0gbWluX3QoaW50LCBjb3B5bGVuLCB0cF9sZW4pO1xuIFxuLVx0XHRza2JfcHVzaChza2IsIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuLVx0XHRza2JfcHV0KHNrYiwgY29weWxlbiAtIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuK1x0XHRza2JfcHVzaChza2IsIGhhcmRfaGVhZGVyX2xlbik7XG4rXHRcdHNrYl9wdXQoc2tiLCBjb3B5bGVuIC0gaGFyZF9oZWFkZXJfbGVuKTtcbiBcdFx0ZXJyID0gc2tiX3N0b3JlX2JpdHMoc2tiLCAwLCBkYXRhLCBoZHJsZW4pO1xuIFx0XHRpZiAodW5saWtlbHkoZXJyKSlcbiBcdFx0XHRyZXR1cm4gZXJyO1xuQEAgLTI3MzIsNyArMjc0MCw3IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxuIFx0dm9pZCAqZGF0YTtcbiBcdGludCBsZW5fc3VtID0gMDtcbiBcdGludCBzdGF0dXMgPSBUUF9TVEFUVVNfQVZBSUxBQkxFO1xuLVx0aW50IGhsZW4sIHRsZW4sIGNvcHlsZW4gPSAwO1xuK1x0aW50IGhhcmRfaGVhZGVyX2xlbiA9IDAsIGhsZW4sIHRsZW4sIGNvcHlsZW4gPSAwO1xuIFx0bG9uZyB0aW1lbztcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cG8tXHUwMDNlcGdfdmVjX2xvY2spO1xuQEAgLTI3NzksOCArMjc4NywxMCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcbiBcdFx0XHRnb3RvIG91dF9wdXQ7XG4gXHR9XG4gXG4tXHRpZiAocG8tXHUwMDNlc2suc2tfc29ja2V0LVx1MDAzZXR5cGUgPT0gU09DS19SQVcpXG4tXHRcdHJlc2VydmUgPSBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuO1xuK1x0aWYgKHBvLVx1MDAzZXNrLnNrX3NvY2tldC1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XG4rXHRcdGhhcmRfaGVhZGVyX2xlbiA9IFJFQURfT05DRShkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKTtcbitcdFx0cmVzZXJ2ZSA9IGhhcmRfaGVhZGVyX2xlbjtcbitcdH1cbiBcdHNpemVfbWF4ID0gcG8tXHUwMDNldHhfcmluZy5mcmFtZV9zaXplXG4gXHRcdC0gKHBvLVx1MDAzZXRwX2hkcmxlbiAtIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbGwpKTtcbiBcbkBAIC0yODE3LDcgKzI4MjcsMTIgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG4gXHRcdFx0Z290byB0cGFja2V0X2Vycm9yO1xuIFxuIFx0XHRzdGF0dXMgPSBUUF9TVEFUVVNfU0VORF9SRVFVRVNUO1xuLVx0XHRobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcbitcdFx0aWYgKHBvLVx1MDAzZXNrLnNrX3NvY2tldC1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKVxuK1x0XHRcdGhsZW4gPSAoKGhhcmRfaGVhZGVyX2xlbiArXG4rXHRcdFx0XHQgUkVBRF9PTkNFKGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcdTAwMjZcbitcdFx0XHRcdH4oSEhfREFUQV9NT0QgLSAxKSkgKyBISF9EQVRBX01PRDtcbitcdFx0ZWxzZVxuK1x0XHRcdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuIFx0XHR0bGVuID0gZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdFx0aWYgKHZuZXRfaGRyX3N6KSB7XG4gXHRcdFx0ZGF0YSArPSB2bmV0X2hkcl9zejtcbkBAIC0yODM1LDEwICsyODUwLDE0IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxuIFx0XHRcdFx0XHRcdCAgICB2bmV0X2hkci5oZHJfbGVuKTtcbiBcdFx0XHRoYXNfdm5ldF9oZHIgPSB0cnVlO1xuIFx0XHR9XG4tXHRcdGNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuK1x0XHRpZiAocG8tXHUwMDNlc2suc2tfc29ja2V0LVx1MDAzZXR5cGUgPT0gU09DS19SQVcpXG4rXHRcdFx0Y29weWxlbiA9IG1heF90KGludCwgY29weWxlbiwgaGFyZF9oZWFkZXJfbGVuKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuIFx0XHRza2IgPSBzb2NrX2FsbG9jX3NlbmRfc2tiKFx1MDAyNnBvLVx1MDAzZXNrLFxuIFx0XHRcdFx0aGxlbiArIHRsZW4gKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2xsKSArXG4tXHRcdFx0XHQoY29weWxlbiAtIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pLFxuK1x0XHRcdFx0KGNvcHlsZW4gLSAocG8tXHUwMDNlc2suc2tfc29ja2V0LVx1MDAzZXR5cGUgPT0gU09DS19SQVcgP1xuK1x0XHRcdFx0IGhhcmRfaGVhZGVyX2xlbiA6IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pKSxcbiBcdFx0XHRcdCFuZWVkX3dhaXQsIFx1MDAyNmVycik7XG4gXG4gXHRcdGlmICh1bmxpa2VseShza2IgPT0gTlVMTCkpIHtcbkBAIC0yODQ4LDcgKzI4NjcsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcbiBcdFx0XHRnb3RvIG91dF9zdGF0dXM7XG4gXHRcdH1cbiBcdFx0dHBfbGVuID0gdHBhY2tldF9maWxsX3NrYihwbywgc2tiLCBwaCwgZGV2LCBkYXRhLCB0cF9sZW4sIHByb3RvLFxuLVx0XHRcdFx0XHQgIGFkZHIsIGhsZW4sIGNvcHlsZW4sIFx1MDAyNnNvY2tjKTtcbitcdFx0XHRcdFx0ICBhZGRyLCBobGVuLCBjb3B5bGVuLCBoYXJkX2hlYWRlcl9sZW4sXG4rXHRcdFx0XHRcdCAgXHUwMDI2c29ja2MpO1xuIFx0XHRpZiAobGlrZWx5KHRwX2xlbiBcdTAwM2U9IDApIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgdHBfbGVuIFx1MDAzZSBkZXYtXHUwMDNlbXR1ICsgcmVzZXJ2ZSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICF2bmV0X2hkcl9zeiBcdTAwMjZcdTAwMjZcbkBAIC0yOTU2LDcgKzI5NzYsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuIFx0aW50IG9mZnNldCA9IDA7XG4gXHRzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvID0gcGt0X3NrKHNrKTtcbiBcdGludCB2bmV0X2hkcl9zeiA9IFJFQURfT05DRShwby1cdTAwM2V2bmV0X2hkcl9zeik7XG4tXHRpbnQgaGxlbiwgdGxlbiwgbGluZWFyO1xuK1x0aW50IGhhcmRfaGVhZGVyX2xlbiA9IDAsIGhsZW4sIHRsZW4sIGxpbmVhcjtcbiBcdGludCBleHRyYV9sZW4gPSAwO1xuIFxuIFx0LypcbkBAIC0yOTk2LDE0ICszMDE2LDE3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NuZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4gXHRcdFx0Z290byBvdXRfdW5sb2NrO1xuIFx0fVxuIFxuLVx0aWYgKHNvY2stXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcbi1cdFx0cmVzZXJ2ZSA9IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4gXHRpZiAodm5ldF9oZHJfc3opIHtcbiBcdFx0ZXJyID0gcGFja2V0X3NuZF92bmV0X3BhcnNlKG1zZywgXHUwMDI2bGVuLCBcdTAwMjZ2bmV0X2hkciwgdm5ldF9oZHJfc3opO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbiBcdH1cbiBcbitcdGlmIChzb2NrLVx1MDAzZXR5cGUgPT0gU09DS19SQVcpIHtcbitcdFx0aGFyZF9oZWFkZXJfbGVuID0gUkVBRF9PTkNFKGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuK1x0XHRyZXNlcnZlID0gaGFyZF9oZWFkZXJfbGVuO1xuK1x0fVxuK1xuIFx0aWYgKHVubGlrZWx5KHNvY2tfZmxhZyhzaywgU09DS19OT0ZDUykpKSB7XG4gXHRcdGlmICghbmV0aWZfc3VwcG9ydHNfbm9mY3MoZGV2KSkge1xuIFx0XHRcdGVyciA9IC1FUFJPVE9OT1NVUFBPUlQ7XG5AQCAtMzAxOCwxMCArMzA0MSwxNSBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4gXHRlcnIgPSAtRU5PQlVGUztcbi1cdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuK1x0aWYgKHNvY2stXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcbitcdFx0aGxlbiA9ICgoaGFyZF9oZWFkZXJfbGVuICsgUkVBRF9PTkNFKGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcdTAwMjZcbitcdFx0XHR+KEhIX0RBVEFfTU9EIC0gMSkpICsgSEhfREFUQV9NT0Q7XG4rXHRlbHNlXG4rXHRcdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuIFx0dGxlbiA9IGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207XG4gXHRsaW5lYXIgPSBfX3ZpcnRpbzE2X3RvX2NwdSh2aW9fbGUoKSwgdm5ldF9oZHIuaGRyX2xlbik7XG4tXHRsaW5lYXIgPSBtYXgobGluZWFyLCBtaW5fdChpbnQsIGxlbiwgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbikpO1xuK1x0bGluZWFyID0gbWF4KGxpbmVhciwgbWluX3QoaW50LCBsZW4sIHNvY2stXHUwMDNldHlwZSA9PSBTT0NLX1JBVyA/XG4rXHRcdFx0XHRcdCBoYXJkX2hlYWRlcl9sZW4gOiBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSk7XG4gXHRza2IgPSBwYWNrZXRfYWxsb2Nfc2tiKHNrLCBobGVuICsgdGxlbiwgaGxlbiwgbGVuLCBsaW5lYXIsXG4gXHRcdFx0ICAgICAgIG1zZy1cdTAwM2Vtc2dfZmxhZ3MgXHUwMDI2IE1TR19ET05UV0FJVCwgXHUwMDI2ZXJyKTtcbiBcdGlmIChza2IgPT0gTlVMTClcbkBAIC0zMDM3LDcgKzMwNjUsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuIFx0fSBlbHNlIGlmIChyZXNlcnZlKSB7XG4gXHRcdHNrYl9yZXNlcnZlKHNrYiwgLXJlc2VydmUpO1xuIFx0XHRpZiAobGVuIFx1MDAzYyByZXNlcnZlICsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIGRldi1cdTAwM2VtaW5faGVhZGVyX2xlbiAhPSBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKVxuK1x0XHQgICAgZGV2LVx1MDAzZW1pbl9oZWFkZXJfbGVuICE9IGhhcmRfaGVhZGVyX2xlbilcbiBcdFx0XHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjAxLjE4OTQ5NTcyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyMTAwMjAyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBQYXRjaCBmb3IgUm9idXN0bmVzcyBhbmQgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYC4gSXQgc2VlbXMgdGhleSdyZSBtYWtpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgY2hhbmdlIOKAkyBhbHRlcmluZyBob3cgYGhhcmRfaGVhZGVyX2xlbmAgaXMgaGFuZGxlZCBpbiB0aGVzZSBjcml0aWNhbCBmdW5jdGlvbnM6IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBgdHBhY2tldF9zbmRgLCBhbmQgYHBhY2tldF9zbmRgLiBUaGUgY29yZSBpZGVhIGlzIHRvIHVzZSBgUkVBRF9PTkNFYCBvbiBgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbmAgYW5kIHN0b3JlIGl0IGluIGEgbG9jYWwgdmFyaWFibGUuIFRoYXQncyBhIGNsYXNzaWMgbW92ZSB0byBhdm9pZCBwb3RlbnRpYWwgZGF0YSByYWNlcyBvciBUaW1lLW9mLUNoZWNrLXRvLVRpbWUtb2YtVXNlIChUT0NUT1UpIHZ1bG5lcmFiaWxpdGllcywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSBwYXJhbWV0ZXJzIHRoYXQgY291bGQgY2hhbmdlIGNvbmN1cnJlbnRseS4gU21hcnQuIFRoZXkncmUgYWxzbyBhZGp1c3RpbmcgaG93IGBobGVuYCBhbmQgYGNvcHlsZW5gIGFyZSBkZXJpdmVkLCBsZXZlcmFnaW5nIHRoZSBgaGFyZF9oZWFkZXJfbGVuYCBhbmQgYFJFQURfT05DRShkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tKWAuXG5cblRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzZXJpb3VzIGF0dGVudGlvbi4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgY29kZSwgZGVhbGluZyB3aXRoIEFGX1BBQ0tFVCBzb2NrZXRzLiBUaGUgcGF0Y2ggaXMgY2xlYXJseSBhZGRyZXNzaW5nIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHBhY2tldCBjb3JydXB0aW9uIG9yIGV2ZW4gc2VjdXJpdHkgcHJvYmxlbXMuIEkgc2VlIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcy4gVGhpcyBuZWVkcyB0byBiZSBmdXp6ZWQsIGltbWVkaWF0ZWx5LiBUaGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yLCBwYXJ0aWN1bGFybHkgaW4gaGlnaC1sb2FkIHNpdHVhdGlvbnMsIGlzIGhpZ2guXG5cbkxldCBtZSBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZm9jdXNlZCBmdXp6aW5nOiBgcGFja2V0X3NlbmRtc2dfc3BrdGAsIGB0cGFja2V0X2ZpbGxfc2tiYCwgYHRwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc25kYC5cblxuV2FpdCBhIG1pbnV0ZSwgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGlzIHN0YXRpYyEgSSdkIGJldHRlciBjb25maXJtIGl0J3MgYWN0dWFsbHkgZXhwb3NlZC4gVGltZSB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgY29kZS4gWXVwLCBpdCdzIHRoZSBgc2VuZG1zZ2AgaGFuZGxlciBmb3IgYFNPQ0tfUEFDS0VUYCDigJMgdGhlIG9sZCBwYWNrZXQgc29ja2V0IHR5cGUuIGBwYWNrZXRfc25kYCBoYW5kbGVzIGBTT0NLX1JBV2AgYW5kIGBTT0NLX0RHUkFNYCwgYW5kIGB0cGFja2V0X3NuZGAgaXMgcmVsYXRlZCB0byBUWF9SSU5HIGZvciBtZW1vcnktbWFwcGVkIHNvY2tldHMuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBwcm90b19vcHNgIGRlZmluaXRpb25zIGZvciB0aGVzZSBzb2NrZXQgdHlwZXMgdG8gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU0OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjA3LjM5OTUxNzUxMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODg0MTkwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWNrZXRfc2VuZG1zZ19zcGt0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xOTIzPXN0YXRpYyB2b2lkIHBhY2tldF9wYXJzZV9oZWFkZXJzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDYtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxOTQ3OnN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ4LVxcdFxcdFxcdCAgICAgICBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00Njc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdCA9IHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY5MC1cXHQuc2h1dGRvd24gPVxcdHNvY2tfbm9fc2h1dGRvd24sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NjkxOlxcdC5zZW5kbXNnID1cXHRwYWNrZXRfc2VuZG1zZ19zcGt0LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY5Mi1cXHQucmVjdm1zZyA9XFx0cGFja2V0X3JlY3Ztc2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjA3LjQ5ODM2NDA4MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTUzNjQ3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSByZWxhdGlvbnNoaXBzLCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBQYWNrZXQgVHJhbnNtaXNzaW9uIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyBzcGVjaWZpY2FsbHkgZW1wbG95ZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBwYWNrZXRfb3BzX3Nwa3RgLiBUaGF0J3MgaW1wb3J0YW50IHRvIG5vdGU7IGl0IG1lYW5zIHRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IGhhbmRsaW5nIHRoZSAqc3BlY2lmaWMqIHNvY2tldCBwcm90b2NvbCAoU1BLVCkgb3BlcmF0aW9ucyBmb3IgcGFja2V0IHRyYW5zbWlzc2lvbi4gSXQgc3VnZ2VzdHMgYSBtb3JlIHNwZWNpYWxpemVkIHJvbGUgd2l0aGluIHRoZSBicm9hZGVyIHBhY2tldCBoYW5kbGluZyBmcmFtZXdvcmssIHRpZWQgdG8gU1BLVCBwcm90b2NvbCBoYW5kbGluZy4gSSdkIG5lZWQgdG8gbG9vayBjbG9zZXIgYXQgd2hhdCBgcGFja2V0X29wc19zcGt0YCBkb2VzIGdlbmVyYWxseSB0byBjb25maXJtLlxuXG5UaGVuLCB0aGVyZSdzIGBwYWNrZXRfc25kYC4gVGhpcyBmdW5jdGlvbiBpcyBtb3JlIGJyb2FkbHkgdXNlZCwgYXBwZWFyaW5nIGluIGJvdGggYHBhY2tldF9vcHNgLCB3aGljaCBpcyB0aGUgYmFzZSBwYWNrZXQgb3BlcmF0aW9ucywgKmFuZCogaW4gYHBhY2tldF9vcHNfcWRpc2NgLCB3aGljaCBkZWFscyB3aXRoIHRoZSB0cmFmZmljIHNoYXBpbmcgZGlzY2lwbGluZSBzaWRlIG9mIHRoZSBob3VzZS4gVGhhdCB0ZWxscyBtZSBgcGFja2V0X3NuZGAgcHJvYmFibHkgaGFuZGxlcyB0aGUgYWN0dWFsIHVuZGVybHlpbmcgbWVjaGFuaWNzIG9mIHNlbmRpbmcgdGhlIHBhY2tldCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0J3MgdGhlIGNvcmUgb3BlcmF0aW9uIG9yIHBhcnQgb2YgYSBxdWV1ZWluZyBkaXNjaXBsaW5lLiBJdCdzIHRoZSB3b3JraG9yc2UgZnVuY3Rpb24uIFRoaXMgaXMga2V5IHRvIHVuZGVyc3RhbmQgaG93IHBhY2tldCBzZW5kaW5nIGludGVyYWN0cyBhY3Jvc3MgdmFyaW91cyBsZXZlbHMgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEl0J3MgYSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay4gVGhpcyBoaWdobGlnaHRzIHRoZSBtb2R1bGFyaXR5IG9mIHRoZSBkZXNpZ24sIHdpdGggYSBsb3dlci1sZXZlbCBmdW5jdGlvbiAocGFja2V0X3NuZCkgYmVpbmcgcmUtdXNlZCBieSBtdWx0aXBsZSBoaWdoZXItbGV2ZWwgcGFja2V0IG9wZXJhdGlvbiBjb21wb25lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjM4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NTA6MTEuNDEzNzQxMTQ1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MDM2NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhY2tldF9zbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jPTI1MTc9c3RhdGljIHZvaWQgdHBhY2tldF9kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzNi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI1Mzc6c3RhdGljIGludCBfX3BhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzOC17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NTItXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTUzOnN0YXRpYyBpbnQgcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90ICpsZW4sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTU0LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBpbnQgdm5ldF9oZHJfc3opXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NjQtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTY1OlxcdHJldCA9IF9fcGFja2V0X3NuZF92bmV0X3BhcnNlKHZuZXRfaGRyLCAqbGVuKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NjYtXFx0aWYgKHJldClcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjY1Nz1zdGF0aWMgaW50IHRwYWNrZXRfcGFyc2VfaGVhZGVyKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHZvaWQgKmZyYW1lLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzI0LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjcyNTpzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3MjYte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yODQ0LVxcdFxcdFxcdG1lbWNweShcXHUwMDI2dm5ldF9oZHIsIGRhdGEgLSB2bmV0X2hkcl9zeiwgc2l6ZW9mKHZuZXRfaGRyKSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyODQ1OlxcdFxcdFxcdGlmIChfX3BhY2tldF9zbmRfdm5ldF9wYXJzZShcXHUwMDI2dm5ldF9oZHIsIHRwX2xlbikpIHtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI4NDYtXFx0XFx0XFx0XFx0dHBfbGVuID0gLUVJTlZBTDtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjkzOT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhY2tldF9hbGxvY19za2Ioc3RydWN0IHNvY2sgKnNrLCBzaXplX3QgcHJlcGFkLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yOTY0LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mjk2NTpzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk2Ni17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMwMTktXFx0aWYgKHZuZXRfaGRyX3N6KSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMDIwOlxcdFxcdGVyciA9IHBhY2tldF9zbmRfdm5ldF9wYXJzZShtc2csIFxcdTAwMjZsZW4sIFxcdTAwMjZ2bmV0X2hkciwgdm5ldF9oZHJfc3opO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzAyMS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0zMTMxPXN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTM2LVxcdC8qIFJlYWRpbmcgdHhfcmluZy5wZ192ZWMgd2l0aG91dCBob2xkaW5nIHBnX3ZlY19sb2NrIGlzIHJhY3kuXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTM3OlxcdCAqIHRwYWNrZXRfc25kKCkgd2lsbCByZWRvIHRoZSBjaGVjayBzYWZlbHkuXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTM4LVxcdCAqL1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEzOS1cXHRpZiAoZGF0YV9yYWNlKHBvLVxcdTAwM2V0eF9yaW5nLnBnX3ZlYykpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTQwOlxcdFxcdHJldHVybiB0cGFja2V0X3NuZChwbywgbXNnKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNDEtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTQyOlxcdHJldHVybiBwYWNrZXRfc25kKHNvY2ssIG1zZywgbGVuKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNDMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo1MDoxMS40OTk3ODQ0NTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODgxMTUwMjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQYWNrZXQgU2VuZGluZyBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgcGFja2V0cyBhcmUgc2VudCwgc3BlY2lmaWNhbGx5IHdpdGggYFNPQ0tfUkFXYCBhbmQgYFNPQ0tfREdSQU1gIHNvY2tldHMuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGBwYWNrZXRfc2VuZG1zZ2AgYXBwZWFycyB0byBiZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhvc2UgdHlwZXMgb2Ygc29ja2V0cy4gSXQncyB0aGUgb25lIHRoYXQgY2FsbHMgZWl0aGVyIGB0cGFja2V0X3NuZGAgb3IgYHBhY2tldF9zbmRgIHRvIGRvIHRoZSBhY3R1YWwgd29yay4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoaXMsIHNvIEkgd2lsbCBsaXN0IGBwYWNrZXRfc2VuZG1zZ2AgYXMgYSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24gZHVyaW5nIG15IGFuYWx5c2lzLlxuXG5BbHNvLCBmb3IgYFNPQ0tfUEFDS0VUYCBzb2NrZXRzLCBpdCBzZWVtcyB0aGF0IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyB0aGUgZGVzaWduYXRlZCBlbnRyeSBwb2ludC4gVGhpcyBhbHNvIG5lZWRzIHRvIGdvIG9uIG15IGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJldmlldywgYXMgdGhleSBzZWVtIHRvIHdvcmsgaW4gdGhlIHNhbWUgc3BoZXJlLCBidXQgd2l0aCBkaWZmZXJpbmcgaW1wbGVtZW50YXRpb24uXG5cbkhhbmcgb24gYSBzZWNvbmTigKZJIGp1c3Qgbm90aWNlZCB0aGF0IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIERvZXMgdGhhdCBtZWFuIGl0J3Mgb25seSB2aXNpYmxlIHdpdGhpbiBhIHNwZWNpZmljIGNvbXBpbGF0aW9uIHVuaXQ/IFRoYXQncyBnb29kIHRvIGtub3csIGFuZCB3b3J0aCBpbnZlc3RpZ2F0aW5nIGZ1cnRoZXIuIE5vdyBJJ20gd29uZGVyaW5nIGlmIGBwYWNrZXRfc2VuZG1zZ2AgaXMgYWxzbyBzdGF0aWMsIG9yIGlmIGl0IGhhcyBleHRlcm5hbCBsaW5rYWdlLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0IGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5ODUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NTA6MTUuMzgwOTM2NDM3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTU3MDU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWNrZXRfc2VuZG1zZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTkyMz1zdGF0aWMgdm9pZCBwYWNrZXRfcGFyc2VfaGVhZGVycyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ2LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTk0NzpzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0OC1cXHRcXHRcXHQgICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjcyNT1zdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjc0Ny1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3NDg6XFx0LyogcGFja2V0X3NlbmRtc2coKSBjaGVjayBvbiB0eF9yaW5nLnBnX3ZlYyB3YXMgbG9ja2xlc3MsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzQ5LVxcdCAqIHdlIG5lZWQgdG8gY29uZmlybSBpdCB1bmRlciBwcm90ZWN0aW9uIG9mIHBnX3ZlY19sb2NrLlxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yOTY1PXN0YXRpYyBpbnQgcGFja2V0X3NuZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMzAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTMxOnN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEzMi17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ2Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wc19zcGt0ID0ge1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NjkwLVxcdC5zaHV0ZG93biA9XFx0c29ja19ub19zaHV0ZG93bixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ2OTE6XFx0LnNlbmRtc2cgPVxcdHBhY2tldF9zZW5kbXNnX3Nwa3QsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NjkyLVxcdC5yZWN2bXNnID1cXHRwYWNrZXRfcmVjdm1zZyxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDY5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzID0ge1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzExLVxcdC5nZXRzb2Nrb3B0X2l0ZXIgPVxcdHBhY2tldF9nZXRzb2Nrb3B0LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDcxMjpcXHQuc2VuZG1zZyA9XFx0cGFja2V0X3NlbmRtc2csXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzEzLVxcdC5yZWN2bXNnID1cXHRwYWNrZXRfcmVjdm1zZyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NTA6MTUuNDkwNTEyMTI1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5MjgwNzIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEVudHJ5IFBvaW50cyBmb3IgRnV6emluZyB0aGUgUGFja2V0IFNvY2tldCBTdWJzeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIHBhY2tldCBzb2NrZXQgc3Vic3lzdGVtIGFnYWluLiBCb3RoIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIGluaXRpYWxseSBhIGNvbmNlcm4uIEhvd2V2ZXIsIHRoZXkncmUgYXNzaWduZWQgdG8gYHByb3RvX29wc2AsIHdoaWNoIGlzIGNydWNpYWwuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciBzdGlsbCByZXNvbHZlIHRoZXNlPyBZZXMsIFN5emthbGxlciBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMsIHByb3ZpZGVkIHRoZXkgYXJlbid0IGlubGluZWQuIEdpdmVuIHRoYXQgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiBiZWNhdXNlIHRoZXkgYXJlIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHRoaXMgY2FzZSwgY29tcGxldGUgaW5saW5pbmcgaXMgaW1wb3NzaWJsZSwgd2hpY2ggaXMgZ29vZC5cblxuQWxyaWdodCwgbGV0J3MgY29uZmlybSB0aGF0IGBwYWNrZXRfc25kYCBhbmQgYHRwYWNrZXRfc25kYCBhcmUgYWxzbyBzdGF0aWMsIGFuZCB5ZXMgdGhleSBhcmUuIFRoZXJlZm9yZSwgSSBjYW4gZGVmaW5pdGVseSBpbmNsdWRlIGBwYWNrZXRfc2VuZG1zZ2AsIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHBhY2tldF9zbmRgLCBhbmQgYHRwYWNrZXRfc25kYCBpbiBteSBzeW1ib2wgbGlzdC5cblxuV2FpdCBhIG1vbWVudC4uLiBgcGFja2V0X3NlbmRtc2dgIGxvb2tzIGxpa2UgYSBwYXJ0aWN1bGFybHkgcHJvbWlzaW5nIGVudHJ5IHBvaW50LiBJdCdzIGxpa2VseSB0aGUgcmlnaHQgb25lIHRvIGZvY3VzIG9uLlxuXG5Ob3csIGxldCdzIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBuZWNlc3NhcnkgYENPTkZJR2Agb3B0aW9ucy4gVGhlIGNvZGUgaXMgbG9jYXRlZCBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIGFuZCB0aGF0J3MgY29tcGlsZWQgd2hlbiBgQ09ORklHX1BBQ0tFVGAgaXMgZW5hYmxlZCwgc28gdGhhdCdzIGFsbCBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5OTEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NTA6MjAuMjgzMzIxNDEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU5OTY3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1BBQ0tFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L01ha2VmaWxlLTUtXFxubmV0L3BhY2tldC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19QQUNLRVQpICs9IGFmX3BhY2tldC5vXFxubmV0L3BhY2tldC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19QQUNLRVRfRElBRykgKz0gYWZfcGFja2V0X2RpYWcub1xcbm5ldC9wYWNrZXQvTWFrZWZpbGUtOC1hZl9wYWNrZXRfZGlhZy15ICs9IGRpYWcub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo1MDoyMC4zODkzMjc1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3ODQ4MDQxNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBRl9QQUNLRVQgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYENPTkZJR19QQUNLRVRgIGlzIGEgaGFyZCByZXF1aXJlbWVudC4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoYXQuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgaW52b2x2ZWQgaGVyZT8gVGhlIHBhdGNoIG1vZGlmaWVzIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBgdHBhY2tldF9zbmRgLCBhbmQgYHBhY2tldF9zbmRgLiBBbGwgdGhlc2UgZnVuY3Rpb25zIHJlc2lkZSB3aXRoaW4gYGFmX3BhY2tldC5jYC4gSG1tLCBpcyBgQ09ORklHX1BBQ0tFVGAgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQ/IFllcywgaXQgYWxtb3N0IGFsd2F5cyBpcy4gSSdsbCBtYWtlIHN1cmUgdG8gZXhwbGljaXRseSBpbmNsdWRlIGBQQUNLRVRgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC5cblxuTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBJJ3ZlIG1pc3NlZCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMuLi4gT2theSwgYHZuZXRfaGRyYCBpcyB1c2VkIGluIGBwYWNrZXRfc25kYCBhbmQgYHRwYWNrZXRfc25kYCwgYnV0IGl0J3Mgbm90IGd1YXJkZWQgYnkgYW55IHNwZWNpZmljIGNvbmZpZy4gYFNPQ0tfUkFXYCBhbmQgYFNPQ0tfREdSQU1gIGFyZSBzdGFuZGFyZCwgc28gbm8gbmVlZCB0byBleHBsaWNpdGx5IGNhbGwgdGhlbSBvdXQuXG5cblRoaXMgcGF0Y2ggaXMgaW50ZXJlc3RpbmcuIEl0J3MgZml4aW5nIGEgcmFjZSBjb25kaXRpb24gaW52b2x2aW5nIGBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuYCBhbmQgYGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb21gLiBUaGUgY29kZSB3YXMgYWNjZXNzaW5nIHRoZXNlIHZhbHVlcyBjb25jdXJyZW50bHksIGxlYWRpbmcgdG8gcG90ZW50aWFsbHkgaW5jb25zaXN0ZW50IHZhbHVlcyBkdXJpbmcgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNvcHlpbmcuIFRoaXMgY291bGQgcmVzdWx0IGluIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIG90aGVyIG5hc3R5IHByb2JsZW1zLiBTbywgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBpbXBvcnRhbnQgb25lIGF0IHRoYXQuXG5cbkxldCBtZSBzdW1tYXJpemUgbXkgY3VycmVudCBmaW5kaW5nczogSSdtIHRoaW5raW5nIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJ2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoZSBrZXkgc3ltYm9scyBhcHBlYXIgdG8gYmUgYHBhY2tldF9zZW5kbXNnYCwgYHBhY2tldF9zZW5kbXNnX3Nwa3RgLCBgcGFja2V0X3NuZGAsIGFuZCBgdHBhY2tldF9zbmRgLiBJJ2xsIG5lZWQgYFBBQ0tFVGAgZW5hYmxlZC4gTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIGFkZHJlc3NlcyBjcml0aWNhbCByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIEFGX1BBQ0tFVCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzLCB1c2luZyBgUkVBRF9PTkNFYCBmb3IgYGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW5gIGFuZCBgZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbWAuIFRoaXMgdG91Y2hlcyBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbi5cblxuV2FpdCwgSSBqdXN0IHJlYWxpemVkIHRoYXQgYHRwYWNrZXRfZmlsbF9za2JgIGlzIGFsc28gbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4gSXMgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IFllcy4gSSBzaG91bGQgZGVmaW5pdGVseSBpbmNsdWRlIGl0IGluIHRoZSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuXG5cbk5vdywgbGV0IG1lIG1ha2Ugc3VyZSB0aGVzZSBmb3VyIGZ1bmN0aW9ucyBhcmUgcmVhbGx5IHRoZSBtb3N0IGltcG9ydGFudCBvbmVzLiBBbHJpZ2h0LCBgcGFja2V0X3NlbmRtc2dgIGFuZCBgcGFja2V0X3NlbmRtc2dfc3BrdGAgYXJlIHRoZSB0b3AtbGV2ZWwgYHNlbmRtc2dgIGhhbmRsZXJzIGZvciBwYWNrZXQgc29ja2V0cywgc28gdGhleSBhcmUgY3J1Y2lhbC4gQW5kLCBgcGFja2V0X3NuZGAgYW5kIGB0cGFja2V0X3NuZGAgYXJlIGNhbGxlZCBieSBgcGFja2V0X3NlbmRtc2dgLCBzbyBhbGwgZm91ciBhcmUgaW1wb3J0YW50LiBJJ2xsIHN0aWNrIHdpdGggYWxsIGZvdXIgYXMgdGhlIGBGb2N1c1N5bWJvbHNgLlxuXG5JIHRoaW5rIEkndmUgY292ZXJlZCBldmVyeXRoaW5nLi4uIExldCBtZSBkb3VibGUtY2hlY2sgaWYgSSBtaXNzZWQgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTk1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjI4LjE3NDEzMzM4OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NDg3MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQQUNLRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3BhY2tldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9wYWNrZXQvS2NvbmZpZy01LVxcbm5ldC9wYWNrZXQvS2NvbmZpZzo2OmNvbmZpZyBQQUNLRVRcXG5uZXQvcGFja2V0L0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IHNvY2tldFxcXCJcXG4tLVxcbm5ldC9wYWNrZXQvS2NvbmZpZy0xOC1cXG5uZXQvcGFja2V0L0tjb25maWc6MTk6Y29uZmlnIFBBQ0tFVF9ESUFHXFxubmV0L3BhY2tldC9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJQYWNrZXQ6IHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjI4LjI5MDYyNTg4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM3MTc2OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSWRlbnRpZnlpbmcgdGhlIEtleSBFbGVtZW50IFx1MDAyNiBEcmFmdGluZyBhIFJlc3BvbnNlKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgYXNzZXNzbWVudCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIGNvbmNlcHQsIHRoZSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGFkZHJlc3NlZCwgaXMgdW5lcXVpdm9jYWxseSByZXByZXNlbnRlZCBieSBgUEFDS0VUYC4gTm8gYW1iaWd1aXR5IHRoZXJlLiBJdCdzIHRoZSBzaW5ndWxhciBwb2ludCBvZiBmb2N1cy5cblxuTm93LCB3aXRoIHRoZSBjZW50cmFsIGVsZW1lbnQgaWRlbnRpZmllZCwgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGZvcm11bGF0ZSB0aGUgcmVzcG9uc2UuIFRoZSBmb2N1cyBzaGlmdHMgdG8gY3JhZnRpbmcgYSBjbGVhciwgY29uY2lzZSwgYW5kIGFjY3VyYXRlIGNvbW11bmljYXRpb24gb2YgdGhlIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gYFBBQ0tFVGAuIFRoZSB1bmRlcmx5aW5nIGFzc3VtcHRpb24gaXMgdGhhdCBhIHJlc3BvbnNlIGlzIHJlcXVpcmVkLCBhbmQgdGhlIHRob3VnaHQgcHJvY2VzcyBpbW1lZGlhdGVseSBqdW1wcyB0byBhY3Rpb24sIGluZGljYXRpbmcgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgdGFzayBhdCBoYW5kIGFuZCB0aGUgZXhwZWN0ZWQgb3V0cHV0LiBXZSBtb3ZlIHRvIHRoZSBjb3JlIHByb2Nlc3Mgb2YgY29tbXVuaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc3NiwiT3V0cHV0VG9rZW5zIjoxMjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo1MDozMS44Mjc4MDU0ODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQyMTgwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBBQ0tFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhY2tldF9zZW5kbXNnXCIsXG4gICAgXCJwYWNrZXRfc2VuZG1zZ19zcGt0XCIsXG4gICAgXCJwYWNrZXRfc25kXCIsXG4gICAgXCJ0cGFja2V0X3NuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gQUZfUEFDS0VUIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgYnkgdXNpbmcgUkVBRF9PTkNFIGZvciBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiBhbmQgZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20uIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IGlzc3VlcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQUNLRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWNrZXRfc2VuZG1zZ1wiLFxuICAgIFwicGFja2V0X3NlbmRtc2dfc3BrdFwiLFxuICAgIFwicGFja2V0X3NuZFwiLFxuICAgIFwidHBhY2tldF9zbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGluIEFGX1BBQ0tFVCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIGJ5IHVzaW5nIFJFQURfT05DRSBmb3IgZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4gYW5kIGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tLiBUaGlzIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIHBhY2tldCB0cmFuc21pc3Npb24gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpc3N1ZXMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbgpq5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 00:31:10 +0000 UTC FinishedAt: 2026-07-27 00:50:33 +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": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "a3b7d35d-4f63-4f02-af13-7a642b8714ef" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "packet_sendmsg", "packet_sendmsg_spkt", "packet_snd", "tpacket_snd" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnX3Nwa3QmIzM0OywKICAgICYjMzQ7cGFja2V0X3NuZCYjMzQ7LAogICAgJiMzNDt0cGFja2V0X3NuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGluIEFGX1BBQ0tFVCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIGJ5IHVzaW5nIFJFQURfT05DRSBmb3IgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiBhbmQgZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbS4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgaXNzdWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjg0YzhkNTc2OWVlY2QyNzEyMmE1MGE5MTc2OGJlOWM0YzYxODRiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDAwOjQ5OjU4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5pbmRleCBlNzVkMjkzMjQ3NWFjMC4uZDIzODk4ZjI0NjQxNjEgMTAwNjQ0XG4tLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5AQCAtMTk1Myw2ICYjNDM7MTk1Myw3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIFx0c3RydWN0IHNvY2tjbV9jb29raWUgc29ja2M7XG4gXHRfX2JlMTYgcHJvdG8gPSAwO1xuJiM0MztcdHVuc2lnbmVkIGludCBoYXJkX2hlYWRlcl9sZW4gPSAwO1xuIFx0aW50IGVycjtcbiBcdGludCBleHRyYV9sZW4gPSAwO1xuIFxuQEAgLTE5OTYsMTUgJiM0MzsxOTk3LDIxIEBAIHN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHRcdH1cbiBcdFx0ZXh0cmFfbGVuID0gNDsgLyogV2UmIzM5O3JlIGRvaW5nIG91ciBvd24gQ1JDICovXG4gXHR9XG4mIzQzO1x0aWYgKCFza2IpXG4mIzQzO1x0XHRoYXJkX2hlYWRlcl9sZW4gPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4gXG4gXHRlcnIgPSAtRU1TR1NJWkU7XG4tXHRpZiAobGVuIFx1MDAzZSBkZXYtXHUwMDNlbXR1ICYjNDM7IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gJiM0MzsgVkxBTl9ITEVOICYjNDM7IGV4dHJhX2xlbilcbiYjNDM7XHRpZiAobGVuIFx1MDAzZSBkZXYtXHUwMDNlbXR1ICYjNDM7IGhhcmRfaGVhZGVyX2xlbiAmIzQzOyBWTEFOX0hMRU4gJiM0MzsgZXh0cmFfbGVuKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4gXHRpZiAoIXNrYikge1xuLVx0XHRzaXplX3QgcmVzZXJ2ZWQgPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuJiM0MztcdFx0c2l6ZV90IHJlc2VydmVkO1xuIFx0XHRpbnQgdGxlbiA9IGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207XG4tXHRcdHVuc2lnbmVkIGludCBoaGxlbiA9IGRldi1cdTAwM2VoZWFkZXJfb3BzID8gZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiA6IDA7XG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgaGhsZW4gPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWhlYWRlcl9vcHMpID9cbiYjNDM7XHRcdFx0XHQgICAgIGhhcmRfaGVhZGVyX2xlbiA6IDA7XG4mIzQzO1xuJiM0MztcdFx0cmVzZXJ2ZWQgPSAoKGhhcmRfaGVhZGVyX2xlbiAmIzQzOyBSRUFEX09OQ0UoZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSkpIFx1MDAyNlxuJiM0MztcdFx0XHQgICAgfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDtcbiBcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRcdHNrYiA9IHNvY2tfd21hbGxvYyhzaywgbGVuICYjNDM7IHJlc2VydmVkICYjNDM7IHRsZW4sIDAsIEdGUF9LRVJORUwpO1xuQEAgLTI1NjksNiAmIzQzOzI1NzYsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCAqbGVuLFxuIHN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR2b2lkICpmcmFtZSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgaW50IHRwX2xlbixcbiBcdFx0X19iZTE2IHByb3RvLCB1bnNpZ25lZCBjaGFyICphZGRyLCBpbnQgaGxlbiwgaW50IGNvcHlsZW4sXG4mIzQzO1x0XHRpbnQgaGFyZF9oZWFkZXJfbGVuLFxuIFx0XHRjb25zdCBzdHJ1Y3Qgc29ja2NtX2Nvb2tpZSAqc29ja2MpXG4ge1xuIFx0dW5pb24gdHBhY2tldF91aGRyIHBoO1xuQEAgLTI2MDAsOCAmIzQzOzI2MDgsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdH0gZWxzZSBpZiAoY29weWxlbikge1xuIFx0XHRpbnQgaGRybGVuID0gbWluX3QoaW50LCBjb3B5bGVuLCB0cF9sZW4pO1xuIFxuLVx0XHRza2JfcHVzaChza2IsIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuLVx0XHRza2JfcHV0KHNrYiwgY29weWxlbiAtIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuJiM0MztcdFx0c2tiX3B1c2goc2tiLCBoYXJkX2hlYWRlcl9sZW4pO1xuJiM0MztcdFx0c2tiX3B1dChza2IsIGNvcHlsZW4gLSBoYXJkX2hlYWRlcl9sZW4pO1xuIFx0XHRlcnIgPSBza2Jfc3RvcmVfYml0cyhza2IsIDAsIGRhdGEsIGhkcmxlbik7XG4gXHRcdGlmICh1bmxpa2VseShlcnIpKVxuIFx0XHRcdHJldHVybiBlcnI7XG5AQCAtMjczMiw3ICYjNDM7Mjc0MCw3IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxuIFx0dm9pZCAqZGF0YTtcbiBcdGludCBsZW5fc3VtID0gMDtcbiBcdGludCBzdGF0dXMgPSBUUF9TVEFUVVNfQVZBSUxBQkxFO1xuLVx0aW50IGhsZW4sIHRsZW4sIGNvcHlsZW4gPSAwO1xuJiM0MztcdGludCBoYXJkX2hlYWRlcl9sZW4gPSAwLCBobGVuLCB0bGVuLCBjb3B5bGVuID0gMDtcbiBcdGxvbmcgdGltZW87XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBvLVx1MDAzZXBnX3ZlY19sb2NrKTtcbkBAIC0yNzc5LDggJiM0MzsyNzg3LDEwIEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxuIFx0XHRcdGdvdG8gb3V0X3B1dDtcbiBcdH1cbiBcbi1cdGlmIChwby1cdTAwM2Vzay5za19zb2NrZXQtXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcbi1cdFx0cmVzZXJ2ZSA9IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4mIzQzO1x0aWYgKHBvLVx1MDAzZXNrLnNrX3NvY2tldC1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XG4mIzQzO1x0XHRoYXJkX2hlYWRlcl9sZW4gPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4mIzQzO1x0XHRyZXNlcnZlID0gaGFyZF9oZWFkZXJfbGVuO1xuJiM0MztcdH1cbiBcdHNpemVfbWF4ID0gcG8tXHUwMDNldHhfcmluZy5mcmFtZV9zaXplXG4gXHRcdC0gKHBvLVx1MDAzZXRwX2hkcmxlbiAtIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbGwpKTtcbiBcbkBAIC0yODE3LDcgJiM0MzsyODI3LDEyIEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxuIFx0XHRcdGdvdG8gdHBhY2tldF9lcnJvcjtcbiBcbiBcdFx0c3RhdHVzID0gVFBfU1RBVFVTX1NFTkRfUkVRVUVTVDtcbi1cdFx0aGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XG4mIzQzO1x0XHRpZiAocG8tXHUwMDNlc2suc2tfc29ja2V0LVx1MDAzZXR5cGUgPT0gU09DS19SQVcpXG4mIzQzO1x0XHRcdGhsZW4gPSAoKGhhcmRfaGVhZGVyX2xlbiAmIzQzO1xuJiM0MztcdFx0XHRcdCBSRUFEX09OQ0UoZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSkpIFx1MDAyNlxuJiM0MztcdFx0XHRcdH4oSEhfREFUQV9NT0QgLSAxKSkgJiM0MzsgSEhfREFUQV9NT0Q7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuIFx0XHR0bGVuID0gZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdFx0aWYgKHZuZXRfaGRyX3N6KSB7XG4gXHRcdFx0ZGF0YSAmIzQzOz0gdm5ldF9oZHJfc3o7XG5AQCAtMjgzNSwxMCAmIzQzOzI4NTAsMTQgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG4gXHRcdFx0XHRcdFx0ICAgIHZuZXRfaGRyLmhkcl9sZW4pO1xuIFx0XHRcdGhhc192bmV0X2hkciA9IHRydWU7XG4gXHRcdH1cbi1cdFx0Y29weWxlbiA9IG1heF90KGludCwgY29weWxlbiwgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4mIzQzO1x0XHRpZiAocG8tXHUwMDNlc2suc2tfc29ja2V0LVx1MDAzZXR5cGUgPT0gU09DS19SQVcpXG4mIzQzO1x0XHRcdGNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGhhcmRfaGVhZGVyX2xlbik7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuIFx0XHRza2IgPSBzb2NrX2FsbG9jX3NlbmRfc2tiKFx1MDAyNnBvLVx1MDAzZXNrLFxuIFx0XHRcdFx0aGxlbiAmIzQzOyB0bGVuICYjNDM7IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbGwpICYjNDM7XG4tXHRcdFx0XHQoY29weWxlbiAtIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pLFxuJiM0MztcdFx0XHRcdChjb3B5bGVuIC0gKHBvLVx1MDAzZXNrLnNrX3NvY2tldC1cdTAwM2V0eXBlID09IFNPQ0tfUkFXID9cbiYjNDM7XHRcdFx0XHQgaGFyZF9oZWFkZXJfbGVuIDogZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbikpLFxuIFx0XHRcdFx0IW5lZWRfd2FpdCwgXHUwMDI2ZXJyKTtcbiBcbiBcdFx0aWYgKHVubGlrZWx5KHNrYiA9PSBOVUxMKSkge1xuQEAgLTI4NDgsNyAmIzQzOzI4NjcsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcbiBcdFx0XHRnb3RvIG91dF9zdGF0dXM7XG4gXHRcdH1cbiBcdFx0dHBfbGVuID0gdHBhY2tldF9maWxsX3NrYihwbywgc2tiLCBwaCwgZGV2LCBkYXRhLCB0cF9sZW4sIHByb3RvLFxuLVx0XHRcdFx0XHQgIGFkZHIsIGhsZW4sIGNvcHlsZW4sIFx1MDAyNnNvY2tjKTtcbiYjNDM7XHRcdFx0XHRcdCAgYWRkciwgaGxlbiwgY29weWxlbiwgaGFyZF9oZWFkZXJfbGVuLFxuJiM0MztcdFx0XHRcdFx0ICBcdTAwMjZzb2NrYyk7XG4gXHRcdGlmIChsaWtlbHkodHBfbGVuIFx1MDAzZT0gMCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICB0cF9sZW4gXHUwMDNlIGRldi1cdTAwM2VtdHUgJiM0MzsgcmVzZXJ2ZSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICF2bmV0X2hkcl9zeiBcdTAwMjZcdTAwMjZcbkBAIC0yOTU2LDcgJiM0MzsyOTc2LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbiBcdGludCBvZmZzZXQgPSAwO1xuIFx0c3RydWN0IHBhY2tldF9zb2NrICpwbyA9IHBrdF9zayhzayk7XG4gXHRpbnQgdm5ldF9oZHJfc3ogPSBSRUFEX09OQ0UocG8tXHUwMDNldm5ldF9oZHJfc3opO1xuLVx0aW50IGhsZW4sIHRsZW4sIGxpbmVhcjtcbiYjNDM7XHRpbnQgaGFyZF9oZWFkZXJfbGVuID0gMCwgaGxlbiwgdGxlbiwgbGluZWFyO1xuIFx0aW50IGV4dHJhX2xlbiA9IDA7XG4gXG4gXHQvKlxuQEAgLTI5OTYsMTQgJiM0MzszMDE2LDE3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NuZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4gXHRcdFx0Z290byBvdXRfdW5sb2NrO1xuIFx0fVxuIFxuLVx0aWYgKHNvY2stXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcbi1cdFx0cmVzZXJ2ZSA9IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4gXHRpZiAodm5ldF9oZHJfc3opIHtcbiBcdFx0ZXJyID0gcGFja2V0X3NuZF92bmV0X3BhcnNlKG1zZywgXHUwMDI2bGVuLCBcdTAwMjZ2bmV0X2hkciwgdm5ldF9oZHJfc3opO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbiBcdH1cbiBcbiYjNDM7XHRpZiAoc29jay1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XG4mIzQzO1x0XHRoYXJkX2hlYWRlcl9sZW4gPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4mIzQzO1x0XHRyZXNlcnZlID0gaGFyZF9oZWFkZXJfbGVuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAodW5saWtlbHkoc29ja19mbGFnKHNrLCBTT0NLX05PRkNTKSkpIHtcbiBcdFx0aWYgKCFuZXRpZl9zdXBwb3J0c19ub2ZjcyhkZXYpKSB7XG4gXHRcdFx0ZXJyID0gLUVQUk9UT05PU1VQUE9SVDtcbkBAIC0zMDE4LDEwICYjNDM7MzA0MSwxNSBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4gXHRlcnIgPSAtRU5PQlVGUztcbi1cdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuJiM0MztcdGlmIChzb2NrLVx1MDAzZXR5cGUgPT0gU09DS19SQVcpXG4mIzQzO1x0XHRobGVuID0gKChoYXJkX2hlYWRlcl9sZW4gJiM0MzsgUkVBRF9PTkNFKGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcdTAwMjZcbiYjNDM7XHRcdFx0fihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcbiBcdHRsZW4gPSBkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xuIFx0bGluZWFyID0gX192aXJ0aW8xNl90b19jcHUodmlvX2xlKCksIHZuZXRfaGRyLmhkcl9sZW4pO1xuLVx0bGluZWFyID0gbWF4KGxpbmVhciwgbWluX3QoaW50LCBsZW4sIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pKTtcbiYjNDM7XHRsaW5lYXIgPSBtYXgobGluZWFyLCBtaW5fdChpbnQsIGxlbiwgc29jay1cdTAwM2V0eXBlID09IFNPQ0tfUkFXID9cbiYjNDM7XHRcdFx0XHRcdCBoYXJkX2hlYWRlcl9sZW4gOiBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSk7XG4gXHRza2IgPSBwYWNrZXRfYWxsb2Nfc2tiKHNrLCBobGVuICYjNDM7IHRsZW4sIGhsZW4sIGxlbiwgbGluZWFyLFxuIFx0XHRcdCAgICAgICBtc2ctXHUwMDNlbXNnX2ZsYWdzIFx1MDAyNiBNU0dfRE9OVFdBSVQsIFx1MDAyNmVycik7XG4gXHRpZiAoc2tiID09IE5VTEwpXG5AQCAtMzAzNyw3ICYjNDM7MzA2NSw3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NuZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4gXHR9IGVsc2UgaWYgKHJlc2VydmUpIHtcbiBcdFx0c2tiX3Jlc2VydmUoc2tiLCAtcmVzZXJ2ZSk7XG4gXHRcdGlmIChsZW4gXHUwMDNjIHJlc2VydmUgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIGRldi1cdTAwM2VtaW5faGVhZGVyX2xlbiAhPSBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKVxuJiM0MztcdFx0ICAgIGRldi1cdTAwM2VtaW5faGVhZGVyX2xlbiAhPSBoYXJkX2hlYWRlcl9sZW4pXG4gXHRcdFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnX3Nwa3QmIzM0OywKICAgICYjMzQ7cGFja2V0X3NuZCYjMzQ7LAogICAgJiMzNDt0cGFja2V0X3NuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGluIEFGX1BBQ0tFVCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIGJ5IHVzaW5nIFJFQURfT05DRSBmb3IgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiBhbmQgZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbS4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgaXNzdWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjg0YzhkNTc2OWVlY2QyNzEyMmE1MGE5MTc2OGJlOWM0YzYxODRiMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDAwOjQ5OjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKaW5kZXggZTc1ZDI5MzI0NzVhYzAuLmQyMzg5OGYyNDY0MTYxIDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTE5NTMsNiAmIzQzOzE5NTMsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAJc3RydWN0IHNvY2tjbV9jb29raWUgc29ja2M7CiAJX19iZTE2IHByb3RvID0gMDsKJiM0MzsJdW5zaWduZWQgaW50IGhhcmRfaGVhZGVyX2xlbiA9IDA7CiAJaW50IGVycjsKIAlpbnQgZXh0cmFfbGVuID0gMDsKIApAQCAtMTk5NiwxNSAmIzQzOzE5OTcsMjEgQEAgc3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywKIAkJfQogCQlleHRyYV9sZW4gPSA0OyAvKiBXZSYjMzk7cmUgZG9pbmcgb3VyIG93biBDUkMgKi8KIAl9CiYjNDM7CWlmICghc2tiKQomIzQzOwkJaGFyZF9oZWFkZXJfbGVuID0gUkVBRF9PTkNFKGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKIAogCWVyciA9IC1FTVNHU0laRTsKLQlpZiAobGVuICZndDsgZGV2LSZndDttdHUgJiM0MzsgZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gJiM0MzsgVkxBTl9ITEVOICYjNDM7IGV4dHJhX2xlbikKJiM0MzsJaWYgKGxlbiAmZ3Q7IGRldi0mZ3Q7bXR1ICYjNDM7IGhhcmRfaGVhZGVyX2xlbiAmIzQzOyBWTEFOX0hMRU4gJiM0MzsgZXh0cmFfbGVuKQogCQlnb3RvIG91dF91bmxvY2s7CiAKIAlpZiAoIXNrYikgewotCQlzaXplX3QgcmVzZXJ2ZWQgPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpOwomIzQzOwkJc2l6ZV90IHJlc2VydmVkOwogCQlpbnQgdGxlbiA9IGRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tOwotCQl1bnNpZ25lZCBpbnQgaGhsZW4gPSBkZXYtJmd0O2hlYWRlcl9vcHMgPyBkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbiA6IDA7CiYjNDM7CQl1bnNpZ25lZCBpbnQgaGhsZW4gPSBSRUFEX09OQ0UoZGV2LSZndDtoZWFkZXJfb3BzKSA/CiYjNDM7CQkJCSAgICAgaGFyZF9oZWFkZXJfbGVuIDogMDsKJiM0MzsKJiM0MzsJCXJlc2VydmVkID0gKChoYXJkX2hlYWRlcl9sZW4gJiM0MzsgUkVBRF9PTkNFKGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tKSkgJmFtcDsKJiM0MzsJCQkgICAgfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDsKIAogCQlyY3VfcmVhZF91bmxvY2soKTsKIAkJc2tiID0gc29ja193bWFsbG9jKHNrLCBsZW4gJiM0MzsgcmVzZXJ2ZWQgJiM0MzsgdGxlbiwgMCwgR0ZQX0tFUk5FTCk7CkBAIC0yNTY5LDYgJiM0MzsyNTc2LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kX3ZuZXRfcGFyc2Uoc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgKmxlbiwKIHN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQl2b2lkICpmcmFtZSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgaW50IHRwX2xlbiwKIAkJX19iZTE2IHByb3RvLCB1bnNpZ25lZCBjaGFyICphZGRyLCBpbnQgaGxlbiwgaW50IGNvcHlsZW4sCiYjNDM7CQlpbnQgaGFyZF9oZWFkZXJfbGVuLAogCQljb25zdCBzdHJ1Y3Qgc29ja2NtX2Nvb2tpZSAqc29ja2MpCiB7CiAJdW5pb24gdHBhY2tldF91aGRyIHBoOwpAQCAtMjYwMCw4ICYjNDM7MjYwOCw4IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCX0gZWxzZSBpZiAoY29weWxlbikgewogCQlpbnQgaGRybGVuID0gbWluX3QoaW50LCBjb3B5bGVuLCB0cF9sZW4pOwogCi0JCXNrYl9wdXNoKHNrYiwgZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pOwotCQlza2JfcHV0KHNrYiwgY29weWxlbiAtIGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsJCXNrYl9wdXNoKHNrYiwgaGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsJCXNrYl9wdXQoc2tiLCBjb3B5bGVuIC0gaGFyZF9oZWFkZXJfbGVuKTsKIAkJZXJyID0gc2tiX3N0b3JlX2JpdHMoc2tiLCAwLCBkYXRhLCBoZHJsZW4pOwogCQlpZiAodW5saWtlbHkoZXJyKSkKIAkJCXJldHVybiBlcnI7CkBAIC0yNzMyLDcgJiM0MzsyNzQwLDcgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpCiAJdm9pZCAqZGF0YTsKIAlpbnQgbGVuX3N1bSA9IDA7CiAJaW50IHN0YXR1cyA9IFRQX1NUQVRVU19BVkFJTEFCTEU7Ci0JaW50IGhsZW4sIHRsZW4sIGNvcHlsZW4gPSAwOwomIzQzOwlpbnQgaGFyZF9oZWFkZXJfbGVuID0gMCwgaGxlbiwgdGxlbiwgY29weWxlbiA9IDA7CiAJbG9uZyB0aW1lbzsKIAogCW11dGV4X2xvY2soJmFtcDtwby0mZ3Q7cGdfdmVjX2xvY2spOwpAQCAtMjc3OSw4ICYjNDM7Mjc4NywxMCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZykKIAkJCWdvdG8gb3V0X3B1dDsKIAl9CiAKLQlpZiAocG8tJmd0O3NrLnNrX3NvY2tldC0mZ3Q7dHlwZSA9PSBTT0NLX1JBVykKLQkJcmVzZXJ2ZSA9IGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuOwomIzQzOwlpZiAocG8tJmd0O3NrLnNrX3NvY2tldC0mZ3Q7dHlwZSA9PSBTT0NLX1JBVykgewomIzQzOwkJaGFyZF9oZWFkZXJfbGVuID0gUkVBRF9PTkNFKGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsJCXJlc2VydmUgPSBoYXJkX2hlYWRlcl9sZW47CiYjNDM7CX0KIAlzaXplX21heCA9IHBvLSZndDt0eF9yaW5nLmZyYW1lX3NpemUKIAkJLSAocG8tJmd0O3RwX2hkcmxlbiAtIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbGwpKTsKIApAQCAtMjgxNyw3ICYjNDM7MjgyNywxMiBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZykKIAkJCWdvdG8gdHBhY2tldF9lcnJvcjsKIAogCQlzdGF0dXMgPSBUUF9TVEFUVVNfU0VORF9SRVFVRVNUOwotCQlobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTsKJiM0MzsJCWlmIChwby0mZ3Q7c2suc2tfc29ja2V0LSZndDt0eXBlID09IFNPQ0tfUkFXKQomIzQzOwkJCWhsZW4gPSAoKGhhcmRfaGVhZGVyX2xlbiAmIzQzOwomIzQzOwkJCQkgUkVBRF9PTkNFKGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tKSkgJmFtcDsKJiM0MzsJCQkJfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDsKJiM0MzsJCWVsc2UKJiM0MzsJCQlobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTsKIAkJdGxlbiA9IGRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tOwogCQlpZiAodm5ldF9oZHJfc3opIHsKIAkJCWRhdGEgJiM0Mzs9IHZuZXRfaGRyX3N6OwpAQCAtMjgzNSwxMCAmIzQzOzI4NTAsMTQgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpCiAJCQkJCQkgICAgdm5ldF9oZHIuaGRyX2xlbik7CiAJCQloYXNfdm5ldF9oZHIgPSB0cnVlOwogCQl9Ci0JCWNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsJCWlmIChwby0mZ3Q7c2suc2tfc29ja2V0LSZndDt0eXBlID09IFNPQ0tfUkFXKQomIzQzOwkJCWNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGhhcmRfaGVhZGVyX2xlbik7CiYjNDM7CQllbHNlCiYjNDM7CQkJY29weWxlbiA9IG1heF90KGludCwgY29weWxlbiwgZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pOwogCQlza2IgPSBzb2NrX2FsbG9jX3NlbmRfc2tiKCZhbXA7cG8tJmd0O3NrLAogCQkJCWhsZW4gJiM0MzsgdGxlbiAmIzQzOyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2xsKSAmIzQzOwotCQkJCShjb3B5bGVuIC0gZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pLAomIzQzOwkJCQkoY29weWxlbiAtIChwby0mZ3Q7c2suc2tfc29ja2V0LSZndDt0eXBlID09IFNPQ0tfUkFXID8KJiM0MzsJCQkJIGhhcmRfaGVhZGVyX2xlbiA6IGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKSksCiAJCQkJIW5lZWRfd2FpdCwgJmFtcDtlcnIpOwogCiAJCWlmICh1bmxpa2VseShza2IgPT0gTlVMTCkpIHsKQEAgLTI4NDgsNyAmIzQzOzI4NjcsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZykKIAkJCWdvdG8gb3V0X3N0YXR1czsKIAkJfQogCQl0cF9sZW4gPSB0cGFja2V0X2ZpbGxfc2tiKHBvLCBza2IsIHBoLCBkZXYsIGRhdGEsIHRwX2xlbiwgcHJvdG8sCi0JCQkJCSAgYWRkciwgaGxlbiwgY29weWxlbiwgJmFtcDtzb2NrYyk7CiYjNDM7CQkJCQkgIGFkZHIsIGhsZW4sIGNvcHlsZW4sIGhhcmRfaGVhZGVyX2xlbiwKJiM0MzsJCQkJCSAgJmFtcDtzb2NrYyk7CiAJCWlmIChsaWtlbHkodHBfbGVuICZndDs9IDApICZhbXA7JmFtcDsKIAkJICAgIHRwX2xlbiAmZ3Q7IGRldi0mZ3Q7bXR1ICYjNDM7IHJlc2VydmUgJmFtcDsmYW1wOwogCQkgICAgIXZuZXRfaGRyX3N6ICZhbXA7JmFtcDsKQEAgLTI5NTYsNyAmIzQzOzI5NzYsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKQogCWludCBvZmZzZXQgPSAwOwogCXN0cnVjdCBwYWNrZXRfc29jayAqcG8gPSBwa3Rfc2soc2spOwogCWludCB2bmV0X2hkcl9zeiA9IFJFQURfT05DRShwby0mZ3Q7dm5ldF9oZHJfc3opOwotCWludCBobGVuLCB0bGVuLCBsaW5lYXI7CiYjNDM7CWludCBoYXJkX2hlYWRlcl9sZW4gPSAwLCBobGVuLCB0bGVuLCBsaW5lYXI7CiAJaW50IGV4dHJhX2xlbiA9IDA7CiAKIAkvKgpAQCAtMjk5NiwxNCAmIzQzOzMwMTYsMTcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAkJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAKLQlpZiAoc29jay0mZ3Q7dHlwZSA9PSBTT0NLX1JBVykKLQkJcmVzZXJ2ZSA9IGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuOwogCWlmICh2bmV0X2hkcl9zeikgewogCQllcnIgPSBwYWNrZXRfc25kX3ZuZXRfcGFyc2UobXNnLCAmYW1wO2xlbiwgJmFtcDt2bmV0X2hkciwgdm5ldF9oZHJfc3opOwogCQlpZiAoZXJyKQogCQkJZ290byBvdXRfdW5sb2NrOwogCX0KIAomIzQzOwlpZiAoc29jay0mZ3Q7dHlwZSA9PSBTT0NLX1JBVykgewomIzQzOwkJaGFyZF9oZWFkZXJfbGVuID0gUkVBRF9PTkNFKGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsJCXJlc2VydmUgPSBoYXJkX2hlYWRlcl9sZW47CiYjNDM7CX0KJiM0MzsKIAlpZiAodW5saWtlbHkoc29ja19mbGFnKHNrLCBTT0NLX05PRkNTKSkpIHsKIAkJaWYgKCFuZXRpZl9zdXBwb3J0c19ub2ZjcyhkZXYpKSB7CiAJCQllcnIgPSAtRVBST1RPTk9TVVBQT1JUOwpAQCAtMzAxOCwxMCAmIzQzOzMwNDEsMTUgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAkJZ290byBvdXRfdW5sb2NrOwogCiAJZXJyID0gLUVOT0JVRlM7Ci0JaGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7CiYjNDM7CWlmIChzb2NrLSZndDt0eXBlID09IFNPQ0tfUkFXKQomIzQzOwkJaGxlbiA9ICgoaGFyZF9oZWFkZXJfbGVuICYjNDM7IFJFQURfT05DRShkZXYtJmd0O25lZWRlZF9oZWFkcm9vbSkpICZhbXA7CiYjNDM7CQkJfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDsKJiM0MzsJZWxzZQomIzQzOwkJaGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7CiAJdGxlbiA9IGRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tOwogCWxpbmVhciA9IF9fdmlydGlvMTZfdG9fY3B1KHZpb19sZSgpLCB2bmV0X2hkci5oZHJfbGVuKTsKLQlsaW5lYXIgPSBtYXgobGluZWFyLCBtaW5fdChpbnQsIGxlbiwgZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pKTsKJiM0MzsJbGluZWFyID0gbWF4KGxpbmVhciwgbWluX3QoaW50LCBsZW4sIHNvY2stJmd0O3R5cGUgPT0gU09DS19SQVcgPwomIzQzOwkJCQkJIGhhcmRfaGVhZGVyX2xlbiA6IGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKSk7CiAJc2tiID0gcGFja2V0X2FsbG9jX3NrYihzaywgaGxlbiAmIzQzOyB0bGVuLCBobGVuLCBsZW4sIGxpbmVhciwKIAkJCSAgICAgICBtc2ctJmd0O21zZ19mbGFncyAmYW1wOyBNU0dfRE9OVFdBSVQsICZhbXA7ZXJyKTsKIAlpZiAoc2tiID09IE5VTEwpCkBAIC0zMDM3LDcgJiM0MzszMDY1LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAl9IGVsc2UgaWYgKHJlc2VydmUpIHsKIAkJc2tiX3Jlc2VydmUoc2tiLCAtcmVzZXJ2ZSk7CiAJCWlmIChsZW4gJmx0OyByZXNlcnZlICYjNDM7IHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgJmFtcDsmYW1wOwotCQkgICAgZGV2LSZndDttaW5faGVhZGVyX2xlbiAhPSBkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbikKJiM0MzsJCSAgICBkZXYtJmd0O21pbl9oZWFkZXJfbGVuICE9IGhhcmRfaGVhZGVyX2xlbikKIAkJCXNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihza2IpOwogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTQ4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmtpbmcgUGF0Y2ggZm9yIFJvYnVzdG5lc3MgYW5kIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYC4gSXQgc2VlbXMgdGhleSYjMzk7cmUgbWFraW5nIGEgcHJldHR5IGZ1bmRhbWVudGFsIGNoYW5nZSDigJMgYWx0ZXJpbmcgaG93IGBoYXJkX2hlYWRlcl9sZW5gIGlzIGhhbmRsZWQgaW4gdGhlc2UgY3JpdGljYWwgZnVuY3Rpb25zOiBgcGFja2V0X3NlbmRtc2dfc3BrdGAsIGB0cGFja2V0X2ZpbGxfc2tiYCwgYHRwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc25kYC4gVGhlIGNvcmUgaWRlYSBpcyB0byB1c2UgYFJFQURfT05DRWAgb24gYGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuYCBhbmQgc3RvcmUgaXQgaW4gYSBsb2NhbCB2YXJpYWJsZS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgbW92ZSB0byBhdm9pZCBwb3RlbnRpYWwgZGF0YSByYWNlcyBvciBUaW1lLW9mLUNoZWNrLXRvLVRpbWUtb2YtVXNlIChUT0NUT1UpIHZ1bG5lcmFiaWxpdGllcywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSBwYXJhbWV0ZXJzIHRoYXQgY291bGQgY2hhbmdlIGNvbmN1cnJlbnRseS4gU21hcnQuIFRoZXkmIzM5O3JlIGFsc28gYWRqdXN0aW5nIGhvdyBgaGxlbmAgYW5kIGBjb3B5bGVuYCBhcmUgZGVyaXZlZCwgbGV2ZXJhZ2luZyB0aGUgYGhhcmRfaGVhZGVyX2xlbmAgYW5kIGBSRUFEX09OQ0UoZGV2LSZndDtuZWVkZWRfaGVhZHJvb20pYC4KClRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzZXJpb3VzIGF0dGVudGlvbi4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgY29kZSwgZGVhbGluZyB3aXRoIEFGX1BBQ0tFVCBzb2NrZXRzLiBUaGUgcGF0Y2ggaXMgY2xlYXJseSBhZGRyZXNzaW5nIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHBhY2tldCBjb3JydXB0aW9uIG9yIGV2ZW4gc2VjdXJpdHkgcHJvYmxlbXMuIEkgc2VlIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcy4gVGhpcyBuZWVkcyB0byBiZSBmdXp6ZWQsIGltbWVkaWF0ZWx5LiBUaGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yLCBwYXJ0aWN1bGFybHkgaW4gaGlnaC1sb2FkIHNpdHVhdGlvbnMsIGlzIGhpZ2guCgpMZXQgbWUgcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgZm9yIGZvY3VzZWQgZnV6emluZzogYHBhY2tldF9zZW5kbXNnX3Nwa3RgLCBgdHBhY2tldF9maWxsX3NrYmAsIGB0cGFja2V0X3NuZGAsIGFuZCBgcGFja2V0X3NuZGAuCgpXYWl0IGEgbWludXRlLCBgcGFja2V0X3NlbmRtc2dfc3BrdGAgaXMgc3RhdGljISBJJiMzOTtkIGJldHRlciBjb25maXJtIGl0JiMzOTtzIGFjdHVhbGx5IGV4cG9zZWQuIFRpbWUgdG8gZ28gYmFjayBhbmQgY2hlY2sgdGhlIGNvZGUuIFl1cCwgaXQmIzM5O3MgdGhlIGBzZW5kbXNnYCBoYW5kbGVyIGZvciBgU09DS19QQUNLRVRgIOKAkyB0aGUgb2xkIHBhY2tldCBzb2NrZXQgdHlwZS4gYHBhY2tldF9zbmRgIGhhbmRsZXMgYFNPQ0tfUkFXYCBhbmQgYFNPQ0tfREdSQU1gLCBhbmQgYHRwYWNrZXRfc25kYCBpcyByZWxhdGVkIHRvIFRYX1JJTkcgZm9yIG1lbW9yeS1tYXBwZWQgc29ja2V0cy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBwcm90b19vcHNgIGRlZmluaXRpb25zIGZvciB0aGVzZSBzb2NrZXQgdHlwZXMgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWNrZXRfc2VuZG1zZ19zcGt0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5MjM9c3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5NDc6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0OC1cdFx0XHQgICAgICAgc2l6ZV90IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ2Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wc19zcGt0ID0ge1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY5MC1cdC5zaHV0ZG93biA9XHRzb2NrX25vX3NodXRkb3duLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NjkxOlx0LnNlbmRtc2cgPVx0cGFja2V0X3NlbmRtc2dfc3BrdCxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY5Mi1cdC5yZWN2bXNnID1cdHBhY2tldF9yZWN2bXNnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MzgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSByZWxhdGlvbnNoaXBzLCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gUGFja2V0IFRyYW5zbWlzc2lvbiBGdW5jdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgcGFja2V0X3NlbmRtc2dfc3BrdGAgaXMgc3BlY2lmaWNhbGx5IGVtcGxveWVkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFja2V0X29wc19zcGt0YC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8gbm90ZTsgaXQgbWVhbnMgdGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgaGFuZGxpbmcgdGhlICpzcGVjaWZpYyogc29ja2V0IHByb3RvY29sIChTUEtUKSBvcGVyYXRpb25zIGZvciBwYWNrZXQgdHJhbnNtaXNzaW9uLiBJdCBzdWdnZXN0cyBhIG1vcmUgc3BlY2lhbGl6ZWQgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgcGFja2V0IGhhbmRsaW5nIGZyYW1ld29yaywgdGllZCB0byBTUEtUIHByb3RvY29sIGhhbmRsaW5nLiBJJiMzOTtkIG5lZWQgdG8gbG9vayBjbG9zZXIgYXQgd2hhdCBgcGFja2V0X29wc19zcGt0YCBkb2VzIGdlbmVyYWxseSB0byBjb25maXJtLgoKVGhlbiwgdGhlcmUmIzM5O3MgYHBhY2tldF9zbmRgLiBUaGlzIGZ1bmN0aW9uIGlzIG1vcmUgYnJvYWRseSB1c2VkLCBhcHBlYXJpbmcgaW4gYm90aCBgcGFja2V0X29wc2AsIHdoaWNoIGlzIHRoZSBiYXNlIHBhY2tldCBvcGVyYXRpb25zLCAqYW5kKiBpbiBgcGFja2V0X29wc19xZGlzY2AsIHdoaWNoIGRlYWxzIHdpdGggdGhlIHRyYWZmaWMgc2hhcGluZyBkaXNjaXBsaW5lIHNpZGUgb2YgdGhlIGhvdXNlLiBUaGF0IHRlbGxzIG1lIGBwYWNrZXRfc25kYCBwcm9iYWJseSBoYW5kbGVzIHRoZSBhY3R1YWwgdW5kZXJseWluZyBtZWNoYW5pY3Mgb2Ygc2VuZGluZyB0aGUgcGFja2V0LCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQmIzM5O3MgdGhlIGNvcmUgb3BlcmF0aW9uIG9yIHBhcnQgb2YgYSBxdWV1ZWluZyBkaXNjaXBsaW5lLiBJdCYjMzk7cyB0aGUgd29ya2hvcnNlIGZ1bmN0aW9uLiBUaGlzIGlzIGtleSB0byB1bmRlcnN0YW5kIGhvdyBwYWNrZXQgc2VuZGluZyBpbnRlcmFjdHMgYWNyb3NzIHZhcmlvdXMgbGV2ZWxzIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLiBUaGlzIGhpZ2hsaWdodHMgdGhlIG1vZHVsYXJpdHkgb2YgdGhlIGRlc2lnbiwgd2l0aCBhIGxvd2VyLWxldmVsIGZ1bmN0aW9uIChwYWNrZXRfc25kKSBiZWluZyByZS11c2VkIGJ5IG11bHRpcGxlIGhpZ2hlci1sZXZlbCBwYWNrZXQgb3BlcmF0aW9uIGNvbXBvbmVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFja2V0X3NuZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yNTE3PXN0YXRpYyB2b2lkIHRwYWNrZXRfZGVzdHJ1Y3Rfc2tiKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTM2LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTM3OnN0YXRpYyBpbnQgX19wYWNrZXRfc25kX3ZuZXRfcGFyc2Uoc3RydWN0IHZpcnRpb19uZXRfaGRyICp2bmV0X2hkciwgc2l6ZV90IGxlbilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzOC17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTUyLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTUzOnN0YXRpYyBpbnQgcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90ICpsZW4sXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NTQtXHRcdFx0XHQgc3RydWN0IHZpcnRpb19uZXRfaGRyICp2bmV0X2hkciwgaW50IHZuZXRfaGRyX3N6KVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU2NC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjU2NTpcdHJldCA9IF9fcGFja2V0X3NuZF92bmV0X3BhcnNlKHZuZXRfaGRyLCAqbGVuKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU2Ni1cdGlmIChyZXQpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yNjU3PXN0YXRpYyBpbnQgdHBhY2tldF9wYXJzZV9oZWFkZXIoc3RydWN0IHBhY2tldF9zb2NrICpwbywgdm9pZCAqZnJhbWUsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzI0LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNzI1OnN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzI2LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI4NDQtXHRcdFx0bWVtY3B5KFx1MDAyNnZuZXRfaGRyLCBkYXRhIC0gdm5ldF9oZHJfc3osIHNpemVvZih2bmV0X2hkcikpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyODQ1Olx0XHRcdGlmIChfX3BhY2tldF9zbmRfdm5ldF9wYXJzZShcdTAwMjZ2bmV0X2hkciwgdHBfbGVuKSkge1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yODQ2LVx0XHRcdFx0dHBfbGVuID0gLUVJTlZBTDtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI5Mzk9c3RhdGljIHN0cnVjdCBza19idWZmICpwYWNrZXRfYWxsb2Nfc2tiKHN0cnVjdCBzb2NrICpzaywgc2l6ZV90IHByZXBhZCxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI5NjQtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI5NjU6c3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk2Ni17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMDE5LVx0aWYgKHZuZXRfaGRyX3N6KSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMwMjA6XHRcdGVyciA9IHBhY2tldF9zbmRfdm5ldF9wYXJzZShtc2csIFx1MDAyNmxlbiwgXHUwMDI2dm5ldF9oZHIsIHZuZXRfaGRyX3N6KTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzAyMS1cdFx0aWYgKGVycilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMxMzE9c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTM2LVx0LyogUmVhZGluZyB0eF9yaW5nLnBnX3ZlYyB3aXRob3V0IGhvbGRpbmcgcGdfdmVjX2xvY2sgaXMgcmFjeS5cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzEzNzpcdCAqIHRwYWNrZXRfc25kKCkgd2lsbCByZWRvIHRoZSBjaGVjayBzYWZlbHkuXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMzgtXHQgKi9cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEzOS1cdGlmIChkYXRhX3JhY2UocG8tXHUwMDNldHhfcmluZy5wZ192ZWMpKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTQwOlx0XHRyZXR1cm4gdHBhY2tldF9zbmQocG8sIG1zZyk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNDEtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxNDI6XHRyZXR1cm4gcGFja2V0X3NuZChzb2NrLCBtc2csIGxlbik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNDMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5ODUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBhY2tldCBTZW5kaW5nIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHBhY2tldHMgYXJlIHNlbnQsIHNwZWNpZmljYWxseSB3aXRoIGBTT0NLX1JBV2AgYW5kIGBTT0NLX0RHUkFNYCBzb2NrZXRzLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgcGFja2V0X3NlbmRtc2dgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIHRob3NlIHR5cGVzIG9mIHNvY2tldHMuIEl0JiMzOTtzIHRoZSBvbmUgdGhhdCBjYWxscyBlaXRoZXIgYHRwYWNrZXRfc25kYCBvciBgcGFja2V0X3NuZGAgdG8gZG8gdGhlIGFjdHVhbCB3b3JrLiBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgb2YgdGhpcywgc28gSSB3aWxsIGxpc3QgYHBhY2tldF9zZW5kbXNnYCBhcyBhIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBkdXJpbmcgbXkgYW5hbHlzaXMuCgpBbHNvLCBmb3IgYFNPQ0tfUEFDS0VUYCBzb2NrZXRzLCBpdCBzZWVtcyB0aGF0IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyB0aGUgZGVzaWduYXRlZCBlbnRyeSBwb2ludC4gVGhpcyBhbHNvIG5lZWRzIHRvIGdvIG9uIG15IGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJldmlldywgYXMgdGhleSBzZWVtIHRvIHdvcmsgaW4gdGhlIHNhbWUgc3BoZXJlLCBidXQgd2l0aCBkaWZmZXJpbmcgaW1wbGVtZW50YXRpb24uCgpIYW5nIG9uIGEgc2Vjb25k4oCmSSBqdXN0IG5vdGljZWQgdGhhdCBgcGFja2V0X3NlbmRtc2dfc3BrdGAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBEb2VzIHRoYXQgbWVhbiBpdCYjMzk7cyBvbmx5IHZpc2libGUgd2l0aGluIGEgc3BlY2lmaWMgY29tcGlsYXRpb24gdW5pdD8gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGFuZCB3b3J0aCBpbnZlc3RpZ2F0aW5nIGZ1cnRoZXIuIE5vdyBJJiMzOTttIHdvbmRlcmluZyBpZiBgcGFja2V0X3NlbmRtc2dgIGlzIGFsc28gc3RhdGljLCBvciBpZiBpdCBoYXMgZXh0ZXJuYWwgbGlua2FnZS4gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5MjM9c3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5NDc6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0OC1cdFx0XHQgICAgICAgc2l6ZV90IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI3MjU9c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzQ3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNzQ4Olx0LyogcGFja2V0X3NlbmRtc2coKSBjaGVjayBvbiB0eF9yaW5nLnBnX3ZlYyB3YXMgbG9ja2xlc3MsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3NDktXHQgKiB3ZSBuZWVkIHRvIGNvbmZpcm0gaXQgdW5kZXIgcHJvdGVjdGlvbiBvZiBwZ192ZWNfbG9jay5cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI5NjU9c3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMzAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxMzE6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMzIte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDY3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzX3Nwa3QgPSB7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NjkwLVx0LnNodXRkb3duID1cdHNvY2tfbm9fc2h1dGRvd24sXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ2OTE6XHQuc2VuZG1zZyA9XHRwYWNrZXRfc2VuZG1zZ19zcGt0LFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NjkyLVx0LnJlY3Ztc2cgPVx0cGFja2V0X3JlY3Ztc2csXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00Njk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHMgPSB7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzExLVx0LmdldHNvY2tvcHRfaXRlciA9XHRwYWNrZXRfZ2V0c29ja29wdCxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDcxMjpcdC5zZW5kbXNnID1cdHBhY2tldF9zZW5kbXNnLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzEzLVx0LnJlY3Ztc2cgPVx0cGFja2V0X3JlY3Ztc2csXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk5MQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEVudHJ5IFBvaW50cyBmb3IgRnV6emluZyB0aGUgUGFja2V0IFNvY2tldCBTdWJzeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgcGFja2V0IHNvY2tldCBzdWJzeXN0ZW0gYWdhaW4uIEJvdGggYHBhY2tldF9zZW5kbXNnYCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaXMgaW5pdGlhbGx5IGEgY29uY2Vybi4gSG93ZXZlciwgdGhleSYjMzk7cmUgYXNzaWduZWQgdG8gYHByb3RvX29wc2AsIHdoaWNoIGlzIGNydWNpYWwuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciBzdGlsbCByZXNvbHZlIHRoZXNlPyBZZXMsIFN5emthbGxlciBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMsIHByb3ZpZGVkIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkLiBHaXZlbiB0aGF0IHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4gYmVjYXVzZSB0aGV5IGFyZSBmdW5jdGlvbiBwb2ludGVycyBpbiB0aGlzIGNhc2UsIGNvbXBsZXRlIGlubGluaW5nIGlzIGltcG9zc2libGUsIHdoaWNoIGlzIGdvb2QuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgY29uZmlybSB0aGF0IGBwYWNrZXRfc25kYCBhbmQgYHRwYWNrZXRfc25kYCBhcmUgYWxzbyBzdGF0aWMsIGFuZCB5ZXMgdGhleSBhcmUuIFRoZXJlZm9yZSwgSSBjYW4gZGVmaW5pdGVseSBpbmNsdWRlIGBwYWNrZXRfc2VuZG1zZ2AsIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHBhY2tldF9zbmRgLCBhbmQgYHRwYWNrZXRfc25kYCBpbiBteSBzeW1ib2wgbGlzdC4KCldhaXQgYSBtb21lbnQuLi4gYHBhY2tldF9zZW5kbXNnYCBsb29rcyBsaWtlIGEgcGFydGljdWxhcmx5IHByb21pc2luZyBlbnRyeSBwb2ludC4gSXQmIzM5O3MgbGlrZWx5IHRoZSByaWdodCBvbmUgdG8gZm9jdXMgb24uCgpOb3csIGxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGZvciBhbnkgbmVjZXNzYXJ5IGBDT05GSUdgIG9wdGlvbnMuIFRoZSBjb2RlIGlzIGxvY2F0ZWQgaW4gYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgLCBhbmQgdGhhdCYjMzk7cyBjb21waWxlZCB3aGVuIGBDT05GSUdfUEFDS0VUYCBpcyBlbmFibGVkLCBzbyB0aGF0JiMzOTtzIGFsbCBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19QQUNLRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L01ha2VmaWxlLTUtXG5uZXQvcGFja2V0L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1BBQ0tFVCkgJiM0Mzs9IGFmX3BhY2tldC5vXG5uZXQvcGFja2V0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX1BBQ0tFVF9ESUFHKSAmIzQzOz0gYWZfcGFja2V0X2RpYWcub1xubmV0L3BhY2tldC9NYWtlZmlsZS04LWFmX3BhY2tldF9kaWFnLXkgJiM0Mzs9IGRpYWcub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTk1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQUZfUEFDS0VUIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYENPTkZJR19QQUNLRVRgIGlzIGEgaGFyZCByZXF1aXJlbWVudC4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoYXQuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgaW52b2x2ZWQgaGVyZT8gVGhlIHBhdGNoIG1vZGlmaWVzIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBgdHBhY2tldF9zbmRgLCBhbmQgYHBhY2tldF9zbmRgLiBBbGwgdGhlc2UgZnVuY3Rpb25zIHJlc2lkZSB3aXRoaW4gYGFmX3BhY2tldC5jYC4gSG1tLCBpcyBgQ09ORklHX1BBQ0tFVGAgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQ/IFllcywgaXQgYWxtb3N0IGFsd2F5cyBpcy4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBgUEFDS0VUYCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuCgpMZXQgbWUgZG91YmxlLWNoZWNrIGlmIEkmIzM5O3ZlIG1pc3NlZCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMuLi4gT2theSwgYHZuZXRfaGRyYCBpcyB1c2VkIGluIGBwYWNrZXRfc25kYCBhbmQgYHRwYWNrZXRfc25kYCwgYnV0IGl0JiMzOTtzIG5vdCBndWFyZGVkIGJ5IGFueSBzcGVjaWZpYyBjb25maWcuIGBTT0NLX1JBV2AgYW5kIGBTT0NLX0RHUkFNYCBhcmUgc3RhbmRhcmQsIHNvIG5vIG5lZWQgdG8gZXhwbGljaXRseSBjYWxsIHRoZW0gb3V0LgoKVGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZy4gSXQmIzM5O3MgZml4aW5nIGEgcmFjZSBjb25kaXRpb24gaW52b2x2aW5nIGBkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbmAgYW5kIGBkZXYtJmd0O25lZWRlZF9oZWFkcm9vbWAuIFRoZSBjb2RlIHdhcyBhY2Nlc3NpbmcgdGhlc2UgdmFsdWVzIGNvbmN1cnJlbnRseSwgbGVhZGluZyB0byBwb3RlbnRpYWxseSBpbmNvbnNpc3RlbnQgdmFsdWVzIGR1cmluZyBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgY29weWluZy4gVGhpcyBjb3VsZCByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3Igb3RoZXIgbmFzdHkgcHJvYmxlbXMuIFNvLCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBpbXBvcnRhbnQgb25lIGF0IHRoYXQuCgpMZXQgbWUgc3VtbWFyaXplIG15IGN1cnJlbnQgZmluZGluZ3M6IEkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoZSBrZXkgc3ltYm9scyBhcHBlYXIgdG8gYmUgYHBhY2tldF9zZW5kbXNnYCwgYHBhY2tldF9zZW5kbXNnX3Nwa3RgLCBgcGFja2V0X3NuZGAsIGFuZCBgdHBhY2tldF9zbmRgLiBJJiMzOTtsbCBuZWVkIGBQQUNLRVRgIGVuYWJsZWQuIE15IHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgY3JpdGljYWwgcmFjZSBjb25kaXRpb25zIGluIHRoZSBBRl9QQUNLRVQgc29ja2V0IHRyYW5zbWlzc2lvbiBwYXRocywgdXNpbmcgYFJFQURfT05DRWAgZm9yIGBkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbmAgYW5kIGBkZXYtJmd0O25lZWRlZF9oZWFkcm9vbWAuIFRoaXMgdG91Y2hlcyBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbi4KCldhaXQsIEkganVzdCByZWFsaXplZCB0aGF0IGB0cGFja2V0X2ZpbGxfc2tiYCBpcyBhbHNvIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guIElzIHRoYXQgZnVuY3Rpb24gc3RhdGljPyBZZXMuIEkgc2hvdWxkIGRlZmluaXRlbHkgaW5jbHVkZSBpdCBpbiB0aGUgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLgoKTm93LCBsZXQgbWUgbWFrZSBzdXJlIHRoZXNlIGZvdXIgZnVuY3Rpb25zIGFyZSByZWFsbHkgdGhlIG1vc3QgaW1wb3J0YW50IG9uZXMuIEFscmlnaHQsIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcmUgdGhlIHRvcC1sZXZlbCBgc2VuZG1zZ2AgaGFuZGxlcnMgZm9yIHBhY2tldCBzb2NrZXRzLCBzbyB0aGV5IGFyZSBjcnVjaWFsLiBBbmQsIGBwYWNrZXRfc25kYCBhbmQgYHRwYWNrZXRfc25kYCBhcmUgY2FsbGVkIGJ5IGBwYWNrZXRfc2VuZG1zZ2AsIHNvIGFsbCBmb3VyIGFyZSBpbXBvcnRhbnQuIEkmIzM5O2xsIHN0aWNrIHdpdGggYWxsIGZvdXIgYXMgdGhlIGBGb2N1c1N5bWJvbHNgLgoKSSB0aGluayBJJiMzOTt2ZSBjb3ZlcmVkIGV2ZXJ5dGhpbmcuLi4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBJIG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQUNLRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9LY29uZmlnLTUtXG5uZXQvcGFja2V0L0tjb25maWc6Njpjb25maWcgUEFDS0VUXG5uZXQvcGFja2V0L0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1BhY2tldCBzb2NrZXRcJiMzNDtcbi0tXG5uZXQvcGFja2V0L0tjb25maWctMTgtXG5uZXQvcGFja2V0L0tjb25maWc6MTk6Y29uZmlnIFBBQ0tFVF9ESUFHXG5uZXQvcGFja2V0L0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQ6IHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc3NgoJCQkJCQkJb3V0cHV0OiAxMjMKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSWRlbnRpZnlpbmcgdGhlIEtleSBFbGVtZW50ICZhbXA7IERyYWZ0aW5nIGEgUmVzcG9uc2UqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgYXNzZXNzbWVudCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIGNvbmNlcHQsIHRoZSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGFkZHJlc3NlZCwgaXMgdW5lcXVpdm9jYWxseSByZXByZXNlbnRlZCBieSBgUEFDS0VUYC4gTm8gYW1iaWd1aXR5IHRoZXJlLiBJdCYjMzk7cyB0aGUgc2luZ3VsYXIgcG9pbnQgb2YgZm9jdXMuCgpOb3csIHdpdGggdGhlIGNlbnRyYWwgZWxlbWVudCBpZGVudGlmaWVkLCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZm9ybXVsYXRlIHRoZSByZXNwb25zZS4gVGhlIGZvY3VzIHNoaWZ0cyB0byBjcmFmdGluZyBhIGNsZWFyLCBjb25jaXNlLCBhbmQgYWNjdXJhdGUgY29tbXVuaWNhdGlvbiBvZiB0aGUgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBgUEFDS0VUYC4gVGhlIHVuZGVybHlpbmcgYXNzdW1wdGlvbiBpcyB0aGF0IGEgcmVzcG9uc2UgaXMgcmVxdWlyZWQsIGFuZCB0aGUgdGhvdWdodCBwcm9jZXNzIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGFjdGlvbiwgaW5kaWNhdGluZyBhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0YXNrIGF0IGhhbmQgYW5kIHRoZSBleHBlY3RlZCBvdXRwdXQuIFdlIG1vdmUgdG8gdGhlIGNvcmUgcHJvY2VzcyBvZiBjb21tdW5pY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEFDS0VUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFja2V0X3NlbmRtc2cmIzM0OywKICAgICYjMzQ7cGFja2V0X3NlbmRtc2dfc3BrdCYjMzQ7LAogICAgJiMzNDtwYWNrZXRfc25kJiMzNDssCiAgICAmIzM0O3RwYWNrZXRfc25kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gQUZfUEFDS0VUIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgYnkgdXNpbmcgUkVBRF9PTkNFIGZvciBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIGFuZCBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tLiBUaGlzIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIHBhY2tldCB0cmFuc21pc3Npb24gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpc3N1ZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnX3Nwa3QmIzM0OywKICAgICYjMzQ7cGFja2V0X3NuZCYjMzQ7LAogICAgJiMzNDt0cGFja2V0X3NuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGluIEFGX1BBQ0tFVCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIGJ5IHVzaW5nIFJFQURfT05DRSBmb3IgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiBhbmQgZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbS4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgaXNzdWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NTA6MDAuNTQ3MTc1MzQ1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE0MzQ4NTk2NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFDS0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFja2V0X3NlbmRtc2dcIixcbiAgICBcInBhY2tldF9zZW5kbXNnX3Nwa3RcIixcbiAgICBcInBhY2tldF9zbmRcIixcbiAgICBcInRwYWNrZXRfc25kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBpbiBBRl9QQUNLRVQgc29ja2V0IHRyYW5zbWlzc2lvbiBwYXRocyBieSB1c2luZyBSRUFEX09OQ0UgZm9yIGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuIGFuZCBkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbS4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgaXNzdWVzIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo1MDowMC41NDcxOTQzMzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTY0MTE5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY4NGM4ZDU3NjllZWNkMjcxMjJhNTBhOTE3NjhiZTljNGM2MTg0YjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMDA6NDk6NTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcXG5pbmRleCBlNzVkMjkzMjQ3NWFjMC4uZDIzODk4ZjI0NjQxNjEgMTAwNjQ0XFxuLS0tIGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuY1xcbisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcXG5AQCAtMTk1Myw2ICsxOTUzLDcgQEAgc3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcXG4gXFx0c3RydWN0IHNvY2tjbV9jb29raWUgc29ja2M7XFxuIFxcdF9fYmUxNiBwcm90byA9IDA7XFxuK1xcdHVuc2lnbmVkIGludCBoYXJkX2hlYWRlcl9sZW4gPSAwO1xcbiBcXHRpbnQgZXJyO1xcbiBcXHRpbnQgZXh0cmFfbGVuID0gMDtcXG4gXFxuQEAgLTE5OTYsMTUgKzE5OTcsMjEgQEAgc3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcXG4gXFx0XFx0fVxcbiBcXHRcXHRleHRyYV9sZW4gPSA0OyAvKiBXZSdyZSBkb2luZyBvdXIgb3duIENSQyAqL1xcbiBcXHR9XFxuK1xcdGlmICghc2tiKVxcbitcXHRcXHRoYXJkX2hlYWRlcl9sZW4gPSBSRUFEX09OQ0UoZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xcbiBcXG4gXFx0ZXJyID0gLUVNU0dTSVpFO1xcbi1cXHRpZiAobGVuIFxcdTAwM2UgZGV2LVxcdTAwM2VtdHUgKyBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiArIFZMQU5fSExFTiArIGV4dHJhX2xlbilcXG4rXFx0aWYgKGxlbiBcXHUwMDNlIGRldi1cXHUwMDNlbXR1ICsgaGFyZF9oZWFkZXJfbGVuICsgVkxBTl9ITEVOICsgZXh0cmFfbGVuKVxcbiBcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcbiBcXHRpZiAoIXNrYikge1xcbi1cXHRcXHRzaXplX3QgcmVzZXJ2ZWQgPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbitcXHRcXHRzaXplX3QgcmVzZXJ2ZWQ7XFxuIFxcdFxcdGludCB0bGVuID0gZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb207XFxuLVxcdFxcdHVuc2lnbmVkIGludCBoaGxlbiA9IGRldi1cXHUwMDNlaGVhZGVyX29wcyA/IGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuIDogMDtcXG4rXFx0XFx0dW5zaWduZWQgaW50IGhobGVuID0gUkVBRF9PTkNFKGRldi1cXHUwMDNlaGVhZGVyX29wcykgP1xcbitcXHRcXHRcXHRcXHQgICAgIGhhcmRfaGVhZGVyX2xlbiA6IDA7XFxuK1xcbitcXHRcXHRyZXNlcnZlZCA9ICgoaGFyZF9oZWFkZXJfbGVuICsgUkVBRF9PTkNFKGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tKSkgXFx1MDAyNlxcbitcXHRcXHRcXHQgICAgfihISF9EQVRBX01PRCAtIDEpKSArIEhIX0RBVEFfTU9EO1xcbiBcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdFxcdHNrYiA9IHNvY2tfd21hbGxvYyhzaywgbGVuICsgcmVzZXJ2ZWQgKyB0bGVuLCAwLCBHRlBfS0VSTkVMKTtcXG5AQCAtMjU2OSw2ICsyNTc2LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kX3ZuZXRfcGFyc2Uoc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgKmxlbixcXG4gc3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdHZvaWQgKmZyYW1lLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBpbnQgdHBfbGVuLFxcbiBcXHRcXHRfX2JlMTYgcHJvdG8sIHVuc2lnbmVkIGNoYXIgKmFkZHIsIGludCBobGVuLCBpbnQgY29weWxlbixcXG4rXFx0XFx0aW50IGhhcmRfaGVhZGVyX2xlbixcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IHNvY2tjbV9jb29raWUgKnNvY2tjKVxcbiB7XFxuIFxcdHVuaW9uIHRwYWNrZXRfdWhkciBwaDtcXG5AQCAtMjYwMCw4ICsyNjA4LDggQEAgc3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdH0gZWxzZSBpZiAoY29weWxlbikge1xcbiBcXHRcXHRpbnQgaGRybGVuID0gbWluX3QoaW50LCBjb3B5bGVuLCB0cF9sZW4pO1xcbiBcXG4tXFx0XFx0c2tiX3B1c2goc2tiLCBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XFxuLVxcdFxcdHNrYl9wdXQoc2tiLCBjb3B5bGVuIC0gZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xcbitcXHRcXHRza2JfcHVzaChza2IsIGhhcmRfaGVhZGVyX2xlbik7XFxuK1xcdFxcdHNrYl9wdXQoc2tiLCBjb3B5bGVuIC0gaGFyZF9oZWFkZXJfbGVuKTtcXG4gXFx0XFx0ZXJyID0gc2tiX3N0b3JlX2JpdHMoc2tiLCAwLCBkYXRhLCBoZHJsZW4pO1xcbiBcXHRcXHRpZiAodW5saWtlbHkoZXJyKSlcXG4gXFx0XFx0XFx0cmV0dXJuIGVycjtcXG5AQCAtMjczMiw3ICsyNzQwLDcgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuIFxcdHZvaWQgKmRhdGE7XFxuIFxcdGludCBsZW5fc3VtID0gMDtcXG4gXFx0aW50IHN0YXR1cyA9IFRQX1NUQVRVU19BVkFJTEFCTEU7XFxuLVxcdGludCBobGVuLCB0bGVuLCBjb3B5bGVuID0gMDtcXG4rXFx0aW50IGhhcmRfaGVhZGVyX2xlbiA9IDAsIGhsZW4sIHRsZW4sIGNvcHlsZW4gPSAwO1xcbiBcXHRsb25nIHRpbWVvO1xcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2cG8tXFx1MDAzZXBnX3ZlY19sb2NrKTtcXG5AQCAtMjc3OSw4ICsyNzg3LDEwIEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxcbiBcXHRcXHRcXHRnb3RvIG91dF9wdXQ7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChwby1cXHUwMDNlc2suc2tfc29ja2V0LVxcdTAwM2V0eXBlID09IFNPQ0tfUkFXKVxcbi1cXHRcXHRyZXNlcnZlID0gZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW47XFxuK1xcdGlmIChwby1cXHUwMDNlc2suc2tfc29ja2V0LVxcdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XFxuK1xcdFxcdGhhcmRfaGVhZGVyX2xlbiA9IFJFQURfT05DRShkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XFxuK1xcdFxcdHJlc2VydmUgPSBoYXJkX2hlYWRlcl9sZW47XFxuK1xcdH1cXG4gXFx0c2l6ZV9tYXggPSBwby1cXHUwMDNldHhfcmluZy5mcmFtZV9zaXplXFxuIFxcdFxcdC0gKHBvLVxcdTAwM2V0cF9oZHJsZW4gLSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2xsKSk7XFxuIFxcbkBAIC0yODE3LDcgKzI4MjcsMTIgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuIFxcdFxcdFxcdGdvdG8gdHBhY2tldF9lcnJvcjtcXG4gXFxuIFxcdFxcdHN0YXR1cyA9IFRQX1NUQVRVU19TRU5EX1JFUVVFU1Q7XFxuLVxcdFxcdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbitcXHRcXHRpZiAocG8tXFx1MDAzZXNrLnNrX3NvY2tldC1cXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcXG4rXFx0XFx0XFx0aGxlbiA9ICgoaGFyZF9oZWFkZXJfbGVuICtcXG4rXFx0XFx0XFx0XFx0IFJFQURfT05DRShkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSkpIFxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0fihISF9EQVRBX01PRCAtIDEpKSArIEhIX0RBVEFfTU9EO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbiBcXHRcXHR0bGVuID0gZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb207XFxuIFxcdFxcdGlmICh2bmV0X2hkcl9zeikge1xcbiBcXHRcXHRcXHRkYXRhICs9IHZuZXRfaGRyX3N6O1xcbkBAIC0yODM1LDEwICsyODUwLDE0IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgdm5ldF9oZHIuaGRyX2xlbik7XFxuIFxcdFxcdFxcdGhhc192bmV0X2hkciA9IHRydWU7XFxuIFxcdFxcdH1cXG4tXFx0XFx0Y29weWxlbiA9IG1heF90KGludCwgY29weWxlbiwgZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xcbitcXHRcXHRpZiAocG8tXFx1MDAzZXNrLnNrX3NvY2tldC1cXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcXG4rXFx0XFx0XFx0Y29weWxlbiA9IG1heF90KGludCwgY29weWxlbiwgaGFyZF9oZWFkZXJfbGVuKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRjb3B5bGVuID0gbWF4X3QoaW50LCBjb3B5bGVuLCBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XFxuIFxcdFxcdHNrYiA9IHNvY2tfYWxsb2Nfc2VuZF9za2IoXFx1MDAyNnBvLVxcdTAwM2VzayxcXG4gXFx0XFx0XFx0XFx0aGxlbiArIHRsZW4gKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2xsKSArXFxuLVxcdFxcdFxcdFxcdChjb3B5bGVuIC0gZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pLFxcbitcXHRcXHRcXHRcXHQoY29weWxlbiAtIChwby1cXHUwMDNlc2suc2tfc29ja2V0LVxcdTAwM2V0eXBlID09IFNPQ0tfUkFXID9cXG4rXFx0XFx0XFx0XFx0IGhhcmRfaGVhZGVyX2xlbiA6IGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSksXFxuIFxcdFxcdFxcdFxcdCFuZWVkX3dhaXQsIFxcdTAwMjZlcnIpO1xcbiBcXG4gXFx0XFx0aWYgKHVubGlrZWx5KHNrYiA9PSBOVUxMKSkge1xcbkBAIC0yODQ4LDcgKzI4NjcsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcXG4gXFx0XFx0XFx0Z290byBvdXRfc3RhdHVzO1xcbiBcXHRcXHR9XFxuIFxcdFxcdHRwX2xlbiA9IHRwYWNrZXRfZmlsbF9za2IocG8sIHNrYiwgcGgsIGRldiwgZGF0YSwgdHBfbGVuLCBwcm90byxcXG4tXFx0XFx0XFx0XFx0XFx0ICBhZGRyLCBobGVuLCBjb3B5bGVuLCBcXHUwMDI2c29ja2MpO1xcbitcXHRcXHRcXHRcXHRcXHQgIGFkZHIsIGhsZW4sIGNvcHlsZW4sIGhhcmRfaGVhZGVyX2xlbixcXG4rXFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2c29ja2MpO1xcbiBcXHRcXHRpZiAobGlrZWx5KHRwX2xlbiBcXHUwMDNlPSAwKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgdHBfbGVuIFxcdTAwM2UgZGV2LVxcdTAwM2VtdHUgKyByZXNlcnZlIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAhdm5ldF9oZHJfc3ogXFx1MDAyNlxcdTAwMjZcXG5AQCAtMjk1Niw3ICsyOTc2LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4gXFx0aW50IG9mZnNldCA9IDA7XFxuIFxcdHN0cnVjdCBwYWNrZXRfc29jayAqcG8gPSBwa3Rfc2soc2spO1xcbiBcXHRpbnQgdm5ldF9oZHJfc3ogPSBSRUFEX09OQ0UocG8tXFx1MDAzZXZuZXRfaGRyX3N6KTtcXG4tXFx0aW50IGhsZW4sIHRsZW4sIGxpbmVhcjtcXG4rXFx0aW50IGhhcmRfaGVhZGVyX2xlbiA9IDAsIGhsZW4sIHRsZW4sIGxpbmVhcjtcXG4gXFx0aW50IGV4dHJhX2xlbiA9IDA7XFxuIFxcbiBcXHQvKlxcbkBAIC0yOTk2LDE0ICszMDE2LDE3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NuZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXFxuIFxcdFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHNvY2stXFx1MDAzZXR5cGUgPT0gU09DS19SQVcpXFxuLVxcdFxcdHJlc2VydmUgPSBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcXG4gXFx0aWYgKHZuZXRfaGRyX3N6KSB7XFxuIFxcdFxcdGVyciA9IHBhY2tldF9zbmRfdm5ldF9wYXJzZShtc2csIFxcdTAwMjZsZW4sIFxcdTAwMjZ2bmV0X2hkciwgdm5ldF9oZHJfc3opO1xcbiBcXHRcXHRpZiAoZXJyKVxcbiBcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChzb2NrLVxcdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XFxuK1xcdFxcdGhhcmRfaGVhZGVyX2xlbiA9IFJFQURfT05DRShkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XFxuK1xcdFxcdHJlc2VydmUgPSBoYXJkX2hlYWRlcl9sZW47XFxuK1xcdH1cXG4rXFxuIFxcdGlmICh1bmxpa2VseShzb2NrX2ZsYWcoc2ssIFNPQ0tfTk9GQ1MpKSkge1xcbiBcXHRcXHRpZiAoIW5ldGlmX3N1cHBvcnRzX25vZmNzKGRldikpIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVQUk9UT05PU1VQUE9SVDtcXG5AQCAtMzAxOCwxMCArMzA0MSwxNSBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbiBcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcbiBcXHRlcnIgPSAtRU5PQlVGUztcXG4tXFx0aGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7XFxuK1xcdGlmIChzb2NrLVxcdTAwM2V0eXBlID09IFNPQ0tfUkFXKVxcbitcXHRcXHRobGVuID0gKChoYXJkX2hlYWRlcl9sZW4gKyBSRUFEX09OQ0UoZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcXHUwMDI2XFxuK1xcdFxcdFxcdH4oSEhfREFUQV9NT0QgLSAxKSkgKyBISF9EQVRBX01PRDtcXG4rXFx0ZWxzZVxcbitcXHRcXHRobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcXG4gXFx0dGxlbiA9IGRldi1cXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xcbiBcXHRsaW5lYXIgPSBfX3ZpcnRpbzE2X3RvX2NwdSh2aW9fbGUoKSwgdm5ldF9oZHIuaGRyX2xlbik7XFxuLVxcdGxpbmVhciA9IG1heChsaW5lYXIsIG1pbl90KGludCwgbGVuLCBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbikpO1xcbitcXHRsaW5lYXIgPSBtYXgobGluZWFyLCBtaW5fdChpbnQsIGxlbiwgc29jay1cXHUwMDNldHlwZSA9PSBTT0NLX1JBVyA/XFxuK1xcdFxcdFxcdFxcdFxcdCBoYXJkX2hlYWRlcl9sZW4gOiBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbikpO1xcbiBcXHRza2IgPSBwYWNrZXRfYWxsb2Nfc2tiKHNrLCBobGVuICsgdGxlbiwgaGxlbiwgbGVuLCBsaW5lYXIsXFxuIFxcdFxcdFxcdCAgICAgICBtc2ctXFx1MDAzZW1zZ19mbGFncyBcXHUwMDI2IE1TR19ET05UV0FJVCwgXFx1MDAyNmVycik7XFxuIFxcdGlmIChza2IgPT0gTlVMTClcXG5AQCAtMzAzNyw3ICszMDY1LDcgQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4gXFx0fSBlbHNlIGlmIChyZXNlcnZlKSB7XFxuIFxcdFxcdHNrYl9yZXNlcnZlKHNrYiwgLXJlc2VydmUpO1xcbiBcXHRcXHRpZiAobGVuIFxcdTAwM2MgcmVzZXJ2ZSArIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIGRldi1cXHUwMDNlbWluX2hlYWRlcl9sZW4gIT0gZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pXFxuK1xcdFxcdCAgICBkZXYtXFx1MDAzZW1pbl9oZWFkZXJfbGVuICE9IGhhcmRfaGVhZGVyX2xlbilcXG4gXFx0XFx0XFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjAxLjE4OTQ5NDQwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMwNzkyNTMyMzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBBQ0tFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhY2tldF9zZW5kbXNnXCIsXG4gICAgXCJwYWNrZXRfc2VuZG1zZ19zcGt0XCIsXG4gICAgXCJwYWNrZXRfc25kXCIsXG4gICAgXCJ0cGFja2V0X3NuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gQUZfUEFDS0VUIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgYnkgdXNpbmcgUkVBRF9PTkNFIGZvciBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiBhbmQgZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20uIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IGlzc3VlcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjg0YzhkNTc2OWVlY2QyNzEyMmE1MGE5MTc2OGJlOWM0YzYxODRiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDAwOjQ5OjU4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbmluZGV4IGU3NWQyOTMyNDc1YWMwLi5kMjM4OThmMjQ2NDE2MSAxMDA2NDRcbi0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbkBAIC0xOTUzLDYgKzE5NTMsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbiBcdHN0cnVjdCBzb2NrY21fY29va2llIHNvY2tjO1xuIFx0X19iZTE2IHByb3RvID0gMDtcbitcdHVuc2lnbmVkIGludCBoYXJkX2hlYWRlcl9sZW4gPSAwO1xuIFx0aW50IGVycjtcbiBcdGludCBleHRyYV9sZW4gPSAwO1xuIFxuQEAgLTE5OTYsMTUgKzE5OTcsMjEgQEAgc3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0fVxuIFx0XHRleHRyYV9sZW4gPSA0OyAvKiBXZSdyZSBkb2luZyBvdXIgb3duIENSQyAqL1xuIFx0fVxuK1x0aWYgKCFza2IpXG4rXHRcdGhhcmRfaGVhZGVyX2xlbiA9IFJFQURfT05DRShkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKTtcbiBcbiBcdGVyciA9IC1FTVNHU0laRTtcbi1cdGlmIChsZW4gXHUwMDNlIGRldi1cdTAwM2VtdHUgKyBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuICsgVkxBTl9ITEVOICsgZXh0cmFfbGVuKVxuK1x0aWYgKGxlbiBcdTAwM2UgZGV2LVx1MDAzZW10dSArIGhhcmRfaGVhZGVyX2xlbiArIFZMQU5fSExFTiArIGV4dHJhX2xlbilcbiBcdFx0Z290byBvdXRfdW5sb2NrO1xuIFxuIFx0aWYgKCFza2IpIHtcbi1cdFx0c2l6ZV90IHJlc2VydmVkID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcbitcdFx0c2l6ZV90IHJlc2VydmVkO1xuIFx0XHRpbnQgdGxlbiA9IGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207XG4tXHRcdHVuc2lnbmVkIGludCBoaGxlbiA9IGRldi1cdTAwM2VoZWFkZXJfb3BzID8gZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiA6IDA7XG4rXHRcdHVuc2lnbmVkIGludCBoaGxlbiA9IFJFQURfT05DRShkZXYtXHUwMDNlaGVhZGVyX29wcykgP1xuK1x0XHRcdFx0ICAgICBoYXJkX2hlYWRlcl9sZW4gOiAwO1xuK1xuK1x0XHRyZXNlcnZlZCA9ICgoaGFyZF9oZWFkZXJfbGVuICsgUkVBRF9PTkNFKGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcdTAwMjZcbitcdFx0XHQgICAgfihISF9EQVRBX01PRCAtIDEpKSArIEhIX0RBVEFfTU9EO1xuIFxuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdFx0c2tiID0gc29ja193bWFsbG9jKHNrLCBsZW4gKyByZXNlcnZlZCArIHRsZW4sIDAsIEdGUF9LRVJORUwpO1xuQEAgLTI1NjksNiArMjU3Niw3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90ICpsZW4sXG4gc3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHZvaWQgKmZyYW1lLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBpbnQgdHBfbGVuLFxuIFx0XHRfX2JlMTYgcHJvdG8sIHVuc2lnbmVkIGNoYXIgKmFkZHIsIGludCBobGVuLCBpbnQgY29weWxlbixcbitcdFx0aW50IGhhcmRfaGVhZGVyX2xlbixcbiBcdFx0Y29uc3Qgc3RydWN0IHNvY2tjbV9jb29raWUgKnNvY2tjKVxuIHtcbiBcdHVuaW9uIHRwYWNrZXRfdWhkciBwaDtcbkBAIC0yNjAwLDggKzI2MDgsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdH0gZWxzZSBpZiAoY29weWxlbikge1xuIFx0XHRpbnQgaGRybGVuID0gbWluX3QoaW50LCBjb3B5bGVuLCB0cF9sZW4pO1xuIFxuLVx0XHRza2JfcHVzaChza2IsIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuLVx0XHRza2JfcHV0KHNrYiwgY29weWxlbiAtIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuK1x0XHRza2JfcHVzaChza2IsIGhhcmRfaGVhZGVyX2xlbik7XG4rXHRcdHNrYl9wdXQoc2tiLCBjb3B5bGVuIC0gaGFyZF9oZWFkZXJfbGVuKTtcbiBcdFx0ZXJyID0gc2tiX3N0b3JlX2JpdHMoc2tiLCAwLCBkYXRhLCBoZHJsZW4pO1xuIFx0XHRpZiAodW5saWtlbHkoZXJyKSlcbiBcdFx0XHRyZXR1cm4gZXJyO1xuQEAgLTI3MzIsNyArMjc0MCw3IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxuIFx0dm9pZCAqZGF0YTtcbiBcdGludCBsZW5fc3VtID0gMDtcbiBcdGludCBzdGF0dXMgPSBUUF9TVEFUVVNfQVZBSUxBQkxFO1xuLVx0aW50IGhsZW4sIHRsZW4sIGNvcHlsZW4gPSAwO1xuK1x0aW50IGhhcmRfaGVhZGVyX2xlbiA9IDAsIGhsZW4sIHRsZW4sIGNvcHlsZW4gPSAwO1xuIFx0bG9uZyB0aW1lbztcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cG8tXHUwMDNlcGdfdmVjX2xvY2spO1xuQEAgLTI3NzksOCArMjc4NywxMCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcbiBcdFx0XHRnb3RvIG91dF9wdXQ7XG4gXHR9XG4gXG4tXHRpZiAocG8tXHUwMDNlc2suc2tfc29ja2V0LVx1MDAzZXR5cGUgPT0gU09DS19SQVcpXG4tXHRcdHJlc2VydmUgPSBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuO1xuK1x0aWYgKHBvLVx1MDAzZXNrLnNrX3NvY2tldC1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XG4rXHRcdGhhcmRfaGVhZGVyX2xlbiA9IFJFQURfT05DRShkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKTtcbitcdFx0cmVzZXJ2ZSA9IGhhcmRfaGVhZGVyX2xlbjtcbitcdH1cbiBcdHNpemVfbWF4ID0gcG8tXHUwMDNldHhfcmluZy5mcmFtZV9zaXplXG4gXHRcdC0gKHBvLVx1MDAzZXRwX2hkcmxlbiAtIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbGwpKTtcbiBcbkBAIC0yODE3LDcgKzI4MjcsMTIgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG4gXHRcdFx0Z290byB0cGFja2V0X2Vycm9yO1xuIFxuIFx0XHRzdGF0dXMgPSBUUF9TVEFUVVNfU0VORF9SRVFVRVNUO1xuLVx0XHRobGVuID0gTExfUkVTRVJWRURfU1BBQ0UoZGV2KTtcbitcdFx0aWYgKHBvLVx1MDAzZXNrLnNrX3NvY2tldC1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKVxuK1x0XHRcdGhsZW4gPSAoKGhhcmRfaGVhZGVyX2xlbiArXG4rXHRcdFx0XHQgUkVBRF9PTkNFKGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcdTAwMjZcbitcdFx0XHRcdH4oSEhfREFUQV9NT0QgLSAxKSkgKyBISF9EQVRBX01PRDtcbitcdFx0ZWxzZVxuK1x0XHRcdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuIFx0XHR0bGVuID0gZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdFx0aWYgKHZuZXRfaGRyX3N6KSB7XG4gXHRcdFx0ZGF0YSArPSB2bmV0X2hkcl9zejtcbkBAIC0yODM1LDEwICsyODUwLDE0IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKVxuIFx0XHRcdFx0XHRcdCAgICB2bmV0X2hkci5oZHJfbGVuKTtcbiBcdFx0XHRoYXNfdm5ldF9oZHIgPSB0cnVlO1xuIFx0XHR9XG4tXHRcdGNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuK1x0XHRpZiAocG8tXHUwMDNlc2suc2tfc29ja2V0LVx1MDAzZXR5cGUgPT0gU09DS19SQVcpXG4rXHRcdFx0Y29weWxlbiA9IG1heF90KGludCwgY29weWxlbiwgaGFyZF9oZWFkZXJfbGVuKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGNvcHlsZW4gPSBtYXhfdChpbnQsIGNvcHlsZW4sIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuIFx0XHRza2IgPSBzb2NrX2FsbG9jX3NlbmRfc2tiKFx1MDAyNnBvLVx1MDAzZXNrLFxuIFx0XHRcdFx0aGxlbiArIHRsZW4gKyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2xsKSArXG4tXHRcdFx0XHQoY29weWxlbiAtIGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pLFxuK1x0XHRcdFx0KGNvcHlsZW4gLSAocG8tXHUwMDNlc2suc2tfc29ja2V0LVx1MDAzZXR5cGUgPT0gU09DS19SQVcgP1xuK1x0XHRcdFx0IGhhcmRfaGVhZGVyX2xlbiA6IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pKSxcbiBcdFx0XHRcdCFuZWVkX3dhaXQsIFx1MDAyNmVycik7XG4gXG4gXHRcdGlmICh1bmxpa2VseShza2IgPT0gTlVMTCkpIHtcbkBAIC0yODQ4LDcgKzI4NjcsOCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcbiBcdFx0XHRnb3RvIG91dF9zdGF0dXM7XG4gXHRcdH1cbiBcdFx0dHBfbGVuID0gdHBhY2tldF9maWxsX3NrYihwbywgc2tiLCBwaCwgZGV2LCBkYXRhLCB0cF9sZW4sIHByb3RvLFxuLVx0XHRcdFx0XHQgIGFkZHIsIGhsZW4sIGNvcHlsZW4sIFx1MDAyNnNvY2tjKTtcbitcdFx0XHRcdFx0ICBhZGRyLCBobGVuLCBjb3B5bGVuLCBoYXJkX2hlYWRlcl9sZW4sXG4rXHRcdFx0XHRcdCAgXHUwMDI2c29ja2MpO1xuIFx0XHRpZiAobGlrZWx5KHRwX2xlbiBcdTAwM2U9IDApIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgdHBfbGVuIFx1MDAzZSBkZXYtXHUwMDNlbXR1ICsgcmVzZXJ2ZSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICF2bmV0X2hkcl9zeiBcdTAwMjZcdTAwMjZcbkBAIC0yOTU2LDcgKzI5NzYsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuIFx0aW50IG9mZnNldCA9IDA7XG4gXHRzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvID0gcGt0X3NrKHNrKTtcbiBcdGludCB2bmV0X2hkcl9zeiA9IFJFQURfT05DRShwby1cdTAwM2V2bmV0X2hkcl9zeik7XG4tXHRpbnQgaGxlbiwgdGxlbiwgbGluZWFyO1xuK1x0aW50IGhhcmRfaGVhZGVyX2xlbiA9IDAsIGhsZW4sIHRsZW4sIGxpbmVhcjtcbiBcdGludCBleHRyYV9sZW4gPSAwO1xuIFxuIFx0LypcbkBAIC0yOTk2LDE0ICszMDE2LDE3IEBAIHN0YXRpYyBpbnQgcGFja2V0X3NuZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4gXHRcdFx0Z290byBvdXRfdW5sb2NrO1xuIFx0fVxuIFxuLVx0aWYgKHNvY2stXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcbi1cdFx0cmVzZXJ2ZSA9IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4gXHRpZiAodm5ldF9oZHJfc3opIHtcbiBcdFx0ZXJyID0gcGFja2V0X3NuZF92bmV0X3BhcnNlKG1zZywgXHUwMDI2bGVuLCBcdTAwMjZ2bmV0X2hkciwgdm5ldF9oZHJfc3opO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbiBcdH1cbiBcbitcdGlmIChzb2NrLVx1MDAzZXR5cGUgPT0gU09DS19SQVcpIHtcbitcdFx0aGFyZF9oZWFkZXJfbGVuID0gUkVBRF9PTkNFKGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuK1x0XHRyZXNlcnZlID0gaGFyZF9oZWFkZXJfbGVuO1xuK1x0fVxuK1xuIFx0aWYgKHVubGlrZWx5KHNvY2tfZmxhZyhzaywgU09DS19OT0ZDUykpKSB7XG4gXHRcdGlmICghbmV0aWZfc3VwcG9ydHNfbm9mY3MoZGV2KSkge1xuIFx0XHRcdGVyciA9IC1FUFJPVE9OT1NVUFBPUlQ7XG5AQCAtMzAxOCwxMCArMzA0MSwxNSBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4gXHRlcnIgPSAtRU5PQlVGUztcbi1cdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuK1x0aWYgKHNvY2stXHUwMDNldHlwZSA9PSBTT0NLX1JBVylcbitcdFx0aGxlbiA9ICgoaGFyZF9oZWFkZXJfbGVuICsgUkVBRF9PTkNFKGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKSBcdTAwMjZcbitcdFx0XHR+KEhIX0RBVEFfTU9EIC0gMSkpICsgSEhfREFUQV9NT0Q7XG4rXHRlbHNlXG4rXHRcdGhsZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuIFx0dGxlbiA9IGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207XG4gXHRsaW5lYXIgPSBfX3ZpcnRpbzE2X3RvX2NwdSh2aW9fbGUoKSwgdm5ldF9oZHIuaGRyX2xlbik7XG4tXHRsaW5lYXIgPSBtYXgobGluZWFyLCBtaW5fdChpbnQsIGxlbiwgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbikpO1xuK1x0bGluZWFyID0gbWF4KGxpbmVhciwgbWluX3QoaW50LCBsZW4sIHNvY2stXHUwMDNldHlwZSA9PSBTT0NLX1JBVyA/XG4rXHRcdFx0XHRcdCBoYXJkX2hlYWRlcl9sZW4gOiBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSk7XG4gXHRza2IgPSBwYWNrZXRfYWxsb2Nfc2tiKHNrLCBobGVuICsgdGxlbiwgaGxlbiwgbGVuLCBsaW5lYXIsXG4gXHRcdFx0ICAgICAgIG1zZy1cdTAwM2Vtc2dfZmxhZ3MgXHUwMDI2IE1TR19ET05UV0FJVCwgXHUwMDI2ZXJyKTtcbiBcdGlmIChza2IgPT0gTlVMTClcbkBAIC0zMDM3LDcgKzMwNjUsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuIFx0fSBlbHNlIGlmIChyZXNlcnZlKSB7XG4gXHRcdHNrYl9yZXNlcnZlKHNrYiwgLXJlc2VydmUpO1xuIFx0XHRpZiAobGVuIFx1MDAzYyByZXNlcnZlICsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIGRldi1cdTAwM2VtaW5faGVhZGVyX2xlbiAhPSBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKVxuK1x0XHQgICAgZGV2LVx1MDAzZW1pbl9oZWFkZXJfbGVuICE9IGhhcmRfaGVhZGVyX2xlbilcbiBcdFx0XHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjAxLjE4OTQ5NTcyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyMTAwMjAyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBQYXRjaCBmb3IgUm9idXN0bmVzcyBhbmQgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYC4gSXQgc2VlbXMgdGhleSdyZSBtYWtpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgY2hhbmdlIOKAkyBhbHRlcmluZyBob3cgYGhhcmRfaGVhZGVyX2xlbmAgaXMgaGFuZGxlZCBpbiB0aGVzZSBjcml0aWNhbCBmdW5jdGlvbnM6IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBgdHBhY2tldF9zbmRgLCBhbmQgYHBhY2tldF9zbmRgLiBUaGUgY29yZSBpZGVhIGlzIHRvIHVzZSBgUkVBRF9PTkNFYCBvbiBgZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbmAgYW5kIHN0b3JlIGl0IGluIGEgbG9jYWwgdmFyaWFibGUuIFRoYXQncyBhIGNsYXNzaWMgbW92ZSB0byBhdm9pZCBwb3RlbnRpYWwgZGF0YSByYWNlcyBvciBUaW1lLW9mLUNoZWNrLXRvLVRpbWUtb2YtVXNlIChUT0NUT1UpIHZ1bG5lcmFiaWxpdGllcywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSBwYXJhbWV0ZXJzIHRoYXQgY291bGQgY2hhbmdlIGNvbmN1cnJlbnRseS4gU21hcnQuIFRoZXkncmUgYWxzbyBhZGp1c3RpbmcgaG93IGBobGVuYCBhbmQgYGNvcHlsZW5gIGFyZSBkZXJpdmVkLCBsZXZlcmFnaW5nIHRoZSBgaGFyZF9oZWFkZXJfbGVuYCBhbmQgYFJFQURfT05DRShkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tKWAuXG5cblRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzZXJpb3VzIGF0dGVudGlvbi4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgY29kZSwgZGVhbGluZyB3aXRoIEFGX1BBQ0tFVCBzb2NrZXRzLiBUaGUgcGF0Y2ggaXMgY2xlYXJseSBhZGRyZXNzaW5nIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHBhY2tldCBjb3JydXB0aW9uIG9yIGV2ZW4gc2VjdXJpdHkgcHJvYmxlbXMuIEkgc2VlIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcy4gVGhpcyBuZWVkcyB0byBiZSBmdXp6ZWQsIGltbWVkaWF0ZWx5LiBUaGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yLCBwYXJ0aWN1bGFybHkgaW4gaGlnaC1sb2FkIHNpdHVhdGlvbnMsIGlzIGhpZ2guXG5cbkxldCBtZSBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZm9jdXNlZCBmdXp6aW5nOiBgcGFja2V0X3NlbmRtc2dfc3BrdGAsIGB0cGFja2V0X2ZpbGxfc2tiYCwgYHRwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc25kYC5cblxuV2FpdCBhIG1pbnV0ZSwgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGlzIHN0YXRpYyEgSSdkIGJldHRlciBjb25maXJtIGl0J3MgYWN0dWFsbHkgZXhwb3NlZC4gVGltZSB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgY29kZS4gWXVwLCBpdCdzIHRoZSBgc2VuZG1zZ2AgaGFuZGxlciBmb3IgYFNPQ0tfUEFDS0VUYCDigJMgdGhlIG9sZCBwYWNrZXQgc29ja2V0IHR5cGUuIGBwYWNrZXRfc25kYCBoYW5kbGVzIGBTT0NLX1JBV2AgYW5kIGBTT0NLX0RHUkFNYCwgYW5kIGB0cGFja2V0X3NuZGAgaXMgcmVsYXRlZCB0byBUWF9SSU5HIGZvciBtZW1vcnktbWFwcGVkIHNvY2tldHMuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBwcm90b19vcHNgIGRlZmluaXRpb25zIGZvciB0aGVzZSBzb2NrZXQgdHlwZXMgdG8gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU0OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjA3LjM5OTUxNzUxMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODg0MTkwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWNrZXRfc2VuZG1zZ19zcGt0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xOTIzPXN0YXRpYyB2b2lkIHBhY2tldF9wYXJzZV9oZWFkZXJzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDYtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxOTQ3OnN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ4LVxcdFxcdFxcdCAgICAgICBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00Njc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdCA9IHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY5MC1cXHQuc2h1dGRvd24gPVxcdHNvY2tfbm9fc2h1dGRvd24sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NjkxOlxcdC5zZW5kbXNnID1cXHRwYWNrZXRfc2VuZG1zZ19zcGt0LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY5Mi1cXHQucmVjdm1zZyA9XFx0cGFja2V0X3JlY3Ztc2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjA3LjQ5ODM2NDA4MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTUzNjQ3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSByZWxhdGlvbnNoaXBzLCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBQYWNrZXQgVHJhbnNtaXNzaW9uIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyBzcGVjaWZpY2FsbHkgZW1wbG95ZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBwYWNrZXRfb3BzX3Nwa3RgLiBUaGF0J3MgaW1wb3J0YW50IHRvIG5vdGU7IGl0IG1lYW5zIHRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IGhhbmRsaW5nIHRoZSAqc3BlY2lmaWMqIHNvY2tldCBwcm90b2NvbCAoU1BLVCkgb3BlcmF0aW9ucyBmb3IgcGFja2V0IHRyYW5zbWlzc2lvbi4gSXQgc3VnZ2VzdHMgYSBtb3JlIHNwZWNpYWxpemVkIHJvbGUgd2l0aGluIHRoZSBicm9hZGVyIHBhY2tldCBoYW5kbGluZyBmcmFtZXdvcmssIHRpZWQgdG8gU1BLVCBwcm90b2NvbCBoYW5kbGluZy4gSSdkIG5lZWQgdG8gbG9vayBjbG9zZXIgYXQgd2hhdCBgcGFja2V0X29wc19zcGt0YCBkb2VzIGdlbmVyYWxseSB0byBjb25maXJtLlxuXG5UaGVuLCB0aGVyZSdzIGBwYWNrZXRfc25kYC4gVGhpcyBmdW5jdGlvbiBpcyBtb3JlIGJyb2FkbHkgdXNlZCwgYXBwZWFyaW5nIGluIGJvdGggYHBhY2tldF9vcHNgLCB3aGljaCBpcyB0aGUgYmFzZSBwYWNrZXQgb3BlcmF0aW9ucywgKmFuZCogaW4gYHBhY2tldF9vcHNfcWRpc2NgLCB3aGljaCBkZWFscyB3aXRoIHRoZSB0cmFmZmljIHNoYXBpbmcgZGlzY2lwbGluZSBzaWRlIG9mIHRoZSBob3VzZS4gVGhhdCB0ZWxscyBtZSBgcGFja2V0X3NuZGAgcHJvYmFibHkgaGFuZGxlcyB0aGUgYWN0dWFsIHVuZGVybHlpbmcgbWVjaGFuaWNzIG9mIHNlbmRpbmcgdGhlIHBhY2tldCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0J3MgdGhlIGNvcmUgb3BlcmF0aW9uIG9yIHBhcnQgb2YgYSBxdWV1ZWluZyBkaXNjaXBsaW5lLiBJdCdzIHRoZSB3b3JraG9yc2UgZnVuY3Rpb24uIFRoaXMgaXMga2V5IHRvIHVuZGVyc3RhbmQgaG93IHBhY2tldCBzZW5kaW5nIGludGVyYWN0cyBhY3Jvc3MgdmFyaW91cyBsZXZlbHMgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEl0J3MgYSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay4gVGhpcyBoaWdobGlnaHRzIHRoZSBtb2R1bGFyaXR5IG9mIHRoZSBkZXNpZ24sIHdpdGggYSBsb3dlci1sZXZlbCBmdW5jdGlvbiAocGFja2V0X3NuZCkgYmVpbmcgcmUtdXNlZCBieSBtdWx0aXBsZSBoaWdoZXItbGV2ZWwgcGFja2V0IG9wZXJhdGlvbiBjb21wb25lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjM4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NTA6MTEuNDEzNzQxMTQ1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MDM2NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhY2tldF9zbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jPTI1MTc9c3RhdGljIHZvaWQgdHBhY2tldF9kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzNi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI1Mzc6c3RhdGljIGludCBfX3BhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzOC17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NTItXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTUzOnN0YXRpYyBpbnQgcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90ICpsZW4sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTU0LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBpbnQgdm5ldF9oZHJfc3opXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NjQtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTY1OlxcdHJldCA9IF9fcGFja2V0X3NuZF92bmV0X3BhcnNlKHZuZXRfaGRyLCAqbGVuKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NjYtXFx0aWYgKHJldClcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjY1Nz1zdGF0aWMgaW50IHRwYWNrZXRfcGFyc2VfaGVhZGVyKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHZvaWQgKmZyYW1lLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzI0LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjcyNTpzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3MjYte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yODQ0LVxcdFxcdFxcdG1lbWNweShcXHUwMDI2dm5ldF9oZHIsIGRhdGEgLSB2bmV0X2hkcl9zeiwgc2l6ZW9mKHZuZXRfaGRyKSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyODQ1OlxcdFxcdFxcdGlmIChfX3BhY2tldF9zbmRfdm5ldF9wYXJzZShcXHUwMDI2dm5ldF9oZHIsIHRwX2xlbikpIHtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI4NDYtXFx0XFx0XFx0XFx0dHBfbGVuID0gLUVJTlZBTDtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjkzOT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhY2tldF9hbGxvY19za2Ioc3RydWN0IHNvY2sgKnNrLCBzaXplX3QgcHJlcGFkLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yOTY0LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mjk2NTpzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk2Ni17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMwMTktXFx0aWYgKHZuZXRfaGRyX3N6KSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMDIwOlxcdFxcdGVyciA9IHBhY2tldF9zbmRfdm5ldF9wYXJzZShtc2csIFxcdTAwMjZsZW4sIFxcdTAwMjZ2bmV0X2hkciwgdm5ldF9oZHJfc3opO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzAyMS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0zMTMxPXN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTM2LVxcdC8qIFJlYWRpbmcgdHhfcmluZy5wZ192ZWMgd2l0aG91dCBob2xkaW5nIHBnX3ZlY19sb2NrIGlzIHJhY3kuXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTM3OlxcdCAqIHRwYWNrZXRfc25kKCkgd2lsbCByZWRvIHRoZSBjaGVjayBzYWZlbHkuXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTM4LVxcdCAqL1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEzOS1cXHRpZiAoZGF0YV9yYWNlKHBvLVxcdTAwM2V0eF9yaW5nLnBnX3ZlYykpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTQwOlxcdFxcdHJldHVybiB0cGFja2V0X3NuZChwbywgbXNnKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNDEtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTQyOlxcdHJldHVybiBwYWNrZXRfc25kKHNvY2ssIG1zZywgbGVuKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNDMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo1MDoxMS40OTk3ODQ0NTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODgxMTUwMjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQYWNrZXQgU2VuZGluZyBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgcGFja2V0cyBhcmUgc2VudCwgc3BlY2lmaWNhbGx5IHdpdGggYFNPQ0tfUkFXYCBhbmQgYFNPQ0tfREdSQU1gIHNvY2tldHMuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGBwYWNrZXRfc2VuZG1zZ2AgYXBwZWFycyB0byBiZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhvc2UgdHlwZXMgb2Ygc29ja2V0cy4gSXQncyB0aGUgb25lIHRoYXQgY2FsbHMgZWl0aGVyIGB0cGFja2V0X3NuZGAgb3IgYHBhY2tldF9zbmRgIHRvIGRvIHRoZSBhY3R1YWwgd29yay4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoaXMsIHNvIEkgd2lsbCBsaXN0IGBwYWNrZXRfc2VuZG1zZ2AgYXMgYSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24gZHVyaW5nIG15IGFuYWx5c2lzLlxuXG5BbHNvLCBmb3IgYFNPQ0tfUEFDS0VUYCBzb2NrZXRzLCBpdCBzZWVtcyB0aGF0IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyB0aGUgZGVzaWduYXRlZCBlbnRyeSBwb2ludC4gVGhpcyBhbHNvIG5lZWRzIHRvIGdvIG9uIG15IGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJldmlldywgYXMgdGhleSBzZWVtIHRvIHdvcmsgaW4gdGhlIHNhbWUgc3BoZXJlLCBidXQgd2l0aCBkaWZmZXJpbmcgaW1wbGVtZW50YXRpb24uXG5cbkhhbmcgb24gYSBzZWNvbmTigKZJIGp1c3Qgbm90aWNlZCB0aGF0IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIERvZXMgdGhhdCBtZWFuIGl0J3Mgb25seSB2aXNpYmxlIHdpdGhpbiBhIHNwZWNpZmljIGNvbXBpbGF0aW9uIHVuaXQ/IFRoYXQncyBnb29kIHRvIGtub3csIGFuZCB3b3J0aCBpbnZlc3RpZ2F0aW5nIGZ1cnRoZXIuIE5vdyBJJ20gd29uZGVyaW5nIGlmIGBwYWNrZXRfc2VuZG1zZ2AgaXMgYWxzbyBzdGF0aWMsIG9yIGlmIGl0IGhhcyBleHRlcm5hbCBsaW5rYWdlLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0IGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5ODUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NTA6MTUuMzgwOTM2NDM3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTU3MDU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWNrZXRfc2VuZG1zZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTkyMz1zdGF0aWMgdm9pZCBwYWNrZXRfcGFyc2VfaGVhZGVycyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ2LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTk0NzpzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0OC1cXHRcXHRcXHQgICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjcyNT1zdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjc0Ny1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3NDg6XFx0LyogcGFja2V0X3NlbmRtc2coKSBjaGVjayBvbiB0eF9yaW5nLnBnX3ZlYyB3YXMgbG9ja2xlc3MsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzQ5LVxcdCAqIHdlIG5lZWQgdG8gY29uZmlybSBpdCB1bmRlciBwcm90ZWN0aW9uIG9mIHBnX3ZlY19sb2NrLlxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yOTY1PXN0YXRpYyBpbnQgcGFja2V0X3NuZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMzAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTMxOnN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEzMi17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ2Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wc19zcGt0ID0ge1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NjkwLVxcdC5zaHV0ZG93biA9XFx0c29ja19ub19zaHV0ZG93bixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ2OTE6XFx0LnNlbmRtc2cgPVxcdHBhY2tldF9zZW5kbXNnX3Nwa3QsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NjkyLVxcdC5yZWN2bXNnID1cXHRwYWNrZXRfcmVjdm1zZyxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDY5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzID0ge1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzExLVxcdC5nZXRzb2Nrb3B0X2l0ZXIgPVxcdHBhY2tldF9nZXRzb2Nrb3B0LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDcxMjpcXHQuc2VuZG1zZyA9XFx0cGFja2V0X3NlbmRtc2csXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzEzLVxcdC5yZWN2bXNnID1cXHRwYWNrZXRfcmVjdm1zZyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NTA6MTUuNDkwNTEyMTI1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5MjgwNzIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEVudHJ5IFBvaW50cyBmb3IgRnV6emluZyB0aGUgUGFja2V0IFNvY2tldCBTdWJzeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIHBhY2tldCBzb2NrZXQgc3Vic3lzdGVtIGFnYWluLiBCb3RoIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIGluaXRpYWxseSBhIGNvbmNlcm4uIEhvd2V2ZXIsIHRoZXkncmUgYXNzaWduZWQgdG8gYHByb3RvX29wc2AsIHdoaWNoIGlzIGNydWNpYWwuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciBzdGlsbCByZXNvbHZlIHRoZXNlPyBZZXMsIFN5emthbGxlciBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMsIHByb3ZpZGVkIHRoZXkgYXJlbid0IGlubGluZWQuIEdpdmVuIHRoYXQgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiBiZWNhdXNlIHRoZXkgYXJlIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHRoaXMgY2FzZSwgY29tcGxldGUgaW5saW5pbmcgaXMgaW1wb3NzaWJsZSwgd2hpY2ggaXMgZ29vZC5cblxuQWxyaWdodCwgbGV0J3MgY29uZmlybSB0aGF0IGBwYWNrZXRfc25kYCBhbmQgYHRwYWNrZXRfc25kYCBhcmUgYWxzbyBzdGF0aWMsIGFuZCB5ZXMgdGhleSBhcmUuIFRoZXJlZm9yZSwgSSBjYW4gZGVmaW5pdGVseSBpbmNsdWRlIGBwYWNrZXRfc2VuZG1zZ2AsIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHBhY2tldF9zbmRgLCBhbmQgYHRwYWNrZXRfc25kYCBpbiBteSBzeW1ib2wgbGlzdC5cblxuV2FpdCBhIG1vbWVudC4uLiBgcGFja2V0X3NlbmRtc2dgIGxvb2tzIGxpa2UgYSBwYXJ0aWN1bGFybHkgcHJvbWlzaW5nIGVudHJ5IHBvaW50LiBJdCdzIGxpa2VseSB0aGUgcmlnaHQgb25lIHRvIGZvY3VzIG9uLlxuXG5Ob3csIGxldCdzIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBuZWNlc3NhcnkgYENPTkZJR2Agb3B0aW9ucy4gVGhlIGNvZGUgaXMgbG9jYXRlZCBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIGFuZCB0aGF0J3MgY29tcGlsZWQgd2hlbiBgQ09ORklHX1BBQ0tFVGAgaXMgZW5hYmxlZCwgc28gdGhhdCdzIGFsbCBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5OTEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NTA6MjAuMjgzMzIxNDEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU5OTY3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1BBQ0tFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L01ha2VmaWxlLTUtXFxubmV0L3BhY2tldC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19QQUNLRVQpICs9IGFmX3BhY2tldC5vXFxubmV0L3BhY2tldC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19QQUNLRVRfRElBRykgKz0gYWZfcGFja2V0X2RpYWcub1xcbm5ldC9wYWNrZXQvTWFrZWZpbGUtOC1hZl9wYWNrZXRfZGlhZy15ICs9IGRpYWcub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo1MDoyMC4zODkzMjc1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3ODQ4MDQxNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBRl9QQUNLRVQgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYENPTkZJR19QQUNLRVRgIGlzIGEgaGFyZCByZXF1aXJlbWVudC4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoYXQuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgaW52b2x2ZWQgaGVyZT8gVGhlIHBhdGNoIG1vZGlmaWVzIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBgdHBhY2tldF9zbmRgLCBhbmQgYHBhY2tldF9zbmRgLiBBbGwgdGhlc2UgZnVuY3Rpb25zIHJlc2lkZSB3aXRoaW4gYGFmX3BhY2tldC5jYC4gSG1tLCBpcyBgQ09ORklHX1BBQ0tFVGAgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQ/IFllcywgaXQgYWxtb3N0IGFsd2F5cyBpcy4gSSdsbCBtYWtlIHN1cmUgdG8gZXhwbGljaXRseSBpbmNsdWRlIGBQQUNLRVRgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC5cblxuTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBJJ3ZlIG1pc3NlZCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMuLi4gT2theSwgYHZuZXRfaGRyYCBpcyB1c2VkIGluIGBwYWNrZXRfc25kYCBhbmQgYHRwYWNrZXRfc25kYCwgYnV0IGl0J3Mgbm90IGd1YXJkZWQgYnkgYW55IHNwZWNpZmljIGNvbmZpZy4gYFNPQ0tfUkFXYCBhbmQgYFNPQ0tfREdSQU1gIGFyZSBzdGFuZGFyZCwgc28gbm8gbmVlZCB0byBleHBsaWNpdGx5IGNhbGwgdGhlbSBvdXQuXG5cblRoaXMgcGF0Y2ggaXMgaW50ZXJlc3RpbmcuIEl0J3MgZml4aW5nIGEgcmFjZSBjb25kaXRpb24gaW52b2x2aW5nIGBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuYCBhbmQgYGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb21gLiBUaGUgY29kZSB3YXMgYWNjZXNzaW5nIHRoZXNlIHZhbHVlcyBjb25jdXJyZW50bHksIGxlYWRpbmcgdG8gcG90ZW50aWFsbHkgaW5jb25zaXN0ZW50IHZhbHVlcyBkdXJpbmcgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNvcHlpbmcuIFRoaXMgY291bGQgcmVzdWx0IGluIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIG90aGVyIG5hc3R5IHByb2JsZW1zLiBTbywgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBpbXBvcnRhbnQgb25lIGF0IHRoYXQuXG5cbkxldCBtZSBzdW1tYXJpemUgbXkgY3VycmVudCBmaW5kaW5nczogSSdtIHRoaW5raW5nIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJ2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoZSBrZXkgc3ltYm9scyBhcHBlYXIgdG8gYmUgYHBhY2tldF9zZW5kbXNnYCwgYHBhY2tldF9zZW5kbXNnX3Nwa3RgLCBgcGFja2V0X3NuZGAsIGFuZCBgdHBhY2tldF9zbmRgLiBJJ2xsIG5lZWQgYFBBQ0tFVGAgZW5hYmxlZC4gTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIGFkZHJlc3NlcyBjcml0aWNhbCByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIEFGX1BBQ0tFVCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzLCB1c2luZyBgUkVBRF9PTkNFYCBmb3IgYGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW5gIGFuZCBgZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbWAuIFRoaXMgdG91Y2hlcyBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbi5cblxuV2FpdCwgSSBqdXN0IHJlYWxpemVkIHRoYXQgYHRwYWNrZXRfZmlsbF9za2JgIGlzIGFsc28gbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4gSXMgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IFllcy4gSSBzaG91bGQgZGVmaW5pdGVseSBpbmNsdWRlIGl0IGluIHRoZSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuXG5cbk5vdywgbGV0IG1lIG1ha2Ugc3VyZSB0aGVzZSBmb3VyIGZ1bmN0aW9ucyBhcmUgcmVhbGx5IHRoZSBtb3N0IGltcG9ydGFudCBvbmVzLiBBbHJpZ2h0LCBgcGFja2V0X3NlbmRtc2dgIGFuZCBgcGFja2V0X3NlbmRtc2dfc3BrdGAgYXJlIHRoZSB0b3AtbGV2ZWwgYHNlbmRtc2dgIGhhbmRsZXJzIGZvciBwYWNrZXQgc29ja2V0cywgc28gdGhleSBhcmUgY3J1Y2lhbC4gQW5kLCBgcGFja2V0X3NuZGAgYW5kIGB0cGFja2V0X3NuZGAgYXJlIGNhbGxlZCBieSBgcGFja2V0X3NlbmRtc2dgLCBzbyBhbGwgZm91ciBhcmUgaW1wb3J0YW50LiBJJ2xsIHN0aWNrIHdpdGggYWxsIGZvdXIgYXMgdGhlIGBGb2N1c1N5bWJvbHNgLlxuXG5JIHRoaW5rIEkndmUgY292ZXJlZCBldmVyeXRoaW5nLi4uIExldCBtZSBkb3VibGUtY2hlY2sgaWYgSSBtaXNzZWQgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTk1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjI4LjE3NDEzMzM4OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NDg3MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQQUNLRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3BhY2tldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9wYWNrZXQvS2NvbmZpZy01LVxcbm5ldC9wYWNrZXQvS2NvbmZpZzo2OmNvbmZpZyBQQUNLRVRcXG5uZXQvcGFja2V0L0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IHNvY2tldFxcXCJcXG4tLVxcbm5ldC9wYWNrZXQvS2NvbmZpZy0xOC1cXG5uZXQvcGFja2V0L0tjb25maWc6MTk6Y29uZmlnIFBBQ0tFVF9ESUFHXFxubmV0L3BhY2tldC9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJQYWNrZXQ6IHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjUwOjI4LjI5MDYyNTg4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM3MTc2OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSWRlbnRpZnlpbmcgdGhlIEtleSBFbGVtZW50IFx1MDAyNiBEcmFmdGluZyBhIFJlc3BvbnNlKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgYXNzZXNzbWVudCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIGNvbmNlcHQsIHRoZSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGFkZHJlc3NlZCwgaXMgdW5lcXVpdm9jYWxseSByZXByZXNlbnRlZCBieSBgUEFDS0VUYC4gTm8gYW1iaWd1aXR5IHRoZXJlLiBJdCdzIHRoZSBzaW5ndWxhciBwb2ludCBvZiBmb2N1cy5cblxuTm93LCB3aXRoIHRoZSBjZW50cmFsIGVsZW1lbnQgaWRlbnRpZmllZCwgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGZvcm11bGF0ZSB0aGUgcmVzcG9uc2UuIFRoZSBmb2N1cyBzaGlmdHMgdG8gY3JhZnRpbmcgYSBjbGVhciwgY29uY2lzZSwgYW5kIGFjY3VyYXRlIGNvbW11bmljYXRpb24gb2YgdGhlIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gYFBBQ0tFVGAuIFRoZSB1bmRlcmx5aW5nIGFzc3VtcHRpb24gaXMgdGhhdCBhIHJlc3BvbnNlIGlzIHJlcXVpcmVkLCBhbmQgdGhlIHRob3VnaHQgcHJvY2VzcyBpbW1lZGlhdGVseSBqdW1wcyB0byBhY3Rpb24sIGluZGljYXRpbmcgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgdGFzayBhdCBoYW5kIGFuZCB0aGUgZXhwZWN0ZWQgb3V0cHV0LiBXZSBtb3ZlIHRvIHRoZSBjb3JlIHByb2Nlc3Mgb2YgY29tbXVuaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc3NiwiT3V0cHV0VG9rZW5zIjoxMjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo1MDozMS44Mjc4MDU0ODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQyMTgwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBBQ0tFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhY2tldF9zZW5kbXNnXCIsXG4gICAgXCJwYWNrZXRfc2VuZG1zZ19zcGt0XCIsXG4gICAgXCJwYWNrZXRfc25kXCIsXG4gICAgXCJ0cGFja2V0X3NuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gQUZfUEFDS0VUIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgYnkgdXNpbmcgUkVBRF9PTkNFIGZvciBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiBhbmQgZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20uIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IGlzc3VlcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQUNLRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWNrZXRfc2VuZG1zZ1wiLFxuICAgIFwicGFja2V0X3NlbmRtc2dfc3BrdFwiLFxuICAgIFwicGFja2V0X3NuZFwiLFxuICAgIFwidHBhY2tldF9zbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGluIEFGX1BBQ0tFVCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIGJ5IHVzaW5nIFJFQURfT05DRSBmb3IgZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4gYW5kIGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tLiBUaGlzIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIHBhY2tldCB0cmFuc21pc3Npb24gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpc3N1ZXMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbgpq5[1] Phase: Succeeded StartedAt: 2026-07-27 00:50:43 +0000 UTC FinishedAt: 2026-07-27 00:50:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 00:50:43 +0000 UTC FinishedAt: 2026-07-27 00:50:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2] Phase: Succeeded StartedAt: 2026-07-27 00:50:43 +0000 UTC FinishedAt: 2026-07-27 05:57:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 00:50:43 +0000 UTC FinishedAt: 2026-07-27 05:57:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 00:50:43 +0000 UTC FinishedAt: 2026-07-27 00:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 00:50:43 +0000 UTC FinishedAt: 2026-07-27 00:50:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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-workflowbgpq5/series-workflowbgpq5-convert-artifact-3825990993/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 00:50:54 +0000 UTC FinishedAt: 2026-07-27 01:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 00:50:54 +0000 UTC FinishedAt: 2026-07-27 01:50:21 +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:*783f6ae0-d41a-4893-9e73-d8aedc5c9ec8,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-workflowbgpq5/series-workflowbgpq5-convert-artifact-3825990993/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": "87a942b1-02cf-40b8-8dbb-aea880a03d6f", "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-workflowbgpq5/series-workflowbgpq5-build-action-2399966975/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 00:50:54 +0000 UTC FinishedAt: 2026-07-27 01:50: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:*783f6ae0-d41a-4893-9e73-d8aedc5c9ec8,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-workflowbgpq5/series-workflowbgpq5-convert-artifact-3825990993/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": "87a942b1-02cf-40b8-8dbb-aea880a03d6f", "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-workflowbgpq5/series-workflowbgpq5-build-action-2399966975/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 01:50:21 +0000 UTC FinishedAt: 2026-07-27 01:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 01:50:21 +0000 UTC FinishedAt: 2026-07-27 01:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 01:50:21 +0000 UTC FinishedAt: 2026-07-27 01:50:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 01:50:21 +0000 UTC FinishedAt: 2026-07-27 01:50:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-workflowbgpq5/series-workflowbgpq5-convert-artifact-847510308/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 01:50:44 +0000 UTC FinishedAt: 2026-07-27 01:53:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 01:50:44 +0000 UTC FinishedAt: 2026-07-27 01:53:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*87a942b1-02cf-40b8-8dbb-aea880a03d6f,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-workflowbgpq5/series-workflowbgpq5-build-action-2399966975/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-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 01:53:11 +0000 UTC FinishedAt: 2026-07-27 01:53:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 01:53:11 +0000 UTC FinishedAt: 2026-07-27 01:53:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 01:53:11 +0000 UTC FinishedAt: 2026-07-27 02:51:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 01:53:11 +0000 UTC FinishedAt: 2026-07-27 02:51:52 +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:*783f6ae0-d41a-4893-9e73-d8aedc5c9ec8,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-workflowbgpq5/series-workflowbgpq5-convert-artifact-847510308/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": "eadcd94c-c33c-4bbc-aac8-1d6cd31240a5", "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-workflowbgpq5/series-workflowbgpq5-build-action-2294444464/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 01:53:11 +0000 UTC FinishedAt: 2026-07-27 02:51:48 +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:*783f6ae0-d41a-4893-9e73-d8aedc5c9ec8,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-workflowbgpq5/series-workflowbgpq5-convert-artifact-847510308/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": "eadcd94c-c33c-4bbc-aac8-1d6cd31240a5", "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-workflowbgpq5/series-workflowbgpq5-build-action-2294444464/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:51:52 +0000 UTC FinishedAt: 2026-07-27 02:51:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:51:52 +0000 UTC FinishedAt: 2026-07-27 02:51:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:51:52 +0000 UTC FinishedAt: 2026-07-27 02:54:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:51:52 +0000 UTC FinishedAt: 2026-07-27 02:53:50 +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:*eadcd94c-c33c-4bbc-aac8-1d6cd31240a5,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-workflowbgpq5/series-workflowbgpq5-build-action-2294444464/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-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:54:00 +0000 UTC FinishedAt: 2026-07-27 05:57:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:54:00 +0000 UTC FinishedAt: 2026-07-27 05:57:53 +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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"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:*87a942b1-02cf-40b8-8dbb-aea880a03d6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eadcd94c-c33c-4bbc-aac8-1d6cd31240a5,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-workflowbgpq5/series-workflowbgpq5-build-action-2399966975/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-workflowbgpq5/series-workflowbgpq5-build-action-2294444464/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:54:00 +0000 UTC FinishedAt: 2026-07-27 02:54:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:54:00 +0000 UTC FinishedAt: 2026-07-27 02:54:05 +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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"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-workflowbgpq5/series-workflowbgpq5-convert-artifact-2152384685/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:54:00 +0000 UTC FinishedAt: 2026-07-27 02:54:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:54:00 +0000 UTC FinishedAt: 2026-07-27 02:54:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:54:00 +0000 UTC FinishedAt: 2026-07-27 02:54:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:54:10 +0000 UTC FinishedAt: 2026-07-27 05:57:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgpq5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt","packet_snd","tpacket_snd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"a3b7d35d-4f63-4f02-af13-7a642b8714ef","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-27 02:54:10 +0000 UTC FinishedAt: 2026-07-27 05:57:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*87a942b1-02cf-40b8-8dbb-aea880a03d6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eadcd94c-c33c-4bbc-aac8-1d6cd31240a5,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-workflowbgpq5/series-workflowbgpq5-build-action-2399966975/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-workflowbgpq5/series-workflowbgpq5-build-action-2294444464/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-workflowbgpq5/series-workflowbgpq5-convert-artifact-2152384685/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,}