Name: series-workflow968r9 Phase: Succeeded StartedAt: 2026-08-11 02:27:10 +0000 UTC FinishedAt: 2026-08-11 06:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[0] Phase: Succeeded StartedAt: 2026-08-11 02:27:10 +0000 UTC FinishedAt: 2026-08-11 02:45:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[0].run-triage Phase: Succeeded StartedAt: 2026-08-11 02:27:10 +0000 UTC FinishedAt: 2026-08-11 02:45:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "202fef9bbbf5784487eec27581389c6fb97c350d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "202fef9bbbf5784487eec27581389c6fb97c350d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "65d89785-9595-47a8-bb20-6eca1b324d6f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "gtp_dellink", "gtp_genl_new_pdp", "gtp_genl_del_pdp" ], "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+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cF9kZWxsaW5rJiMzNDssCiAgICAmIzM0O2d0cF9nZW5sX25ld19wZHAmIzM0OywKICAgICYjMzQ7Z3RwX2dlbmxfZGVsX3BkcCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBtdXRleCAoYGd0cF9wZHBfbG9ja2ApIHRvIHByb3RlY3QgdGhlIFBEUCBjb250ZXh0IGxpc3RzL2hhc2ggdGFibGVzIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGluIGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuIFRoaXMgaXMgYSBsb2NraW5nIGZpeCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucywgd2hpY2ggY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSBvciBsaXN0IGNvcnJ1cHRpb24uIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIHdoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbXV0ZXggYGd0cF9wZHBfbG9ja2AgdG8gdGhlIEdUUCBuZXR3b3JrIGRyaXZlciB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgUERQIGNvbnRleHQgYWRkaXRpb24sIGRlbGV0aW9uLCBhbmQgbGluayBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmZiMzMxN2FlYmU4M2E1NjUxNmJjMDljYWI4MjBkY2QwNjExZmRiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDAyOjQzOjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcbmluZGV4IDlhMTJjYzUzZGEwMDIuLjhlZTUxNmRlYmVlZGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC0xMiw2ICYjNDM7MTIsNyBAQFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCYjMzQ7OiBcJiMzNDsgZm10XG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yY3VsaXN0LmhcdTAwM2VcbkBAIC0xMDgsNiAmIzQzOzEwOSw3IEBAIHN0cnVjdCBndHBfbmV0IHtcbiB9O1xuIFxuIHN0YXRpYyB1MzIgZ3RwX2hfaW5pdHZhbDtcbiYjNDM7c3RhdGljIERFRklORV9NVVRFWChndHBfcGRwX2xvY2spO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5O1xuIFxuQEAgLTE1NTUsOSAmIzQzOzE1NTcsMTEgQEAgc3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbiBcdHN0cnVjdCBwZHBfY3R4ICpwY3R4O1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZ3RwLVx1MDAzZWhhc2hfc2l6ZTsgaSYjNDM7JiM0MzspXG4gXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGN0eCwgbmV4dCwgXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2ldLCBobGlzdF90aWQpXG4gXHRcdFx0cGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFxuIFx0bGlzdF9kZWwoXHUwMDI2Z3RwLVx1MDAzZWxpc3QpO1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTtcbkBAIC0xODMzLDYgJiM0MzsxODM3LDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHBfcGRwX2FkZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc29jayAqc2ssXG4gXHRfX2JlMzIgbXNfYWRkcjtcbiBcdGludCBmYW1pbHk7XG4gXG4mIzQzO1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4mIzQzO1xuIFx0dmVyc2lvbiA9IG5sYV9nZXRfdTMyKGluZm8tXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSk7XG4gXG4gXHRmYW1pbHkgPSBubGFfZ2V0X3U4X2RlZmF1bHQoaW5mby1cdTAwM2VhdHRyc1tHVFBBX0ZBTUlMWV0sIEFGX0lORVQpO1xuQEAgLTIxMzQsNiAmIzQzOzIxNDAsOCBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdGlmICghaW5mby1cdTAwM2VhdHRyc1tHVFBBX1ZFUlNJT05dKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4mIzQzO1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFxuIFx0cGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItXHUwMDNlc2spLCBpbmZvLVx1MDAzZWF0dHJzKTtcbkBAIC0yMTU0LDYgJiM0MzsyMTYyLDcgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXG4gb3V0X3VubG9jazpcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cF9kZWxsaW5rJiMzNDssCiAgICAmIzM0O2d0cF9nZW5sX25ld19wZHAmIzM0OywKICAgICYjMzQ7Z3RwX2dlbmxfZGVsX3BkcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbXV0ZXggYGd0cF9wZHBfbG9ja2AgdG8gdGhlIEdUUCBuZXR3b3JrIGRyaXZlciB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgUERQIGNvbnRleHQgYWRkaXRpb24sIGRlbGV0aW9uLCBhbmQgbGluayBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmZiMzMxN2FlYmU4M2E1NjUxNmJjMDljYWI4MjBkY2QwNjExZmRiZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDAyOjQzOjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZ3RwLmMgYi9kcml2ZXJzL25ldC9ndHAuYwppbmRleCA5YTEyY2M1M2RhMDAyLi44ZWU1MTZkZWJlZWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ndHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ndHAuYwpAQCAtMTIsNiAmIzQzOzEyLDcgQEAKICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgJiMzNDs6ICYjMzQ7IGZtdAogCiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L211dGV4LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2tidWZmLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdWRwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcmN1bGlzdC5oJmd0OwpAQCAtMTA4LDYgJiM0MzsxMDksNyBAQCBzdHJ1Y3QgZ3RwX25ldCB7CiB9OwogCiBzdGF0aWMgdTMyIGd0cF9oX2luaXR2YWw7CiYjNDM7c3RhdGljIERFRklORV9NVVRFWChndHBfcGRwX2xvY2spOwogCiBzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGd0cF9nZW5sX2ZhbWlseTsKIApAQCAtMTU1NSw5ICYjNDM7MTU1NywxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQogCXN0cnVjdCBwZHBfY3R4ICpwY3R4OwogCWludCBpOwogCiYjNDM7CW11dGV4X2xvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCWZvciAoaSA9IDA7IGkgJmx0OyBndHAtJmd0O2hhc2hfc2l6ZTsgaSYjNDM7JiM0MzspCiAJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGN0eCwgbmV4dCwgJmFtcDtndHAtJmd0O3RpZF9oYXNoW2ldLCBobGlzdF90aWQpCiAJCQlwZHBfY29udGV4dF9kZWxldGUocGN0eCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiAKIAlsaXN0X2RlbCgmYW1wO2d0cC0mZ3Q7bGlzdCk7CiAJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTsKQEAgLTE4MzMsNiAmIzQzOzE4MzcsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmd0cF9wZHBfYWRkKHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBzb2NrICpzaywKIAlfX2JlMzIgbXNfYWRkcjsKIAlpbnQgZmFtaWx5OwogCiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO2d0cF9wZHBfbG9jayk7CiYjNDM7CiAJdmVyc2lvbiA9IG5sYV9nZXRfdTMyKGluZm8tJmd0O2F0dHJzW0dUUEFfVkVSU0lPTl0pOwogCiAJZmFtaWx5ID0gbmxhX2dldF91OF9kZWZhdWx0KGluZm8tJmd0O2F0dHJzW0dUUEFfRkFNSUxZXSwgQUZfSU5FVCk7CkBAIC0yMTM0LDYgJiM0MzsyMTQwLDggQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJaWYgKCFpbmZvLSZndDthdHRyc1tHVFBBX1ZFUlNJT05dKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKJiM0MzsKIAlyY3VfcmVhZF9sb2NrKCk7CiAKIAlwY3R4ID0gZ3RwX2ZpbmRfcGRwKHNvY2tfbmV0KHNrYi0mZ3Q7c2spLCBpbmZvLSZndDthdHRycyk7CkBAIC0yMTU0LDYgJiM0MzsyMTYyLDcgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAKIG91dF91bmxvY2s6CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiAJcmV0dXJuIGVycjsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1RQIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2d0cC5jYC4gSXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHN5bmNocm9uaXphdGlvbiBpbiB0aGUgR1RQIGRyaXZlciwgd2hpY2ggaXMgZ29vZC4gVGhleSYjMzk7dmUgYWRkZWQgYSBtdXRleCwgYGd0cF9wZHBfbG9ja2AsIGFuZCB0aGV5JiMzOTtyZSB1c2luZyBpdCBpbiBgZ3RwX2RlbGxpbmtgLCBgZ3RwX3BkcF9hZGRgLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgLiBUaGF0JiMzOTtzIHNtYXJ0OyB3ZSYjMzk7cmUgcHJvdGVjdGluZyBhY2Nlc3MgdG8gc2hhcmVkIFBEUCBjb250ZXh0IGRhdGEgc3RydWN0dXJlcywgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdpdGhpbiB0aGUgR1RQIGRyaXZlci4gR2l2ZW4gdGhhdCBHVFAgaXMgYSBuZXR3b3JrIGRyaXZlciwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSB2aWEgbmV0bGluayBhbmQgc29ja2V0IG9wZXJhdGlvbnMsIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gYWRkcmVzcy4gR290dGEgZW5zdXJlIHdlIGFyZSBwcm9wZXJseSBoYW5kbGluZyBjb25jdXJyZW50IGFjY2VzcyB0byB0aGlzIGRyaXZlci4gTWFrZXMgc2Vuc2UgdGhleeKAmWQgYmUgdXNpbmcgYSBtdXRleCBmb3IgdGhlc2Ugb3BlcmF0aW9ucy4gTm93LCBsZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgR1RQIHRvIHZlcmlmeSB0aGUgY29uZmlnIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGNvcnJlY3RseSBoYW5kbGVkIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCB3aWxsIGZ1bmN0aW9uIGFzIGFudGljaXBhdGVkIGdpdmVuIHRoYXQgdGhpcyBpcyBhIGNvcmUgcGllY2Ugb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEdUUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3MS1cbmRyaXZlcnMvbmV0L0tjb25maWc6MjcyOmNvbmZpZyBHVFBcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVx0dHJpc3RhdGUgXCYjMzQ7R1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogR1RQIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgdGhlIHN5c3RlbSYjMzk7cyByZXBvcnRpbmcgdGhhdCB0aGUgYWN0aXZlIGNvbmZpZ3VyYXRpb24gaXMgYEdUUGAuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMuIEdUUCDigJMgdGhhdCB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgZGF0YSBwbGFuZSBwcm90b2NvbCwgbGlrZWx5IGluIGEgbW9iaWxlIG5ldHdvcmsgY29udGV4dCwgcG9zc2libHkgcmVsYXRlZCB0byB0dW5uZWxpbmcgb3IgY29udHJvbCBwbGFuZSBzaWduYWxpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuIE15IGV4cGVydGlzZSBpbW1lZGlhdGVseSBraWNrcyBpbiDigJMgd2hhdCBzcGVjaWZpYyB2ZXJzaW9uLCB3aGF0IGlzIGl0IGRlc2lnbmVkIHRvIGRvLCBhbmQgd2hlcmUgaXMgaXQgYXBwbGllZD8KCk5leHQsIG15IG1pbmQgYXV0b21hdGljYWxseSBnb2VzIHRvIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlIG9yIGludGVyZGVwZW5kZW5jZS4gQXJlIHRoZXJlIG90aGVyIHN5c3RlbXMgb3IgY29tcG9uZW50cyB0aGF0IHJlbHkgb24gdGhpcyBHVFAgY29uZmlndXJhdGlvbj8gQXJlIHRoZXJlIGNyaXRpY2FsIGludGVyZmFjZXMgb3IgbW9kdWxlcyB0aGF0IGl0IGludGVyYWN0cyB3aXRoPyBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBwYXJhbW91bnQgdG8gYXNzZXNzaW5nIGl0cyBzdGFiaWxpdHksIHBlcmZvcm1hbmNlLCBhbmQgb3ZlcmFsbCBpbXBhY3Qgb24gdGhlIG5ldHdvcmsgb3Igc3lzdGVtLiBJIGhhdmUgdG8ga25vdyB0aGUgd2lkZXIgaW1wYWN0LiBUaGUgcXVlc3Rpb24gaXNuJiMzOTt0IHdoZXRoZXIgdGhlcmUgKmFyZSogZGVwZW5kZW5jaWVzLCBidXQgd2hhdCAqYXJlKiB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgbmVlZCBteSBpbW1lZGlhdGUgYXR0ZW50aW9uPyBUaGlzIGZvcm1zIHRoZSBiYXNpcyBvZiBteSBpbnZlc3RpZ2F0aW9uIGFuZCB0cm91Ymxlc2hvb3RpbmcgcHJvY2Vzcy4gSSBuZWVkIHRvIGJlIG1ldGhvZGljYWwgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBiYXJldWRwLlxuIDI3MTpcdFxuIDI3MjpcdGNvbmZpZyBHVFBcbiAyNzM6XHRcdHRyaXN0YXRlIFwmIzM0O0dQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSlcJiMzNDtcbiAyNzQ6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDI3NTpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gMjc2Olx0XHRoZWxwXG4gMjc3Olx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgZ3RwIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcbiAyNzg6XHRcdCAgdGhlIEdQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSkuIFRoaXMgdHVubmVsaW5nIHByb3RvY29sXG4gMjc5Olx0XHQgIGlzIHVzZWQgdG8gcHJldmVudCBzdWJzY3JpYmVycyBmcm9tIGFjY2Vzc2luZyBtb2JpbGUgY2FycmllciBjb3JlXG4gMjgwOlx0XHQgIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGEgdXNlcnNwYWNlIHNvZnR3YXJlIHRoYXRcbiAyODE6XHRcdCAgaW1wbGVtZW50cyB0aGUgc2lnbmFsaW5nIHByb3RvY29sIChHVFAtQykgdG8gdXBkYXRlIGl0cyBQRFAgY29udGV4dFxuIDI4MjpcdFx0ICBiYXNlLCBzdWNoIGFzIE9wZW5HR1NOIFx1MDAzY2h0dHA6Ly9naXQub3Ntb2NvbS5vcmcvb3Blbmdnc24vKS4gVGhpc1xuIDI4MzpcdFx0ICB0dW5uZWxpbmcgcHJvdG9jb2wgaXMgaW1wbGVtZW50ZWQgYWNjb3JkaW5nIHRvIHRoZSBHU00gVFMgMDkuNjAgYW5kXG4gMjg0Olx0XHQgIDNHUFAgVFMgMjkuMDYwIHN0YW5kYXJkcy5cbiAyODU6XHRcbiAyODY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlcnMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyODc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgZ3RwLlxuIDI4ODpcdFxuIDI4OTpcdGNvbmZpZyBQRkNQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdUUCBEYXRhcGF0aCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbXV0ZXgsIGBndHBfcGRwX2xvY2tgLCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZ3RwLmNgIGZpbGUuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgcHJpbWFyaWx5IGFpbWVkIGF0IGxvY2tpbmcgZG93biB0aGUgR1RQIGRhdGFwYXRoIHRvIHByZXZlbnQgdGhvc2UgcGVza3kgcmFjZSBjb25kaXRpb25zLiBUaGUgZHJpdmVyLCBhcyBJIHJlY2FsbCwgaGFuZGxlcyB0aGUgR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YSBwYXRoLCB3aGljaCBtYWtlcyBzZW5zZS4gVGhlIGRlcGVuZGVuY3kgb24gSU5FVCBpcyBleHBlY3RlZC4gV2Uga25vdyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBpcyBgR1RQYC4KClRoZSBjb3JlIG9mIHRoaXMgbW9kaWZpY2F0aW9uIGludm9sdmVzIHRocmVlIGtleSBmdW5jdGlvbnM6IGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuIE5vdywgYGd0cF9kZWxsaW5rYCBpcyBhIG5ldF9kZXZpY2Vfb3BzIGNhbGxiYWNrLCB3aGljaCBpcyB3aGF0IEnigJlkIGV4cGVjdC4gYGd0cF9wZHBfYWRkYCBzZWVtcyB0byBiZSBjYWxsZWQgZnJvbSBgZ3RwX2dlbmxfbmV3X3BkcGAsIHdoaWNoIGluIHR1cm4gaXMgYSBnZW5sIGNhbGxiYWNrLiBBbmQgZmluYWxseSwgYGd0cF9nZW5sX2RlbF9wZHBgIGlzICphbHNvKiBhIGdlbmwgY2FsbGJhY2suCgpMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSBzb21ldGhpbmcgYWJvdXQgdGhhdCBgZ3RwX3BkcF9hZGRgIGZ1bmN0aW9uLiBJcyBpdCBzdGF0aWM/IFllcywgaXQgaXMuIFRoZSBjYWxsZXIgaXMgYGd0cF9nZW5sX25ld19wZHBgLCB0aGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93IGZvciBgZ3RwX2dlbmxfZGVsX3BkcGAsIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGF0IGFzIHdlbGwuIEFsc28gc3RhdGljLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2jigKYgZ2VubCBjYWxsYmFja3MgYXJlICp1c3VhbGx5KiBzdGF0aWMsIGJ1dCB0aGV5JiMzOTtyZSAqYWxzbyogdGhlIGVudHJ5IHBvaW50cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG9uIHRoZSByaWdodCB0cmFjayBoZXJlLCBzbyBsZXQgbWUgZmluZCB0aGUgYWN0dWFsIGVudHJ5IHBvaW50cyBvZiB0aGlzIGNvZGUuIExldCBtZSBjaGVjayB0aGUgc291cmNlIGNvZGUgaW4gYGRyaXZlcnMvbmV0L2d0cC5jYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cF9wZHBfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmM9MTgxNT1zdGF0aWMgYm9vbCBpcHY2X3BkcF9maWxsKHN0cnVjdCBwZHBfY3R4ICpwY3R4LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2d0cC5jLTE4MjctXG5kcml2ZXJzL25ldC9ndHAuYzoxODI4OnN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwX3BkcF9hZGQoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNvY2sgKnNrLFxuZHJpdmVycy9uZXQvZ3RwLmMtMTgyOS1cdFx0XHRcdCAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmM9MjAxMj1zdGF0aWMgaW50IGd0cF9nZW5sX25ld19wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy0yMDYxLVxuZHJpdmVycy9uZXQvZ3RwLmM6MjA2MjpcdHBjdHggPSBndHBfcGRwX2FkZChndHAsIHNrLCBpbmZvKTtcbmRyaXZlcnMvbmV0L2d0cC5jLTIwNjMtXHRpZiAoSVNfRVJSKHBjdHgpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cF9nZW5sX2RlbF9wZHAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYz0yMTIwPXN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwX2ZpbmRfcGRwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhW10pXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMjEzNC1cbmRyaXZlcnMvbmV0L2d0cC5jOjIxMzU6c3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5kcml2ZXJzL25ldC9ndHAuYy0yMTM2LXtcbi0tXG5kcml2ZXJzL25ldC9ndHAuYz0yNDQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgZ3RwX2dlbmxfb3BzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMjQ1MS1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxuZHJpdmVycy9uZXQvZ3RwLmM6MjQ1MjpcdFx0LmRvaXQgPSBndHBfZ2VubF9kZWxfcGRwLFxuZHJpdmVycy9uZXQvZ3RwLmMtMjQ1My1cdFx0LmZsYWdzID0gR0VOTF9BRE1JTl9QRVJNLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z3RwX2RlbGxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYz0xNDcxPXN0YXRpYyBpbnQgZ3RwX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy0xNTUyLVxuZHJpdmVycy9uZXQvZ3RwLmM6MTU1MzpzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvZ3RwLmMtMTU1NC17XG4tLVxuZHJpdmVycy9uZXQvZ3RwLmM9MTYxND1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgZ3RwX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMTYyMS1cdC5uZXdsaW5rXHQ9IGd0cF9uZXdsaW5rLFxuZHJpdmVycy9uZXQvZ3RwLmM6MTYyMjpcdC5kZWxsaW5rXHQ9IGd0cF9kZWxsaW5rLFxuZHJpdmVycy9uZXQvZ3RwLmMtMTYyMy1cdC5nZXRfc2l6ZVx0PSBndHBfZ2V0X3NpemUsXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmM9MjQ5Mz1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGd0cF9uZXRfZXhpdF9ydG5sKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy0yNDk5LVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGd0cCwgZ3RwX25leHQsIFx1MDAyNmduLVx1MDAzZWd0cF9kZXZfbGlzdCwgbGlzdClcbmRyaXZlcnMvbmV0L2d0cC5jOjI1MDA6XHRcdGd0cF9kZWxsaW5rKGd0cC1cdTAwM2VkZXYsIGRldl90b19raWxsKTtcbmRyaXZlcnMvbmV0L2d0cC5jLTI1MDEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzMxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1RQIEZ1bmN0aW9ucyBmb3IgU3ltYm9saWMgUmVwcmVzZW50YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCB3YXMgdG8gcXVlc3Rpb24gd2hldGhlciB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgYGd0cF9kZWxsaW5rYCwgYGd0cF9nZW5sX25ld19wZHBgLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgLCB3YXJyYW50ZWQgaW5jbHVzaW9uIGluIGBGb2N1c1N5bWJvbHNgLiBUaGUgcHJvbXB0JiMzOTtzIGVtcGhhc2lzIG9uIHByaW9yaXRpemluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVycyBpbml0aWFsbHkgdGhyZXcgbWUgb2ZmLiBBZnRlciBhbGwsIHRoZSBjb21waWxlciAqY2FuKiBpbmxpbmUgdGhlc2UuCgpIb3dldmVyLCBhIGNsb3NlciBsb29rIHJldmVhbHMgYSBjcnVjaWFsIGRldGFpbDogdGhlc2UgZnVuY3Rpb25zIGFyZSwgaW4gZmFjdCwgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLiBgZ3RwX2RlbGxpbmtgIGJlY29tZXMgYHJ0bmxfbGlua19vcHMuZGVsbGlua2AsIHdoaWxlIGBndHBfZ2VubF9uZXdfcGRwYCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgIGFyZSBib3VuZCB0byB0aGUgYGdlbmxfc21hbGxfb3BzLmRvaXRgIGZpZWxkLiBUaGlzIG1lYW5zIHRoZXkgYXJlIG5vdCBpbmxpbmVkOyB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gVGhleSBhcmUsIGluIGVmZmVjdCwgdGhlIGV4cG9zZWQgZW50cnkgcG9pbnRzIGludG8gdGhlIG1vZGlmaWVkIEdUUCBjb2RlLCB0aGUgQVBJIGhvb2tzIHRoYXQgaW50ZXJmYWNlIHdpdGggdGhlIHJlbGV2YW50IGtlcm5lbCBzdWJzeXN0ZW1zIChgcnRubGAgYW5kIGBnZW5sYCkuIFRoaXMgbWFrZXMgdGhlbSBpbXBvcnRhbnQgdG8gaW5jbHVkZS4KClNvLCB0aGUgcXVlc3Rpb24gc2hpZnRzIGZyb20gJiMzNDtTaG91bGQgdGhlc2UgYmUgaW5jbHVkZWQ/JiMzNDsgdG8gJiMzNDtBcmUgdGhlcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIEdUUCBjb2RlIHRoYXQgKnNob3VsZCogYmUgZXhhbWluZWQ/JiMzNDsgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvZGViYXNlIGZvciB0aG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTA2CgkJCQkJCQlvdXRwdXQ6IDExMwoJCQkJCQkJdGhvdWdodHM6IDI0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgR1RQIERyaXZlciYjMzk7cyBMb2NraW5nIFN0cmF0ZWd5KioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBnb3Qgc28gZmFyIG9uIHRoaXMgR1RQIGRyaXZlciBjb2RlLiBJJiMzOTt2ZSBub3RlZCB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IGV4cG9ydGVkIHN5bWJvbHMgaW4gYGRyaXZlcnMvbmV0L2d0cC5jYCwgd2hpY2ggbWFrZXMgdGhpbmdzIGEgYml0IHNpbXBsZXIuIFRoZSBtb2R1bGUgc2VlbXMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUga2VybmVsIHZpYSBgcnRubGAgYW5kIGBnZW5sYC4gU2luY2UgdGhhdCYjMzk7cyB0aGUgY2FzZSwgdGhlIHN0YXRpYyBjYWxsYmFja3MgYXJlIHRoZSBtb3N0IGltcG9ydGFudCBlbnRyeSBwb2ludHMgZm9yIG15IGZvY3VzLiBJJiMzOTt2ZSBpZGVudGlmaWVkIGBndHBfZGVsbGlua2AsIGBndHBfZ2VubF9uZXdfcGRwYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYCBhcyB0aGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lLgoKSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgd2hldGhlciBgZ3RwX3BkcF9hZGRgIGlzIGlubGluZWQuIEl0ICppcyogc3RhdGljLCBidXQgaXQmIzM5O3MgcXVpdGUgbGFyZ2UsIGFuZCBpdCBtaWdodCBiZSB0b28gYmlnIGZvciB0aGUgY29tcGlsZXIgdG8gb3B0aW1pemUuIEhvd2V2ZXIsIGBndHBfZ2VubF9uZXdfcGRwYCByZW1haW5zIHRoZSBhY3R1YWwgZW50cnkgcG9pbnQuCgpJIGhhdmUgY29uZmlybWVkIHRoYXQgdGhlIGBHVFBgIGNvbmZpZ3VyYXRpb24gaXMgcmVsZXZhbnQgaGVyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgdG8gdGhlIEdUUCBkcml2ZXIuIFRoaXMgbG9jayBpcyB0byBwcm90ZWN0IGFnYWluc3QgcmFjZSBjb25kaXRpb25zLiBJIHNlZSBpdCYjMzk7cyBwcm90ZWN0aW5nIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBQRFAgY29udGV4dCBkZWxldGlvbiwgYW5kIGxpbmsgZGVsZXRpb24uIFRoaXMgc2VlbXMgbGlrZSBhICpmdW5jdGlvbmFsKiBjaGFuZ2UgaW4gYSByZWFjaGFibGUgbmV0d29yayBkcml2ZXIuIFRoZXJlZm9yZSwgSSBkZWVtIHRoaXMgcG90ZW50aWFsbHkgKipXb3J0aEZ1enppbmcqKiBhbmQgbXkgKipGb2N1c1N5bWJvbHMqKiBzaG91bGQgYmUgYGd0cF9kZWxsaW5rYCwgYGd0cF9nZW5sX25ld19wZHBgLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBgR1RQYCBjb25maWd1cmF0aW9uIGlzIGVuYWJsZWQgd2hlbiBJIHRlc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndHBfZGVsbGluayYjMzQ7LAogICAgJiMzNDtndHBfZ2VubF9uZXdfcGRwJiMzNDssCiAgICAmIzM0O2d0cF9nZW5sX2RlbF9wZHAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG11dGV4IGBndHBfcGRwX2xvY2tgIHRvIHRoZSBHVFAgbmV0d29yayBkcml2ZXIgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBkZWxldGlvbiwgYW5kIGxpbmsgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwX2RlbGxpbmsmIzM0OywKICAgICYjMzQ7Z3RwX2dlbmxfbmV3X3BkcCYjMzQ7LAogICAgJiMzNDtndHBfZ2VubF9kZWxfcGRwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtdXRleCBgZ3RwX3BkcF9sb2NrYCB0byB0aGUgR1RQIG5ldHdvcmsgZHJpdmVyIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIGR1cmluZyBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsaW5rIGRlbGV0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgbmV0d29yayBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG11dGV4IChgZ3RwX3BkcF9sb2NrYCkgdG8gcHJvdGVjdCB0aGUgUERQIGNvbnRleHQgbGlzdHMvaGFzaCB0YWJsZXMgZnJvbSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhpcyBpcyBhIGxvY2tpbmcgZml4IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zLCB3aGljaCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIG9yIGxpc3QgY29ycnVwdGlvbi4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgd2hhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJmYjMzMTdhZWJlODNhNTY1MTZiYzA5Y2FiODIwZGNkMDYxMWZkYmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAwMjo0Mzo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmMKaW5kZXggOWExMmNjNTNkYTAwMi4uOGVlNTE2ZGViZWVkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZ3RwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FICYjMzQ7OiAmIzM0OyBmbXQKIAogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tdXRleC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NrYnVmZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3VkcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdWxpc3QuaCZndDsKQEAgLTEwOCw2ICYjNDM7MTA5LDcgQEAgc3RydWN0IGd0cF9uZXQgewogfTsKIAogc3RhdGljIHUzMiBndHBfaF9pbml0dmFsOwomIzQzO3N0YXRpYyBERUZJTkVfTVVURVgoZ3RwX3BkcF9sb2NrKTsKIAogc3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBndHBfZ2VubF9mYW1pbHk7CiAKQEAgLTE1NTUsOSAmIzQzOzE1NTcsMTEgQEAgc3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKIAlzdHJ1Y3QgcGRwX2N0eCAqcGN0eDsKIAlpbnQgaTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKIAlmb3IgKGkgPSAwOyBpICZsdDsgZ3RwLSZndDtoYXNoX3NpemU7IGkmIzQzOyYjNDM7KQogCQlobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBjdHgsIG5leHQsICZhbXA7Z3RwLSZndDt0aWRfaGFzaFtpXSwgaGxpc3RfdGlkKQogCQkJcGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCiAJbGlzdF9kZWwoJmFtcDtndHAtJmd0O2xpc3QpOwogCXVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7CkBAIC0xODMzLDYgJiM0MzsxODM3LDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHBfcGRwX2FkZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc29jayAqc2ssCiAJX19iZTMyIG1zX2FkZHI7CiAJaW50IGZhbWlseTsKIAomIzQzOwlndWFyZChtdXRleCkoJmFtcDtndHBfcGRwX2xvY2spOwomIzQzOwogCXZlcnNpb24gPSBubGFfZ2V0X3UzMihpbmZvLSZndDthdHRyc1tHVFBBX1ZFUlNJT05dKTsKIAogCWZhbWlseSA9IG5sYV9nZXRfdThfZGVmYXVsdChpbmZvLSZndDthdHRyc1tHVFBBX0ZBTUlMWV0sIEFGX0lORVQpOwpAQCAtMjEzNCw2ICYjNDM7MjE0MCw4IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCWlmICghaW5mby0mZ3Q7YXR0cnNbR1RQQV9WRVJTSU9OXSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiYjNDM7CiAJcmN1X3JlYWRfbG9jaygpOwogCiAJcGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItJmd0O3NrKSwgaW5mby0mZ3Q7YXR0cnMpOwpAQCAtMjE1NCw2ICYjNDM7MjE2Miw3IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCiBvdXRfdW5sb2NrOgogCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCXJldHVybiBlcnI7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDUKCQkJCQkJCW91dHB1dDogMTY2CgkJCQkJCQl0aG91Z2h0czogNDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbmN1cnJlbmN5IEZpeCBmb3IgR1RQIFBEUCBDb250ZXh0cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGNvbmN1cnJlbmN5IGZpeCB3aXRoaW4gdGhlIEdUUCBkcml2ZXIuIEl0JiMzOTtzIGZvY3VzZWQgb24gcHJvdGVjdGluZyB0aGUgUERQIGNvbnRleHQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gcmFjZSBjb25kaXRpb25zLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBpbnRyb2R1Y2luZyBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgdG8gZ3VhcmQgY3JpdGljYWwgc2VjdGlvbnMgd2l0aGluIGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuCgpTcGVjaWZpY2FsbHksIGluIGBndHBfZGVsbGlua2AsIHRoZSBtdXRleCBpcyB1c2VkIHRvIHByb3RlY3QgdGhlIGxvb3AgdGhhdCBkZWxldGVzIFBEUCBjb250ZXh0cy4gSW4gYGd0cF9wZHBfYWRkYCwgdGhlIG11dGV4IGlzIHRha2VuIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uLiBBbmQsIGluIGBndHBfZ2VubF9kZWxfcGRwYCBpdCYjMzk7cyB1c2VkIHRvIHByb3RlY3QgdGhlIGxvb2t1cCBhbmQgZGVsZXRpb24gb3BlcmF0aW9ucy4gVGhpcyBhcHByb2FjaCBkaXJlY3RseSBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBmb3IgY29uY3VycmVudCBtb2RpZmljYXRpb25zIHRvIHRoZSBQRFAgY29udGV4dCBoYXNoIHRhYmxlIG9yIGxpbmtlZCBsaXN0cywgd2hpY2ggY291bGQgbGVhZCB0byBuYXN0eSBpc3N1ZXMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIG9yIGRhdGEgY29ycnVwdGlvbi4KCkZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZSwgSSYjMzk7bSBub3Qgc2VlaW5nIGFueSByZWQgZmxhZ3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIHBhdGNoICppc24mIzM5O3QqIGFkZGluZyBhbnkgbmV3IHN0cnVjdHVyZXMgdGhhdCB3b3VsZCBiZSBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vciBpcyBpdCBtb2RpZnlpbmcgYm91bmRzIGNoZWNrcyBvciBpbnRyb2R1Y2luZyBuZXcgYWxsb2NhdGlvbnMgaW4gYSB3YXkgdGhhdCB3b3VsZCBpbmNyZWFzZSB0aGUgcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQmIzM5O3MgcHVyZWx5IGEgbG9ja2luZyBjaGFuZ2UgdG8gYWRkcmVzcyBhIGNvbmN1cnJlbmN5IGlzc3VlLiBMT0NLREVQIGFuZCBLQVNBTiBzaG91bGQgYmUgbW9yZSB0aGFuIGFkZXF1YXRlIHRvIGNhdGNoIGFueSBsb2NraW5nLXJlbGF0ZWQgYnVncyB0aGF0IHRoaXMgcGF0Y2ggbWlnaHQgaW50cm9kdWNlIG9yIHJldmVhbC4gSXQmIzM5O3MgYSBjbGVhbiwgdGFyZ2V0ZWQgZml4LCBhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgc2tpcHBpbmcgS01TQU4gaXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBtdXRleCAoYGd0cF9wZHBfbG9ja2ApIHRvIHByb3RlY3QgdGhlIFBEUCBjb250ZXh0IGxpc3RzL2hhc2ggdGFibGVzIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGluIGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuIFRoaXMgaXMgYSBsb2NraW5nIGZpeCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucywgd2hpY2ggY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSBvciBsaXN0IGNvcnJ1cHRpb24uIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIHdoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG11dGV4IChgZ3RwX3BkcF9sb2NrYCkgdG8gcHJvdGVjdCB0aGUgUERQIGNvbnRleHQgbGlzdHMvaGFzaCB0YWJsZXMgZnJvbSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhpcyBpcyBhIGxvY2tpbmcgZml4IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zLCB3aGljaCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIG9yIGxpc3QgY29ycnVwdGlvbi4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgd2hhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQzOjQ2LjI3MjQ2MjI1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3Njg1ODk3NDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cF9kZWxsaW5rXCIsXG4gICAgXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gICAgXCJndHBfZ2VubF9kZWxfcGRwXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cy9oYXNoIHRhYmxlcyBmcm9tIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBpbiBgZ3RwX2RlbGxpbmtgLCBgZ3RwX3BkcF9hZGRgLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgLiBUaGlzIGlzIGEgbG9ja2luZyBmaXggdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUgb3IgbGlzdCBjb3JydXB0aW9uLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyB3aGF0IEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbXV0ZXggYGd0cF9wZHBfbG9ja2AgdG8gdGhlIEdUUCBuZXR3b3JrIGRyaXZlciB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgUERQIGNvbnRleHQgYWRkaXRpb24sIGRlbGV0aW9uLCBhbmQgbGluayBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0Mzo0Ni4yNzI0Njc3MzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNTM2MDYwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJmYjMzMTdhZWJlODNhNTY1MTZiYzA5Y2FiODIwZGNkMDYxMWZkYmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDI6NDM6NDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZ3RwLmMgYi9kcml2ZXJzL25ldC9ndHAuY1xcbmluZGV4IDlhMTJjYzUzZGEwMDIuLjhlZTUxNmRlYmVlZGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZ3RwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ndHAuY1xcbkBAIC0xMiw2ICsxMiw3IEBAXFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXFxcIjogXFxcIiBmbXRcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L211dGV4LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9za2J1ZmYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VkcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmN1bGlzdC5oXFx1MDAzZVxcbkBAIC0xMDgsNiArMTA5LDcgQEAgc3RydWN0IGd0cF9uZXQge1xcbiB9O1xcbiBcXG4gc3RhdGljIHUzMiBndHBfaF9pbml0dmFsO1xcbitzdGF0aWMgREVGSU5FX01VVEVYKGd0cF9wZHBfbG9jayk7XFxuIFxcbiBzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGd0cF9nZW5sX2ZhbWlseTtcXG4gXFxuQEAgLTE1NTUsOSArMTU1NywxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbiBcXHRzdHJ1Y3QgcGRwX2N0eCAqcGN0eDtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZndHBfcGRwX2xvY2spO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZ3RwLVxcdTAwM2VoYXNoX3NpemU7IGkrKylcXG4gXFx0XFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwY3R4LCBuZXh0LCBcXHUwMDI2Z3RwLVxcdTAwM2V0aWRfaGFzaFtpXSwgaGxpc3RfdGlkKVxcbiBcXHRcXHRcXHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Z3RwX3BkcF9sb2NrKTtcXG4gXFxuIFxcdGxpc3RfZGVsKFxcdTAwMjZndHAtXFx1MDAzZWxpc3QpO1xcbiBcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xcbkBAIC0xODMzLDYgKzE4MzcsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmd0cF9wZHBfYWRkKHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBzb2NrICpzayxcXG4gXFx0X19iZTMyIG1zX2FkZHI7XFxuIFxcdGludCBmYW1pbHk7XFxuIFxcbitcXHRndWFyZChtdXRleCkoXFx1MDAyNmd0cF9wZHBfbG9jayk7XFxuK1xcbiBcXHR2ZXJzaW9uID0gbmxhX2dldF91MzIoaW5mby1cXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSk7XFxuIFxcbiBcXHRmYW1pbHkgPSBubGFfZ2V0X3U4X2RlZmF1bHQoaW5mby1cXHUwMDNlYXR0cnNbR1RQQV9GQU1JTFldLCBBRl9JTkVUKTtcXG5AQCAtMjEzNCw2ICsyMTQwLDggQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuIFxcdGlmICghaW5mby1cXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZndHBfcGRwX2xvY2spO1xcbitcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXG4gXFx0cGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItXFx1MDAzZXNrKSwgaW5mby1cXHUwMDNlYXR0cnMpO1xcbkBAIC0yMTU0LDYgKzIxNjIsNyBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFxuIG91dF91bmxvY2s6XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmd0cF9wZHBfbG9jayk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQzOjQ2LjY3ODU0ODI2M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY5NDE2MDM3NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cF9kZWxsaW5rXCIsXG4gICAgXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gICAgXCJndHBfZ2VubF9kZWxfcGRwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG11dGV4IGBndHBfcGRwX2xvY2tgIHRvIHRoZSBHVFAgbmV0d29yayBkcml2ZXIgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBkZWxldGlvbiwgYW5kIGxpbmsgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmZiMzMxN2FlYmU4M2E1NjUxNmJjMDljYWI4MjBkY2QwNjExZmRiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDAyOjQzOjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZ3RwLmMgYi9kcml2ZXJzL25ldC9ndHAuY1xuaW5kZXggOWExMmNjNTNkYTAwMi4uOGVlNTE2ZGViZWVkZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2d0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ndHAuY1xuQEAgLTEyLDYgKzEyLDcgQEBcbiAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FIFwiOiBcIiBmbXRcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9za2J1ZmYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VkcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1bGlzdC5oXHUwMDNlXG5AQCAtMTA4LDYgKzEwOSw3IEBAIHN0cnVjdCBndHBfbmV0IHtcbiB9O1xuIFxuIHN0YXRpYyB1MzIgZ3RwX2hfaW5pdHZhbDtcbitzdGF0aWMgREVGSU5FX01VVEVYKGd0cF9wZHBfbG9jayk7XG4gXG4gc3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBndHBfZ2VubF9mYW1pbHk7XG4gXG5AQCAtMTU1NSw5ICsxNTU3LDExIEBAIHN0YXRpYyB2b2lkIGd0cF9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXG4gXHRzdHJ1Y3QgcGRwX2N0eCAqcGN0eDtcbiBcdGludCBpO1xuIFxuK1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZ3RwLVx1MDAzZWhhc2hfc2l6ZTsgaSsrKVxuIFx0XHRobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBjdHgsIG5leHQsIFx1MDAyNmd0cC1cdTAwM2V0aWRfaGFzaFtpXSwgaGxpc3RfdGlkKVxuIFx0XHRcdHBkcF9jb250ZXh0X2RlbGV0ZShwY3R4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFxuIFx0bGlzdF9kZWwoXHUwMDI2Z3RwLVx1MDAzZWxpc3QpO1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTtcbkBAIC0xODMzLDYgKzE4MzcsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmd0cF9wZHBfYWRkKHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBzb2NrICpzayxcbiBcdF9fYmUzMiBtc19hZGRyO1xuIFx0aW50IGZhbWlseTtcbiBcbitcdGd1YXJkKG11dGV4KShcdTAwMjZndHBfcGRwX2xvY2spO1xuK1xuIFx0dmVyc2lvbiA9IG5sYV9nZXRfdTMyKGluZm8tXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSk7XG4gXG4gXHRmYW1pbHkgPSBubGFfZ2V0X3U4X2RlZmF1bHQoaW5mby1cdTAwM2VhdHRyc1tHVFBBX0ZBTUlMWV0sIEFGX0lORVQpO1xuQEAgLTIxMzQsNiArMjE0MCw4IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW0dUUEFfVkVSU0lPTl0pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuK1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFxuIFx0cGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItXHUwMDNlc2spLCBpbmZvLVx1MDAzZWF0dHJzKTtcbkBAIC0yMTU0LDYgKzIxNjIsNyBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcbiBvdXRfdW5sb2NrOlxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDM6NDYuNjc4NTQ5NjUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzODU2NzAxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHVFAgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2d0cC5jYC4gSXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHN5bmNocm9uaXphdGlvbiBpbiB0aGUgR1RQIGRyaXZlciwgd2hpY2ggaXMgZ29vZC4gVGhleSd2ZSBhZGRlZCBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgYW5kIHRoZXkncmUgdXNpbmcgaXQgaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhhdCdzIHNtYXJ0OyB3ZSdyZSBwcm90ZWN0aW5nIGFjY2VzcyB0byBzaGFyZWQgUERQIGNvbnRleHQgZGF0YSBzdHJ1Y3R1cmVzLCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2l0aGluIHRoZSBHVFAgZHJpdmVyLiBHaXZlbiB0aGF0IEdUUCBpcyBhIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBtZWFucyBpdCdzIGFjY2Vzc2libGUgdmlhIG5ldGxpbmsgYW5kIHNvY2tldCBvcGVyYXRpb25zLCBjb25jdXJyZW5jeSBpc3N1ZXMgYXJlIGRlZmluaXRlbHkgc29tZXRoaW5nIHRvIGFkZHJlc3MuIEdvdHRhIGVuc3VyZSB3ZSBhcmUgcHJvcGVybHkgaGFuZGxpbmcgY29uY3VycmVudCBhY2Nlc3MgdG8gdGhpcyBkcml2ZXIuIE1ha2VzIHNlbnNlIHRoZXnigJlkIGJlIHVzaW5nIGEgbXV0ZXggZm9yIHRoZXNlIG9wZXJhdGlvbnMuIE5vdywgbGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIEdUUCB0byB2ZXJpZnkgdGhlIGNvbmZpZyBhbmQgZGVwZW5kZW5jaWVzIGFyZSBjb3JyZWN0bHkgaGFuZGxlZCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgd2lsbCBmdW5jdGlvbiBhcyBhbnRpY2lwYXRlZCBnaXZlbiB0aGF0IHRoaXMgaXMgYSBjb3JlIHBpZWNlIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDM6NTkuMDY0MjIyNjY4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NTg0OTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBHVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzEtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNzI6Y29uZmlnIEdUUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVxcdHRyaXN0YXRlIFxcXCJHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0Mzo1OS4xNDg4MTM1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4MTg5NDU3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEdUUCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGhlIHN5c3RlbSdzIHJlcG9ydGluZyB0aGF0IHRoZSBhY3RpdmUgY29uZmlndXJhdGlvbiBpcyBgR1RQYC4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLiBHVFAg4oCTIHRoYXQgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgZGF0YSBwbGFuZSBwcm90b2NvbCwgbGlrZWx5IGluIGEgbW9iaWxlIG5ldHdvcmsgY29udGV4dCwgcG9zc2libHkgcmVsYXRlZCB0byB0dW5uZWxpbmcgb3IgY29udHJvbCBwbGFuZSBzaWduYWxpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQncyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgbGFyZ2VyIGFyY2hpdGVjdHVyZS4gTXkgZXhwZXJ0aXNlIGltbWVkaWF0ZWx5IGtpY2tzIGluIOKAkyB3aGF0IHNwZWNpZmljIHZlcnNpb24sIHdoYXQgaXMgaXQgZGVzaWduZWQgdG8gZG8sIGFuZCB3aGVyZSBpcyBpdCBhcHBsaWVkP1xuXG5OZXh0LCBteSBtaW5kIGF1dG9tYXRpY2FsbHkgZ29lcyB0byBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZSBvciBpbnRlcmRlcGVuZGVuY2UuIEFyZSB0aGVyZSBvdGhlciBzeXN0ZW1zIG9yIGNvbXBvbmVudHMgdGhhdCByZWx5IG9uIHRoaXMgR1RQIGNvbmZpZ3VyYXRpb24/IEFyZSB0aGVyZSBjcml0aWNhbCBpbnRlcmZhY2VzIG9yIG1vZHVsZXMgdGhhdCBpdCBpbnRlcmFjdHMgd2l0aD8gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgcGFyYW1vdW50IHRvIGFzc2Vzc2luZyBpdHMgc3RhYmlsaXR5LCBwZXJmb3JtYW5jZSwgYW5kIG92ZXJhbGwgaW1wYWN0IG9uIHRoZSBuZXR3b3JrIG9yIHN5c3RlbS4gSSBoYXZlIHRvIGtub3cgdGhlIHdpZGVyIGltcGFjdC4gVGhlIHF1ZXN0aW9uIGlzbid0IHdoZXRoZXIgdGhlcmUgKmFyZSogZGVwZW5kZW5jaWVzLCBidXQgd2hhdCAqYXJlKiB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgbmVlZCBteSBpbW1lZGlhdGUgYXR0ZW50aW9uPyBUaGlzIGZvcm1zIHRoZSBiYXNpcyBvZiBteSBpbnZlc3RpZ2F0aW9uIGFuZCB0cm91Ymxlc2hvb3RpbmcgcHJvY2Vzcy4gSSBuZWVkIHRvIGJlIG1ldGhvZGljYWwgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQ0OjA2Ljk2Nzc2MTU0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjcwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgYmFyZXVkcC5cXG4gMjcxOlxcdFxcbiAyNzI6XFx0Y29uZmlnIEdUUFxcbiAyNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkdQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSlcXFwiXFxuIDI3NDpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gMjc1OlxcdFxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbiAyNzY6XFx0XFx0aGVscFxcbiAyNzc6XFx0XFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIGd0cCB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXFxuIDI3ODpcXHRcXHQgIHRoZSBHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpLiBUaGlzIHR1bm5lbGluZyBwcm90b2NvbFxcbiAyNzk6XFx0XFx0ICBpcyB1c2VkIHRvIHByZXZlbnQgc3Vic2NyaWJlcnMgZnJvbSBhY2Nlc3NpbmcgbW9iaWxlIGNhcnJpZXIgY29yZVxcbiAyODA6XFx0XFx0ICBuZXR3b3JrIGluZnJhc3RydWN0dXJlLiBUaGlzIGRyaXZlciByZXF1aXJlcyBhIHVzZXJzcGFjZSBzb2Z0d2FyZSB0aGF0XFxuIDI4MTpcXHRcXHQgIGltcGxlbWVudHMgdGhlIHNpZ25hbGluZyBwcm90b2NvbCAoR1RQLUMpIHRvIHVwZGF0ZSBpdHMgUERQIGNvbnRleHRcXG4gMjgyOlxcdFxcdCAgYmFzZSwgc3VjaCBhcyBPcGVuR0dTTiBcXHUwMDNjaHR0cDovL2dpdC5vc21vY29tLm9yZy9vcGVuZ2dzbi8pLiBUaGlzXFxuIDI4MzpcXHRcXHQgIHR1bm5lbGluZyBwcm90b2NvbCBpcyBpbXBsZW1lbnRlZCBhY2NvcmRpbmcgdG8gdGhlIEdTTSBUUyAwOS42MCBhbmRcXG4gMjg0OlxcdFxcdCAgM0dQUCBUUyAyOS4wNjAgc3RhbmRhcmRzLlxcbiAyODU6XFx0XFxuIDI4NjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXJzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDI4NzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGd0cC5cXG4gMjg4OlxcdFxcbiAyODk6XFx0Y29uZmlnIFBGQ1BcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6MDYuOTY3ODM5MTQyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQzNjE3Mjc1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHVFAgRGF0YXBhdGggRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbXV0ZXgsIGBndHBfcGRwX2xvY2tgLCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZ3RwLmNgIGZpbGUuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgcHJpbWFyaWx5IGFpbWVkIGF0IGxvY2tpbmcgZG93biB0aGUgR1RQIGRhdGFwYXRoIHRvIHByZXZlbnQgdGhvc2UgcGVza3kgcmFjZSBjb25kaXRpb25zLiBUaGUgZHJpdmVyLCBhcyBJIHJlY2FsbCwgaGFuZGxlcyB0aGUgR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YSBwYXRoLCB3aGljaCBtYWtlcyBzZW5zZS4gVGhlIGRlcGVuZGVuY3kgb24gSU5FVCBpcyBleHBlY3RlZC4gV2Uga25vdyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBpcyBgR1RQYC5cblxuVGhlIGNvcmUgb2YgdGhpcyBtb2RpZmljYXRpb24gaW52b2x2ZXMgdGhyZWUga2V5IGZ1bmN0aW9uczogYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gTm93LCBgZ3RwX2RlbGxpbmtgIGlzIGEgbmV0X2RldmljZV9vcHMgY2FsbGJhY2ssIHdoaWNoIGlzIHdoYXQgSeKAmWQgZXhwZWN0LiBgZ3RwX3BkcF9hZGRgIHNlZW1zIHRvIGJlIGNhbGxlZCBmcm9tIGBndHBfZ2VubF9uZXdfcGRwYCwgd2hpY2ggaW4gdHVybiBpcyBhIGdlbmwgY2FsbGJhY2suIEFuZCBmaW5hbGx5LCBgZ3RwX2dlbmxfZGVsX3BkcGAgaXMgKmFsc28qIGEgZ2VubCBjYWxsYmFjay5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgc29tZXRoaW5nIGFib3V0IHRoYXQgYGd0cF9wZHBfYWRkYCBmdW5jdGlvbi4gSXMgaXQgc3RhdGljPyBZZXMsIGl0IGlzLiBUaGUgY2FsbGVyIGlzIGBndHBfZ2VubF9uZXdfcGRwYCwgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93IGZvciBgZ3RwX2dlbmxfZGVsX3BkcGAsIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGF0IGFzIHdlbGwuIEFsc28gc3RhdGljLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2jigKYgZ2VubCBjYWxsYmFja3MgYXJlICp1c3VhbGx5KiBzdGF0aWMsIGJ1dCB0aGV5J3JlICphbHNvKiB0aGUgZW50cnkgcG9pbnRzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrIGhlcmUsIHNvIGxldCBtZSBmaW5kIHRoZSBhY3R1YWwgZW50cnkgcG9pbnRzIG9mIHRoaXMgY29kZS4gTGV0IG1lIGNoZWNrIHRoZSBzb3VyY2UgY29kZSBpbiBgZHJpdmVycy9uZXQvZ3RwLmNgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0NDoyMS4zMjk1Njg5OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjUyNjY2NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3RwX3BkcF9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZ3RwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZ3RwLmM9MTgxNT1zdGF0aWMgYm9vbCBpcHY2X3BkcF9maWxsKHN0cnVjdCBwZHBfY3R4ICpwY3R4LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtMTgyNy1cXG5kcml2ZXJzL25ldC9ndHAuYzoxODI4OnN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwX3BkcF9hZGQoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNvY2sgKnNrLFxcbmRyaXZlcnMvbmV0L2d0cC5jLTE4MjktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jPTIwMTI9c3RhdGljIGludCBndHBfZ2VubF9uZXdfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYy0yMDYxLVxcbmRyaXZlcnMvbmV0L2d0cC5jOjIwNjI6XFx0cGN0eCA9IGd0cF9wZHBfYWRkKGd0cCwgc2ssIGluZm8pO1xcbmRyaXZlcnMvbmV0L2d0cC5jLTIwNjMtXFx0aWYgKElTX0VSUihwY3R4KSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0NDoyMS41NTQ4NDExOTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI2OTU1MDIyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjQxOTEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQ0OjMxLjgyNDM5MzM0OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwNjYyMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3RwX2dlbmxfZGVsX3BkcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ndHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ndHAuYz0yMTIwPXN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwX2ZpbmRfcGRwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhW10pXFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYy0yMTM0LVxcbmRyaXZlcnMvbmV0L2d0cC5jOjIxMzU6c3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvZ3RwLmMtMjEzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYz0yNDQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgZ3RwX2dlbmxfb3BzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYy0yNDUxLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5kcml2ZXJzL25ldC9ndHAuYzoyNDUyOlxcdFxcdC5kb2l0ID0gZ3RwX2dlbmxfZGVsX3BkcCxcXG5kcml2ZXJzL25ldC9ndHAuYy0yNDUzLVxcdFxcdC5mbGFncyA9IEdFTkxfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6MzEuODcyNDkwODkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5MTExNDkxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjo0NDk2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0NDo0MS43ODM2NDE5NzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDE1NTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd0cF9kZWxsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jPTE0NzE9c3RhdGljIGludCBndHBfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtMTU1Mi1cXG5kcml2ZXJzL25ldC9ndHAuYzoxNTUzOnN0YXRpYyB2b2lkIGd0cF9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuZHJpdmVycy9uZXQvZ3RwLmMtMTU1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYz0xNjE0PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBndHBfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTE2MjEtXFx0Lm5ld2xpbmtcXHQ9IGd0cF9uZXdsaW5rLFxcbmRyaXZlcnMvbmV0L2d0cC5jOjE2MjI6XFx0LmRlbGxpbmtcXHQ9IGd0cF9kZWxsaW5rLFxcbmRyaXZlcnMvbmV0L2d0cC5jLTE2MjMtXFx0LmdldF9zaXplXFx0PSBndHBfZ2V0X3NpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYz0yNDkzPXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZ3RwX25ldF9leGl0X3J0bmwoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtMjQ5OS1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZ3RwLCBndHBfbmV4dCwgXFx1MDAyNmduLVxcdTAwM2VndHBfZGV2X2xpc3QsIGxpc3QpXFxuZHJpdmVycy9uZXQvZ3RwLmM6MjUwMDpcXHRcXHRndHBfZGVsbGluayhndHAtXFx1MDAzZWRldiwgZGV2X3RvX2tpbGwpO1xcbmRyaXZlcnMvbmV0L2d0cC5jLTI1MDEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0NDo0MS44NDAwNjMyNjRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI3NTg0MTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdUUCBGdW5jdGlvbnMgZm9yIFN5bWJvbGljIFJlcHJlc2VudGF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyB0byBxdWVzdGlvbiB3aGV0aGVyIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgZ3RwX2RlbGxpbmtgLCBgZ3RwX2dlbmxfbmV3X3BkcGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAsIHdhcnJhbnRlZCBpbmNsdXNpb24gaW4gYEZvY3VzU3ltYm9sc2AuIFRoZSBwcm9tcHQncyBlbXBoYXNpcyBvbiBwcmlvcml0aXppbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlcnMgaW5pdGlhbGx5IHRocmV3IG1lIG9mZi4gQWZ0ZXIgYWxsLCB0aGUgY29tcGlsZXIgKmNhbiogaW5saW5lIHRoZXNlLlxuXG5Ib3dldmVyLCBhIGNsb3NlciBsb29rIHJldmVhbHMgYSBjcnVjaWFsIGRldGFpbDogdGhlc2UgZnVuY3Rpb25zIGFyZSwgaW4gZmFjdCwgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLiBgZ3RwX2RlbGxpbmtgIGJlY29tZXMgYHJ0bmxfbGlua19vcHMuZGVsbGlua2AsIHdoaWxlIGBndHBfZ2VubF9uZXdfcGRwYCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgIGFyZSBib3VuZCB0byB0aGUgYGdlbmxfc21hbGxfb3BzLmRvaXRgIGZpZWxkLiBUaGlzIG1lYW5zIHRoZXkgYXJlIG5vdCBpbmxpbmVkOyB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gVGhleSBhcmUsIGluIGVmZmVjdCwgdGhlIGV4cG9zZWQgZW50cnkgcG9pbnRzIGludG8gdGhlIG1vZGlmaWVkIEdUUCBjb2RlLCB0aGUgQVBJIGhvb2tzIHRoYXQgaW50ZXJmYWNlIHdpdGggdGhlIHJlbGV2YW50IGtlcm5lbCBzdWJzeXN0ZW1zIChgcnRubGAgYW5kIGBnZW5sYCkuIFRoaXMgbWFrZXMgdGhlbSBpbXBvcnRhbnQgdG8gaW5jbHVkZS5cblxuU28sIHRoZSBxdWVzdGlvbiBzaGlmdHMgZnJvbSBcIlNob3VsZCB0aGVzZSBiZSBpbmNsdWRlZD9cIiB0byBcIkFyZSB0aGVyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgR1RQIGNvZGUgdGhhdCAqc2hvdWxkKiBiZSBleGFtaW5lZD9cIiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBjb2RlYmFzZSBmb3IgdGhvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMzEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6NTAuMTE1OTA2ODc5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzEyMjA0NDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZ3RwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQ0OjUwLjI4NzEzNDI4MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzI1NTcyOTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBHVFAgRHJpdmVyJ3MgTG9ja2luZyBTdHJhdGVneSoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEkndmUgZ290IHNvIGZhciBvbiB0aGlzIEdUUCBkcml2ZXIgY29kZS4gSSd2ZSBub3RlZCB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgZXhwb3J0ZWQgc3ltYm9scyBpbiBgZHJpdmVycy9uZXQvZ3RwLmNgLCB3aGljaCBtYWtlcyB0aGluZ3MgYSBiaXQgc2ltcGxlci4gVGhlIG1vZHVsZSBzZWVtcyB0byBpbnRlcmFjdCB3aXRoIHRoZSBrZXJuZWwgdmlhIGBydG5sYCBhbmQgYGdlbmxgLiBTaW5jZSB0aGF0J3MgdGhlIGNhc2UsIHRoZSBzdGF0aWMgY2FsbGJhY2tzIGFyZSB0aGUgbW9zdCBpbXBvcnRhbnQgZW50cnkgcG9pbnRzIGZvciBteSBmb2N1cy4gSSd2ZSBpZGVudGlmaWVkIGBndHBfZGVsbGlua2AsIGBndHBfZ2VubF9uZXdfcGRwYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYCBhcyB0aGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lLlxuXG5JJ20gZG91YmxlLWNoZWNraW5nIHdoZXRoZXIgYGd0cF9wZHBfYWRkYCBpcyBpbmxpbmVkLiBJdCAqaXMqIHN0YXRpYywgYnV0IGl0J3MgcXVpdGUgbGFyZ2UsIGFuZCBpdCBtaWdodCBiZSB0b28gYmlnIGZvciB0aGUgY29tcGlsZXIgdG8gb3B0aW1pemUuIEhvd2V2ZXIsIGBndHBfZ2VubF9uZXdfcGRwYCByZW1haW5zIHRoZSBhY3R1YWwgZW50cnkgcG9pbnQuXG5cbkkgaGF2ZSBjb25maXJtZWQgdGhhdCB0aGUgYEdUUGAgY29uZmlndXJhdGlvbiBpcyByZWxldmFudCBoZXJlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgdG8gdGhlIEdUUCBkcml2ZXIuIFRoaXMgbG9jayBpcyB0byBwcm90ZWN0IGFnYWluc3QgcmFjZSBjb25kaXRpb25zLiBJIHNlZSBpdCdzIHByb3RlY3RpbmcgUERQIGNvbnRleHQgYWRkaXRpb24sIFBEUCBjb250ZXh0IGRlbGV0aW9uLCBhbmQgbGluayBkZWxldGlvbi4gVGhpcyBzZWVtcyBsaWtlIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlci4gVGhlcmVmb3JlLCBJIGRlZW0gdGhpcyBwb3RlbnRpYWxseSAqKldvcnRoRnV6emluZyoqIGFuZCBteSAqKkZvY3VzU3ltYm9scyoqIHNob3VsZCBiZSBgZ3RwX2RlbGxpbmtgLCBgZ3RwX2dlbmxfbmV3X3BkcGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuIEkgbmVlZCB0byBlbnN1cmUgdGhlIGBHVFBgIGNvbmZpZ3VyYXRpb24gaXMgZW5hYmxlZCB3aGVuIEkgdGVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkwNiwiT3V0cHV0VG9rZW5zIjoxMTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6NTYuMDEyNzA5ODNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTg3MzI5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3RwX2RlbGxpbmtcIixcbiAgICBcImd0cF9nZW5sX25ld19wZHBcIixcbiAgICBcImd0cF9nZW5sX2RlbF9wZHBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbXV0ZXggYGd0cF9wZHBfbG9ja2AgdG8gdGhlIEdUUCBuZXR3b3JrIGRyaXZlciB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgUERQIGNvbnRleHQgYWRkaXRpb24sIGRlbGV0aW9uLCBhbmQgbGluayBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cF9kZWxsaW5rXCIsXG4gICAgXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gICAgXCJndHBfZ2VubF9kZWxfcGRwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG11dGV4IGBndHBfcGRwX2xvY2tgIHRvIHRoZSBHVFAgbmV0d29yayBkcml2ZXIgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBkZWxldGlvbiwgYW5kIGxpbmsgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6NTYuMDk0NTkwNDUyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODYzNzU5Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6NTYuMDk1MTI3MjQyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4NjMyMTkyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBtdXRleCAoYGd0cF9wZHBfbG9ja2ApIHRvIHByb3RlY3QgdGhlIFBEUCBjb250ZXh0IGxpc3RzL2hhc2ggdGFibGVzIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGluIGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuIFRoaXMgaXMgYSBsb2NraW5nIGZpeCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucywgd2hpY2ggY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSBvciBsaXN0IGNvcnJ1cHRpb24uIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIHdoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJmYjMzMTdhZWJlODNhNTY1MTZiYzA5Y2FiODIwZGNkMDYxMWZkYmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAwMjo0Mzo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcbmluZGV4IDlhMTJjYzUzZGEwMDIuLjhlZTUxNmRlYmVlZGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcIjogXCIgZm10XG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91ZHAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdWxpc3QuaFx1MDAzZVxuQEAgLTEwOCw2ICsxMDksNyBAQCBzdHJ1Y3QgZ3RwX25ldCB7XG4gfTtcbiBcbiBzdGF0aWMgdTMyIGd0cF9oX2luaXR2YWw7XG4rc3RhdGljIERFRklORV9NVVRFWChndHBfcGRwX2xvY2spO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5O1xuIFxuQEAgLTE1NTUsOSArMTU1NywxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuIFx0c3RydWN0IHBkcF9jdHggKnBjdHg7XG4gXHRpbnQgaTtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGd0cC1cdTAwM2VoYXNoX3NpemU7IGkrKylcbiBcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwY3R4LCBuZXh0LCBcdTAwMjZndHAtXHUwMDNldGlkX2hhc2hbaV0sIGhsaXN0X3RpZClcbiBcdFx0XHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcbiBcdGxpc3RfZGVsKFx1MDAyNmd0cC1cdTAwM2VsaXN0KTtcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7XG5AQCAtMTgzMyw2ICsxODM3LDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHBfcGRwX2FkZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc29jayAqc2ssXG4gXHRfX2JlMzIgbXNfYWRkcjtcbiBcdGludCBmYW1pbHk7XG4gXG4rXHRndWFyZChtdXRleCkoXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbitcbiBcdHZlcnNpb24gPSBubGFfZ2V0X3UzMihpbmZvLVx1MDAzZWF0dHJzW0dUUEFfVkVSU0lPTl0pO1xuIFxuIFx0ZmFtaWx5ID0gbmxhX2dldF91OF9kZWZhdWx0KGluZm8tXHUwMDNlYXR0cnNbR1RQQV9GQU1JTFldLCBBRl9JTkVUKTtcbkBAIC0yMTM0LDYgKzIxNDAsOCBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdGlmICghaW5mby1cdTAwM2VhdHRyc1tHVFBBX1ZFUlNJT05dKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbitcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcbiBcdHBjdHggPSBndHBfZmluZF9wZHAoc29ja19uZXQoc2tiLVx1MDAzZXNrKSwgaW5mby1cdTAwM2VhdHRycyk7XG5AQCAtMjE1NCw2ICsyMTYyLDcgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXG4gb3V0X3VubG9jazpcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQ0OjU2LjA5NTEyODEyMloiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODYzMTk3MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmN1cnJlbmN5IEZpeCBmb3IgR1RQIFBEUCBDb250ZXh0cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjb25jdXJyZW5jeSBmaXggd2l0aGluIHRoZSBHVFAgZHJpdmVyLiBJdCdzIGZvY3VzZWQgb24gcHJvdGVjdGluZyB0aGUgUERQIGNvbnRleHQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gcmFjZSBjb25kaXRpb25zLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBpbnRyb2R1Y2luZyBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgdG8gZ3VhcmQgY3JpdGljYWwgc2VjdGlvbnMgd2l0aGluIGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuXG5cblNwZWNpZmljYWxseSwgaW4gYGd0cF9kZWxsaW5rYCwgdGhlIG11dGV4IGlzIHVzZWQgdG8gcHJvdGVjdCB0aGUgbG9vcCB0aGF0IGRlbGV0ZXMgUERQIGNvbnRleHRzLiBJbiBgZ3RwX3BkcF9hZGRgLCB0aGUgbXV0ZXggaXMgdGFrZW4gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24uIEFuZCwgaW4gYGd0cF9nZW5sX2RlbF9wZHBgIGl0J3MgdXNlZCB0byBwcm90ZWN0IHRoZSBsb29rdXAgYW5kIGRlbGV0aW9uIG9wZXJhdGlvbnMuIFRoaXMgYXBwcm9hY2ggZGlyZWN0bHkgYWRkcmVzc2VzIHRoZSBwb3RlbnRpYWwgZm9yIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyB0byB0aGUgUERQIGNvbnRleHQgaGFzaCB0YWJsZSBvciBsaW5rZWQgbGlzdHMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gbmFzdHkgaXNzdWVzIGxpa2UgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBvciBkYXRhIGNvcnJ1cHRpb24uXG5cbkZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZSwgSSdtIG5vdCBzZWVpbmcgYW55IHJlZCBmbGFncyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIGEgS01TQU4gZnV6emluZyBzZXNzaW9uLiBUaGUgcGF0Y2ggKmlzbid0KiBhZGRpbmcgYW55IG5ldyBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgYmUgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBub3IgaXMgaXQgbW9kaWZ5aW5nIGJvdW5kcyBjaGVja3Mgb3IgaW50cm9kdWNpbmcgbmV3IGFsbG9jYXRpb25zIGluIGEgd2F5IHRoYXQgd291bGQgaW5jcmVhc2UgdGhlIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0J3MgcHVyZWx5IGEgbG9ja2luZyBjaGFuZ2UgdG8gYWRkcmVzcyBhIGNvbmN1cnJlbmN5IGlzc3VlLiBMT0NLREVQIGFuZCBLQVNBTiBzaG91bGQgYmUgbW9yZSB0aGFuIGFkZXF1YXRlIHRvIGNhdGNoIGFueSBsb2NraW5nLXJlbGF0ZWQgYnVncyB0aGF0IHRoaXMgcGF0Y2ggbWlnaHQgaW50cm9kdWNlIG9yIHJldmVhbC4gSXQncyBhIGNsZWFuLCB0YXJnZXRlZCBmaXgsIGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCBza2lwcGluZyBLTVNBTiBpcyBzb3VuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NSwiT3V0cHV0VG9rZW5zIjoxNjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0NTowMy45NTgzMjgyNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG11dGV4IChgZ3RwX3BkcF9sb2NrYCkgdG8gcHJvdGVjdCB0aGUgUERQIGNvbnRleHQgbGlzdHMvaGFzaCB0YWJsZXMgZnJvbSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhpcyBpcyBhIGxvY2tpbmcgZml4IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zLCB3aGljaCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIG9yIGxpc3QgY29ycnVwdGlvbi4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgd2hhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG11dGV4IChgZ3RwX3BkcF9sb2NrYCkgdG8gcHJvdGVjdCB0aGUgUERQIGNvbnRleHQgbGlzdHMvaGFzaCB0YWJsZXMgZnJvbSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhpcyBpcyBhIGxvY2tpbmcgZml4IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zLCB3aGljaCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIG9yIGxpc3QgY29ycnVwdGlvbi4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgd2hhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow968r9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-11 02:27:10 +0000 UTC FinishedAt: 2026-08-11 02:45:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "202fef9bbbf5784487eec27581389c6fb97c350d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "202fef9bbbf5784487eec27581389c6fb97c350d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "65d89785-9595-47a8-bb20-6eca1b324d6f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "gtp_dellink", "gtp_genl_new_pdp", "gtp_genl_del_pdp" ], "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+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cF9kZWxsaW5rJiMzNDssCiAgICAmIzM0O2d0cF9nZW5sX25ld19wZHAmIzM0OywKICAgICYjMzQ7Z3RwX2dlbmxfZGVsX3BkcCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBtdXRleCAoYGd0cF9wZHBfbG9ja2ApIHRvIHByb3RlY3QgdGhlIFBEUCBjb250ZXh0IGxpc3RzL2hhc2ggdGFibGVzIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGluIGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuIFRoaXMgaXMgYSBsb2NraW5nIGZpeCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucywgd2hpY2ggY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSBvciBsaXN0IGNvcnJ1cHRpb24uIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIHdoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbXV0ZXggYGd0cF9wZHBfbG9ja2AgdG8gdGhlIEdUUCBuZXR3b3JrIGRyaXZlciB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgUERQIGNvbnRleHQgYWRkaXRpb24sIGRlbGV0aW9uLCBhbmQgbGluayBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmZiMzMxN2FlYmU4M2E1NjUxNmJjMDljYWI4MjBkY2QwNjExZmRiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDAyOjQzOjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcbmluZGV4IDlhMTJjYzUzZGEwMDIuLjhlZTUxNmRlYmVlZGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC0xMiw2ICYjNDM7MTIsNyBAQFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCYjMzQ7OiBcJiMzNDsgZm10XG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yY3VsaXN0LmhcdTAwM2VcbkBAIC0xMDgsNiAmIzQzOzEwOSw3IEBAIHN0cnVjdCBndHBfbmV0IHtcbiB9O1xuIFxuIHN0YXRpYyB1MzIgZ3RwX2hfaW5pdHZhbDtcbiYjNDM7c3RhdGljIERFRklORV9NVVRFWChndHBfcGRwX2xvY2spO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5O1xuIFxuQEAgLTE1NTUsOSAmIzQzOzE1NTcsMTEgQEAgc3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbiBcdHN0cnVjdCBwZHBfY3R4ICpwY3R4O1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZ3RwLVx1MDAzZWhhc2hfc2l6ZTsgaSYjNDM7JiM0MzspXG4gXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGN0eCwgbmV4dCwgXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2ldLCBobGlzdF90aWQpXG4gXHRcdFx0cGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFxuIFx0bGlzdF9kZWwoXHUwMDI2Z3RwLVx1MDAzZWxpc3QpO1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTtcbkBAIC0xODMzLDYgJiM0MzsxODM3LDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHBfcGRwX2FkZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc29jayAqc2ssXG4gXHRfX2JlMzIgbXNfYWRkcjtcbiBcdGludCBmYW1pbHk7XG4gXG4mIzQzO1x0Z3VhcmQobXV0ZXgpKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4mIzQzO1xuIFx0dmVyc2lvbiA9IG5sYV9nZXRfdTMyKGluZm8tXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSk7XG4gXG4gXHRmYW1pbHkgPSBubGFfZ2V0X3U4X2RlZmF1bHQoaW5mby1cdTAwM2VhdHRyc1tHVFBBX0ZBTUlMWV0sIEFGX0lORVQpO1xuQEAgLTIxMzQsNiAmIzQzOzIxNDAsOCBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdGlmICghaW5mby1cdTAwM2VhdHRyc1tHVFBBX1ZFUlNJT05dKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4mIzQzO1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFxuIFx0cGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItXHUwMDNlc2spLCBpbmZvLVx1MDAzZWF0dHJzKTtcbkBAIC0yMTU0LDYgJiM0MzsyMTYyLDcgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXG4gb3V0X3VubG9jazpcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cF9kZWxsaW5rJiMzNDssCiAgICAmIzM0O2d0cF9nZW5sX25ld19wZHAmIzM0OywKICAgICYjMzQ7Z3RwX2dlbmxfZGVsX3BkcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbXV0ZXggYGd0cF9wZHBfbG9ja2AgdG8gdGhlIEdUUCBuZXR3b3JrIGRyaXZlciB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgUERQIGNvbnRleHQgYWRkaXRpb24sIGRlbGV0aW9uLCBhbmQgbGluayBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmZiMzMxN2FlYmU4M2E1NjUxNmJjMDljYWI4MjBkY2QwNjExZmRiZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDAyOjQzOjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZ3RwLmMgYi9kcml2ZXJzL25ldC9ndHAuYwppbmRleCA5YTEyY2M1M2RhMDAyLi44ZWU1MTZkZWJlZWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ndHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ndHAuYwpAQCAtMTIsNiAmIzQzOzEyLDcgQEAKICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgJiMzNDs6ICYjMzQ7IGZtdAogCiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L211dGV4LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2tidWZmLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdWRwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcmN1bGlzdC5oJmd0OwpAQCAtMTA4LDYgJiM0MzsxMDksNyBAQCBzdHJ1Y3QgZ3RwX25ldCB7CiB9OwogCiBzdGF0aWMgdTMyIGd0cF9oX2luaXR2YWw7CiYjNDM7c3RhdGljIERFRklORV9NVVRFWChndHBfcGRwX2xvY2spOwogCiBzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGd0cF9nZW5sX2ZhbWlseTsKIApAQCAtMTU1NSw5ICYjNDM7MTU1NywxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQogCXN0cnVjdCBwZHBfY3R4ICpwY3R4OwogCWludCBpOwogCiYjNDM7CW11dGV4X2xvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCWZvciAoaSA9IDA7IGkgJmx0OyBndHAtJmd0O2hhc2hfc2l6ZTsgaSYjNDM7JiM0MzspCiAJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGN0eCwgbmV4dCwgJmFtcDtndHAtJmd0O3RpZF9oYXNoW2ldLCBobGlzdF90aWQpCiAJCQlwZHBfY29udGV4dF9kZWxldGUocGN0eCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiAKIAlsaXN0X2RlbCgmYW1wO2d0cC0mZ3Q7bGlzdCk7CiAJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTsKQEAgLTE4MzMsNiAmIzQzOzE4MzcsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmd0cF9wZHBfYWRkKHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBzb2NrICpzaywKIAlfX2JlMzIgbXNfYWRkcjsKIAlpbnQgZmFtaWx5OwogCiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO2d0cF9wZHBfbG9jayk7CiYjNDM7CiAJdmVyc2lvbiA9IG5sYV9nZXRfdTMyKGluZm8tJmd0O2F0dHJzW0dUUEFfVkVSU0lPTl0pOwogCiAJZmFtaWx5ID0gbmxhX2dldF91OF9kZWZhdWx0KGluZm8tJmd0O2F0dHJzW0dUUEFfRkFNSUxZXSwgQUZfSU5FVCk7CkBAIC0yMTM0LDYgJiM0MzsyMTQwLDggQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJaWYgKCFpbmZvLSZndDthdHRyc1tHVFBBX1ZFUlNJT05dKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKJiM0MzsKIAlyY3VfcmVhZF9sb2NrKCk7CiAKIAlwY3R4ID0gZ3RwX2ZpbmRfcGRwKHNvY2tfbmV0KHNrYi0mZ3Q7c2spLCBpbmZvLSZndDthdHRycyk7CkBAIC0yMTU0LDYgJiM0MzsyMTYyLDcgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAKIG91dF91bmxvY2s6CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiAJcmV0dXJuIGVycjsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1RQIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2d0cC5jYC4gSXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHN5bmNocm9uaXphdGlvbiBpbiB0aGUgR1RQIGRyaXZlciwgd2hpY2ggaXMgZ29vZC4gVGhleSYjMzk7dmUgYWRkZWQgYSBtdXRleCwgYGd0cF9wZHBfbG9ja2AsIGFuZCB0aGV5JiMzOTtyZSB1c2luZyBpdCBpbiBgZ3RwX2RlbGxpbmtgLCBgZ3RwX3BkcF9hZGRgLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgLiBUaGF0JiMzOTtzIHNtYXJ0OyB3ZSYjMzk7cmUgcHJvdGVjdGluZyBhY2Nlc3MgdG8gc2hhcmVkIFBEUCBjb250ZXh0IGRhdGEgc3RydWN0dXJlcywgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdpdGhpbiB0aGUgR1RQIGRyaXZlci4gR2l2ZW4gdGhhdCBHVFAgaXMgYSBuZXR3b3JrIGRyaXZlciwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSB2aWEgbmV0bGluayBhbmQgc29ja2V0IG9wZXJhdGlvbnMsIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gYWRkcmVzcy4gR290dGEgZW5zdXJlIHdlIGFyZSBwcm9wZXJseSBoYW5kbGluZyBjb25jdXJyZW50IGFjY2VzcyB0byB0aGlzIGRyaXZlci4gTWFrZXMgc2Vuc2UgdGhleeKAmWQgYmUgdXNpbmcgYSBtdXRleCBmb3IgdGhlc2Ugb3BlcmF0aW9ucy4gTm93LCBsZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgR1RQIHRvIHZlcmlmeSB0aGUgY29uZmlnIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGNvcnJlY3RseSBoYW5kbGVkIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCB3aWxsIGZ1bmN0aW9uIGFzIGFudGljaXBhdGVkIGdpdmVuIHRoYXQgdGhpcyBpcyBhIGNvcmUgcGllY2Ugb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEdUUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3MS1cbmRyaXZlcnMvbmV0L0tjb25maWc6MjcyOmNvbmZpZyBHVFBcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVx0dHJpc3RhdGUgXCYjMzQ7R1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogR1RQIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgdGhlIHN5c3RlbSYjMzk7cyByZXBvcnRpbmcgdGhhdCB0aGUgYWN0aXZlIGNvbmZpZ3VyYXRpb24gaXMgYEdUUGAuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMuIEdUUCDigJMgdGhhdCB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgZGF0YSBwbGFuZSBwcm90b2NvbCwgbGlrZWx5IGluIGEgbW9iaWxlIG5ldHdvcmsgY29udGV4dCwgcG9zc2libHkgcmVsYXRlZCB0byB0dW5uZWxpbmcgb3IgY29udHJvbCBwbGFuZSBzaWduYWxpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuIE15IGV4cGVydGlzZSBpbW1lZGlhdGVseSBraWNrcyBpbiDigJMgd2hhdCBzcGVjaWZpYyB2ZXJzaW9uLCB3aGF0IGlzIGl0IGRlc2lnbmVkIHRvIGRvLCBhbmQgd2hlcmUgaXMgaXQgYXBwbGllZD8KCk5leHQsIG15IG1pbmQgYXV0b21hdGljYWxseSBnb2VzIHRvIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlIG9yIGludGVyZGVwZW5kZW5jZS4gQXJlIHRoZXJlIG90aGVyIHN5c3RlbXMgb3IgY29tcG9uZW50cyB0aGF0IHJlbHkgb24gdGhpcyBHVFAgY29uZmlndXJhdGlvbj8gQXJlIHRoZXJlIGNyaXRpY2FsIGludGVyZmFjZXMgb3IgbW9kdWxlcyB0aGF0IGl0IGludGVyYWN0cyB3aXRoPyBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBwYXJhbW91bnQgdG8gYXNzZXNzaW5nIGl0cyBzdGFiaWxpdHksIHBlcmZvcm1hbmNlLCBhbmQgb3ZlcmFsbCBpbXBhY3Qgb24gdGhlIG5ldHdvcmsgb3Igc3lzdGVtLiBJIGhhdmUgdG8ga25vdyB0aGUgd2lkZXIgaW1wYWN0LiBUaGUgcXVlc3Rpb24gaXNuJiMzOTt0IHdoZXRoZXIgdGhlcmUgKmFyZSogZGVwZW5kZW5jaWVzLCBidXQgd2hhdCAqYXJlKiB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgbmVlZCBteSBpbW1lZGlhdGUgYXR0ZW50aW9uPyBUaGlzIGZvcm1zIHRoZSBiYXNpcyBvZiBteSBpbnZlc3RpZ2F0aW9uIGFuZCB0cm91Ymxlc2hvb3RpbmcgcHJvY2Vzcy4gSSBuZWVkIHRvIGJlIG1ldGhvZGljYWwgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBiYXJldWRwLlxuIDI3MTpcdFxuIDI3MjpcdGNvbmZpZyBHVFBcbiAyNzM6XHRcdHRyaXN0YXRlIFwmIzM0O0dQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSlcJiMzNDtcbiAyNzQ6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDI3NTpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gMjc2Olx0XHRoZWxwXG4gMjc3Olx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgZ3RwIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcbiAyNzg6XHRcdCAgdGhlIEdQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSkuIFRoaXMgdHVubmVsaW5nIHByb3RvY29sXG4gMjc5Olx0XHQgIGlzIHVzZWQgdG8gcHJldmVudCBzdWJzY3JpYmVycyBmcm9tIGFjY2Vzc2luZyBtb2JpbGUgY2FycmllciBjb3JlXG4gMjgwOlx0XHQgIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGEgdXNlcnNwYWNlIHNvZnR3YXJlIHRoYXRcbiAyODE6XHRcdCAgaW1wbGVtZW50cyB0aGUgc2lnbmFsaW5nIHByb3RvY29sIChHVFAtQykgdG8gdXBkYXRlIGl0cyBQRFAgY29udGV4dFxuIDI4MjpcdFx0ICBiYXNlLCBzdWNoIGFzIE9wZW5HR1NOIFx1MDAzY2h0dHA6Ly9naXQub3Ntb2NvbS5vcmcvb3Blbmdnc24vKS4gVGhpc1xuIDI4MzpcdFx0ICB0dW5uZWxpbmcgcHJvdG9jb2wgaXMgaW1wbGVtZW50ZWQgYWNjb3JkaW5nIHRvIHRoZSBHU00gVFMgMDkuNjAgYW5kXG4gMjg0Olx0XHQgIDNHUFAgVFMgMjkuMDYwIHN0YW5kYXJkcy5cbiAyODU6XHRcbiAyODY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlcnMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyODc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgZ3RwLlxuIDI4ODpcdFxuIDI4OTpcdGNvbmZpZyBQRkNQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdUUCBEYXRhcGF0aCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbXV0ZXgsIGBndHBfcGRwX2xvY2tgLCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZ3RwLmNgIGZpbGUuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgcHJpbWFyaWx5IGFpbWVkIGF0IGxvY2tpbmcgZG93biB0aGUgR1RQIGRhdGFwYXRoIHRvIHByZXZlbnQgdGhvc2UgcGVza3kgcmFjZSBjb25kaXRpb25zLiBUaGUgZHJpdmVyLCBhcyBJIHJlY2FsbCwgaGFuZGxlcyB0aGUgR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YSBwYXRoLCB3aGljaCBtYWtlcyBzZW5zZS4gVGhlIGRlcGVuZGVuY3kgb24gSU5FVCBpcyBleHBlY3RlZC4gV2Uga25vdyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBpcyBgR1RQYC4KClRoZSBjb3JlIG9mIHRoaXMgbW9kaWZpY2F0aW9uIGludm9sdmVzIHRocmVlIGtleSBmdW5jdGlvbnM6IGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuIE5vdywgYGd0cF9kZWxsaW5rYCBpcyBhIG5ldF9kZXZpY2Vfb3BzIGNhbGxiYWNrLCB3aGljaCBpcyB3aGF0IEnigJlkIGV4cGVjdC4gYGd0cF9wZHBfYWRkYCBzZWVtcyB0byBiZSBjYWxsZWQgZnJvbSBgZ3RwX2dlbmxfbmV3X3BkcGAsIHdoaWNoIGluIHR1cm4gaXMgYSBnZW5sIGNhbGxiYWNrLiBBbmQgZmluYWxseSwgYGd0cF9nZW5sX2RlbF9wZHBgIGlzICphbHNvKiBhIGdlbmwgY2FsbGJhY2suCgpMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSBzb21ldGhpbmcgYWJvdXQgdGhhdCBgZ3RwX3BkcF9hZGRgIGZ1bmN0aW9uLiBJcyBpdCBzdGF0aWM/IFllcywgaXQgaXMuIFRoZSBjYWxsZXIgaXMgYGd0cF9nZW5sX25ld19wZHBgLCB0aGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93IGZvciBgZ3RwX2dlbmxfZGVsX3BkcGAsIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGF0IGFzIHdlbGwuIEFsc28gc3RhdGljLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2jigKYgZ2VubCBjYWxsYmFja3MgYXJlICp1c3VhbGx5KiBzdGF0aWMsIGJ1dCB0aGV5JiMzOTtyZSAqYWxzbyogdGhlIGVudHJ5IHBvaW50cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG9uIHRoZSByaWdodCB0cmFjayBoZXJlLCBzbyBsZXQgbWUgZmluZCB0aGUgYWN0dWFsIGVudHJ5IHBvaW50cyBvZiB0aGlzIGNvZGUuIExldCBtZSBjaGVjayB0aGUgc291cmNlIGNvZGUgaW4gYGRyaXZlcnMvbmV0L2d0cC5jYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cF9wZHBfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmM9MTgxNT1zdGF0aWMgYm9vbCBpcHY2X3BkcF9maWxsKHN0cnVjdCBwZHBfY3R4ICpwY3R4LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2d0cC5jLTE4MjctXG5kcml2ZXJzL25ldC9ndHAuYzoxODI4OnN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwX3BkcF9hZGQoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNvY2sgKnNrLFxuZHJpdmVycy9uZXQvZ3RwLmMtMTgyOS1cdFx0XHRcdCAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmM9MjAxMj1zdGF0aWMgaW50IGd0cF9nZW5sX25ld19wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy0yMDYxLVxuZHJpdmVycy9uZXQvZ3RwLmM6MjA2MjpcdHBjdHggPSBndHBfcGRwX2FkZChndHAsIHNrLCBpbmZvKTtcbmRyaXZlcnMvbmV0L2d0cC5jLTIwNjMtXHRpZiAoSVNfRVJSKHBjdHgpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cF9nZW5sX2RlbF9wZHAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYz0yMTIwPXN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwX2ZpbmRfcGRwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhW10pXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMjEzNC1cbmRyaXZlcnMvbmV0L2d0cC5jOjIxMzU6c3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5kcml2ZXJzL25ldC9ndHAuYy0yMTM2LXtcbi0tXG5kcml2ZXJzL25ldC9ndHAuYz0yNDQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgZ3RwX2dlbmxfb3BzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMjQ1MS1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxuZHJpdmVycy9uZXQvZ3RwLmM6MjQ1MjpcdFx0LmRvaXQgPSBndHBfZ2VubF9kZWxfcGRwLFxuZHJpdmVycy9uZXQvZ3RwLmMtMjQ1My1cdFx0LmZsYWdzID0gR0VOTF9BRE1JTl9QRVJNLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z3RwX2RlbGxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYz0xNDcxPXN0YXRpYyBpbnQgZ3RwX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy0xNTUyLVxuZHJpdmVycy9uZXQvZ3RwLmM6MTU1MzpzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvZ3RwLmMtMTU1NC17XG4tLVxuZHJpdmVycy9uZXQvZ3RwLmM9MTYxND1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgZ3RwX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMTYyMS1cdC5uZXdsaW5rXHQ9IGd0cF9uZXdsaW5rLFxuZHJpdmVycy9uZXQvZ3RwLmM6MTYyMjpcdC5kZWxsaW5rXHQ9IGd0cF9kZWxsaW5rLFxuZHJpdmVycy9uZXQvZ3RwLmMtMTYyMy1cdC5nZXRfc2l6ZVx0PSBndHBfZ2V0X3NpemUsXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmM9MjQ5Mz1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGd0cF9uZXRfZXhpdF9ydG5sKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy0yNDk5LVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGd0cCwgZ3RwX25leHQsIFx1MDAyNmduLVx1MDAzZWd0cF9kZXZfbGlzdCwgbGlzdClcbmRyaXZlcnMvbmV0L2d0cC5jOjI1MDA6XHRcdGd0cF9kZWxsaW5rKGd0cC1cdTAwM2VkZXYsIGRldl90b19raWxsKTtcbmRyaXZlcnMvbmV0L2d0cC5jLTI1MDEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzMxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1RQIEZ1bmN0aW9ucyBmb3IgU3ltYm9saWMgUmVwcmVzZW50YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCB3YXMgdG8gcXVlc3Rpb24gd2hldGhlciB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgYGd0cF9kZWxsaW5rYCwgYGd0cF9nZW5sX25ld19wZHBgLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgLCB3YXJyYW50ZWQgaW5jbHVzaW9uIGluIGBGb2N1c1N5bWJvbHNgLiBUaGUgcHJvbXB0JiMzOTtzIGVtcGhhc2lzIG9uIHByaW9yaXRpemluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVycyBpbml0aWFsbHkgdGhyZXcgbWUgb2ZmLiBBZnRlciBhbGwsIHRoZSBjb21waWxlciAqY2FuKiBpbmxpbmUgdGhlc2UuCgpIb3dldmVyLCBhIGNsb3NlciBsb29rIHJldmVhbHMgYSBjcnVjaWFsIGRldGFpbDogdGhlc2UgZnVuY3Rpb25zIGFyZSwgaW4gZmFjdCwgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLiBgZ3RwX2RlbGxpbmtgIGJlY29tZXMgYHJ0bmxfbGlua19vcHMuZGVsbGlua2AsIHdoaWxlIGBndHBfZ2VubF9uZXdfcGRwYCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgIGFyZSBib3VuZCB0byB0aGUgYGdlbmxfc21hbGxfb3BzLmRvaXRgIGZpZWxkLiBUaGlzIG1lYW5zIHRoZXkgYXJlIG5vdCBpbmxpbmVkOyB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gVGhleSBhcmUsIGluIGVmZmVjdCwgdGhlIGV4cG9zZWQgZW50cnkgcG9pbnRzIGludG8gdGhlIG1vZGlmaWVkIEdUUCBjb2RlLCB0aGUgQVBJIGhvb2tzIHRoYXQgaW50ZXJmYWNlIHdpdGggdGhlIHJlbGV2YW50IGtlcm5lbCBzdWJzeXN0ZW1zIChgcnRubGAgYW5kIGBnZW5sYCkuIFRoaXMgbWFrZXMgdGhlbSBpbXBvcnRhbnQgdG8gaW5jbHVkZS4KClNvLCB0aGUgcXVlc3Rpb24gc2hpZnRzIGZyb20gJiMzNDtTaG91bGQgdGhlc2UgYmUgaW5jbHVkZWQ/JiMzNDsgdG8gJiMzNDtBcmUgdGhlcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIEdUUCBjb2RlIHRoYXQgKnNob3VsZCogYmUgZXhhbWluZWQ/JiMzNDsgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvZGViYXNlIGZvciB0aG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTA2CgkJCQkJCQlvdXRwdXQ6IDExMwoJCQkJCQkJdGhvdWdodHM6IDI0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgR1RQIERyaXZlciYjMzk7cyBMb2NraW5nIFN0cmF0ZWd5KioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBnb3Qgc28gZmFyIG9uIHRoaXMgR1RQIGRyaXZlciBjb2RlLiBJJiMzOTt2ZSBub3RlZCB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IGV4cG9ydGVkIHN5bWJvbHMgaW4gYGRyaXZlcnMvbmV0L2d0cC5jYCwgd2hpY2ggbWFrZXMgdGhpbmdzIGEgYml0IHNpbXBsZXIuIFRoZSBtb2R1bGUgc2VlbXMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUga2VybmVsIHZpYSBgcnRubGAgYW5kIGBnZW5sYC4gU2luY2UgdGhhdCYjMzk7cyB0aGUgY2FzZSwgdGhlIHN0YXRpYyBjYWxsYmFja3MgYXJlIHRoZSBtb3N0IGltcG9ydGFudCBlbnRyeSBwb2ludHMgZm9yIG15IGZvY3VzLiBJJiMzOTt2ZSBpZGVudGlmaWVkIGBndHBfZGVsbGlua2AsIGBndHBfZ2VubF9uZXdfcGRwYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYCBhcyB0aGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lLgoKSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgd2hldGhlciBgZ3RwX3BkcF9hZGRgIGlzIGlubGluZWQuIEl0ICppcyogc3RhdGljLCBidXQgaXQmIzM5O3MgcXVpdGUgbGFyZ2UsIGFuZCBpdCBtaWdodCBiZSB0b28gYmlnIGZvciB0aGUgY29tcGlsZXIgdG8gb3B0aW1pemUuIEhvd2V2ZXIsIGBndHBfZ2VubF9uZXdfcGRwYCByZW1haW5zIHRoZSBhY3R1YWwgZW50cnkgcG9pbnQuCgpJIGhhdmUgY29uZmlybWVkIHRoYXQgdGhlIGBHVFBgIGNvbmZpZ3VyYXRpb24gaXMgcmVsZXZhbnQgaGVyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgdG8gdGhlIEdUUCBkcml2ZXIuIFRoaXMgbG9jayBpcyB0byBwcm90ZWN0IGFnYWluc3QgcmFjZSBjb25kaXRpb25zLiBJIHNlZSBpdCYjMzk7cyBwcm90ZWN0aW5nIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBQRFAgY29udGV4dCBkZWxldGlvbiwgYW5kIGxpbmsgZGVsZXRpb24uIFRoaXMgc2VlbXMgbGlrZSBhICpmdW5jdGlvbmFsKiBjaGFuZ2UgaW4gYSByZWFjaGFibGUgbmV0d29yayBkcml2ZXIuIFRoZXJlZm9yZSwgSSBkZWVtIHRoaXMgcG90ZW50aWFsbHkgKipXb3J0aEZ1enppbmcqKiBhbmQgbXkgKipGb2N1c1N5bWJvbHMqKiBzaG91bGQgYmUgYGd0cF9kZWxsaW5rYCwgYGd0cF9nZW5sX25ld19wZHBgLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBgR1RQYCBjb25maWd1cmF0aW9uIGlzIGVuYWJsZWQgd2hlbiBJIHRlc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndHBfZGVsbGluayYjMzQ7LAogICAgJiMzNDtndHBfZ2VubF9uZXdfcGRwJiMzNDssCiAgICAmIzM0O2d0cF9nZW5sX2RlbF9wZHAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG11dGV4IGBndHBfcGRwX2xvY2tgIHRvIHRoZSBHVFAgbmV0d29yayBkcml2ZXIgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBkZWxldGlvbiwgYW5kIGxpbmsgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwX2RlbGxpbmsmIzM0OywKICAgICYjMzQ7Z3RwX2dlbmxfbmV3X3BkcCYjMzQ7LAogICAgJiMzNDtndHBfZ2VubF9kZWxfcGRwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtdXRleCBgZ3RwX3BkcF9sb2NrYCB0byB0aGUgR1RQIG5ldHdvcmsgZHJpdmVyIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIGR1cmluZyBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsaW5rIGRlbGV0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgbmV0d29yayBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDI6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG11dGV4IChgZ3RwX3BkcF9sb2NrYCkgdG8gcHJvdGVjdCB0aGUgUERQIGNvbnRleHQgbGlzdHMvaGFzaCB0YWJsZXMgZnJvbSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhpcyBpcyBhIGxvY2tpbmcgZml4IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zLCB3aGljaCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIG9yIGxpc3QgY29ycnVwdGlvbi4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgd2hhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJmYjMzMTdhZWJlODNhNTY1MTZiYzA5Y2FiODIwZGNkMDYxMWZkYmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAwMjo0Mzo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmMKaW5kZXggOWExMmNjNTNkYTAwMi4uOGVlNTE2ZGViZWVkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZ3RwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FICYjMzQ7OiAmIzM0OyBmbXQKIAogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tdXRleC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NrYnVmZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3VkcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdWxpc3QuaCZndDsKQEAgLTEwOCw2ICYjNDM7MTA5LDcgQEAgc3RydWN0IGd0cF9uZXQgewogfTsKIAogc3RhdGljIHUzMiBndHBfaF9pbml0dmFsOwomIzQzO3N0YXRpYyBERUZJTkVfTVVURVgoZ3RwX3BkcF9sb2NrKTsKIAogc3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBndHBfZ2VubF9mYW1pbHk7CiAKQEAgLTE1NTUsOSAmIzQzOzE1NTcsMTEgQEAgc3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKIAlzdHJ1Y3QgcGRwX2N0eCAqcGN0eDsKIAlpbnQgaTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKIAlmb3IgKGkgPSAwOyBpICZsdDsgZ3RwLSZndDtoYXNoX3NpemU7IGkmIzQzOyYjNDM7KQogCQlobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBjdHgsIG5leHQsICZhbXA7Z3RwLSZndDt0aWRfaGFzaFtpXSwgaGxpc3RfdGlkKQogCQkJcGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCiAJbGlzdF9kZWwoJmFtcDtndHAtJmd0O2xpc3QpOwogCXVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7CkBAIC0xODMzLDYgJiM0MzsxODM3LDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHBfcGRwX2FkZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc29jayAqc2ssCiAJX19iZTMyIG1zX2FkZHI7CiAJaW50IGZhbWlseTsKIAomIzQzOwlndWFyZChtdXRleCkoJmFtcDtndHBfcGRwX2xvY2spOwomIzQzOwogCXZlcnNpb24gPSBubGFfZ2V0X3UzMihpbmZvLSZndDthdHRyc1tHVFBBX1ZFUlNJT05dKTsKIAogCWZhbWlseSA9IG5sYV9nZXRfdThfZGVmYXVsdChpbmZvLSZndDthdHRyc1tHVFBBX0ZBTUlMWV0sIEFGX0lORVQpOwpAQCAtMjEzNCw2ICYjNDM7MjE0MCw4IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCWlmICghaW5mby0mZ3Q7YXR0cnNbR1RQQV9WRVJTSU9OXSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiYjNDM7CiAJcmN1X3JlYWRfbG9jaygpOwogCiAJcGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItJmd0O3NrKSwgaW5mby0mZ3Q7YXR0cnMpOwpAQCAtMjE1NCw2ICYjNDM7MjE2Miw3IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCiBvdXRfdW5sb2NrOgogCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCXJldHVybiBlcnI7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDUKCQkJCQkJCW91dHB1dDogMTY2CgkJCQkJCQl0aG91Z2h0czogNDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbmN1cnJlbmN5IEZpeCBmb3IgR1RQIFBEUCBDb250ZXh0cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGNvbmN1cnJlbmN5IGZpeCB3aXRoaW4gdGhlIEdUUCBkcml2ZXIuIEl0JiMzOTtzIGZvY3VzZWQgb24gcHJvdGVjdGluZyB0aGUgUERQIGNvbnRleHQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gcmFjZSBjb25kaXRpb25zLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBpbnRyb2R1Y2luZyBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgdG8gZ3VhcmQgY3JpdGljYWwgc2VjdGlvbnMgd2l0aGluIGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuCgpTcGVjaWZpY2FsbHksIGluIGBndHBfZGVsbGlua2AsIHRoZSBtdXRleCBpcyB1c2VkIHRvIHByb3RlY3QgdGhlIGxvb3AgdGhhdCBkZWxldGVzIFBEUCBjb250ZXh0cy4gSW4gYGd0cF9wZHBfYWRkYCwgdGhlIG11dGV4IGlzIHRha2VuIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uLiBBbmQsIGluIGBndHBfZ2VubF9kZWxfcGRwYCBpdCYjMzk7cyB1c2VkIHRvIHByb3RlY3QgdGhlIGxvb2t1cCBhbmQgZGVsZXRpb24gb3BlcmF0aW9ucy4gVGhpcyBhcHByb2FjaCBkaXJlY3RseSBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBmb3IgY29uY3VycmVudCBtb2RpZmljYXRpb25zIHRvIHRoZSBQRFAgY29udGV4dCBoYXNoIHRhYmxlIG9yIGxpbmtlZCBsaXN0cywgd2hpY2ggY291bGQgbGVhZCB0byBuYXN0eSBpc3N1ZXMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIG9yIGRhdGEgY29ycnVwdGlvbi4KCkZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZSwgSSYjMzk7bSBub3Qgc2VlaW5nIGFueSByZWQgZmxhZ3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIHBhdGNoICppc24mIzM5O3QqIGFkZGluZyBhbnkgbmV3IHN0cnVjdHVyZXMgdGhhdCB3b3VsZCBiZSBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vciBpcyBpdCBtb2RpZnlpbmcgYm91bmRzIGNoZWNrcyBvciBpbnRyb2R1Y2luZyBuZXcgYWxsb2NhdGlvbnMgaW4gYSB3YXkgdGhhdCB3b3VsZCBpbmNyZWFzZSB0aGUgcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQmIzM5O3MgcHVyZWx5IGEgbG9ja2luZyBjaGFuZ2UgdG8gYWRkcmVzcyBhIGNvbmN1cnJlbmN5IGlzc3VlLiBMT0NLREVQIGFuZCBLQVNBTiBzaG91bGQgYmUgbW9yZSB0aGFuIGFkZXF1YXRlIHRvIGNhdGNoIGFueSBsb2NraW5nLXJlbGF0ZWQgYnVncyB0aGF0IHRoaXMgcGF0Y2ggbWlnaHQgaW50cm9kdWNlIG9yIHJldmVhbC4gSXQmIzM5O3MgYSBjbGVhbiwgdGFyZ2V0ZWQgZml4LCBhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgc2tpcHBpbmcgS01TQU4gaXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBtdXRleCAoYGd0cF9wZHBfbG9ja2ApIHRvIHByb3RlY3QgdGhlIFBEUCBjb250ZXh0IGxpc3RzL2hhc2ggdGFibGVzIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGluIGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuIFRoaXMgaXMgYSBsb2NraW5nIGZpeCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucywgd2hpY2ggY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSBvciBsaXN0IGNvcnJ1cHRpb24uIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIHdoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG11dGV4IChgZ3RwX3BkcF9sb2NrYCkgdG8gcHJvdGVjdCB0aGUgUERQIGNvbnRleHQgbGlzdHMvaGFzaCB0YWJsZXMgZnJvbSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhpcyBpcyBhIGxvY2tpbmcgZml4IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zLCB3aGljaCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIG9yIGxpc3QgY29ycnVwdGlvbi4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgd2hhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQzOjQ2LjI3MjQ2MjI1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3Njg1ODk3NDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cF9kZWxsaW5rXCIsXG4gICAgXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gICAgXCJndHBfZ2VubF9kZWxfcGRwXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cy9oYXNoIHRhYmxlcyBmcm9tIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBpbiBgZ3RwX2RlbGxpbmtgLCBgZ3RwX3BkcF9hZGRgLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgLiBUaGlzIGlzIGEgbG9ja2luZyBmaXggdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUgb3IgbGlzdCBjb3JydXB0aW9uLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyB3aGF0IEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbXV0ZXggYGd0cF9wZHBfbG9ja2AgdG8gdGhlIEdUUCBuZXR3b3JrIGRyaXZlciB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgUERQIGNvbnRleHQgYWRkaXRpb24sIGRlbGV0aW9uLCBhbmQgbGluayBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0Mzo0Ni4yNzI0Njc3MzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNTM2MDYwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJmYjMzMTdhZWJlODNhNTY1MTZiYzA5Y2FiODIwZGNkMDYxMWZkYmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDI6NDM6NDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZ3RwLmMgYi9kcml2ZXJzL25ldC9ndHAuY1xcbmluZGV4IDlhMTJjYzUzZGEwMDIuLjhlZTUxNmRlYmVlZGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZ3RwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ndHAuY1xcbkBAIC0xMiw2ICsxMiw3IEBAXFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXFxcIjogXFxcIiBmbXRcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L211dGV4LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9za2J1ZmYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VkcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmN1bGlzdC5oXFx1MDAzZVxcbkBAIC0xMDgsNiArMTA5LDcgQEAgc3RydWN0IGd0cF9uZXQge1xcbiB9O1xcbiBcXG4gc3RhdGljIHUzMiBndHBfaF9pbml0dmFsO1xcbitzdGF0aWMgREVGSU5FX01VVEVYKGd0cF9wZHBfbG9jayk7XFxuIFxcbiBzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGd0cF9nZW5sX2ZhbWlseTtcXG4gXFxuQEAgLTE1NTUsOSArMTU1NywxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbiBcXHRzdHJ1Y3QgcGRwX2N0eCAqcGN0eDtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZndHBfcGRwX2xvY2spO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZ3RwLVxcdTAwM2VoYXNoX3NpemU7IGkrKylcXG4gXFx0XFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwY3R4LCBuZXh0LCBcXHUwMDI2Z3RwLVxcdTAwM2V0aWRfaGFzaFtpXSwgaGxpc3RfdGlkKVxcbiBcXHRcXHRcXHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Z3RwX3BkcF9sb2NrKTtcXG4gXFxuIFxcdGxpc3RfZGVsKFxcdTAwMjZndHAtXFx1MDAzZWxpc3QpO1xcbiBcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xcbkBAIC0xODMzLDYgKzE4MzcsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmd0cF9wZHBfYWRkKHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBzb2NrICpzayxcXG4gXFx0X19iZTMyIG1zX2FkZHI7XFxuIFxcdGludCBmYW1pbHk7XFxuIFxcbitcXHRndWFyZChtdXRleCkoXFx1MDAyNmd0cF9wZHBfbG9jayk7XFxuK1xcbiBcXHR2ZXJzaW9uID0gbmxhX2dldF91MzIoaW5mby1cXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSk7XFxuIFxcbiBcXHRmYW1pbHkgPSBubGFfZ2V0X3U4X2RlZmF1bHQoaW5mby1cXHUwMDNlYXR0cnNbR1RQQV9GQU1JTFldLCBBRl9JTkVUKTtcXG5AQCAtMjEzNCw2ICsyMTQwLDggQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuIFxcdGlmICghaW5mby1cXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZndHBfcGRwX2xvY2spO1xcbitcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXG4gXFx0cGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItXFx1MDAzZXNrKSwgaW5mby1cXHUwMDNlYXR0cnMpO1xcbkBAIC0yMTU0LDYgKzIxNjIsNyBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFxuIG91dF91bmxvY2s6XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmd0cF9wZHBfbG9jayk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQzOjQ2LjY3ODU0ODI2M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY5NDE2MDM3NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cF9kZWxsaW5rXCIsXG4gICAgXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gICAgXCJndHBfZ2VubF9kZWxfcGRwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG11dGV4IGBndHBfcGRwX2xvY2tgIHRvIHRoZSBHVFAgbmV0d29yayBkcml2ZXIgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBkZWxldGlvbiwgYW5kIGxpbmsgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmZiMzMxN2FlYmU4M2E1NjUxNmJjMDljYWI4MjBkY2QwNjExZmRiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDAyOjQzOjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZ3RwLmMgYi9kcml2ZXJzL25ldC9ndHAuY1xuaW5kZXggOWExMmNjNTNkYTAwMi4uOGVlNTE2ZGViZWVkZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2d0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ndHAuY1xuQEAgLTEyLDYgKzEyLDcgQEBcbiAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FIFwiOiBcIiBmbXRcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9za2J1ZmYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VkcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1bGlzdC5oXHUwMDNlXG5AQCAtMTA4LDYgKzEwOSw3IEBAIHN0cnVjdCBndHBfbmV0IHtcbiB9O1xuIFxuIHN0YXRpYyB1MzIgZ3RwX2hfaW5pdHZhbDtcbitzdGF0aWMgREVGSU5FX01VVEVYKGd0cF9wZHBfbG9jayk7XG4gXG4gc3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBndHBfZ2VubF9mYW1pbHk7XG4gXG5AQCAtMTU1NSw5ICsxNTU3LDExIEBAIHN0YXRpYyB2b2lkIGd0cF9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXG4gXHRzdHJ1Y3QgcGRwX2N0eCAqcGN0eDtcbiBcdGludCBpO1xuIFxuK1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZ3RwLVx1MDAzZWhhc2hfc2l6ZTsgaSsrKVxuIFx0XHRobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBjdHgsIG5leHQsIFx1MDAyNmd0cC1cdTAwM2V0aWRfaGFzaFtpXSwgaGxpc3RfdGlkKVxuIFx0XHRcdHBkcF9jb250ZXh0X2RlbGV0ZShwY3R4KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFxuIFx0bGlzdF9kZWwoXHUwMDI2Z3RwLVx1MDAzZWxpc3QpO1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTtcbkBAIC0xODMzLDYgKzE4MzcsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmd0cF9wZHBfYWRkKHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBzb2NrICpzayxcbiBcdF9fYmUzMiBtc19hZGRyO1xuIFx0aW50IGZhbWlseTtcbiBcbitcdGd1YXJkKG11dGV4KShcdTAwMjZndHBfcGRwX2xvY2spO1xuK1xuIFx0dmVyc2lvbiA9IG5sYV9nZXRfdTMyKGluZm8tXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSk7XG4gXG4gXHRmYW1pbHkgPSBubGFfZ2V0X3U4X2RlZmF1bHQoaW5mby1cdTAwM2VhdHRyc1tHVFBBX0ZBTUlMWV0sIEFGX0lORVQpO1xuQEAgLTIxMzQsNiArMjE0MCw4IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW0dUUEFfVkVSU0lPTl0pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuK1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFxuIFx0cGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItXHUwMDNlc2spLCBpbmZvLVx1MDAzZWF0dHJzKTtcbkBAIC0yMTU0LDYgKzIxNjIsNyBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcbiBvdXRfdW5sb2NrOlxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDM6NDYuNjc4NTQ5NjUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzODU2NzAxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHVFAgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2d0cC5jYC4gSXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHN5bmNocm9uaXphdGlvbiBpbiB0aGUgR1RQIGRyaXZlciwgd2hpY2ggaXMgZ29vZC4gVGhleSd2ZSBhZGRlZCBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgYW5kIHRoZXkncmUgdXNpbmcgaXQgaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhhdCdzIHNtYXJ0OyB3ZSdyZSBwcm90ZWN0aW5nIGFjY2VzcyB0byBzaGFyZWQgUERQIGNvbnRleHQgZGF0YSBzdHJ1Y3R1cmVzLCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2l0aGluIHRoZSBHVFAgZHJpdmVyLiBHaXZlbiB0aGF0IEdUUCBpcyBhIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBtZWFucyBpdCdzIGFjY2Vzc2libGUgdmlhIG5ldGxpbmsgYW5kIHNvY2tldCBvcGVyYXRpb25zLCBjb25jdXJyZW5jeSBpc3N1ZXMgYXJlIGRlZmluaXRlbHkgc29tZXRoaW5nIHRvIGFkZHJlc3MuIEdvdHRhIGVuc3VyZSB3ZSBhcmUgcHJvcGVybHkgaGFuZGxpbmcgY29uY3VycmVudCBhY2Nlc3MgdG8gdGhpcyBkcml2ZXIuIE1ha2VzIHNlbnNlIHRoZXnigJlkIGJlIHVzaW5nIGEgbXV0ZXggZm9yIHRoZXNlIG9wZXJhdGlvbnMuIE5vdywgbGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIEdUUCB0byB2ZXJpZnkgdGhlIGNvbmZpZyBhbmQgZGVwZW5kZW5jaWVzIGFyZSBjb3JyZWN0bHkgaGFuZGxlZCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgd2lsbCBmdW5jdGlvbiBhcyBhbnRpY2lwYXRlZCBnaXZlbiB0aGF0IHRoaXMgaXMgYSBjb3JlIHBpZWNlIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDM6NTkuMDY0MjIyNjY4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NTg0OTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBHVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzEtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNzI6Y29uZmlnIEdUUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVxcdHRyaXN0YXRlIFxcXCJHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0Mzo1OS4xNDg4MTM1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4MTg5NDU3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEdUUCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGhlIHN5c3RlbSdzIHJlcG9ydGluZyB0aGF0IHRoZSBhY3RpdmUgY29uZmlndXJhdGlvbiBpcyBgR1RQYC4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLiBHVFAg4oCTIHRoYXQgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgZGF0YSBwbGFuZSBwcm90b2NvbCwgbGlrZWx5IGluIGEgbW9iaWxlIG5ldHdvcmsgY29udGV4dCwgcG9zc2libHkgcmVsYXRlZCB0byB0dW5uZWxpbmcgb3IgY29udHJvbCBwbGFuZSBzaWduYWxpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQncyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgbGFyZ2VyIGFyY2hpdGVjdHVyZS4gTXkgZXhwZXJ0aXNlIGltbWVkaWF0ZWx5IGtpY2tzIGluIOKAkyB3aGF0IHNwZWNpZmljIHZlcnNpb24sIHdoYXQgaXMgaXQgZGVzaWduZWQgdG8gZG8sIGFuZCB3aGVyZSBpcyBpdCBhcHBsaWVkP1xuXG5OZXh0LCBteSBtaW5kIGF1dG9tYXRpY2FsbHkgZ29lcyB0byBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZSBvciBpbnRlcmRlcGVuZGVuY2UuIEFyZSB0aGVyZSBvdGhlciBzeXN0ZW1zIG9yIGNvbXBvbmVudHMgdGhhdCByZWx5IG9uIHRoaXMgR1RQIGNvbmZpZ3VyYXRpb24/IEFyZSB0aGVyZSBjcml0aWNhbCBpbnRlcmZhY2VzIG9yIG1vZHVsZXMgdGhhdCBpdCBpbnRlcmFjdHMgd2l0aD8gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgcGFyYW1vdW50IHRvIGFzc2Vzc2luZyBpdHMgc3RhYmlsaXR5LCBwZXJmb3JtYW5jZSwgYW5kIG92ZXJhbGwgaW1wYWN0IG9uIHRoZSBuZXR3b3JrIG9yIHN5c3RlbS4gSSBoYXZlIHRvIGtub3cgdGhlIHdpZGVyIGltcGFjdC4gVGhlIHF1ZXN0aW9uIGlzbid0IHdoZXRoZXIgdGhlcmUgKmFyZSogZGVwZW5kZW5jaWVzLCBidXQgd2hhdCAqYXJlKiB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgbmVlZCBteSBpbW1lZGlhdGUgYXR0ZW50aW9uPyBUaGlzIGZvcm1zIHRoZSBiYXNpcyBvZiBteSBpbnZlc3RpZ2F0aW9uIGFuZCB0cm91Ymxlc2hvb3RpbmcgcHJvY2Vzcy4gSSBuZWVkIHRvIGJlIG1ldGhvZGljYWwgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQ0OjA2Ljk2Nzc2MTU0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjcwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgYmFyZXVkcC5cXG4gMjcxOlxcdFxcbiAyNzI6XFx0Y29uZmlnIEdUUFxcbiAyNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkdQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSlcXFwiXFxuIDI3NDpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gMjc1OlxcdFxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbiAyNzY6XFx0XFx0aGVscFxcbiAyNzc6XFx0XFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIGd0cCB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXFxuIDI3ODpcXHRcXHQgIHRoZSBHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpLiBUaGlzIHR1bm5lbGluZyBwcm90b2NvbFxcbiAyNzk6XFx0XFx0ICBpcyB1c2VkIHRvIHByZXZlbnQgc3Vic2NyaWJlcnMgZnJvbSBhY2Nlc3NpbmcgbW9iaWxlIGNhcnJpZXIgY29yZVxcbiAyODA6XFx0XFx0ICBuZXR3b3JrIGluZnJhc3RydWN0dXJlLiBUaGlzIGRyaXZlciByZXF1aXJlcyBhIHVzZXJzcGFjZSBzb2Z0d2FyZSB0aGF0XFxuIDI4MTpcXHRcXHQgIGltcGxlbWVudHMgdGhlIHNpZ25hbGluZyBwcm90b2NvbCAoR1RQLUMpIHRvIHVwZGF0ZSBpdHMgUERQIGNvbnRleHRcXG4gMjgyOlxcdFxcdCAgYmFzZSwgc3VjaCBhcyBPcGVuR0dTTiBcXHUwMDNjaHR0cDovL2dpdC5vc21vY29tLm9yZy9vcGVuZ2dzbi8pLiBUaGlzXFxuIDI4MzpcXHRcXHQgIHR1bm5lbGluZyBwcm90b2NvbCBpcyBpbXBsZW1lbnRlZCBhY2NvcmRpbmcgdG8gdGhlIEdTTSBUUyAwOS42MCBhbmRcXG4gMjg0OlxcdFxcdCAgM0dQUCBUUyAyOS4wNjAgc3RhbmRhcmRzLlxcbiAyODU6XFx0XFxuIDI4NjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXJzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDI4NzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGd0cC5cXG4gMjg4OlxcdFxcbiAyODk6XFx0Y29uZmlnIFBGQ1BcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6MDYuOTY3ODM5MTQyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQzNjE3Mjc1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHVFAgRGF0YXBhdGggRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbXV0ZXgsIGBndHBfcGRwX2xvY2tgLCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZ3RwLmNgIGZpbGUuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgcHJpbWFyaWx5IGFpbWVkIGF0IGxvY2tpbmcgZG93biB0aGUgR1RQIGRhdGFwYXRoIHRvIHByZXZlbnQgdGhvc2UgcGVza3kgcmFjZSBjb25kaXRpb25zLiBUaGUgZHJpdmVyLCBhcyBJIHJlY2FsbCwgaGFuZGxlcyB0aGUgR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YSBwYXRoLCB3aGljaCBtYWtlcyBzZW5zZS4gVGhlIGRlcGVuZGVuY3kgb24gSU5FVCBpcyBleHBlY3RlZC4gV2Uga25vdyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBpcyBgR1RQYC5cblxuVGhlIGNvcmUgb2YgdGhpcyBtb2RpZmljYXRpb24gaW52b2x2ZXMgdGhyZWUga2V5IGZ1bmN0aW9uczogYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gTm93LCBgZ3RwX2RlbGxpbmtgIGlzIGEgbmV0X2RldmljZV9vcHMgY2FsbGJhY2ssIHdoaWNoIGlzIHdoYXQgSeKAmWQgZXhwZWN0LiBgZ3RwX3BkcF9hZGRgIHNlZW1zIHRvIGJlIGNhbGxlZCBmcm9tIGBndHBfZ2VubF9uZXdfcGRwYCwgd2hpY2ggaW4gdHVybiBpcyBhIGdlbmwgY2FsbGJhY2suIEFuZCBmaW5hbGx5LCBgZ3RwX2dlbmxfZGVsX3BkcGAgaXMgKmFsc28qIGEgZ2VubCBjYWxsYmFjay5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgc29tZXRoaW5nIGFib3V0IHRoYXQgYGd0cF9wZHBfYWRkYCBmdW5jdGlvbi4gSXMgaXQgc3RhdGljPyBZZXMsIGl0IGlzLiBUaGUgY2FsbGVyIGlzIGBndHBfZ2VubF9uZXdfcGRwYCwgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93IGZvciBgZ3RwX2dlbmxfZGVsX3BkcGAsIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGF0IGFzIHdlbGwuIEFsc28gc3RhdGljLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2jigKYgZ2VubCBjYWxsYmFja3MgYXJlICp1c3VhbGx5KiBzdGF0aWMsIGJ1dCB0aGV5J3JlICphbHNvKiB0aGUgZW50cnkgcG9pbnRzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrIGhlcmUsIHNvIGxldCBtZSBmaW5kIHRoZSBhY3R1YWwgZW50cnkgcG9pbnRzIG9mIHRoaXMgY29kZS4gTGV0IG1lIGNoZWNrIHRoZSBzb3VyY2UgY29kZSBpbiBgZHJpdmVycy9uZXQvZ3RwLmNgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0NDoyMS4zMjk1Njg5OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjUyNjY2NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3RwX3BkcF9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZ3RwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZ3RwLmM9MTgxNT1zdGF0aWMgYm9vbCBpcHY2X3BkcF9maWxsKHN0cnVjdCBwZHBfY3R4ICpwY3R4LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtMTgyNy1cXG5kcml2ZXJzL25ldC9ndHAuYzoxODI4OnN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwX3BkcF9hZGQoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNvY2sgKnNrLFxcbmRyaXZlcnMvbmV0L2d0cC5jLTE4MjktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jPTIwMTI9c3RhdGljIGludCBndHBfZ2VubF9uZXdfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYy0yMDYxLVxcbmRyaXZlcnMvbmV0L2d0cC5jOjIwNjI6XFx0cGN0eCA9IGd0cF9wZHBfYWRkKGd0cCwgc2ssIGluZm8pO1xcbmRyaXZlcnMvbmV0L2d0cC5jLTIwNjMtXFx0aWYgKElTX0VSUihwY3R4KSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0NDoyMS41NTQ4NDExOTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI2OTU1MDIyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjQxOTEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQ0OjMxLjgyNDM5MzM0OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwNjYyMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3RwX2dlbmxfZGVsX3BkcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ndHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ndHAuYz0yMTIwPXN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwX2ZpbmRfcGRwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhW10pXFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYy0yMTM0LVxcbmRyaXZlcnMvbmV0L2d0cC5jOjIxMzU6c3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvZ3RwLmMtMjEzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYz0yNDQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgZ3RwX2dlbmxfb3BzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYy0yNDUxLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5kcml2ZXJzL25ldC9ndHAuYzoyNDUyOlxcdFxcdC5kb2l0ID0gZ3RwX2dlbmxfZGVsX3BkcCxcXG5kcml2ZXJzL25ldC9ndHAuYy0yNDUzLVxcdFxcdC5mbGFncyA9IEdFTkxfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6MzEuODcyNDkwODkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5MTExNDkxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjo0NDk2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0NDo0MS43ODM2NDE5NzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDE1NTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd0cF9kZWxsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jPTE0NzE9c3RhdGljIGludCBndHBfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtMTU1Mi1cXG5kcml2ZXJzL25ldC9ndHAuYzoxNTUzOnN0YXRpYyB2b2lkIGd0cF9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuZHJpdmVycy9uZXQvZ3RwLmMtMTU1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYz0xNjE0PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBndHBfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTE2MjEtXFx0Lm5ld2xpbmtcXHQ9IGd0cF9uZXdsaW5rLFxcbmRyaXZlcnMvbmV0L2d0cC5jOjE2MjI6XFx0LmRlbGxpbmtcXHQ9IGd0cF9kZWxsaW5rLFxcbmRyaXZlcnMvbmV0L2d0cC5jLTE2MjMtXFx0LmdldF9zaXplXFx0PSBndHBfZ2V0X3NpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYz0yNDkzPXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZ3RwX25ldF9leGl0X3J0bmwoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtMjQ5OS1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZ3RwLCBndHBfbmV4dCwgXFx1MDAyNmduLVxcdTAwM2VndHBfZGV2X2xpc3QsIGxpc3QpXFxuZHJpdmVycy9uZXQvZ3RwLmM6MjUwMDpcXHRcXHRndHBfZGVsbGluayhndHAtXFx1MDAzZWRldiwgZGV2X3RvX2tpbGwpO1xcbmRyaXZlcnMvbmV0L2d0cC5jLTI1MDEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0NDo0MS44NDAwNjMyNjRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI3NTg0MTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdUUCBGdW5jdGlvbnMgZm9yIFN5bWJvbGljIFJlcHJlc2VudGF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyB0byBxdWVzdGlvbiB3aGV0aGVyIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgZ3RwX2RlbGxpbmtgLCBgZ3RwX2dlbmxfbmV3X3BkcGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAsIHdhcnJhbnRlZCBpbmNsdXNpb24gaW4gYEZvY3VzU3ltYm9sc2AuIFRoZSBwcm9tcHQncyBlbXBoYXNpcyBvbiBwcmlvcml0aXppbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlcnMgaW5pdGlhbGx5IHRocmV3IG1lIG9mZi4gQWZ0ZXIgYWxsLCB0aGUgY29tcGlsZXIgKmNhbiogaW5saW5lIHRoZXNlLlxuXG5Ib3dldmVyLCBhIGNsb3NlciBsb29rIHJldmVhbHMgYSBjcnVjaWFsIGRldGFpbDogdGhlc2UgZnVuY3Rpb25zIGFyZSwgaW4gZmFjdCwgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLiBgZ3RwX2RlbGxpbmtgIGJlY29tZXMgYHJ0bmxfbGlua19vcHMuZGVsbGlua2AsIHdoaWxlIGBndHBfZ2VubF9uZXdfcGRwYCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgIGFyZSBib3VuZCB0byB0aGUgYGdlbmxfc21hbGxfb3BzLmRvaXRgIGZpZWxkLiBUaGlzIG1lYW5zIHRoZXkgYXJlIG5vdCBpbmxpbmVkOyB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gVGhleSBhcmUsIGluIGVmZmVjdCwgdGhlIGV4cG9zZWQgZW50cnkgcG9pbnRzIGludG8gdGhlIG1vZGlmaWVkIEdUUCBjb2RlLCB0aGUgQVBJIGhvb2tzIHRoYXQgaW50ZXJmYWNlIHdpdGggdGhlIHJlbGV2YW50IGtlcm5lbCBzdWJzeXN0ZW1zIChgcnRubGAgYW5kIGBnZW5sYCkuIFRoaXMgbWFrZXMgdGhlbSBpbXBvcnRhbnQgdG8gaW5jbHVkZS5cblxuU28sIHRoZSBxdWVzdGlvbiBzaGlmdHMgZnJvbSBcIlNob3VsZCB0aGVzZSBiZSBpbmNsdWRlZD9cIiB0byBcIkFyZSB0aGVyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgR1RQIGNvZGUgdGhhdCAqc2hvdWxkKiBiZSBleGFtaW5lZD9cIiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBjb2RlYmFzZSBmb3IgdGhvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMzEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6NTAuMTE1OTA2ODc5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzEyMjA0NDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZ3RwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQ0OjUwLjI4NzEzNDI4MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzI1NTcyOTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBHVFAgRHJpdmVyJ3MgTG9ja2luZyBTdHJhdGVneSoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEkndmUgZ290IHNvIGZhciBvbiB0aGlzIEdUUCBkcml2ZXIgY29kZS4gSSd2ZSBub3RlZCB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgZXhwb3J0ZWQgc3ltYm9scyBpbiBgZHJpdmVycy9uZXQvZ3RwLmNgLCB3aGljaCBtYWtlcyB0aGluZ3MgYSBiaXQgc2ltcGxlci4gVGhlIG1vZHVsZSBzZWVtcyB0byBpbnRlcmFjdCB3aXRoIHRoZSBrZXJuZWwgdmlhIGBydG5sYCBhbmQgYGdlbmxgLiBTaW5jZSB0aGF0J3MgdGhlIGNhc2UsIHRoZSBzdGF0aWMgY2FsbGJhY2tzIGFyZSB0aGUgbW9zdCBpbXBvcnRhbnQgZW50cnkgcG9pbnRzIGZvciBteSBmb2N1cy4gSSd2ZSBpZGVudGlmaWVkIGBndHBfZGVsbGlua2AsIGBndHBfZ2VubF9uZXdfcGRwYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYCBhcyB0aGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lLlxuXG5JJ20gZG91YmxlLWNoZWNraW5nIHdoZXRoZXIgYGd0cF9wZHBfYWRkYCBpcyBpbmxpbmVkLiBJdCAqaXMqIHN0YXRpYywgYnV0IGl0J3MgcXVpdGUgbGFyZ2UsIGFuZCBpdCBtaWdodCBiZSB0b28gYmlnIGZvciB0aGUgY29tcGlsZXIgdG8gb3B0aW1pemUuIEhvd2V2ZXIsIGBndHBfZ2VubF9uZXdfcGRwYCByZW1haW5zIHRoZSBhY3R1YWwgZW50cnkgcG9pbnQuXG5cbkkgaGF2ZSBjb25maXJtZWQgdGhhdCB0aGUgYEdUUGAgY29uZmlndXJhdGlvbiBpcyByZWxldmFudCBoZXJlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgdG8gdGhlIEdUUCBkcml2ZXIuIFRoaXMgbG9jayBpcyB0byBwcm90ZWN0IGFnYWluc3QgcmFjZSBjb25kaXRpb25zLiBJIHNlZSBpdCdzIHByb3RlY3RpbmcgUERQIGNvbnRleHQgYWRkaXRpb24sIFBEUCBjb250ZXh0IGRlbGV0aW9uLCBhbmQgbGluayBkZWxldGlvbi4gVGhpcyBzZWVtcyBsaWtlIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlci4gVGhlcmVmb3JlLCBJIGRlZW0gdGhpcyBwb3RlbnRpYWxseSAqKldvcnRoRnV6emluZyoqIGFuZCBteSAqKkZvY3VzU3ltYm9scyoqIHNob3VsZCBiZSBgZ3RwX2RlbGxpbmtgLCBgZ3RwX2dlbmxfbmV3X3BkcGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuIEkgbmVlZCB0byBlbnN1cmUgdGhlIGBHVFBgIGNvbmZpZ3VyYXRpb24gaXMgZW5hYmxlZCB3aGVuIEkgdGVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkwNiwiT3V0cHV0VG9rZW5zIjoxMTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6NTYuMDEyNzA5ODNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTg3MzI5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3RwX2RlbGxpbmtcIixcbiAgICBcImd0cF9nZW5sX25ld19wZHBcIixcbiAgICBcImd0cF9nZW5sX2RlbF9wZHBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbXV0ZXggYGd0cF9wZHBfbG9ja2AgdG8gdGhlIEdUUCBuZXR3b3JrIGRyaXZlciB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgUERQIGNvbnRleHQgYWRkaXRpb24sIGRlbGV0aW9uLCBhbmQgbGluayBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cF9kZWxsaW5rXCIsXG4gICAgXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gICAgXCJndHBfZ2VubF9kZWxfcGRwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG11dGV4IGBndHBfcGRwX2xvY2tgIHRvIHRoZSBHVFAgbmV0d29yayBkcml2ZXIgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBkZWxldGlvbiwgYW5kIGxpbmsgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6NTYuMDk0NTkwNDUyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODYzNzU5Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDI6NDQ6NTYuMDk1MTI3MjQyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4NjMyMTkyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBtdXRleCAoYGd0cF9wZHBfbG9ja2ApIHRvIHByb3RlY3QgdGhlIFBEUCBjb250ZXh0IGxpc3RzL2hhc2ggdGFibGVzIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGluIGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuIFRoaXMgaXMgYSBsb2NraW5nIGZpeCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucywgd2hpY2ggY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSBvciBsaXN0IGNvcnJ1cHRpb24uIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIHdoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gZGV0ZWN0LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJmYjMzMTdhZWJlODNhNTY1MTZiYzA5Y2FiODIwZGNkMDYxMWZkYmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAwMjo0Mzo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcbmluZGV4IDlhMTJjYzUzZGEwMDIuLjhlZTUxNmRlYmVlZGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcIjogXCIgZm10XG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91ZHAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdWxpc3QuaFx1MDAzZVxuQEAgLTEwOCw2ICsxMDksNyBAQCBzdHJ1Y3QgZ3RwX25ldCB7XG4gfTtcbiBcbiBzdGF0aWMgdTMyIGd0cF9oX2luaXR2YWw7XG4rc3RhdGljIERFRklORV9NVVRFWChndHBfcGRwX2xvY2spO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5O1xuIFxuQEAgLTE1NTUsOSArMTU1NywxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuIFx0c3RydWN0IHBkcF9jdHggKnBjdHg7XG4gXHRpbnQgaTtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGd0cC1cdTAwM2VoYXNoX3NpemU7IGkrKylcbiBcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwY3R4LCBuZXh0LCBcdTAwMjZndHAtXHUwMDNldGlkX2hhc2hbaV0sIGhsaXN0X3RpZClcbiBcdFx0XHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcbiBcdGxpc3RfZGVsKFx1MDAyNmd0cC1cdTAwM2VsaXN0KTtcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7XG5AQCAtMTgzMyw2ICsxODM3LDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHBfcGRwX2FkZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc29jayAqc2ssXG4gXHRfX2JlMzIgbXNfYWRkcjtcbiBcdGludCBmYW1pbHk7XG4gXG4rXHRndWFyZChtdXRleCkoXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbitcbiBcdHZlcnNpb24gPSBubGFfZ2V0X3UzMihpbmZvLVx1MDAzZWF0dHJzW0dUUEFfVkVSU0lPTl0pO1xuIFxuIFx0ZmFtaWx5ID0gbmxhX2dldF91OF9kZWZhdWx0KGluZm8tXHUwMDNlYXR0cnNbR1RQQV9GQU1JTFldLCBBRl9JTkVUKTtcbkBAIC0yMTM0LDYgKzIxNDAsOCBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdGlmICghaW5mby1cdTAwM2VhdHRyc1tHVFBBX1ZFUlNJT05dKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbitcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcbiBcdHBjdHggPSBndHBfZmluZF9wZHAoc29ja19uZXQoc2tiLVx1MDAzZXNrKSwgaW5mby1cdTAwM2VhdHRycyk7XG5AQCAtMjE1NCw2ICsyMTYyLDcgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXG4gb3V0X3VubG9jazpcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAyOjQ0OjU2LjA5NTEyODEyMloiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODYzMTk3MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmN1cnJlbmN5IEZpeCBmb3IgR1RQIFBEUCBDb250ZXh0cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjb25jdXJyZW5jeSBmaXggd2l0aGluIHRoZSBHVFAgZHJpdmVyLiBJdCdzIGZvY3VzZWQgb24gcHJvdGVjdGluZyB0aGUgUERQIGNvbnRleHQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gcmFjZSBjb25kaXRpb25zLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBpbnRyb2R1Y2luZyBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgdG8gZ3VhcmQgY3JpdGljYWwgc2VjdGlvbnMgd2l0aGluIGBndHBfZGVsbGlua2AsIGBndHBfcGRwX2FkZGAsIGFuZCBgZ3RwX2dlbmxfZGVsX3BkcGAuXG5cblNwZWNpZmljYWxseSwgaW4gYGd0cF9kZWxsaW5rYCwgdGhlIG11dGV4IGlzIHVzZWQgdG8gcHJvdGVjdCB0aGUgbG9vcCB0aGF0IGRlbGV0ZXMgUERQIGNvbnRleHRzLiBJbiBgZ3RwX3BkcF9hZGRgLCB0aGUgbXV0ZXggaXMgdGFrZW4gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24uIEFuZCwgaW4gYGd0cF9nZW5sX2RlbF9wZHBgIGl0J3MgdXNlZCB0byBwcm90ZWN0IHRoZSBsb29rdXAgYW5kIGRlbGV0aW9uIG9wZXJhdGlvbnMuIFRoaXMgYXBwcm9hY2ggZGlyZWN0bHkgYWRkcmVzc2VzIHRoZSBwb3RlbnRpYWwgZm9yIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyB0byB0aGUgUERQIGNvbnRleHQgaGFzaCB0YWJsZSBvciBsaW5rZWQgbGlzdHMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gbmFzdHkgaXNzdWVzIGxpa2UgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBvciBkYXRhIGNvcnJ1cHRpb24uXG5cbkZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZSwgSSdtIG5vdCBzZWVpbmcgYW55IHJlZCBmbGFncyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIGEgS01TQU4gZnV6emluZyBzZXNzaW9uLiBUaGUgcGF0Y2ggKmlzbid0KiBhZGRpbmcgYW55IG5ldyBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgYmUgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBub3IgaXMgaXQgbW9kaWZ5aW5nIGJvdW5kcyBjaGVja3Mgb3IgaW50cm9kdWNpbmcgbmV3IGFsbG9jYXRpb25zIGluIGEgd2F5IHRoYXQgd291bGQgaW5jcmVhc2UgdGhlIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0J3MgcHVyZWx5IGEgbG9ja2luZyBjaGFuZ2UgdG8gYWRkcmVzcyBhIGNvbmN1cnJlbmN5IGlzc3VlLiBMT0NLREVQIGFuZCBLQVNBTiBzaG91bGQgYmUgbW9yZSB0aGFuIGFkZXF1YXRlIHRvIGNhdGNoIGFueSBsb2NraW5nLXJlbGF0ZWQgYnVncyB0aGF0IHRoaXMgcGF0Y2ggbWlnaHQgaW50cm9kdWNlIG9yIHJldmVhbC4gSXQncyBhIGNsZWFuLCB0YXJnZXRlZCBmaXgsIGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCBza2lwcGluZyBLTVNBTiBpcyBzb3VuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NSwiT3V0cHV0VG9rZW5zIjoxNjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMjo0NTowMy45NTgzMjgyNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG11dGV4IChgZ3RwX3BkcF9sb2NrYCkgdG8gcHJvdGVjdCB0aGUgUERQIGNvbnRleHQgbGlzdHMvaGFzaCB0YWJsZXMgZnJvbSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhpcyBpcyBhIGxvY2tpbmcgZml4IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zLCB3aGljaCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIG9yIGxpc3QgY29ycnVwdGlvbi4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgd2hhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG11dGV4IChgZ3RwX3BkcF9sb2NrYCkgdG8gcHJvdGVjdCB0aGUgUERQIGNvbnRleHQgbGlzdHMvaGFzaCB0YWJsZXMgZnJvbSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9wZHBfYWRkYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhpcyBpcyBhIGxvY2tpbmcgZml4IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zLCB3aGljaCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIG9yIGxpc3QgY29ycnVwdGlvbi4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgd2hhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow968r9[1] Phase: Succeeded StartedAt: 2026-08-11 02:45:15 +0000 UTC FinishedAt: 2026-08-11 02:45:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-11 02:45:15 +0000 UTC FinishedAt: 2026-08-11 02:45:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2] Phase: Succeeded StartedAt: 2026-08-11 02:45:15 +0000 UTC FinishedAt: 2026-08-11 06:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-11 02:45:15 +0000 UTC FinishedAt: 2026-08-11 06:23:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-11 02:45:15 +0000 UTC FinishedAt: 2026-08-11 02:45:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-11 02:45:15 +0000 UTC FinishedAt: 2026-08-11 02:45:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow968r9/series-workflow968r9-convert-artifact-286953054/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-11 02:45:25 +0000 UTC FinishedAt: 2026-08-11 03:01:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-11 02:45:25 +0000 UTC FinishedAt: 2026-08-11 03:01:46 +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:*1f90140e-ccba-4438-87ce-e0e6f8aa00b6,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-workflow968r9/series-workflow968r9-convert-artifact-286953054/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": "c9e6a183-9ca0-4dc1-a9b4-f6dd71d8c5ad", "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-workflow968r9/series-workflow968r9-build-action-3868634948/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-11 02:45:25 +0000 UTC FinishedAt: 2026-08-11 03:01:36 +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:*1f90140e-ccba-4438-87ce-e0e6f8aa00b6,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-workflow968r9/series-workflow968r9-convert-artifact-286953054/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": "c9e6a183-9ca0-4dc1-a9b4-f6dd71d8c5ad", "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-workflow968r9/series-workflow968r9-build-action-3868634948/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-11 03:01:46 +0000 UTC FinishedAt: 2026-08-11 03:01:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-11 03:01:46 +0000 UTC FinishedAt: 2026-08-11 03:01:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-11 03:01:46 +0000 UTC FinishedAt: 2026-08-11 03:01:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-11 03:01:46 +0000 UTC FinishedAt: 2026-08-11 03:01:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow968r9/series-workflow968r9-convert-artifact-2018557713/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-11 03:01:56 +0000 UTC FinishedAt: 2026-08-11 03:04:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-11 03:01:56 +0000 UTC FinishedAt: 2026-08-11 03:03:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c9e6a183-9ca0-4dc1-a9b4-f6dd71d8c5ad,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-workflow968r9/series-workflow968r9-build-action-3868634948/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-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-11 03:04:00 +0000 UTC FinishedAt: 2026-08-11 03:04:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-11 03:04:00 +0000 UTC FinishedAt: 2026-08-11 03:04:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-11 03:04:00 +0000 UTC FinishedAt: 2026-08-11 03:20:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-11 03:04:00 +0000 UTC FinishedAt: 2026-08-11 03:20:16 +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:*1f90140e-ccba-4438-87ce-e0e6f8aa00b6,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-workflow968r9/series-workflow968r9-convert-artifact-2018557713/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": "ff2432d6-692f-4231-9e09-3c3c209b91b4", "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-workflow968r9/series-workflow968r9-build-action-778546909/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-11 03:04:00 +0000 UTC FinishedAt: 2026-08-11 03:20:12 +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:*1f90140e-ccba-4438-87ce-e0e6f8aa00b6,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-workflow968r9/series-workflow968r9-convert-artifact-2018557713/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": "ff2432d6-692f-4231-9e09-3c3c209b91b4", "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-workflow968r9/series-workflow968r9-build-action-778546909/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-11 03:20:16 +0000 UTC FinishedAt: 2026-08-11 03:20:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-11 03:20:16 +0000 UTC FinishedAt: 2026-08-11 03:20:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-11 03:20:16 +0000 UTC FinishedAt: 2026-08-11 03:22:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-11 03:20:16 +0000 UTC FinishedAt: 2026-08-11 03:22:07 +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:*ff2432d6-692f-4231-9e09-3c3c209b91b4,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-workflow968r9/series-workflow968r9-build-action-778546909/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-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-11 03:22:17 +0000 UTC FinishedAt: 2026-08-11 06:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-11 03:22:17 +0000 UTC FinishedAt: 2026-08-11 06:23:42 +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":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"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:*c9e6a183-9ca0-4dc1-a9b4-f6dd71d8c5ad,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ff2432d6-692f-4231-9e09-3c3c209b91b4,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-workflow968r9/series-workflow968r9-build-action-3868634948/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-workflow968r9/series-workflow968r9-build-action-778546909/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-11 03:22:17 +0000 UTC FinishedAt: 2026-08-11 03:22:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-11 03:22:17 +0000 UTC FinishedAt: 2026-08-11 03:22:22 +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":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"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-workflow968r9/series-workflow968r9-convert-artifact-4063924550/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-11 03:22:17 +0000 UTC FinishedAt: 2026-08-11 03:22:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-11 03:22:17 +0000 UTC FinishedAt: 2026-08-11 03:22:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-11 03:22:17 +0000 UTC FinishedAt: 2026-08-11 03:22:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-11 03:22:27 +0000 UTC FinishedAt: 2026-08-11 06:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow968r9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_dellink","gtp_genl_new_pdp","gtp_genl_del_pdp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"65d89785-9595-47a8-bb20-6eca1b324d6f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-11 03:22:27 +0000 UTC FinishedAt: 2026-08-11 06:23:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c9e6a183-9ca0-4dc1-a9b4-f6dd71d8c5ad,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ff2432d6-692f-4231-9e09-3c3c209b91b4,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-workflow968r9/series-workflow968r9-build-action-3868634948/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-workflow968r9/series-workflow968r9-build-action-778546909/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-workflow968r9/series-workflow968r9-convert-artifact-4063924550/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,}