Name: series-workflowqf6z8 Phase: Succeeded StartedAt: 2026-07-21 23:54:08 +0000 UTC FinishedAt: 2026-07-22 05:24:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[0] Phase: Succeeded StartedAt: 2026-07-21 23:54:08 +0000 UTC FinishedAt: 2026-07-22 00:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[0].run-triage Phase: Succeeded StartedAt: 2026-07-21 23:54:08 +0000 UTC FinishedAt: 2026-07-22 00:29:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "d4932951a19a5f1ec93200260b85e1a4c080ff77", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "d4932951a19a5f1ec93200260b85e1a4c080ff77", "config_name": "upstream-apparmor-kasan.config", "series_id": "99aaeee6-57cf-4b65-ada3-29a1dcc86f7f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tty_set_ldisc", "tty_ldisc_ref_wait", "__tty_hangup" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDAwOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dHR5X3NldF9sZGlzYyYjMzQ7LAogICAgJiMzNDt0dHlfbGRpc2NfcmVmX3dhaXQmIzM0OywKICAgICYjMzQ7X190dHlfaGFuZ3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgVFRZIGxpbmUgZGlzY2lwbGluZSBtYW5hZ2VtZW50LCBjaGFuZ2luZyBsb2NraW5nIGFuZCB3YWl0IGJlaGF2aW9yIGluIHR0eV9zZXRfbGRpc2MsIHR0eV9sZGlzY19yZWZfd2FpdCwgYW5kIF9fdHR5X2hhbmd1cC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDAwOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2UyNThkMzI4MDNjN2NmODk5YmYzYWIxNTVkNjBmZTAxMmI3MWM5MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDAwOjI4OjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9pby5jIGIvZHJpdmVycy90dHkvdHR5X2lvLmNcbmluZGV4IDZiMjgzZmQwM2ZmODI0Li5lMmY4MmU4MGYzOTdlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9pby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3R0eS90dHlfaW8uY1xuQEAgLTY0OSw2ICYjNDM7NjQ5LDEzIEBAIHN0YXRpYyB2b2lkIF9fdHR5X2hhbmd1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgZXhpdF9zZXNzaW9uKVxuIFx0ICovXG4gXHRzZXRfYml0KFRUWV9IVVBQRUQsIFx1MDAyNnR0eS1cdTAwM2VmbGFncyk7XG4gXHRjbGVhcl9iaXQoVFRZX0hVUFBJTkcsIFx1MDAyNnR0eS1cdTAwM2VmbGFncyk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogV2FrZSB1cCByZWFkZXJzIGJsb2NrZWQgaW4gdHR5X2xkaXNjX3JlZl93YWl0KCkgdGhhdCBtYXkgaGF2ZVxuJiM0MztcdCAqIHNlZW4gbGRpc2MgPT0gTlVMTCBidXQgbm90IHlldCBUVFlfSFVQUEVELlxuJiM0MztcdCAqL1xuJiM0MztcdHdha2VfdXAoXHUwMDI2dHR5LVx1MDAzZXJlYWRfd2FpdCk7XG4mIzQzO1xuIFx0dHR5X3VubG9jayh0dHkpO1xuIFxuIFx0aWYgKGYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvdHR5X2xkaXNjLmMgYi9kcml2ZXJzL3R0eS90dHlfbGRpc2MuY1xuaW5kZXggMjdmZTgyMzZmNjYyMzAuLmJkOTRhMWYxM2M0NGM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy90dHkvdHR5X2xkaXNjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jXG5AQCAtMjQyLDggJiM0MzsyNDIsMjAgQEAgc3RydWN0IHR0eV9sZGlzYyAqdHR5X2xkaXNjX3JlZl93YWl0KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpXG4gXG4gXHRsZHNlbV9kb3duX3JlYWQoXHUwMDI2dHR5LVx1MDAzZWxkaXNjX3NlbSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpO1xuIFx0bGQgPSB0dHktXHUwMDNlbGRpc2M7XG4tXHRpZiAoIWxkKVxuJiM0MztcdGlmICghbGQpIHtcbiBcdFx0bGRzZW1fdXBfcmVhZChcdTAwMjZ0dHktXHUwMDNlbGRpc2Nfc2VtKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBsZGlzYyBtYXkgYmUgTlVMTCBkdXJpbmcgYSBkaXNjaXBsaW5lIHN3aXRjaDsgd2FpdCBhbmQgcmV0cnkgKi9cbiYjNDM7XHRcdGlmICghdGVzdF9iaXQoVFRZX0hVUFBFRCwgXHUwMDI2dHR5LVx1MDAzZWZsYWdzKSkge1xuJiM0MztcdFx0XHR3YWl0X2V2ZW50KHR0eS1cdTAwM2VyZWFkX3dhaXQsXG4mIzQzO1x0XHRcdFx0ICAgUkVBRF9PTkNFKHR0eS1cdTAwM2VsZGlzYykgIT0gTlVMTCB8fFxuJiM0MztcdFx0XHRcdCAgIHRlc3RfYml0KFRUWV9IVVBQRUQsIFx1MDAyNnR0eS1cdTAwM2VmbGFncykpO1xuJiM0MztcdFx0XHRsZHNlbV9kb3duX3JlYWQoXHUwMDI2dHR5LVx1MDAzZWxkaXNjX3NlbSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpO1xuJiM0MztcdFx0XHRsZCA9IHR0eS1cdTAwM2VsZGlzYztcbiYjNDM7XHRcdFx0aWYgKCFsZClcbiYjNDM7XHRcdFx0XHRsZHNlbV91cF9yZWFkKFx1MDAyNnR0eS1cdTAwM2VsZGlzY19zZW0pO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiBcdHJldHVybiBsZDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodHR5X2xkaXNjX3JlZl93YWl0KTtcbkBAIC01NTYsMTUgJiM0Mzs1NjgsMjggQEAgaW50IHR0eV9zZXRfbGRpc2Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGRpc2MpXG4gXHQvKiBTaHV0ZG93biB0aGUgb2xkIGRpc2NpcGxpbmUuICovXG4gXHR0dHlfbGRpc2NfY2xvc2UodHR5LCBvbGRfbGRpc2MpO1xuIFxuLVx0LyogTm93IHNldCB1cCB0aGUgbmV3IGxpbmUgZGlzY2lwbGluZS4gKi9cbi1cdHR0eS1cdTAwM2VsZGlzYyA9IG5ld19sZGlzYztcbiYjNDM7XHQvKiBDbGVhciB0dHktXHUwMDNlbGRpc2Mgc28gY29uY3VycmVudCByZWFkZXJzIGJhY2sgb2ZmIGR1cmluZyB0cmFuc2l0aW9uICovXG4mIzQzO1x0dHR5LVx1MDAzZWxkaXNjID0gTlVMTDtcbiBcdHR0eV9zZXRfdGVybWlvc19sZGlzYyh0dHksIGRpc2MpO1xuJiM0MztcdHR0eV9sZGlzY191bmxvY2sodHR5KTtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE9wZW4gdGhlIG5ldyBkaXNjaXBsaW5lIG91dHNpZGUgbGRpc2Nfc2VtLiBUaGUgbGRpc2MgLm9wZW4oKVxuJiM0MztcdCAqIG1heSBhY3F1aXJlIGxvY2tzIChlLmcuLCBydG5sX211dGV4KSB0aGF0IHdvdWxkIGNyZWF0ZSBjaXJjdWxhclxuJiM0MztcdCAqIGRlcGVuZGVuY2llcyBpZiB0YWtlbiB1bmRlciBsZGlzY19zZW0uIHR0eV9sb2NrIGlzIHN0aWxsIGhlbGQsXG4mIzQzO1x0ICogcHJldmVudGluZyBjb25jdXJyZW50IGxkaXNjIGNoYW5nZXMgYW5kIGhhbmd1cC5cbiYjNDM7XHQgKi9cbiBcdHJldHZhbCA9IHR0eV9sZGlzY19vcGVuKHR0eSwgbmV3X2xkaXNjKTtcbiYjNDM7XG4mIzQzO1x0dHR5X2xkaXNjX2xvY2sodHR5LCBNQVhfU0NIRURVTEVfVElNRU9VVCk7XG4mIzQzO1xuIFx0aWYgKHJldHZhbCBcdTAwM2MgMCkge1xuIFx0XHQvKiBCYWNrIHRvIHRoZSBvbGQgb25lIG9yIE5fVFRZIGlmIHdlIGNhbiYjMzk7dCAqL1xuIFx0XHR0dHlfbGRpc2NfcHV0KG5ld19sZGlzYyk7XG4gXHRcdHR0eV9sZGlzY19yZXN0b3JlKHR0eSwgb2xkX2xkaXNjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0LyogU3VjY2VzcyAtIGluc3RhbGwgbmV3IGxkaXNjICovXG4mIzQzO1x0XHR0dHktXHUwMDNlbGRpc2MgPSBuZXdfbGRpc2M7XG4gXHR9XG4gXG4gXHRpZiAodHR5LVx1MDAzZWxkaXNjLVx1MDAzZW9wcy1cdTAwM2VudW0gIT0gb2xkX2xkaXNjLVx1MDAzZW9wcy1cdTAwM2VudW0gXHUwMDI2XHUwMDI2IHR0eS1cdTAwM2VvcHMtXHUwMDNlc2V0X2xkaXNjKSB7XG5AQCAtNTg0LDYgJiM0Mzs2MDksOSBAQCBpbnQgdHR5X3NldF9sZGlzYyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgZGlzYylcbiBvdXQ6XG4gXHR0dHlfbGRpc2NfdW5sb2NrKHR0eSk7XG4gXG4mIzQzO1x0LyogV2FrZSB1cCByZWFkZXJzIHdhaXRpbmcgZm9yIHRoZSBsZGlzYyB0cmFuc2l0aW9uIHRvIGNvbXBsZXRlICovXG4mIzQzO1x0d2FrZV91cChcdTAwMjZ0dHktXHUwMDNlcmVhZF93YWl0KTtcbiYjNDM7XG4gXHQvKlxuIFx0ICogUmVzdGFydCB0aGUgd29yayBxdWV1ZSBpbiBjYXNlIG5vIGNoYXJhY3RlcnMga2ljayBpdCBvZmYuIFNhZmUgaWZcbiBcdCAqIGFscmVhZHkgcnVubmluZ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDAwOjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3R0eV9zZXRfbGRpc2MmIzM0OywKICAgICYjMzQ7dHR5X2xkaXNjX3JlZl93YWl0JiMzNDssCiAgICAmIzM0O19fdHR5X2hhbmd1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFRUWSBsaW5lIGRpc2NpcGxpbmUgbWFuYWdlbWVudCwgY2hhbmdpbmcgbG9ja2luZyBhbmQgd2FpdCBiZWhhdmlvciBpbiB0dHlfc2V0X2xkaXNjLCB0dHlfbGRpc2NfcmVmX3dhaXQsIGFuZCBfX3R0eV9oYW5ndXAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2UyNThkMzI4MDNjN2NmODk5YmYzYWIxNTVkNjBmZTAxMmI3MWM5MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDIyIDAwOjI4OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvdHR5X2lvLmMgYi9kcml2ZXJzL3R0eS90dHlfaW8uYwppbmRleCA2YjI4M2ZkMDNmZjgyNC4uZTJmODJlODBmMzk3ZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3R0eV9pby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdHR5L3R0eV9pby5jCkBAIC02NDksNiAmIzQzOzY0OSwxMyBAQCBzdGF0aWMgdm9pZCBfX3R0eV9oYW5ndXAoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGV4aXRfc2Vzc2lvbikKIAkgKi8KIAlzZXRfYml0KFRUWV9IVVBQRUQsICZhbXA7dHR5LSZndDtmbGFncyk7CiAJY2xlYXJfYml0KFRUWV9IVVBQSU5HLCAmYW1wO3R0eS0mZ3Q7ZmxhZ3MpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBXYWtlIHVwIHJlYWRlcnMgYmxvY2tlZCBpbiB0dHlfbGRpc2NfcmVmX3dhaXQoKSB0aGF0IG1heSBoYXZlCiYjNDM7CSAqIHNlZW4gbGRpc2MgPT0gTlVMTCBidXQgbm90IHlldCBUVFlfSFVQUEVELgomIzQzOwkgKi8KJiM0MzsJd2FrZV91cCgmYW1wO3R0eS0mZ3Q7cmVhZF93YWl0KTsKJiM0MzsKIAl0dHlfdW5sb2NrKHR0eSk7CiAKIAlpZiAoZikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jIGIvZHJpdmVycy90dHkvdHR5X2xkaXNjLmMKaW5kZXggMjdmZTgyMzZmNjYyMzAuLmJkOTRhMWYxM2M0NGM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS90dHlfbGRpc2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3R0eS90dHlfbGRpc2MuYwpAQCAtMjQyLDggJiM0MzsyNDIsMjAgQEAgc3RydWN0IHR0eV9sZGlzYyAqdHR5X2xkaXNjX3JlZl93YWl0KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpCiAKIAlsZHNlbV9kb3duX3JlYWQoJmFtcDt0dHktJmd0O2xkaXNjX3NlbSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwogCWxkID0gdHR5LSZndDtsZGlzYzsKLQlpZiAoIWxkKQomIzQzOwlpZiAoIWxkKSB7CiAJCWxkc2VtX3VwX3JlYWQoJmFtcDt0dHktJmd0O2xkaXNjX3NlbSk7CiYjNDM7CiYjNDM7CQkvKiBsZGlzYyBtYXkgYmUgTlVMTCBkdXJpbmcgYSBkaXNjaXBsaW5lIHN3aXRjaDsgd2FpdCBhbmQgcmV0cnkgKi8KJiM0MzsJCWlmICghdGVzdF9iaXQoVFRZX0hVUFBFRCwgJmFtcDt0dHktJmd0O2ZsYWdzKSkgewomIzQzOwkJCXdhaXRfZXZlbnQodHR5LSZndDtyZWFkX3dhaXQsCiYjNDM7CQkJCSAgIFJFQURfT05DRSh0dHktJmd0O2xkaXNjKSAhPSBOVUxMIHx8CiYjNDM7CQkJCSAgIHRlc3RfYml0KFRUWV9IVVBQRUQsICZhbXA7dHR5LSZndDtmbGFncykpOwomIzQzOwkJCWxkc2VtX2Rvd25fcmVhZCgmYW1wO3R0eS0mZ3Q7bGRpc2Nfc2VtLCBNQVhfU0NIRURVTEVfVElNRU9VVCk7CiYjNDM7CQkJbGQgPSB0dHktJmd0O2xkaXNjOwomIzQzOwkJCWlmICghbGQpCiYjNDM7CQkJCWxkc2VtX3VwX3JlYWQoJmFtcDt0dHktJmd0O2xkaXNjX3NlbSk7CiYjNDM7CQl9CiYjNDM7CX0KIAlyZXR1cm4gbGQ7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh0dHlfbGRpc2NfcmVmX3dhaXQpOwpAQCAtNTU2LDE1ICYjNDM7NTY4LDI4IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBkaXNjKQogCS8qIFNodXRkb3duIHRoZSBvbGQgZGlzY2lwbGluZS4gKi8KIAl0dHlfbGRpc2NfY2xvc2UodHR5LCBvbGRfbGRpc2MpOwogCi0JLyogTm93IHNldCB1cCB0aGUgbmV3IGxpbmUgZGlzY2lwbGluZS4gKi8KLQl0dHktJmd0O2xkaXNjID0gbmV3X2xkaXNjOwomIzQzOwkvKiBDbGVhciB0dHktJmd0O2xkaXNjIHNvIGNvbmN1cnJlbnQgcmVhZGVycyBiYWNrIG9mZiBkdXJpbmcgdHJhbnNpdGlvbiAqLwomIzQzOwl0dHktJmd0O2xkaXNjID0gTlVMTDsKIAl0dHlfc2V0X3Rlcm1pb3NfbGRpc2ModHR5LCBkaXNjKTsKJiM0MzsJdHR5X2xkaXNjX3VubG9jayh0dHkpOwogCiYjNDM7CS8qCiYjNDM7CSAqIE9wZW4gdGhlIG5ldyBkaXNjaXBsaW5lIG91dHNpZGUgbGRpc2Nfc2VtLiBUaGUgbGRpc2MgLm9wZW4oKQomIzQzOwkgKiBtYXkgYWNxdWlyZSBsb2NrcyAoZS5nLiwgcnRubF9tdXRleCkgdGhhdCB3b3VsZCBjcmVhdGUgY2lyY3VsYXIKJiM0MzsJICogZGVwZW5kZW5jaWVzIGlmIHRha2VuIHVuZGVyIGxkaXNjX3NlbS4gdHR5X2xvY2sgaXMgc3RpbGwgaGVsZCwKJiM0MzsJICogcHJldmVudGluZyBjb25jdXJyZW50IGxkaXNjIGNoYW5nZXMgYW5kIGhhbmd1cC4KJiM0MzsJICovCiAJcmV0dmFsID0gdHR5X2xkaXNjX29wZW4odHR5LCBuZXdfbGRpc2MpOwomIzQzOwomIzQzOwl0dHlfbGRpc2NfbG9jayh0dHksIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKJiM0MzsKIAlpZiAocmV0dmFsICZsdDsgMCkgewogCQkvKiBCYWNrIHRvIHRoZSBvbGQgb25lIG9yIE5fVFRZIGlmIHdlIGNhbiYjMzk7dCAqLwogCQl0dHlfbGRpc2NfcHV0KG5ld19sZGlzYyk7CiAJCXR0eV9sZGlzY19yZXN0b3JlKHR0eSwgb2xkX2xkaXNjKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCS8qIFN1Y2Nlc3MgLSBpbnN0YWxsIG5ldyBsZGlzYyAqLwomIzQzOwkJdHR5LSZndDtsZGlzYyA9IG5ld19sZGlzYzsKIAl9CiAKIAlpZiAodHR5LSZndDtsZGlzYy0mZ3Q7b3BzLSZndDtudW0gIT0gb2xkX2xkaXNjLSZndDtvcHMtJmd0O251bSAmYW1wOyZhbXA7IHR0eS0mZ3Q7b3BzLSZndDtzZXRfbGRpc2MpIHsKQEAgLTU4NCw2ICYjNDM7NjA5LDkgQEAgaW50IHR0eV9zZXRfbGRpc2Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGRpc2MpCiBvdXQ6CiAJdHR5X2xkaXNjX3VubG9jayh0dHkpOwogCiYjNDM7CS8qIFdha2UgdXAgcmVhZGVycyB3YWl0aW5nIGZvciB0aGUgbGRpc2MgdHJhbnNpdGlvbiB0byBjb21wbGV0ZSAqLwomIzQzOwl3YWtlX3VwKCZhbXA7dHR5LSZndDtyZWFkX3dhaXQpOwomIzQzOwogCS8qCiAJICogUmVzdGFydCB0aGUgd29yayBxdWV1ZSBpbiBjYXNlIG5vIGNoYXJhY3RlcnMga2ljayBpdCBvZmYuIFNhZmUgaWYKIAkgKiBhbHJlYWR5IHJ1bm5pbmcKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBUVFkgU3Vic3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIGNvcmUgVFRZIGNvZGUsIHNwZWNpZmljYWxseSBpbiBgdHR5X2lvLmNgIGFuZCBgdHR5X2xkaXNjLmNgLiBNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgdGhpcyBpcyBmb2N1c2VkIG9uIGxpbmUgZGlzY2lwbGluZSBtYW5hZ2VtZW50LCBhbmQgaXQgc2VlbXMgbGlrZSBhIGZhaXJseSBjcml0aWNhbCBmaXguIFRoZSBjaGFuZ2VzIGFyZSB0b3VjaGluZyBgX190dHlfaGFuZ3VwYCwgYHR0eV9sZGlzY19yZWZfd2FpdGAsIGFuZCBgdHR5X3NldF9sZGlzY2Ag4oCTIHRob3NlIGFyZSBkZWZpbml0ZWx5IHRoZSBrZXkgc3ltYm9scyB0byBrZWVwIGluIG1pbmQuCgpJdCBsb29rcyBsaWtlIHRoZXkgYXJlIGFkZGluZyBhIGB3YWtlX3VwKCZhbXA7dHR5LSZndDtyZWFkX3dhaXQpYCBpbiBgX190dHlfaGFuZ3VwYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIHJpZ2h0IGF3YXkgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgY2hhbmdlcy4gYHR0eV9sZGlzY19yZWZfd2FpdGAgaXMgYmVpbmcgbW9kaWZpZWQgdG8gd2FpdCBvbiB0aGUgYHR0eS0mZ3Q7cmVhZF93YWl0YCBxdWV1ZSBpZiB0aGUgbGluZSBkaXNjaXBsaW5lIGlzICpudWxsKiBhbmQgdGhlIGhhbmd1cCBmbGFnIGlzbiYjMzk7dCBzZXQsIHdoaWNoIGNsZWFybHkgaXMgdGhlIGNydXggb2YgdGhlIHJhY2UgY29uZGl0aW9uIGZpeCwgYW5kIGB0dHlfc2V0X2xkaXNjYCBpcyBnZXR0aW5nIGEgc2lnbmlmaWNhbnQgb3ZlcmhhdWwgdG9vLiBJdCYjMzk7cyBoYW5kbGluZyB0aGUgdHJhbnNpdGlvbiBtb3JlIGNhcmVmdWxseSwgcmVsZWFzaW5nIGFuZCByZWFjcXVpcmluZyB0aGUgbG9jaywgY2FsbGluZyBgdHR5X2xkaXNjX29wZW5gICpvdXRzaWRlKiB0aGUgbG9jaywgYW5kIHRoZW4gcmUtYWNxdWlyaW5nIHRoZSBsb2NrIGFuZCBzZXR0aW5nIHRoZSBuZXcgbGluZSBkaXNjaXBsaW5lLiBBbmQsIGZpbmFsbHksIGFub3RoZXIgYHdha2VfdXBgIG9uIGB0dHktJmd0O3JlYWRfd2FpdGAuCgpGcm9tIGEgcXVpY2sgc2tpbSwgdGhpcyBwYXRjaCBzY3JlYW1zICYjMzQ7cG90ZW50aWFsIGRlYWRsb2NrL3JhY2UgY29uZGl0aW9uIGZpeCYjMzQ7LiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgcmVkIGZsYWcgdGhhdCBuZWVkcyBzZXJpb3VzIGF0dGVudGlvbiBhbmQgdGVzdGluZy4gVGhpcyBpcyB0aGUga2luZCBvZiBjaGFuZ2UgdGhhdCBjYW4gaGF2ZSB3aWRlLXJlYWNoaW5nIGVmZmVjdHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBrbm93IGhvdyB0aGlzIGVmZmVjdHMgYWxsIHRoZSBvdGhlciBkcml2ZXJzLgoKR2l2ZW4gdGhlIHNjb3BlIGFuZCB0aGUgZm9jdXMgb24gY29yZSBUVFkgZnVuY3Rpb25hbGl0eSwgSSYjMzk7bSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcyBwYXRjaC4gSXQgc2hvdWxkIGJlIHRob3JvdWdobHkgdGVzdGVkLiBJIGRvbiYjMzk7dCBzZWUgYW55IGV4cGxpY2l0IGNvbmZpZyBkZXBlbmRlbmNpZXMgKFRUWSBpcyBwcmV0dHkgbXVjaCBhbHdheXMgZW5hYmxlZCkgc28gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoZSBwYXRjaCBmaWxlcyBub3cgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHR5X3NldF9sZGlzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jPTUwMz1zdGF0aWMgdm9pZCB0dHlfbGRpc2NfcmVzdG9yZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdHR5X2xkaXNjICpvbGQpXG4tLVxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmMtNTIxLS8qKlxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmM6NTIyOiAqIHR0eV9zZXRfbGRpc2NcdFx0LVx0c2V0IGxpbmUgZGlzY2lwbGluZVxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmMtNTIzLSAqIEB0dHk6IHRoZSB0ZXJtaW5hbCB0byBzZXRcbi0tXG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYy01MzAtICovXG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYzo1MzE6aW50IHR0eV9zZXRfbGRpc2Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGRpc2MpXG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYy01MzIte1xuLS1cbmRyaXZlcnMvdHR5L3R0eV9sZGlzYy5jLTYyNC19XG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYzo2MjU6RVhQT1JUX1NZTUJPTF9HUEwodHR5X3NldF9sZGlzYyk7XG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYy02MjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1MAoJCQkJCQkJb3V0cHV0OiAxMTUKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBDb3JlIFRUWSBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIHRoZSB2ZXJ5IGhlYXJ0IG9mIGhvdyB0aGUgVFRZIHN5c3RlbSBvcGVyYXRlcy4gVGhpcyBpcyBpbnRlcmVzdGluZywgYW5kIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgdGhvdWdodDogd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gZnV6eiB0aGlzLiBUaGlzIGlzIGNvcmUgZnVuY3Rpb25hbGl0eSwgYW5kIGNoYW5nZXMgaGVyZSBoYXZlIHRoZSBwb3RlbnRpYWwgdG8gcmlwcGxlIG91dHdhcmRzIGluIHVucHJlZGljdGFibGUgd2F5cywgc28gc2V0dGluZyBgV29ydGhGdXp6aW5nPXRydWVgIGlzIGEgbm8tYnJhaW5lci4KCk5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIHNwZWNpZmljcy4gTXkgaW5pdGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nIGZvY3VzIGFyZSBnb2luZyB0byBiZSBgdHR5X3NldF9sZGlzY2AsIGB0dHlfbGRpc2NfcmVmX3dhaXRgLCBhbmQgYF9fdHR5X2hhbmd1cGAuIFRoZXNlIHNlZW0gbGlrZSB0aGUga2V5IGVudHJ5IHBvaW50cyBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGZvciB0aGVzZSBUVFkgY2hhbmdlcy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGp1bXBpbmcgb2ZmIHBvaW50LgoKQXMgZm9yIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmFibGUsIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBvbmVzIHRvIHNwZWNpZmljYWxseSB0YXJnZXQgZ2l2ZW4gdGhhdCBUVFkgaXMgaW5oZXJlbnRseSBjb3JlLiBXZSYjMzk7bGwgcHJvY2VlZCB3aXRoIHdoYXRldmVyIGJhc2UgY29uZmlndXJhdGlvbnMgd2UmIzM5O3JlIHVzaW5nLCBhbmQgbWFrZSBzdXJlIHRvIG1vbml0b3IgdGhlIGZ1enppbmcgcnVucyBmb3IgYW55dGhpbmcgdW51c3VhbCB0aGF0IHBvcHMgdXAsIHBhcnRpY3VsYXJseSByZWdhcmRpbmcgcmVzb3VyY2UgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3R0eV9zZXRfbGRpc2MmIzM0OywKICAgICYjMzQ7dHR5X2xkaXNjX3JlZl93YWl0JiMzNDssCiAgICAmIzM0O19fdHR5X2hhbmd1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFRUWSBsaW5lIGRpc2NpcGxpbmUgbWFuYWdlbWVudCwgY2hhbmdpbmcgbG9ja2luZyBhbmQgd2FpdCBiZWhhdmlvciBpbiB0dHlfc2V0X2xkaXNjLCB0dHlfbGRpc2NfcmVmX3dhaXQsIGFuZCBfX3R0eV9oYW5ndXAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0dHlfc2V0X2xkaXNjJiMzNDssCiAgICAmIzM0O3R0eV9sZGlzY19yZWZfd2FpdCYjMzQ7LAogICAgJiMzNDtfX3R0eV9oYW5ndXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUVFkgbGluZSBkaXNjaXBsaW5lIG1hbmFnZW1lbnQsIGNoYW5naW5nIGxvY2tpbmcgYW5kIHdhaXQgYmVoYXZpb3IgaW4gdHR5X3NldF9sZGlzYywgdHR5X2xkaXNjX3JlZl93YWl0LCBhbmQgX190dHlfaGFuZ3VwLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwMDoyODo0Ni45MjcxNDYwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzkyNTA3NzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInR0eV9zZXRfbGRpc2NcIixcbiAgICBcInR0eV9sZGlzY19yZWZfd2FpdFwiLFxuICAgIFwiX190dHlfaGFuZ3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUVFkgbGluZSBkaXNjaXBsaW5lIG1hbmFnZW1lbnQsIGNoYW5naW5nIGxvY2tpbmcgYW5kIHdhaXQgYmVoYXZpb3IgaW4gdHR5X3NldF9sZGlzYywgdHR5X2xkaXNjX3JlZl93YWl0LCBhbmQgX190dHlfaGFuZ3VwLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDAwOjI4OjQ2LjkyNzE1MjQ0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTIwMDIzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZTI1OGQzMjgwM2M3Y2Y4OTliZjNhYjE1NWQ2MGZlMDEyYjcxYzkxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDAwOjI4OjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9pby5jIGIvZHJpdmVycy90dHkvdHR5X2lvLmNcXG5pbmRleCA2YjI4M2ZkMDNmZjgyNC4uZTJmODJlODBmMzk3ZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy90dHkvdHR5X2lvLmNcXG4rKysgYi9kcml2ZXJzL3R0eS90dHlfaW8uY1xcbkBAIC02NDksNiArNjQ5LDEzIEBAIHN0YXRpYyB2b2lkIF9fdHR5X2hhbmd1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgZXhpdF9zZXNzaW9uKVxcbiBcXHQgKi9cXG4gXFx0c2V0X2JpdChUVFlfSFVQUEVELCBcXHUwMDI2dHR5LVxcdTAwM2VmbGFncyk7XFxuIFxcdGNsZWFyX2JpdChUVFlfSFVQUElORywgXFx1MDAyNnR0eS1cXHUwMDNlZmxhZ3MpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogV2FrZSB1cCByZWFkZXJzIGJsb2NrZWQgaW4gdHR5X2xkaXNjX3JlZl93YWl0KCkgdGhhdCBtYXkgaGF2ZVxcbitcXHQgKiBzZWVuIGxkaXNjID09IE5VTEwgYnV0IG5vdCB5ZXQgVFRZX0hVUFBFRC5cXG4rXFx0ICovXFxuK1xcdHdha2VfdXAoXFx1MDAyNnR0eS1cXHUwMDNlcmVhZF93YWl0KTtcXG4rXFxuIFxcdHR0eV91bmxvY2sodHR5KTtcXG4gXFxuIFxcdGlmIChmKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS90dHlfbGRpc2MuYyBiL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jXFxuaW5kZXggMjdmZTgyMzZmNjYyMzAuLmJkOTRhMWYxM2M0NGM3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jXFxuKysrIGIvZHJpdmVycy90dHkvdHR5X2xkaXNjLmNcXG5AQCAtMjQyLDggKzI0MiwyMCBAQCBzdHJ1Y3QgdHR5X2xkaXNjICp0dHlfbGRpc2NfcmVmX3dhaXQoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcXG4gXFxuIFxcdGxkc2VtX2Rvd25fcmVhZChcXHUwMDI2dHR5LVxcdTAwM2VsZGlzY19zZW0sIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTtcXG4gXFx0bGQgPSB0dHktXFx1MDAzZWxkaXNjO1xcbi1cXHRpZiAoIWxkKVxcbitcXHRpZiAoIWxkKSB7XFxuIFxcdFxcdGxkc2VtX3VwX3JlYWQoXFx1MDAyNnR0eS1cXHUwMDNlbGRpc2Nfc2VtKTtcXG4rXFxuK1xcdFxcdC8qIGxkaXNjIG1heSBiZSBOVUxMIGR1cmluZyBhIGRpc2NpcGxpbmUgc3dpdGNoOyB3YWl0IGFuZCByZXRyeSAqL1xcbitcXHRcXHRpZiAoIXRlc3RfYml0KFRUWV9IVVBQRUQsIFxcdTAwMjZ0dHktXFx1MDAzZWZsYWdzKSkge1xcbitcXHRcXHRcXHR3YWl0X2V2ZW50KHR0eS1cXHUwMDNlcmVhZF93YWl0LFxcbitcXHRcXHRcXHRcXHQgICBSRUFEX09OQ0UodHR5LVxcdTAwM2VsZGlzYykgIT0gTlVMTCB8fFxcbitcXHRcXHRcXHRcXHQgICB0ZXN0X2JpdChUVFlfSFVQUEVELCBcXHUwMDI2dHR5LVxcdTAwM2VmbGFncykpO1xcbitcXHRcXHRcXHRsZHNlbV9kb3duX3JlYWQoXFx1MDAyNnR0eS1cXHUwMDNlbGRpc2Nfc2VtLCBNQVhfU0NIRURVTEVfVElNRU9VVCk7XFxuK1xcdFxcdFxcdGxkID0gdHR5LVxcdTAwM2VsZGlzYztcXG4rXFx0XFx0XFx0aWYgKCFsZClcXG4rXFx0XFx0XFx0XFx0bGRzZW1fdXBfcmVhZChcXHUwMDI2dHR5LVxcdTAwM2VsZGlzY19zZW0pO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4gXFx0cmV0dXJuIGxkO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHR0eV9sZGlzY19yZWZfd2FpdCk7XFxuQEAgLTU1NiwxNSArNTY4LDI4IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBkaXNjKVxcbiBcXHQvKiBTaHV0ZG93biB0aGUgb2xkIGRpc2NpcGxpbmUuICovXFxuIFxcdHR0eV9sZGlzY19jbG9zZSh0dHksIG9sZF9sZGlzYyk7XFxuIFxcbi1cXHQvKiBOb3cgc2V0IHVwIHRoZSBuZXcgbGluZSBkaXNjaXBsaW5lLiAqL1xcbi1cXHR0dHktXFx1MDAzZWxkaXNjID0gbmV3X2xkaXNjO1xcbitcXHQvKiBDbGVhciB0dHktXFx1MDAzZWxkaXNjIHNvIGNvbmN1cnJlbnQgcmVhZGVycyBiYWNrIG9mZiBkdXJpbmcgdHJhbnNpdGlvbiAqL1xcbitcXHR0dHktXFx1MDAzZWxkaXNjID0gTlVMTDtcXG4gXFx0dHR5X3NldF90ZXJtaW9zX2xkaXNjKHR0eSwgZGlzYyk7XFxuK1xcdHR0eV9sZGlzY191bmxvY2sodHR5KTtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIE9wZW4gdGhlIG5ldyBkaXNjaXBsaW5lIG91dHNpZGUgbGRpc2Nfc2VtLiBUaGUgbGRpc2MgLm9wZW4oKVxcbitcXHQgKiBtYXkgYWNxdWlyZSBsb2NrcyAoZS5nLiwgcnRubF9tdXRleCkgdGhhdCB3b3VsZCBjcmVhdGUgY2lyY3VsYXJcXG4rXFx0ICogZGVwZW5kZW5jaWVzIGlmIHRha2VuIHVuZGVyIGxkaXNjX3NlbS4gdHR5X2xvY2sgaXMgc3RpbGwgaGVsZCxcXG4rXFx0ICogcHJldmVudGluZyBjb25jdXJyZW50IGxkaXNjIGNoYW5nZXMgYW5kIGhhbmd1cC5cXG4rXFx0ICovXFxuIFxcdHJldHZhbCA9IHR0eV9sZGlzY19vcGVuKHR0eSwgbmV3X2xkaXNjKTtcXG4rXFxuK1xcdHR0eV9sZGlzY19sb2NrKHR0eSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpO1xcbitcXG4gXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0LyogQmFjayB0byB0aGUgb2xkIG9uZSBvciBOX1RUWSBpZiB3ZSBjYW4ndCAqL1xcbiBcXHRcXHR0dHlfbGRpc2NfcHV0KG5ld19sZGlzYyk7XFxuIFxcdFxcdHR0eV9sZGlzY19yZXN0b3JlKHR0eSwgb2xkX2xkaXNjKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0LyogU3VjY2VzcyAtIGluc3RhbGwgbmV3IGxkaXNjICovXFxuK1xcdFxcdHR0eS1cXHUwMDNlbGRpc2MgPSBuZXdfbGRpc2M7XFxuIFxcdH1cXG4gXFxuIFxcdGlmICh0dHktXFx1MDAzZWxkaXNjLVxcdTAwM2VvcHMtXFx1MDAzZW51bSAhPSBvbGRfbGRpc2MtXFx1MDAzZW9wcy1cXHUwMDNlbnVtIFxcdTAwMjZcXHUwMDI2IHR0eS1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfbGRpc2MpIHtcXG5AQCAtNTg0LDYgKzYwOSw5IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBkaXNjKVxcbiBvdXQ6XFxuIFxcdHR0eV9sZGlzY191bmxvY2sodHR5KTtcXG4gXFxuK1xcdC8qIFdha2UgdXAgcmVhZGVycyB3YWl0aW5nIGZvciB0aGUgbGRpc2MgdHJhbnNpdGlvbiB0byBjb21wbGV0ZSAqL1xcbitcXHR3YWtlX3VwKFxcdTAwMjZ0dHktXFx1MDAzZXJlYWRfd2FpdCk7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBSZXN0YXJ0IHRoZSB3b3JrIHF1ZXVlIGluIGNhc2Ugbm8gY2hhcmFjdGVycyBraWNrIGl0IG9mZi4gU2FmZSBpZlxcbiBcXHQgKiBhbHJlYWR5IHJ1bm5pbmdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDA6Mjg6NDcuMzc5NzU5ODQyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTkzOTg4ODUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0dHlfc2V0X2xkaXNjXCIsXG4gICAgXCJ0dHlfbGRpc2NfcmVmX3dhaXRcIixcbiAgICBcIl9fdHR5X2hhbmd1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgVFRZIGxpbmUgZGlzY2lwbGluZSBtYW5hZ2VtZW50LCBjaGFuZ2luZyBsb2NraW5nIGFuZCB3YWl0IGJlaGF2aW9yIGluIHR0eV9zZXRfbGRpc2MsIHR0eV9sZGlzY19yZWZfd2FpdCwgYW5kIF9fdHR5X2hhbmd1cC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNlMjU4ZDMyODAzYzdjZjg5OWJmM2FiMTU1ZDYwZmUwMTJiNzFjOTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwMDoyODo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9pby5jIGIvZHJpdmVycy90dHkvdHR5X2lvLmNcbmluZGV4IDZiMjgzZmQwM2ZmODI0Li5lMmY4MmU4MGYzOTdlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9pby5jXG4rKysgYi9kcml2ZXJzL3R0eS90dHlfaW8uY1xuQEAgLTY0OSw2ICs2NDksMTMgQEAgc3RhdGljIHZvaWQgX190dHlfaGFuZ3VwKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBleGl0X3Nlc3Npb24pXG4gXHQgKi9cbiBcdHNldF9iaXQoVFRZX0hVUFBFRCwgXHUwMDI2dHR5LVx1MDAzZWZsYWdzKTtcbiBcdGNsZWFyX2JpdChUVFlfSFVQUElORywgXHUwMDI2dHR5LVx1MDAzZWZsYWdzKTtcbitcbitcdC8qXG4rXHQgKiBXYWtlIHVwIHJlYWRlcnMgYmxvY2tlZCBpbiB0dHlfbGRpc2NfcmVmX3dhaXQoKSB0aGF0IG1heSBoYXZlXG4rXHQgKiBzZWVuIGxkaXNjID09IE5VTEwgYnV0IG5vdCB5ZXQgVFRZX0hVUFBFRC5cbitcdCAqL1xuK1x0d2FrZV91cChcdTAwMjZ0dHktXHUwMDNlcmVhZF93YWl0KTtcbitcbiBcdHR0eV91bmxvY2sodHR5KTtcbiBcbiBcdGlmIChmKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jIGIvZHJpdmVycy90dHkvdHR5X2xkaXNjLmNcbmluZGV4IDI3ZmU4MjM2ZjY2MjMwLi5iZDk0YTFmMTNjNDRjNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jXG4rKysgYi9kcml2ZXJzL3R0eS90dHlfbGRpc2MuY1xuQEAgLTI0Miw4ICsyNDIsMjAgQEAgc3RydWN0IHR0eV9sZGlzYyAqdHR5X2xkaXNjX3JlZl93YWl0KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpXG4gXG4gXHRsZHNlbV9kb3duX3JlYWQoXHUwMDI2dHR5LVx1MDAzZWxkaXNjX3NlbSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpO1xuIFx0bGQgPSB0dHktXHUwMDNlbGRpc2M7XG4tXHRpZiAoIWxkKVxuK1x0aWYgKCFsZCkge1xuIFx0XHRsZHNlbV91cF9yZWFkKFx1MDAyNnR0eS1cdTAwM2VsZGlzY19zZW0pO1xuK1xuK1x0XHQvKiBsZGlzYyBtYXkgYmUgTlVMTCBkdXJpbmcgYSBkaXNjaXBsaW5lIHN3aXRjaDsgd2FpdCBhbmQgcmV0cnkgKi9cbitcdFx0aWYgKCF0ZXN0X2JpdChUVFlfSFVQUEVELCBcdTAwMjZ0dHktXHUwMDNlZmxhZ3MpKSB7XG4rXHRcdFx0d2FpdF9ldmVudCh0dHktXHUwMDNlcmVhZF93YWl0LFxuK1x0XHRcdFx0ICAgUkVBRF9PTkNFKHR0eS1cdTAwM2VsZGlzYykgIT0gTlVMTCB8fFxuK1x0XHRcdFx0ICAgdGVzdF9iaXQoVFRZX0hVUFBFRCwgXHUwMDI2dHR5LVx1MDAzZWZsYWdzKSk7XG4rXHRcdFx0bGRzZW1fZG93bl9yZWFkKFx1MDAyNnR0eS1cdTAwM2VsZGlzY19zZW0sIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTtcbitcdFx0XHRsZCA9IHR0eS1cdTAwM2VsZGlzYztcbitcdFx0XHRpZiAoIWxkKVxuK1x0XHRcdFx0bGRzZW1fdXBfcmVhZChcdTAwMjZ0dHktXHUwMDNlbGRpc2Nfc2VtKTtcbitcdFx0fVxuK1x0fVxuIFx0cmV0dXJuIGxkO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh0dHlfbGRpc2NfcmVmX3dhaXQpO1xuQEAgLTU1NiwxNSArNTY4LDI4IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBkaXNjKVxuIFx0LyogU2h1dGRvd24gdGhlIG9sZCBkaXNjaXBsaW5lLiAqL1xuIFx0dHR5X2xkaXNjX2Nsb3NlKHR0eSwgb2xkX2xkaXNjKTtcbiBcbi1cdC8qIE5vdyBzZXQgdXAgdGhlIG5ldyBsaW5lIGRpc2NpcGxpbmUuICovXG4tXHR0dHktXHUwMDNlbGRpc2MgPSBuZXdfbGRpc2M7XG4rXHQvKiBDbGVhciB0dHktXHUwMDNlbGRpc2Mgc28gY29uY3VycmVudCByZWFkZXJzIGJhY2sgb2ZmIGR1cmluZyB0cmFuc2l0aW9uICovXG4rXHR0dHktXHUwMDNlbGRpc2MgPSBOVUxMO1xuIFx0dHR5X3NldF90ZXJtaW9zX2xkaXNjKHR0eSwgZGlzYyk7XG4rXHR0dHlfbGRpc2NfdW5sb2NrKHR0eSk7XG4gXG4rXHQvKlxuK1x0ICogT3BlbiB0aGUgbmV3IGRpc2NpcGxpbmUgb3V0c2lkZSBsZGlzY19zZW0uIFRoZSBsZGlzYyAub3BlbigpXG4rXHQgKiBtYXkgYWNxdWlyZSBsb2NrcyAoZS5nLiwgcnRubF9tdXRleCkgdGhhdCB3b3VsZCBjcmVhdGUgY2lyY3VsYXJcbitcdCAqIGRlcGVuZGVuY2llcyBpZiB0YWtlbiB1bmRlciBsZGlzY19zZW0uIHR0eV9sb2NrIGlzIHN0aWxsIGhlbGQsXG4rXHQgKiBwcmV2ZW50aW5nIGNvbmN1cnJlbnQgbGRpc2MgY2hhbmdlcyBhbmQgaGFuZ3VwLlxuK1x0ICovXG4gXHRyZXR2YWwgPSB0dHlfbGRpc2Nfb3Blbih0dHksIG5ld19sZGlzYyk7XG4rXG4rXHR0dHlfbGRpc2NfbG9jayh0dHksIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTtcbitcbiBcdGlmIChyZXR2YWwgXHUwMDNjIDApIHtcbiBcdFx0LyogQmFjayB0byB0aGUgb2xkIG9uZSBvciBOX1RUWSBpZiB3ZSBjYW4ndCAqL1xuIFx0XHR0dHlfbGRpc2NfcHV0KG5ld19sZGlzYyk7XG4gXHRcdHR0eV9sZGlzY19yZXN0b3JlKHR0eSwgb2xkX2xkaXNjKTtcbitcdH0gZWxzZSB7XG4rXHRcdC8qIFN1Y2Nlc3MgLSBpbnN0YWxsIG5ldyBsZGlzYyAqL1xuK1x0XHR0dHktXHUwMDNlbGRpc2MgPSBuZXdfbGRpc2M7XG4gXHR9XG4gXG4gXHRpZiAodHR5LVx1MDAzZWxkaXNjLVx1MDAzZW9wcy1cdTAwM2VudW0gIT0gb2xkX2xkaXNjLVx1MDAzZW9wcy1cdTAwM2VudW0gXHUwMDI2XHUwMDI2IHR0eS1cdTAwM2VvcHMtXHUwMDNlc2V0X2xkaXNjKSB7XG5AQCAtNTg0LDYgKzYwOSw5IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBkaXNjKVxuIG91dDpcbiBcdHR0eV9sZGlzY191bmxvY2sodHR5KTtcbiBcbitcdC8qIFdha2UgdXAgcmVhZGVycyB3YWl0aW5nIGZvciB0aGUgbGRpc2MgdHJhbnNpdGlvbiB0byBjb21wbGV0ZSAqL1xuK1x0d2FrZV91cChcdTAwMjZ0dHktXHUwMDNlcmVhZF93YWl0KTtcbitcbiBcdC8qXG4gXHQgKiBSZXN0YXJ0IHRoZSB3b3JrIHF1ZXVlIGluIGNhc2Ugbm8gY2hhcmFjdGVycyBraWNrIGl0IG9mZi4gU2FmZSBpZlxuIFx0ICogYWxyZWFkeSBydW5uaW5nXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwMDoyODo0Ny4zNzk3NjIyNTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Nzc3MDk4MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRUWSBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIGNvcmUgVFRZIGNvZGUsIHNwZWNpZmljYWxseSBpbiBgdHR5X2lvLmNgIGFuZCBgdHR5X2xkaXNjLmNgLiBNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgdGhpcyBpcyBmb2N1c2VkIG9uIGxpbmUgZGlzY2lwbGluZSBtYW5hZ2VtZW50LCBhbmQgaXQgc2VlbXMgbGlrZSBhIGZhaXJseSBjcml0aWNhbCBmaXguIFRoZSBjaGFuZ2VzIGFyZSB0b3VjaGluZyBgX190dHlfaGFuZ3VwYCwgYHR0eV9sZGlzY19yZWZfd2FpdGAsIGFuZCBgdHR5X3NldF9sZGlzY2Ag4oCTIHRob3NlIGFyZSBkZWZpbml0ZWx5IHRoZSBrZXkgc3ltYm9scyB0byBrZWVwIGluIG1pbmQuXG5cbkl0IGxvb2tzIGxpa2UgdGhleSBhcmUgYWRkaW5nIGEgYHdha2VfdXAoXHUwMDI2dHR5LVx1MDAzZXJlYWRfd2FpdClgIGluIGBfX3R0eV9oYW5ndXBgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCByaWdodCBhd2F5IEknbSB0aGlua2luZyBhYm91dCBob3cgdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgY2hhbmdlcy4gYHR0eV9sZGlzY19yZWZfd2FpdGAgaXMgYmVpbmcgbW9kaWZpZWQgdG8gd2FpdCBvbiB0aGUgYHR0eS1cdTAwM2VyZWFkX3dhaXRgIHF1ZXVlIGlmIHRoZSBsaW5lIGRpc2NpcGxpbmUgaXMgKm51bGwqIGFuZCB0aGUgaGFuZ3VwIGZsYWcgaXNuJ3Qgc2V0LCB3aGljaCBjbGVhcmx5IGlzIHRoZSBjcnV4IG9mIHRoZSByYWNlIGNvbmRpdGlvbiBmaXgsIGFuZCBgdHR5X3NldF9sZGlzY2AgaXMgZ2V0dGluZyBhIHNpZ25pZmljYW50IG92ZXJoYXVsIHRvby4gSXQncyBoYW5kbGluZyB0aGUgdHJhbnNpdGlvbiBtb3JlIGNhcmVmdWxseSwgcmVsZWFzaW5nIGFuZCByZWFjcXVpcmluZyB0aGUgbG9jaywgY2FsbGluZyBgdHR5X2xkaXNjX29wZW5gICpvdXRzaWRlKiB0aGUgbG9jaywgYW5kIHRoZW4gcmUtYWNxdWlyaW5nIHRoZSBsb2NrIGFuZCBzZXR0aW5nIHRoZSBuZXcgbGluZSBkaXNjaXBsaW5lLiBBbmQsIGZpbmFsbHksIGFub3RoZXIgYHdha2VfdXBgIG9uIGB0dHktXHUwMDNlcmVhZF93YWl0YC5cblxuRnJvbSBhIHF1aWNrIHNraW0sIHRoaXMgcGF0Y2ggc2NyZWFtcyBcInBvdGVudGlhbCBkZWFkbG9jay9yYWNlIGNvbmRpdGlvbiBmaXhcIi4gVGhhdCdzIGEgZGVmaW5pdGUgcmVkIGZsYWcgdGhhdCBuZWVkcyBzZXJpb3VzIGF0dGVudGlvbiBhbmQgdGVzdGluZy4gVGhpcyBpcyB0aGUga2luZCBvZiBjaGFuZ2UgdGhhdCBjYW4gaGF2ZSB3aWRlLXJlYWNoaW5nIGVmZmVjdHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBrbm93IGhvdyB0aGlzIGVmZmVjdHMgYWxsIHRoZSBvdGhlciBkcml2ZXJzLlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIHRoZSBmb2N1cyBvbiBjb3JlIFRUWSBmdW5jdGlvbmFsaXR5LCBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBmdXp6aW5nIHRoaXMgcGF0Y2guIEl0IHNob3VsZCBiZSB0aG9yb3VnaGx5IHRlc3RlZC4gSSBkb24ndCBzZWUgYW55IGV4cGxpY2l0IGNvbmZpZyBkZXBlbmRlbmNpZXMgKFRUWSBpcyBwcmV0dHkgbXVjaCBhbHdheXMgZW5hYmxlZCkgc28gSSdsbCBkb3VibGUgY2hlY2sgdGhlIHBhdGNoIGZpbGVzIG5vdyB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDA6Mjg6NTMuMTU2ODYyMzY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjkzMDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInR0eV9zZXRfbGRpc2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy90dHkvdHR5X2xkaXNjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy90dHkvdHR5X2xkaXNjLmM9NTAzPXN0YXRpYyB2b2lkIHR0eV9sZGlzY19yZXN0b3JlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB0dHlfbGRpc2MgKm9sZClcXG4tLVxcbmRyaXZlcnMvdHR5L3R0eV9sZGlzYy5jLTUyMS0vKipcXG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYzo1MjI6ICogdHR5X3NldF9sZGlzY1xcdFxcdC1cXHRzZXQgbGluZSBkaXNjaXBsaW5lXFxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmMtNTIzLSAqIEB0dHk6IHRoZSB0ZXJtaW5hbCB0byBzZXRcXG4tLVxcbmRyaXZlcnMvdHR5L3R0eV9sZGlzYy5jLTUzMC0gKi9cXG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYzo1MzE6aW50IHR0eV9zZXRfbGRpc2Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGRpc2MpXFxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmMtNTMyLXtcXG4tLVxcbmRyaXZlcnMvdHR5L3R0eV9sZGlzYy5jLTYyNC19XFxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmM6NjI1OkVYUE9SVF9TWU1CT0xfR1BMKHR0eV9zZXRfbGRpc2MpO1xcbmRyaXZlcnMvdHR5L3R0eV9sZGlzYy5jLTYyNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDA6Mjg6NTMuMjEzNTU5OTU5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNjA1Nzg0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBDb3JlIFRUWSBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIHRoZSB2ZXJ5IGhlYXJ0IG9mIGhvdyB0aGUgVFRZIHN5c3RlbSBvcGVyYXRlcy4gVGhpcyBpcyBpbnRlcmVzdGluZywgYW5kIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgdGhvdWdodDogd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gZnV6eiB0aGlzLiBUaGlzIGlzIGNvcmUgZnVuY3Rpb25hbGl0eSwgYW5kIGNoYW5nZXMgaGVyZSBoYXZlIHRoZSBwb3RlbnRpYWwgdG8gcmlwcGxlIG91dHdhcmRzIGluIHVucHJlZGljdGFibGUgd2F5cywgc28gc2V0dGluZyBgV29ydGhGdXp6aW5nPXRydWVgIGlzIGEgbm8tYnJhaW5lci5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byBzcGVjaWZpY3MuIE15IGluaXRpYWwgdGFyZ2V0cyBmb3IgZnV6emluZyBmb2N1cyBhcmUgZ29pbmcgdG8gYmUgYHR0eV9zZXRfbGRpc2NgLCBgdHR5X2xkaXNjX3JlZl93YWl0YCwgYW5kIGBfX3R0eV9oYW5ndXBgLiBUaGVzZSBzZWVtIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcyBmb3IgdGhlc2UgVFRZIGNoYW5nZXMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBqdW1waW5nIG9mZiBwb2ludC5cblxuQXMgZm9yIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmFibGUsIEkgZG9uJ3Qgc2VlIGFueSBvYnZpb3VzIG9uZXMgdG8gc3BlY2lmaWNhbGx5IHRhcmdldCBnaXZlbiB0aGF0IFRUWSBpcyBpbmhlcmVudGx5IGNvcmUuIFdlJ2xsIHByb2NlZWQgd2l0aCB3aGF0ZXZlciBiYXNlIGNvbmZpZ3VyYXRpb25zIHdlJ3JlIHVzaW5nLCBhbmQgbWFrZSBzdXJlIHRvIG1vbml0b3IgdGhlIGZ1enppbmcgcnVucyBmb3IgYW55dGhpbmcgdW51c3VhbCB0aGF0IHBvcHMgdXAsIHBhcnRpY3VsYXJseSByZWdhcmRpbmcgcmVzb3VyY2UgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTAsIk91dHB1dFRva2VucyI6MTE1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDA6Mjg6NTcuMzE5NjIwNjg1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTc0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInR0eV9zZXRfbGRpc2NcIixcbiAgICBcInR0eV9sZGlzY19yZWZfd2FpdFwiLFxuICAgIFwiX190dHlfaGFuZ3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUVFkgbGluZSBkaXNjaXBsaW5lIG1hbmFnZW1lbnQsIGNoYW5naW5nIGxvY2tpbmcgYW5kIHdhaXQgYmVoYXZpb3IgaW4gdHR5X3NldF9sZGlzYywgdHR5X2xkaXNjX3JlZl93YWl0LCBhbmQgX190dHlfaGFuZ3VwLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHR5X3NldF9sZGlzY1wiLFxuICAgIFwidHR5X2xkaXNjX3JlZl93YWl0XCIsXG4gICAgXCJfX3R0eV9oYW5ndXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFRUWSBsaW5lIGRpc2NpcGxpbmUgbWFuYWdlbWVudCwgY2hhbmdpbmcgbG9ja2luZyBhbmQgd2FpdCBiZWhhdmlvciBpbiB0dHlfc2V0X2xkaXNjLCB0dHlfbGRpc2NfcmVmX3dhaXQsIGFuZCBfX3R0eV9oYW5ndXAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqf6z8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-21 23:54:08 +0000 UTC FinishedAt: 2026-07-22 00:28:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "d4932951a19a5f1ec93200260b85e1a4c080ff77", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "d4932951a19a5f1ec93200260b85e1a4c080ff77", "config_name": "upstream-apparmor-kasan.config", "series_id": "99aaeee6-57cf-4b65-ada3-29a1dcc86f7f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tty_set_ldisc", "tty_ldisc_ref_wait", "__tty_hangup" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDAwOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dHR5X3NldF9sZGlzYyYjMzQ7LAogICAgJiMzNDt0dHlfbGRpc2NfcmVmX3dhaXQmIzM0OywKICAgICYjMzQ7X190dHlfaGFuZ3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgVFRZIGxpbmUgZGlzY2lwbGluZSBtYW5hZ2VtZW50LCBjaGFuZ2luZyBsb2NraW5nIGFuZCB3YWl0IGJlaGF2aW9yIGluIHR0eV9zZXRfbGRpc2MsIHR0eV9sZGlzY19yZWZfd2FpdCwgYW5kIF9fdHR5X2hhbmd1cC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDAwOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2UyNThkMzI4MDNjN2NmODk5YmYzYWIxNTVkNjBmZTAxMmI3MWM5MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDAwOjI4OjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9pby5jIGIvZHJpdmVycy90dHkvdHR5X2lvLmNcbmluZGV4IDZiMjgzZmQwM2ZmODI0Li5lMmY4MmU4MGYzOTdlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9pby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3R0eS90dHlfaW8uY1xuQEAgLTY0OSw2ICYjNDM7NjQ5LDEzIEBAIHN0YXRpYyB2b2lkIF9fdHR5X2hhbmd1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgZXhpdF9zZXNzaW9uKVxuIFx0ICovXG4gXHRzZXRfYml0KFRUWV9IVVBQRUQsIFx1MDAyNnR0eS1cdTAwM2VmbGFncyk7XG4gXHRjbGVhcl9iaXQoVFRZX0hVUFBJTkcsIFx1MDAyNnR0eS1cdTAwM2VmbGFncyk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogV2FrZSB1cCByZWFkZXJzIGJsb2NrZWQgaW4gdHR5X2xkaXNjX3JlZl93YWl0KCkgdGhhdCBtYXkgaGF2ZVxuJiM0MztcdCAqIHNlZW4gbGRpc2MgPT0gTlVMTCBidXQgbm90IHlldCBUVFlfSFVQUEVELlxuJiM0MztcdCAqL1xuJiM0MztcdHdha2VfdXAoXHUwMDI2dHR5LVx1MDAzZXJlYWRfd2FpdCk7XG4mIzQzO1xuIFx0dHR5X3VubG9jayh0dHkpO1xuIFxuIFx0aWYgKGYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvdHR5X2xkaXNjLmMgYi9kcml2ZXJzL3R0eS90dHlfbGRpc2MuY1xuaW5kZXggMjdmZTgyMzZmNjYyMzAuLmJkOTRhMWYxM2M0NGM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy90dHkvdHR5X2xkaXNjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jXG5AQCAtMjQyLDggJiM0MzsyNDIsMjAgQEAgc3RydWN0IHR0eV9sZGlzYyAqdHR5X2xkaXNjX3JlZl93YWl0KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpXG4gXG4gXHRsZHNlbV9kb3duX3JlYWQoXHUwMDI2dHR5LVx1MDAzZWxkaXNjX3NlbSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpO1xuIFx0bGQgPSB0dHktXHUwMDNlbGRpc2M7XG4tXHRpZiAoIWxkKVxuJiM0MztcdGlmICghbGQpIHtcbiBcdFx0bGRzZW1fdXBfcmVhZChcdTAwMjZ0dHktXHUwMDNlbGRpc2Nfc2VtKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBsZGlzYyBtYXkgYmUgTlVMTCBkdXJpbmcgYSBkaXNjaXBsaW5lIHN3aXRjaDsgd2FpdCBhbmQgcmV0cnkgKi9cbiYjNDM7XHRcdGlmICghdGVzdF9iaXQoVFRZX0hVUFBFRCwgXHUwMDI2dHR5LVx1MDAzZWZsYWdzKSkge1xuJiM0MztcdFx0XHR3YWl0X2V2ZW50KHR0eS1cdTAwM2VyZWFkX3dhaXQsXG4mIzQzO1x0XHRcdFx0ICAgUkVBRF9PTkNFKHR0eS1cdTAwM2VsZGlzYykgIT0gTlVMTCB8fFxuJiM0MztcdFx0XHRcdCAgIHRlc3RfYml0KFRUWV9IVVBQRUQsIFx1MDAyNnR0eS1cdTAwM2VmbGFncykpO1xuJiM0MztcdFx0XHRsZHNlbV9kb3duX3JlYWQoXHUwMDI2dHR5LVx1MDAzZWxkaXNjX3NlbSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpO1xuJiM0MztcdFx0XHRsZCA9IHR0eS1cdTAwM2VsZGlzYztcbiYjNDM7XHRcdFx0aWYgKCFsZClcbiYjNDM7XHRcdFx0XHRsZHNlbV91cF9yZWFkKFx1MDAyNnR0eS1cdTAwM2VsZGlzY19zZW0pO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiBcdHJldHVybiBsZDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodHR5X2xkaXNjX3JlZl93YWl0KTtcbkBAIC01NTYsMTUgJiM0Mzs1NjgsMjggQEAgaW50IHR0eV9zZXRfbGRpc2Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGRpc2MpXG4gXHQvKiBTaHV0ZG93biB0aGUgb2xkIGRpc2NpcGxpbmUuICovXG4gXHR0dHlfbGRpc2NfY2xvc2UodHR5LCBvbGRfbGRpc2MpO1xuIFxuLVx0LyogTm93IHNldCB1cCB0aGUgbmV3IGxpbmUgZGlzY2lwbGluZS4gKi9cbi1cdHR0eS1cdTAwM2VsZGlzYyA9IG5ld19sZGlzYztcbiYjNDM7XHQvKiBDbGVhciB0dHktXHUwMDNlbGRpc2Mgc28gY29uY3VycmVudCByZWFkZXJzIGJhY2sgb2ZmIGR1cmluZyB0cmFuc2l0aW9uICovXG4mIzQzO1x0dHR5LVx1MDAzZWxkaXNjID0gTlVMTDtcbiBcdHR0eV9zZXRfdGVybWlvc19sZGlzYyh0dHksIGRpc2MpO1xuJiM0MztcdHR0eV9sZGlzY191bmxvY2sodHR5KTtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE9wZW4gdGhlIG5ldyBkaXNjaXBsaW5lIG91dHNpZGUgbGRpc2Nfc2VtLiBUaGUgbGRpc2MgLm9wZW4oKVxuJiM0MztcdCAqIG1heSBhY3F1aXJlIGxvY2tzIChlLmcuLCBydG5sX211dGV4KSB0aGF0IHdvdWxkIGNyZWF0ZSBjaXJjdWxhclxuJiM0MztcdCAqIGRlcGVuZGVuY2llcyBpZiB0YWtlbiB1bmRlciBsZGlzY19zZW0uIHR0eV9sb2NrIGlzIHN0aWxsIGhlbGQsXG4mIzQzO1x0ICogcHJldmVudGluZyBjb25jdXJyZW50IGxkaXNjIGNoYW5nZXMgYW5kIGhhbmd1cC5cbiYjNDM7XHQgKi9cbiBcdHJldHZhbCA9IHR0eV9sZGlzY19vcGVuKHR0eSwgbmV3X2xkaXNjKTtcbiYjNDM7XG4mIzQzO1x0dHR5X2xkaXNjX2xvY2sodHR5LCBNQVhfU0NIRURVTEVfVElNRU9VVCk7XG4mIzQzO1xuIFx0aWYgKHJldHZhbCBcdTAwM2MgMCkge1xuIFx0XHQvKiBCYWNrIHRvIHRoZSBvbGQgb25lIG9yIE5fVFRZIGlmIHdlIGNhbiYjMzk7dCAqL1xuIFx0XHR0dHlfbGRpc2NfcHV0KG5ld19sZGlzYyk7XG4gXHRcdHR0eV9sZGlzY19yZXN0b3JlKHR0eSwgb2xkX2xkaXNjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0LyogU3VjY2VzcyAtIGluc3RhbGwgbmV3IGxkaXNjICovXG4mIzQzO1x0XHR0dHktXHUwMDNlbGRpc2MgPSBuZXdfbGRpc2M7XG4gXHR9XG4gXG4gXHRpZiAodHR5LVx1MDAzZWxkaXNjLVx1MDAzZW9wcy1cdTAwM2VudW0gIT0gb2xkX2xkaXNjLVx1MDAzZW9wcy1cdTAwM2VudW0gXHUwMDI2XHUwMDI2IHR0eS1cdTAwM2VvcHMtXHUwMDNlc2V0X2xkaXNjKSB7XG5AQCAtNTg0LDYgJiM0Mzs2MDksOSBAQCBpbnQgdHR5X3NldF9sZGlzYyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgZGlzYylcbiBvdXQ6XG4gXHR0dHlfbGRpc2NfdW5sb2NrKHR0eSk7XG4gXG4mIzQzO1x0LyogV2FrZSB1cCByZWFkZXJzIHdhaXRpbmcgZm9yIHRoZSBsZGlzYyB0cmFuc2l0aW9uIHRvIGNvbXBsZXRlICovXG4mIzQzO1x0d2FrZV91cChcdTAwMjZ0dHktXHUwMDNlcmVhZF93YWl0KTtcbiYjNDM7XG4gXHQvKlxuIFx0ICogUmVzdGFydCB0aGUgd29yayBxdWV1ZSBpbiBjYXNlIG5vIGNoYXJhY3RlcnMga2ljayBpdCBvZmYuIFNhZmUgaWZcbiBcdCAqIGFscmVhZHkgcnVubmluZ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDAwOjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3R0eV9zZXRfbGRpc2MmIzM0OywKICAgICYjMzQ7dHR5X2xkaXNjX3JlZl93YWl0JiMzNDssCiAgICAmIzM0O19fdHR5X2hhbmd1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFRUWSBsaW5lIGRpc2NpcGxpbmUgbWFuYWdlbWVudCwgY2hhbmdpbmcgbG9ja2luZyBhbmQgd2FpdCBiZWhhdmlvciBpbiB0dHlfc2V0X2xkaXNjLCB0dHlfbGRpc2NfcmVmX3dhaXQsIGFuZCBfX3R0eV9oYW5ndXAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2UyNThkMzI4MDNjN2NmODk5YmYzYWIxNTVkNjBmZTAxMmI3MWM5MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDIyIDAwOjI4OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvdHR5X2lvLmMgYi9kcml2ZXJzL3R0eS90dHlfaW8uYwppbmRleCA2YjI4M2ZkMDNmZjgyNC4uZTJmODJlODBmMzk3ZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3R0eV9pby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdHR5L3R0eV9pby5jCkBAIC02NDksNiAmIzQzOzY0OSwxMyBAQCBzdGF0aWMgdm9pZCBfX3R0eV9oYW5ndXAoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGV4aXRfc2Vzc2lvbikKIAkgKi8KIAlzZXRfYml0KFRUWV9IVVBQRUQsICZhbXA7dHR5LSZndDtmbGFncyk7CiAJY2xlYXJfYml0KFRUWV9IVVBQSU5HLCAmYW1wO3R0eS0mZ3Q7ZmxhZ3MpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBXYWtlIHVwIHJlYWRlcnMgYmxvY2tlZCBpbiB0dHlfbGRpc2NfcmVmX3dhaXQoKSB0aGF0IG1heSBoYXZlCiYjNDM7CSAqIHNlZW4gbGRpc2MgPT0gTlVMTCBidXQgbm90IHlldCBUVFlfSFVQUEVELgomIzQzOwkgKi8KJiM0MzsJd2FrZV91cCgmYW1wO3R0eS0mZ3Q7cmVhZF93YWl0KTsKJiM0MzsKIAl0dHlfdW5sb2NrKHR0eSk7CiAKIAlpZiAoZikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jIGIvZHJpdmVycy90dHkvdHR5X2xkaXNjLmMKaW5kZXggMjdmZTgyMzZmNjYyMzAuLmJkOTRhMWYxM2M0NGM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS90dHlfbGRpc2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3R0eS90dHlfbGRpc2MuYwpAQCAtMjQyLDggJiM0MzsyNDIsMjAgQEAgc3RydWN0IHR0eV9sZGlzYyAqdHR5X2xkaXNjX3JlZl93YWl0KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpCiAKIAlsZHNlbV9kb3duX3JlYWQoJmFtcDt0dHktJmd0O2xkaXNjX3NlbSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwogCWxkID0gdHR5LSZndDtsZGlzYzsKLQlpZiAoIWxkKQomIzQzOwlpZiAoIWxkKSB7CiAJCWxkc2VtX3VwX3JlYWQoJmFtcDt0dHktJmd0O2xkaXNjX3NlbSk7CiYjNDM7CiYjNDM7CQkvKiBsZGlzYyBtYXkgYmUgTlVMTCBkdXJpbmcgYSBkaXNjaXBsaW5lIHN3aXRjaDsgd2FpdCBhbmQgcmV0cnkgKi8KJiM0MzsJCWlmICghdGVzdF9iaXQoVFRZX0hVUFBFRCwgJmFtcDt0dHktJmd0O2ZsYWdzKSkgewomIzQzOwkJCXdhaXRfZXZlbnQodHR5LSZndDtyZWFkX3dhaXQsCiYjNDM7CQkJCSAgIFJFQURfT05DRSh0dHktJmd0O2xkaXNjKSAhPSBOVUxMIHx8CiYjNDM7CQkJCSAgIHRlc3RfYml0KFRUWV9IVVBQRUQsICZhbXA7dHR5LSZndDtmbGFncykpOwomIzQzOwkJCWxkc2VtX2Rvd25fcmVhZCgmYW1wO3R0eS0mZ3Q7bGRpc2Nfc2VtLCBNQVhfU0NIRURVTEVfVElNRU9VVCk7CiYjNDM7CQkJbGQgPSB0dHktJmd0O2xkaXNjOwomIzQzOwkJCWlmICghbGQpCiYjNDM7CQkJCWxkc2VtX3VwX3JlYWQoJmFtcDt0dHktJmd0O2xkaXNjX3NlbSk7CiYjNDM7CQl9CiYjNDM7CX0KIAlyZXR1cm4gbGQ7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh0dHlfbGRpc2NfcmVmX3dhaXQpOwpAQCAtNTU2LDE1ICYjNDM7NTY4LDI4IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBkaXNjKQogCS8qIFNodXRkb3duIHRoZSBvbGQgZGlzY2lwbGluZS4gKi8KIAl0dHlfbGRpc2NfY2xvc2UodHR5LCBvbGRfbGRpc2MpOwogCi0JLyogTm93IHNldCB1cCB0aGUgbmV3IGxpbmUgZGlzY2lwbGluZS4gKi8KLQl0dHktJmd0O2xkaXNjID0gbmV3X2xkaXNjOwomIzQzOwkvKiBDbGVhciB0dHktJmd0O2xkaXNjIHNvIGNvbmN1cnJlbnQgcmVhZGVycyBiYWNrIG9mZiBkdXJpbmcgdHJhbnNpdGlvbiAqLwomIzQzOwl0dHktJmd0O2xkaXNjID0gTlVMTDsKIAl0dHlfc2V0X3Rlcm1pb3NfbGRpc2ModHR5LCBkaXNjKTsKJiM0MzsJdHR5X2xkaXNjX3VubG9jayh0dHkpOwogCiYjNDM7CS8qCiYjNDM7CSAqIE9wZW4gdGhlIG5ldyBkaXNjaXBsaW5lIG91dHNpZGUgbGRpc2Nfc2VtLiBUaGUgbGRpc2MgLm9wZW4oKQomIzQzOwkgKiBtYXkgYWNxdWlyZSBsb2NrcyAoZS5nLiwgcnRubF9tdXRleCkgdGhhdCB3b3VsZCBjcmVhdGUgY2lyY3VsYXIKJiM0MzsJICogZGVwZW5kZW5jaWVzIGlmIHRha2VuIHVuZGVyIGxkaXNjX3NlbS4gdHR5X2xvY2sgaXMgc3RpbGwgaGVsZCwKJiM0MzsJICogcHJldmVudGluZyBjb25jdXJyZW50IGxkaXNjIGNoYW5nZXMgYW5kIGhhbmd1cC4KJiM0MzsJICovCiAJcmV0dmFsID0gdHR5X2xkaXNjX29wZW4odHR5LCBuZXdfbGRpc2MpOwomIzQzOwomIzQzOwl0dHlfbGRpc2NfbG9jayh0dHksIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKJiM0MzsKIAlpZiAocmV0dmFsICZsdDsgMCkgewogCQkvKiBCYWNrIHRvIHRoZSBvbGQgb25lIG9yIE5fVFRZIGlmIHdlIGNhbiYjMzk7dCAqLwogCQl0dHlfbGRpc2NfcHV0KG5ld19sZGlzYyk7CiAJCXR0eV9sZGlzY19yZXN0b3JlKHR0eSwgb2xkX2xkaXNjKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCS8qIFN1Y2Nlc3MgLSBpbnN0YWxsIG5ldyBsZGlzYyAqLwomIzQzOwkJdHR5LSZndDtsZGlzYyA9IG5ld19sZGlzYzsKIAl9CiAKIAlpZiAodHR5LSZndDtsZGlzYy0mZ3Q7b3BzLSZndDtudW0gIT0gb2xkX2xkaXNjLSZndDtvcHMtJmd0O251bSAmYW1wOyZhbXA7IHR0eS0mZ3Q7b3BzLSZndDtzZXRfbGRpc2MpIHsKQEAgLTU4NCw2ICYjNDM7NjA5LDkgQEAgaW50IHR0eV9zZXRfbGRpc2Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGRpc2MpCiBvdXQ6CiAJdHR5X2xkaXNjX3VubG9jayh0dHkpOwogCiYjNDM7CS8qIFdha2UgdXAgcmVhZGVycyB3YWl0aW5nIGZvciB0aGUgbGRpc2MgdHJhbnNpdGlvbiB0byBjb21wbGV0ZSAqLwomIzQzOwl3YWtlX3VwKCZhbXA7dHR5LSZndDtyZWFkX3dhaXQpOwomIzQzOwogCS8qCiAJICogUmVzdGFydCB0aGUgd29yayBxdWV1ZSBpbiBjYXNlIG5vIGNoYXJhY3RlcnMga2ljayBpdCBvZmYuIFNhZmUgaWYKIAkgKiBhbHJlYWR5IHJ1bm5pbmcKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBUVFkgU3Vic3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIGNvcmUgVFRZIGNvZGUsIHNwZWNpZmljYWxseSBpbiBgdHR5X2lvLmNgIGFuZCBgdHR5X2xkaXNjLmNgLiBNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgdGhpcyBpcyBmb2N1c2VkIG9uIGxpbmUgZGlzY2lwbGluZSBtYW5hZ2VtZW50LCBhbmQgaXQgc2VlbXMgbGlrZSBhIGZhaXJseSBjcml0aWNhbCBmaXguIFRoZSBjaGFuZ2VzIGFyZSB0b3VjaGluZyBgX190dHlfaGFuZ3VwYCwgYHR0eV9sZGlzY19yZWZfd2FpdGAsIGFuZCBgdHR5X3NldF9sZGlzY2Ag4oCTIHRob3NlIGFyZSBkZWZpbml0ZWx5IHRoZSBrZXkgc3ltYm9scyB0byBrZWVwIGluIG1pbmQuCgpJdCBsb29rcyBsaWtlIHRoZXkgYXJlIGFkZGluZyBhIGB3YWtlX3VwKCZhbXA7dHR5LSZndDtyZWFkX3dhaXQpYCBpbiBgX190dHlfaGFuZ3VwYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIHJpZ2h0IGF3YXkgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgY2hhbmdlcy4gYHR0eV9sZGlzY19yZWZfd2FpdGAgaXMgYmVpbmcgbW9kaWZpZWQgdG8gd2FpdCBvbiB0aGUgYHR0eS0mZ3Q7cmVhZF93YWl0YCBxdWV1ZSBpZiB0aGUgbGluZSBkaXNjaXBsaW5lIGlzICpudWxsKiBhbmQgdGhlIGhhbmd1cCBmbGFnIGlzbiYjMzk7dCBzZXQsIHdoaWNoIGNsZWFybHkgaXMgdGhlIGNydXggb2YgdGhlIHJhY2UgY29uZGl0aW9uIGZpeCwgYW5kIGB0dHlfc2V0X2xkaXNjYCBpcyBnZXR0aW5nIGEgc2lnbmlmaWNhbnQgb3ZlcmhhdWwgdG9vLiBJdCYjMzk7cyBoYW5kbGluZyB0aGUgdHJhbnNpdGlvbiBtb3JlIGNhcmVmdWxseSwgcmVsZWFzaW5nIGFuZCByZWFjcXVpcmluZyB0aGUgbG9jaywgY2FsbGluZyBgdHR5X2xkaXNjX29wZW5gICpvdXRzaWRlKiB0aGUgbG9jaywgYW5kIHRoZW4gcmUtYWNxdWlyaW5nIHRoZSBsb2NrIGFuZCBzZXR0aW5nIHRoZSBuZXcgbGluZSBkaXNjaXBsaW5lLiBBbmQsIGZpbmFsbHksIGFub3RoZXIgYHdha2VfdXBgIG9uIGB0dHktJmd0O3JlYWRfd2FpdGAuCgpGcm9tIGEgcXVpY2sgc2tpbSwgdGhpcyBwYXRjaCBzY3JlYW1zICYjMzQ7cG90ZW50aWFsIGRlYWRsb2NrL3JhY2UgY29uZGl0aW9uIGZpeCYjMzQ7LiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgcmVkIGZsYWcgdGhhdCBuZWVkcyBzZXJpb3VzIGF0dGVudGlvbiBhbmQgdGVzdGluZy4gVGhpcyBpcyB0aGUga2luZCBvZiBjaGFuZ2UgdGhhdCBjYW4gaGF2ZSB3aWRlLXJlYWNoaW5nIGVmZmVjdHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBrbm93IGhvdyB0aGlzIGVmZmVjdHMgYWxsIHRoZSBvdGhlciBkcml2ZXJzLgoKR2l2ZW4gdGhlIHNjb3BlIGFuZCB0aGUgZm9jdXMgb24gY29yZSBUVFkgZnVuY3Rpb25hbGl0eSwgSSYjMzk7bSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcyBwYXRjaC4gSXQgc2hvdWxkIGJlIHRob3JvdWdobHkgdGVzdGVkLiBJIGRvbiYjMzk7dCBzZWUgYW55IGV4cGxpY2l0IGNvbmZpZyBkZXBlbmRlbmNpZXMgKFRUWSBpcyBwcmV0dHkgbXVjaCBhbHdheXMgZW5hYmxlZCkgc28gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoZSBwYXRjaCBmaWxlcyBub3cgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHR5X3NldF9sZGlzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jPTUwMz1zdGF0aWMgdm9pZCB0dHlfbGRpc2NfcmVzdG9yZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdHR5X2xkaXNjICpvbGQpXG4tLVxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmMtNTIxLS8qKlxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmM6NTIyOiAqIHR0eV9zZXRfbGRpc2NcdFx0LVx0c2V0IGxpbmUgZGlzY2lwbGluZVxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmMtNTIzLSAqIEB0dHk6IHRoZSB0ZXJtaW5hbCB0byBzZXRcbi0tXG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYy01MzAtICovXG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYzo1MzE6aW50IHR0eV9zZXRfbGRpc2Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGRpc2MpXG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYy01MzIte1xuLS1cbmRyaXZlcnMvdHR5L3R0eV9sZGlzYy5jLTYyNC19XG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYzo2MjU6RVhQT1JUX1NZTUJPTF9HUEwodHR5X3NldF9sZGlzYyk7XG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYy02MjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1MAoJCQkJCQkJb3V0cHV0OiAxMTUKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBDb3JlIFRUWSBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIHRoZSB2ZXJ5IGhlYXJ0IG9mIGhvdyB0aGUgVFRZIHN5c3RlbSBvcGVyYXRlcy4gVGhpcyBpcyBpbnRlcmVzdGluZywgYW5kIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgdGhvdWdodDogd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gZnV6eiB0aGlzLiBUaGlzIGlzIGNvcmUgZnVuY3Rpb25hbGl0eSwgYW5kIGNoYW5nZXMgaGVyZSBoYXZlIHRoZSBwb3RlbnRpYWwgdG8gcmlwcGxlIG91dHdhcmRzIGluIHVucHJlZGljdGFibGUgd2F5cywgc28gc2V0dGluZyBgV29ydGhGdXp6aW5nPXRydWVgIGlzIGEgbm8tYnJhaW5lci4KCk5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIHNwZWNpZmljcy4gTXkgaW5pdGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nIGZvY3VzIGFyZSBnb2luZyB0byBiZSBgdHR5X3NldF9sZGlzY2AsIGB0dHlfbGRpc2NfcmVmX3dhaXRgLCBhbmQgYF9fdHR5X2hhbmd1cGAuIFRoZXNlIHNlZW0gbGlrZSB0aGUga2V5IGVudHJ5IHBvaW50cyBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGZvciB0aGVzZSBUVFkgY2hhbmdlcy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGp1bXBpbmcgb2ZmIHBvaW50LgoKQXMgZm9yIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmFibGUsIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBvbmVzIHRvIHNwZWNpZmljYWxseSB0YXJnZXQgZ2l2ZW4gdGhhdCBUVFkgaXMgaW5oZXJlbnRseSBjb3JlLiBXZSYjMzk7bGwgcHJvY2VlZCB3aXRoIHdoYXRldmVyIGJhc2UgY29uZmlndXJhdGlvbnMgd2UmIzM5O3JlIHVzaW5nLCBhbmQgbWFrZSBzdXJlIHRvIG1vbml0b3IgdGhlIGZ1enppbmcgcnVucyBmb3IgYW55dGhpbmcgdW51c3VhbCB0aGF0IHBvcHMgdXAsIHBhcnRpY3VsYXJseSByZWdhcmRpbmcgcmVzb3VyY2UgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3R0eV9zZXRfbGRpc2MmIzM0OywKICAgICYjMzQ7dHR5X2xkaXNjX3JlZl93YWl0JiMzNDssCiAgICAmIzM0O19fdHR5X2hhbmd1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFRUWSBsaW5lIGRpc2NpcGxpbmUgbWFuYWdlbWVudCwgY2hhbmdpbmcgbG9ja2luZyBhbmQgd2FpdCBiZWhhdmlvciBpbiB0dHlfc2V0X2xkaXNjLCB0dHlfbGRpc2NfcmVmX3dhaXQsIGFuZCBfX3R0eV9oYW5ndXAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0dHlfc2V0X2xkaXNjJiMzNDssCiAgICAmIzM0O3R0eV9sZGlzY19yZWZfd2FpdCYjMzQ7LAogICAgJiMzNDtfX3R0eV9oYW5ndXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUVFkgbGluZSBkaXNjaXBsaW5lIG1hbmFnZW1lbnQsIGNoYW5naW5nIGxvY2tpbmcgYW5kIHdhaXQgYmVoYXZpb3IgaW4gdHR5X3NldF9sZGlzYywgdHR5X2xkaXNjX3JlZl93YWl0LCBhbmQgX190dHlfaGFuZ3VwLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwMDoyODo0Ni45MjcxNDYwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzkyNTA3NzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInR0eV9zZXRfbGRpc2NcIixcbiAgICBcInR0eV9sZGlzY19yZWZfd2FpdFwiLFxuICAgIFwiX190dHlfaGFuZ3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUVFkgbGluZSBkaXNjaXBsaW5lIG1hbmFnZW1lbnQsIGNoYW5naW5nIGxvY2tpbmcgYW5kIHdhaXQgYmVoYXZpb3IgaW4gdHR5X3NldF9sZGlzYywgdHR5X2xkaXNjX3JlZl93YWl0LCBhbmQgX190dHlfaGFuZ3VwLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDAwOjI4OjQ2LjkyNzE1MjQ0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTIwMDIzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZTI1OGQzMjgwM2M3Y2Y4OTliZjNhYjE1NWQ2MGZlMDEyYjcxYzkxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDAwOjI4OjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9pby5jIGIvZHJpdmVycy90dHkvdHR5X2lvLmNcXG5pbmRleCA2YjI4M2ZkMDNmZjgyNC4uZTJmODJlODBmMzk3ZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy90dHkvdHR5X2lvLmNcXG4rKysgYi9kcml2ZXJzL3R0eS90dHlfaW8uY1xcbkBAIC02NDksNiArNjQ5LDEzIEBAIHN0YXRpYyB2b2lkIF9fdHR5X2hhbmd1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgZXhpdF9zZXNzaW9uKVxcbiBcXHQgKi9cXG4gXFx0c2V0X2JpdChUVFlfSFVQUEVELCBcXHUwMDI2dHR5LVxcdTAwM2VmbGFncyk7XFxuIFxcdGNsZWFyX2JpdChUVFlfSFVQUElORywgXFx1MDAyNnR0eS1cXHUwMDNlZmxhZ3MpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogV2FrZSB1cCByZWFkZXJzIGJsb2NrZWQgaW4gdHR5X2xkaXNjX3JlZl93YWl0KCkgdGhhdCBtYXkgaGF2ZVxcbitcXHQgKiBzZWVuIGxkaXNjID09IE5VTEwgYnV0IG5vdCB5ZXQgVFRZX0hVUFBFRC5cXG4rXFx0ICovXFxuK1xcdHdha2VfdXAoXFx1MDAyNnR0eS1cXHUwMDNlcmVhZF93YWl0KTtcXG4rXFxuIFxcdHR0eV91bmxvY2sodHR5KTtcXG4gXFxuIFxcdGlmIChmKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS90dHlfbGRpc2MuYyBiL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jXFxuaW5kZXggMjdmZTgyMzZmNjYyMzAuLmJkOTRhMWYxM2M0NGM3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jXFxuKysrIGIvZHJpdmVycy90dHkvdHR5X2xkaXNjLmNcXG5AQCAtMjQyLDggKzI0MiwyMCBAQCBzdHJ1Y3QgdHR5X2xkaXNjICp0dHlfbGRpc2NfcmVmX3dhaXQoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcXG4gXFxuIFxcdGxkc2VtX2Rvd25fcmVhZChcXHUwMDI2dHR5LVxcdTAwM2VsZGlzY19zZW0sIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTtcXG4gXFx0bGQgPSB0dHktXFx1MDAzZWxkaXNjO1xcbi1cXHRpZiAoIWxkKVxcbitcXHRpZiAoIWxkKSB7XFxuIFxcdFxcdGxkc2VtX3VwX3JlYWQoXFx1MDAyNnR0eS1cXHUwMDNlbGRpc2Nfc2VtKTtcXG4rXFxuK1xcdFxcdC8qIGxkaXNjIG1heSBiZSBOVUxMIGR1cmluZyBhIGRpc2NpcGxpbmUgc3dpdGNoOyB3YWl0IGFuZCByZXRyeSAqL1xcbitcXHRcXHRpZiAoIXRlc3RfYml0KFRUWV9IVVBQRUQsIFxcdTAwMjZ0dHktXFx1MDAzZWZsYWdzKSkge1xcbitcXHRcXHRcXHR3YWl0X2V2ZW50KHR0eS1cXHUwMDNlcmVhZF93YWl0LFxcbitcXHRcXHRcXHRcXHQgICBSRUFEX09OQ0UodHR5LVxcdTAwM2VsZGlzYykgIT0gTlVMTCB8fFxcbitcXHRcXHRcXHRcXHQgICB0ZXN0X2JpdChUVFlfSFVQUEVELCBcXHUwMDI2dHR5LVxcdTAwM2VmbGFncykpO1xcbitcXHRcXHRcXHRsZHNlbV9kb3duX3JlYWQoXFx1MDAyNnR0eS1cXHUwMDNlbGRpc2Nfc2VtLCBNQVhfU0NIRURVTEVfVElNRU9VVCk7XFxuK1xcdFxcdFxcdGxkID0gdHR5LVxcdTAwM2VsZGlzYztcXG4rXFx0XFx0XFx0aWYgKCFsZClcXG4rXFx0XFx0XFx0XFx0bGRzZW1fdXBfcmVhZChcXHUwMDI2dHR5LVxcdTAwM2VsZGlzY19zZW0pO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4gXFx0cmV0dXJuIGxkO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHR0eV9sZGlzY19yZWZfd2FpdCk7XFxuQEAgLTU1NiwxNSArNTY4LDI4IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBkaXNjKVxcbiBcXHQvKiBTaHV0ZG93biB0aGUgb2xkIGRpc2NpcGxpbmUuICovXFxuIFxcdHR0eV9sZGlzY19jbG9zZSh0dHksIG9sZF9sZGlzYyk7XFxuIFxcbi1cXHQvKiBOb3cgc2V0IHVwIHRoZSBuZXcgbGluZSBkaXNjaXBsaW5lLiAqL1xcbi1cXHR0dHktXFx1MDAzZWxkaXNjID0gbmV3X2xkaXNjO1xcbitcXHQvKiBDbGVhciB0dHktXFx1MDAzZWxkaXNjIHNvIGNvbmN1cnJlbnQgcmVhZGVycyBiYWNrIG9mZiBkdXJpbmcgdHJhbnNpdGlvbiAqL1xcbitcXHR0dHktXFx1MDAzZWxkaXNjID0gTlVMTDtcXG4gXFx0dHR5X3NldF90ZXJtaW9zX2xkaXNjKHR0eSwgZGlzYyk7XFxuK1xcdHR0eV9sZGlzY191bmxvY2sodHR5KTtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIE9wZW4gdGhlIG5ldyBkaXNjaXBsaW5lIG91dHNpZGUgbGRpc2Nfc2VtLiBUaGUgbGRpc2MgLm9wZW4oKVxcbitcXHQgKiBtYXkgYWNxdWlyZSBsb2NrcyAoZS5nLiwgcnRubF9tdXRleCkgdGhhdCB3b3VsZCBjcmVhdGUgY2lyY3VsYXJcXG4rXFx0ICogZGVwZW5kZW5jaWVzIGlmIHRha2VuIHVuZGVyIGxkaXNjX3NlbS4gdHR5X2xvY2sgaXMgc3RpbGwgaGVsZCxcXG4rXFx0ICogcHJldmVudGluZyBjb25jdXJyZW50IGxkaXNjIGNoYW5nZXMgYW5kIGhhbmd1cC5cXG4rXFx0ICovXFxuIFxcdHJldHZhbCA9IHR0eV9sZGlzY19vcGVuKHR0eSwgbmV3X2xkaXNjKTtcXG4rXFxuK1xcdHR0eV9sZGlzY19sb2NrKHR0eSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpO1xcbitcXG4gXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0LyogQmFjayB0byB0aGUgb2xkIG9uZSBvciBOX1RUWSBpZiB3ZSBjYW4ndCAqL1xcbiBcXHRcXHR0dHlfbGRpc2NfcHV0KG5ld19sZGlzYyk7XFxuIFxcdFxcdHR0eV9sZGlzY19yZXN0b3JlKHR0eSwgb2xkX2xkaXNjKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0LyogU3VjY2VzcyAtIGluc3RhbGwgbmV3IGxkaXNjICovXFxuK1xcdFxcdHR0eS1cXHUwMDNlbGRpc2MgPSBuZXdfbGRpc2M7XFxuIFxcdH1cXG4gXFxuIFxcdGlmICh0dHktXFx1MDAzZWxkaXNjLVxcdTAwM2VvcHMtXFx1MDAzZW51bSAhPSBvbGRfbGRpc2MtXFx1MDAzZW9wcy1cXHUwMDNlbnVtIFxcdTAwMjZcXHUwMDI2IHR0eS1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfbGRpc2MpIHtcXG5AQCAtNTg0LDYgKzYwOSw5IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBkaXNjKVxcbiBvdXQ6XFxuIFxcdHR0eV9sZGlzY191bmxvY2sodHR5KTtcXG4gXFxuK1xcdC8qIFdha2UgdXAgcmVhZGVycyB3YWl0aW5nIGZvciB0aGUgbGRpc2MgdHJhbnNpdGlvbiB0byBjb21wbGV0ZSAqL1xcbitcXHR3YWtlX3VwKFxcdTAwMjZ0dHktXFx1MDAzZXJlYWRfd2FpdCk7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBSZXN0YXJ0IHRoZSB3b3JrIHF1ZXVlIGluIGNhc2Ugbm8gY2hhcmFjdGVycyBraWNrIGl0IG9mZi4gU2FmZSBpZlxcbiBcXHQgKiBhbHJlYWR5IHJ1bm5pbmdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDA6Mjg6NDcuMzc5NzU5ODQyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTkzOTg4ODUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0dHlfc2V0X2xkaXNjXCIsXG4gICAgXCJ0dHlfbGRpc2NfcmVmX3dhaXRcIixcbiAgICBcIl9fdHR5X2hhbmd1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgVFRZIGxpbmUgZGlzY2lwbGluZSBtYW5hZ2VtZW50LCBjaGFuZ2luZyBsb2NraW5nIGFuZCB3YWl0IGJlaGF2aW9yIGluIHR0eV9zZXRfbGRpc2MsIHR0eV9sZGlzY19yZWZfd2FpdCwgYW5kIF9fdHR5X2hhbmd1cC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNlMjU4ZDMyODAzYzdjZjg5OWJmM2FiMTU1ZDYwZmUwMTJiNzFjOTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwMDoyODo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9pby5jIGIvZHJpdmVycy90dHkvdHR5X2lvLmNcbmluZGV4IDZiMjgzZmQwM2ZmODI0Li5lMmY4MmU4MGYzOTdlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9pby5jXG4rKysgYi9kcml2ZXJzL3R0eS90dHlfaW8uY1xuQEAgLTY0OSw2ICs2NDksMTMgQEAgc3RhdGljIHZvaWQgX190dHlfaGFuZ3VwKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBleGl0X3Nlc3Npb24pXG4gXHQgKi9cbiBcdHNldF9iaXQoVFRZX0hVUFBFRCwgXHUwMDI2dHR5LVx1MDAzZWZsYWdzKTtcbiBcdGNsZWFyX2JpdChUVFlfSFVQUElORywgXHUwMDI2dHR5LVx1MDAzZWZsYWdzKTtcbitcbitcdC8qXG4rXHQgKiBXYWtlIHVwIHJlYWRlcnMgYmxvY2tlZCBpbiB0dHlfbGRpc2NfcmVmX3dhaXQoKSB0aGF0IG1heSBoYXZlXG4rXHQgKiBzZWVuIGxkaXNjID09IE5VTEwgYnV0IG5vdCB5ZXQgVFRZX0hVUFBFRC5cbitcdCAqL1xuK1x0d2FrZV91cChcdTAwMjZ0dHktXHUwMDNlcmVhZF93YWl0KTtcbitcbiBcdHR0eV91bmxvY2sodHR5KTtcbiBcbiBcdGlmIChmKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jIGIvZHJpdmVycy90dHkvdHR5X2xkaXNjLmNcbmluZGV4IDI3ZmU4MjM2ZjY2MjMwLi5iZDk0YTFmMTNjNDRjNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jXG4rKysgYi9kcml2ZXJzL3R0eS90dHlfbGRpc2MuY1xuQEAgLTI0Miw4ICsyNDIsMjAgQEAgc3RydWN0IHR0eV9sZGlzYyAqdHR5X2xkaXNjX3JlZl93YWl0KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpXG4gXG4gXHRsZHNlbV9kb3duX3JlYWQoXHUwMDI2dHR5LVx1MDAzZWxkaXNjX3NlbSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpO1xuIFx0bGQgPSB0dHktXHUwMDNlbGRpc2M7XG4tXHRpZiAoIWxkKVxuK1x0aWYgKCFsZCkge1xuIFx0XHRsZHNlbV91cF9yZWFkKFx1MDAyNnR0eS1cdTAwM2VsZGlzY19zZW0pO1xuK1xuK1x0XHQvKiBsZGlzYyBtYXkgYmUgTlVMTCBkdXJpbmcgYSBkaXNjaXBsaW5lIHN3aXRjaDsgd2FpdCBhbmQgcmV0cnkgKi9cbitcdFx0aWYgKCF0ZXN0X2JpdChUVFlfSFVQUEVELCBcdTAwMjZ0dHktXHUwMDNlZmxhZ3MpKSB7XG4rXHRcdFx0d2FpdF9ldmVudCh0dHktXHUwMDNlcmVhZF93YWl0LFxuK1x0XHRcdFx0ICAgUkVBRF9PTkNFKHR0eS1cdTAwM2VsZGlzYykgIT0gTlVMTCB8fFxuK1x0XHRcdFx0ICAgdGVzdF9iaXQoVFRZX0hVUFBFRCwgXHUwMDI2dHR5LVx1MDAzZWZsYWdzKSk7XG4rXHRcdFx0bGRzZW1fZG93bl9yZWFkKFx1MDAyNnR0eS1cdTAwM2VsZGlzY19zZW0sIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTtcbitcdFx0XHRsZCA9IHR0eS1cdTAwM2VsZGlzYztcbitcdFx0XHRpZiAoIWxkKVxuK1x0XHRcdFx0bGRzZW1fdXBfcmVhZChcdTAwMjZ0dHktXHUwMDNlbGRpc2Nfc2VtKTtcbitcdFx0fVxuK1x0fVxuIFx0cmV0dXJuIGxkO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh0dHlfbGRpc2NfcmVmX3dhaXQpO1xuQEAgLTU1NiwxNSArNTY4LDI4IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBkaXNjKVxuIFx0LyogU2h1dGRvd24gdGhlIG9sZCBkaXNjaXBsaW5lLiAqL1xuIFx0dHR5X2xkaXNjX2Nsb3NlKHR0eSwgb2xkX2xkaXNjKTtcbiBcbi1cdC8qIE5vdyBzZXQgdXAgdGhlIG5ldyBsaW5lIGRpc2NpcGxpbmUuICovXG4tXHR0dHktXHUwMDNlbGRpc2MgPSBuZXdfbGRpc2M7XG4rXHQvKiBDbGVhciB0dHktXHUwMDNlbGRpc2Mgc28gY29uY3VycmVudCByZWFkZXJzIGJhY2sgb2ZmIGR1cmluZyB0cmFuc2l0aW9uICovXG4rXHR0dHktXHUwMDNlbGRpc2MgPSBOVUxMO1xuIFx0dHR5X3NldF90ZXJtaW9zX2xkaXNjKHR0eSwgZGlzYyk7XG4rXHR0dHlfbGRpc2NfdW5sb2NrKHR0eSk7XG4gXG4rXHQvKlxuK1x0ICogT3BlbiB0aGUgbmV3IGRpc2NpcGxpbmUgb3V0c2lkZSBsZGlzY19zZW0uIFRoZSBsZGlzYyAub3BlbigpXG4rXHQgKiBtYXkgYWNxdWlyZSBsb2NrcyAoZS5nLiwgcnRubF9tdXRleCkgdGhhdCB3b3VsZCBjcmVhdGUgY2lyY3VsYXJcbitcdCAqIGRlcGVuZGVuY2llcyBpZiB0YWtlbiB1bmRlciBsZGlzY19zZW0uIHR0eV9sb2NrIGlzIHN0aWxsIGhlbGQsXG4rXHQgKiBwcmV2ZW50aW5nIGNvbmN1cnJlbnQgbGRpc2MgY2hhbmdlcyBhbmQgaGFuZ3VwLlxuK1x0ICovXG4gXHRyZXR2YWwgPSB0dHlfbGRpc2Nfb3Blbih0dHksIG5ld19sZGlzYyk7XG4rXG4rXHR0dHlfbGRpc2NfbG9jayh0dHksIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTtcbitcbiBcdGlmIChyZXR2YWwgXHUwMDNjIDApIHtcbiBcdFx0LyogQmFjayB0byB0aGUgb2xkIG9uZSBvciBOX1RUWSBpZiB3ZSBjYW4ndCAqL1xuIFx0XHR0dHlfbGRpc2NfcHV0KG5ld19sZGlzYyk7XG4gXHRcdHR0eV9sZGlzY19yZXN0b3JlKHR0eSwgb2xkX2xkaXNjKTtcbitcdH0gZWxzZSB7XG4rXHRcdC8qIFN1Y2Nlc3MgLSBpbnN0YWxsIG5ldyBsZGlzYyAqL1xuK1x0XHR0dHktXHUwMDNlbGRpc2MgPSBuZXdfbGRpc2M7XG4gXHR9XG4gXG4gXHRpZiAodHR5LVx1MDAzZWxkaXNjLVx1MDAzZW9wcy1cdTAwM2VudW0gIT0gb2xkX2xkaXNjLVx1MDAzZW9wcy1cdTAwM2VudW0gXHUwMDI2XHUwMDI2IHR0eS1cdTAwM2VvcHMtXHUwMDNlc2V0X2xkaXNjKSB7XG5AQCAtNTg0LDYgKzYwOSw5IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBkaXNjKVxuIG91dDpcbiBcdHR0eV9sZGlzY191bmxvY2sodHR5KTtcbiBcbitcdC8qIFdha2UgdXAgcmVhZGVycyB3YWl0aW5nIGZvciB0aGUgbGRpc2MgdHJhbnNpdGlvbiB0byBjb21wbGV0ZSAqL1xuK1x0d2FrZV91cChcdTAwMjZ0dHktXHUwMDNlcmVhZF93YWl0KTtcbitcbiBcdC8qXG4gXHQgKiBSZXN0YXJ0IHRoZSB3b3JrIHF1ZXVlIGluIGNhc2Ugbm8gY2hhcmFjdGVycyBraWNrIGl0IG9mZi4gU2FmZSBpZlxuIFx0ICogYWxyZWFkeSBydW5uaW5nXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwMDoyODo0Ny4zNzk3NjIyNTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Nzc3MDk4MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRUWSBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIGNvcmUgVFRZIGNvZGUsIHNwZWNpZmljYWxseSBpbiBgdHR5X2lvLmNgIGFuZCBgdHR5X2xkaXNjLmNgLiBNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgdGhpcyBpcyBmb2N1c2VkIG9uIGxpbmUgZGlzY2lwbGluZSBtYW5hZ2VtZW50LCBhbmQgaXQgc2VlbXMgbGlrZSBhIGZhaXJseSBjcml0aWNhbCBmaXguIFRoZSBjaGFuZ2VzIGFyZSB0b3VjaGluZyBgX190dHlfaGFuZ3VwYCwgYHR0eV9sZGlzY19yZWZfd2FpdGAsIGFuZCBgdHR5X3NldF9sZGlzY2Ag4oCTIHRob3NlIGFyZSBkZWZpbml0ZWx5IHRoZSBrZXkgc3ltYm9scyB0byBrZWVwIGluIG1pbmQuXG5cbkl0IGxvb2tzIGxpa2UgdGhleSBhcmUgYWRkaW5nIGEgYHdha2VfdXAoXHUwMDI2dHR5LVx1MDAzZXJlYWRfd2FpdClgIGluIGBfX3R0eV9oYW5ndXBgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCByaWdodCBhd2F5IEknbSB0aGlua2luZyBhYm91dCBob3cgdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgY2hhbmdlcy4gYHR0eV9sZGlzY19yZWZfd2FpdGAgaXMgYmVpbmcgbW9kaWZpZWQgdG8gd2FpdCBvbiB0aGUgYHR0eS1cdTAwM2VyZWFkX3dhaXRgIHF1ZXVlIGlmIHRoZSBsaW5lIGRpc2NpcGxpbmUgaXMgKm51bGwqIGFuZCB0aGUgaGFuZ3VwIGZsYWcgaXNuJ3Qgc2V0LCB3aGljaCBjbGVhcmx5IGlzIHRoZSBjcnV4IG9mIHRoZSByYWNlIGNvbmRpdGlvbiBmaXgsIGFuZCBgdHR5X3NldF9sZGlzY2AgaXMgZ2V0dGluZyBhIHNpZ25pZmljYW50IG92ZXJoYXVsIHRvby4gSXQncyBoYW5kbGluZyB0aGUgdHJhbnNpdGlvbiBtb3JlIGNhcmVmdWxseSwgcmVsZWFzaW5nIGFuZCByZWFjcXVpcmluZyB0aGUgbG9jaywgY2FsbGluZyBgdHR5X2xkaXNjX29wZW5gICpvdXRzaWRlKiB0aGUgbG9jaywgYW5kIHRoZW4gcmUtYWNxdWlyaW5nIHRoZSBsb2NrIGFuZCBzZXR0aW5nIHRoZSBuZXcgbGluZSBkaXNjaXBsaW5lLiBBbmQsIGZpbmFsbHksIGFub3RoZXIgYHdha2VfdXBgIG9uIGB0dHktXHUwMDNlcmVhZF93YWl0YC5cblxuRnJvbSBhIHF1aWNrIHNraW0sIHRoaXMgcGF0Y2ggc2NyZWFtcyBcInBvdGVudGlhbCBkZWFkbG9jay9yYWNlIGNvbmRpdGlvbiBmaXhcIi4gVGhhdCdzIGEgZGVmaW5pdGUgcmVkIGZsYWcgdGhhdCBuZWVkcyBzZXJpb3VzIGF0dGVudGlvbiBhbmQgdGVzdGluZy4gVGhpcyBpcyB0aGUga2luZCBvZiBjaGFuZ2UgdGhhdCBjYW4gaGF2ZSB3aWRlLXJlYWNoaW5nIGVmZmVjdHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBrbm93IGhvdyB0aGlzIGVmZmVjdHMgYWxsIHRoZSBvdGhlciBkcml2ZXJzLlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIHRoZSBmb2N1cyBvbiBjb3JlIFRUWSBmdW5jdGlvbmFsaXR5LCBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBmdXp6aW5nIHRoaXMgcGF0Y2guIEl0IHNob3VsZCBiZSB0aG9yb3VnaGx5IHRlc3RlZC4gSSBkb24ndCBzZWUgYW55IGV4cGxpY2l0IGNvbmZpZyBkZXBlbmRlbmNpZXMgKFRUWSBpcyBwcmV0dHkgbXVjaCBhbHdheXMgZW5hYmxlZCkgc28gSSdsbCBkb3VibGUgY2hlY2sgdGhlIHBhdGNoIGZpbGVzIG5vdyB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDA6Mjg6NTMuMTU2ODYyMzY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjkzMDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInR0eV9zZXRfbGRpc2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy90dHkvdHR5X2xkaXNjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy90dHkvdHR5X2xkaXNjLmM9NTAzPXN0YXRpYyB2b2lkIHR0eV9sZGlzY19yZXN0b3JlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB0dHlfbGRpc2MgKm9sZClcXG4tLVxcbmRyaXZlcnMvdHR5L3R0eV9sZGlzYy5jLTUyMS0vKipcXG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYzo1MjI6ICogdHR5X3NldF9sZGlzY1xcdFxcdC1cXHRzZXQgbGluZSBkaXNjaXBsaW5lXFxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmMtNTIzLSAqIEB0dHk6IHRoZSB0ZXJtaW5hbCB0byBzZXRcXG4tLVxcbmRyaXZlcnMvdHR5L3R0eV9sZGlzYy5jLTUzMC0gKi9cXG5kcml2ZXJzL3R0eS90dHlfbGRpc2MuYzo1MzE6aW50IHR0eV9zZXRfbGRpc2Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGRpc2MpXFxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmMtNTMyLXtcXG4tLVxcbmRyaXZlcnMvdHR5L3R0eV9sZGlzYy5jLTYyNC19XFxuZHJpdmVycy90dHkvdHR5X2xkaXNjLmM6NjI1OkVYUE9SVF9TWU1CT0xfR1BMKHR0eV9zZXRfbGRpc2MpO1xcbmRyaXZlcnMvdHR5L3R0eV9sZGlzYy5jLTYyNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDA6Mjg6NTMuMjEzNTU5OTU5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNjA1Nzg0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBDb3JlIFRUWSBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIHRoZSB2ZXJ5IGhlYXJ0IG9mIGhvdyB0aGUgVFRZIHN5c3RlbSBvcGVyYXRlcy4gVGhpcyBpcyBpbnRlcmVzdGluZywgYW5kIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgdGhvdWdodDogd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gZnV6eiB0aGlzLiBUaGlzIGlzIGNvcmUgZnVuY3Rpb25hbGl0eSwgYW5kIGNoYW5nZXMgaGVyZSBoYXZlIHRoZSBwb3RlbnRpYWwgdG8gcmlwcGxlIG91dHdhcmRzIGluIHVucHJlZGljdGFibGUgd2F5cywgc28gc2V0dGluZyBgV29ydGhGdXp6aW5nPXRydWVgIGlzIGEgbm8tYnJhaW5lci5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byBzcGVjaWZpY3MuIE15IGluaXRpYWwgdGFyZ2V0cyBmb3IgZnV6emluZyBmb2N1cyBhcmUgZ29pbmcgdG8gYmUgYHR0eV9zZXRfbGRpc2NgLCBgdHR5X2xkaXNjX3JlZl93YWl0YCwgYW5kIGBfX3R0eV9oYW5ndXBgLiBUaGVzZSBzZWVtIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcyBmb3IgdGhlc2UgVFRZIGNoYW5nZXMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBqdW1waW5nIG9mZiBwb2ludC5cblxuQXMgZm9yIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmFibGUsIEkgZG9uJ3Qgc2VlIGFueSBvYnZpb3VzIG9uZXMgdG8gc3BlY2lmaWNhbGx5IHRhcmdldCBnaXZlbiB0aGF0IFRUWSBpcyBpbmhlcmVudGx5IGNvcmUuIFdlJ2xsIHByb2NlZWQgd2l0aCB3aGF0ZXZlciBiYXNlIGNvbmZpZ3VyYXRpb25zIHdlJ3JlIHVzaW5nLCBhbmQgbWFrZSBzdXJlIHRvIG1vbml0b3IgdGhlIGZ1enppbmcgcnVucyBmb3IgYW55dGhpbmcgdW51c3VhbCB0aGF0IHBvcHMgdXAsIHBhcnRpY3VsYXJseSByZWdhcmRpbmcgcmVzb3VyY2UgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTAsIk91dHB1dFRva2VucyI6MTE1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDA6Mjg6NTcuMzE5NjIwNjg1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTc0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInR0eV9zZXRfbGRpc2NcIixcbiAgICBcInR0eV9sZGlzY19yZWZfd2FpdFwiLFxuICAgIFwiX190dHlfaGFuZ3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUVFkgbGluZSBkaXNjaXBsaW5lIG1hbmFnZW1lbnQsIGNoYW5naW5nIGxvY2tpbmcgYW5kIHdhaXQgYmVoYXZpb3IgaW4gdHR5X3NldF9sZGlzYywgdHR5X2xkaXNjX3JlZl93YWl0LCBhbmQgX190dHlfaGFuZ3VwLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHR5X3NldF9sZGlzY1wiLFxuICAgIFwidHR5X2xkaXNjX3JlZl93YWl0XCIsXG4gICAgXCJfX3R0eV9oYW5ndXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFRUWSBsaW5lIGRpc2NpcGxpbmUgbWFuYWdlbWVudCwgY2hhbmdpbmcgbG9ja2luZyBhbmQgd2FpdCBiZWhhdmlvciBpbiB0dHlfc2V0X2xkaXNjLCB0dHlfbGRpc2NfcmVmX3dhaXQsIGFuZCBfX3R0eV9oYW5ndXAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqf6z8[1] Phase: Succeeded StartedAt: 2026-07-22 00:29:08 +0000 UTC FinishedAt: 2026-07-22 00:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 00:29:08 +0000 UTC FinishedAt: 2026-07-22 00:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2] Phase: Succeeded StartedAt: 2026-07-22 00:29:08 +0000 UTC FinishedAt: 2026-07-22 05:24:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 00:29:08 +0000 UTC FinishedAt: 2026-07-22 05:24:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 00:29:08 +0000 UTC FinishedAt: 2026-07-22 00:29:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 00:29:08 +0000 UTC FinishedAt: 2026-07-22 00:29:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowqf6z8/series-workflowqf6z8-convert-artifact-1480290136/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 00:29:18 +0000 UTC FinishedAt: 2026-07-22 01:23:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 00:29:18 +0000 UTC FinishedAt: 2026-07-22 01:23:51 +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:*8f58eea3-908d-4ad2-a037-2701939ae589,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-workflowqf6z8/series-workflowqf6z8-convert-artifact-1480290136/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": "b09882d8-157b-4439-b848-b564f95630fa", "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-workflowqf6z8/series-workflowqf6z8-build-action-405276558/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 00:29:18 +0000 UTC FinishedAt: 2026-07-22 01:23:41 +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:*8f58eea3-908d-4ad2-a037-2701939ae589,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-workflowqf6z8/series-workflowqf6z8-convert-artifact-1480290136/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": "b09882d8-157b-4439-b848-b564f95630fa", "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-workflowqf6z8/series-workflowqf6z8-build-action-405276558/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 01:23:51 +0000 UTC FinishedAt: 2026-07-22 01:23:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 01:23:51 +0000 UTC FinishedAt: 2026-07-22 01:23:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 01:23:51 +0000 UTC FinishedAt: 2026-07-22 01:24:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 01:23:51 +0000 UTC FinishedAt: 2026-07-22 01:23:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowqf6z8/series-workflowqf6z8-convert-artifact-1239071423/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 01:24:01 +0000 UTC FinishedAt: 2026-07-22 01:27:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 01:24:01 +0000 UTC FinishedAt: 2026-07-22 01:27:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b09882d8-157b-4439-b848-b564f95630fa,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-workflowqf6z8/series-workflowqf6z8-build-action-405276558/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-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 01:27:57 +0000 UTC FinishedAt: 2026-07-22 01:27:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 01:27:57 +0000 UTC FinishedAt: 2026-07-22 01:27:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 01:27:57 +0000 UTC FinishedAt: 2026-07-22 02:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 01:27:57 +0000 UTC FinishedAt: 2026-07-22 02:18:19 +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:*8f58eea3-908d-4ad2-a037-2701939ae589,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-workflowqf6z8/series-workflowqf6z8-convert-artifact-1239071423/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": "abe7ae27-11ac-4443-8f9d-e3674e8b9417", "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-workflowqf6z8/series-workflowqf6z8-build-action-2094055123/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 01:27:57 +0000 UTC FinishedAt: 2026-07-22 02:18:09 +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:*8f58eea3-908d-4ad2-a037-2701939ae589,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-workflowqf6z8/series-workflowqf6z8-convert-artifact-1239071423/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": "abe7ae27-11ac-4443-8f9d-e3674e8b9417", "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-workflowqf6z8/series-workflowqf6z8-build-action-2094055123/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 02:18:19 +0000 UTC FinishedAt: 2026-07-22 02:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 02:18:19 +0000 UTC FinishedAt: 2026-07-22 02:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 02:18:19 +0000 UTC FinishedAt: 2026-07-22 02:20:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 02:18:19 +0000 UTC FinishedAt: 2026-07-22 02:20:18 +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:*abe7ae27-11ac-4443-8f9d-e3674e8b9417,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-workflowqf6z8/series-workflowqf6z8-build-action-2094055123/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-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 02:20:27 +0000 UTC FinishedAt: 2026-07-22 05:24:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 02:20:27 +0000 UTC FinishedAt: 2026-07-22 05:24:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"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:*b09882d8-157b-4439-b848-b564f95630fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*abe7ae27-11ac-4443-8f9d-e3674e8b9417,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-workflowqf6z8/series-workflowqf6z8-build-action-405276558/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-workflowqf6z8/series-workflowqf6z8-build-action-2094055123/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 02:20:27 +0000 UTC FinishedAt: 2026-07-22 02:21:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 02:20:27 +0000 UTC FinishedAt: 2026-07-22 02:20:44 +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":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"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-workflowqf6z8/series-workflowqf6z8-convert-artifact-330312792/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 02:20:27 +0000 UTC FinishedAt: 2026-07-22 02:20:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 02:20:27 +0000 UTC FinishedAt: 2026-07-22 02:20:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 02:20:27 +0000 UTC FinishedAt: 2026-07-22 02:20:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 02:21:06 +0000 UTC FinishedAt: 2026-07-22 05:24:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqf6z8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tty_set_ldisc","tty_ldisc_ref_wait","__tty_hangup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4932951a19a5f1ec93200260b85e1a4c080ff77","config_name":"upstream-apparmor-kasan.config","series_id":"99aaeee6-57cf-4b65-ada3-29a1dcc86f7f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 02:21:06 +0000 UTC FinishedAt: 2026-07-22 05:24:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b09882d8-157b-4439-b848-b564f95630fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*abe7ae27-11ac-4443-8f9d-e3674e8b9417,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-workflowqf6z8/series-workflowqf6z8-build-action-405276558/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-workflowqf6z8/series-workflowqf6z8-build-action-2094055123/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-workflowqf6z8/series-workflowqf6z8-convert-artifact-330312792/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,}