Name: series-workflowd6lc4 Phase: Succeeded StartedAt: 2026-06-26 00:47:47 +0000 UTC FinishedAt: 2026-06-26 01:53:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[0] Phase: Succeeded StartedAt: 2026-06-26 00:47:47 +0000 UTC FinishedAt: 2026-06-26 01:01:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 00:47:47 +0000 UTC FinishedAt: 2026-06-26 01:01:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4edcdefd4083ae04b1a5656f4be6cd83ae919ef4", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4edcdefd4083ae04b1a5656f4be6cd83ae919ef4", "config_name": "upstream-apparmor-kasan.config", "series_id": "73fa7f16-c35c-481e-984a-1a94178cfb64" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "elv_iosched_store", "elevator_change" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAxOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZWx2X2lvc2NoZWRfc3RvcmUmIzM0OywKICAgICYjMzQ7ZWxldmF0b3JfY2hhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGxvY2tpbmcgcHJpbWl0aXZlIHVzZWQgd2hlbiBzd2l0Y2hpbmcgdGhlIEkvTyBzY2hlZHVsZXIgdmlhIHN5c2ZzLCByZXBsYWNpbmcgYSByZWFkIGxvY2sgd2l0aCBhIHdyaXRlIGxvY2sgdG8gcHJldmVudCBjb25jdXJyZW50IGVsZXZhdG9yIHN3aXRjaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGJsb2NrIGxheWVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAxOjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDMzZTA4ZGJkNWRjYTMyNDc1ZWNlYmQ4Y2VkNDM2OTMxMDU4MDUwNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDAxOjAxOjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2VsZXZhdG9yLmMgYi9ibG9jay9lbGV2YXRvci5jXG5pbmRleCAzYmNkMzdjMmFhMzQwMS4uMjE2MWI2ZWVhNjgwY2EgMTAwNjQ0XG4tLS0gYS9ibG9jay9lbGV2YXRvci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9lbGV2YXRvci5jXG5AQCAtODEyLDggJiM0Mzs4MTIsMTMgQEAgc3NpemVfdCBlbHZfaW9zY2hlZF9zdG9yZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY29uc3QgY2hhciAqYnVmLFxuIFx0ICogcmVmZXJlbmNlIGR1cmluZyBjb25jdXJyZW50IGRpc2sgZGVsZXRpb246XG4gXHQgKiAgIHVwZGF0ZV9ucl9od3FfbG9jayAtXHUwMDNlIGtuLVx1MDAzZWFjdGl2ZSAodmlhIGRlbF9nZW5kaXNrIC1cdTAwM2Uga29iamVjdF9kZWwpXG4gXHQgKiAgIGtuLVx1MDAzZWFjdGl2ZSAtXHUwMDNlIHVwZGF0ZV9ucl9od3FfbG9jayAodmlhIHRoaXMgc3lzZnMgd3JpdGUgcGF0aClcbiYjNDM7XHQgKlxuJiM0MztcdCAqIFVzZSB0aGUgd3JpdGVyIGxvY2sgaW5zdGVhZCBvZiB0aGUgcmVhZGVyIGxvY2sgb2YgdXBkYXRlX25yX2h3cV9sb2NrXG4mIzQzO1x0ICogdG8gc2VyaWFsaXplIHRoZSB0d28tc3RhZ2UgZWxldmF0b3Igc3dpdGNoIHN0ZXBzIGluXG4mIzQzO1x0ICogZWxldmF0b3JfY2hhbmdlKCk6IHRoZSBjb3JlIHN3aXRjaCBzdGVwIHVuZGVyIHRoZSBlbGV2YXRvciBsb2NrIGFuZFxuJiM0MztcdCAqIHRoZSBlbGV2YXRvcl9jaGFuZ2VfZG9uZSgpIHN0ZXAgb3V0c2lkZSB0aGUgZWxldmF0b3IgbG9jay5cbiBcdCAqL1xuLVx0aWYgKCFkb3duX3JlYWRfdHJ5bG9jayhcdTAwMjZzZXQtXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKSkge1xuJiM0MztcdGlmICghZG93bl93cml0ZV90cnlsb2NrKFx1MDAyNnNldC1cdTAwM2V1cGRhdGVfbnJfaHdxX2xvY2spKSB7XG4gXHRcdHJldCA9IC1FQlVTWTtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5AQCAtODI0LDcgJiM0Mzs4MjksNyBAQCBzc2l6ZV90IGVsdl9pb3NjaGVkX3N0b3JlKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBjb25zdCBjaGFyICpidWYsXG4gXHR9IGVsc2Uge1xuIFx0XHRyZXQgPSAtRU5PRU5UO1xuIFx0fVxuLVx0dXBfcmVhZChcdTAwMjZzZXQtXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKTtcbiYjNDM7XHR1cF93cml0ZShcdTAwMjZzZXQtXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKTtcbiBcbiBvdXQ6XG4gXHRpZiAoY3R4LnR5cGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDE6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbHZfaW9zY2hlZF9zdG9yZSYjMzQ7LAogICAgJiMzNDtlbGV2YXRvcl9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbG9ja2luZyBwcmltaXRpdmUgdXNlZCB3aGVuIHN3aXRjaGluZyB0aGUgSS9PIHNjaGVkdWxlciB2aWEgc3lzZnMsIHJlcGxhY2luZyBhIHJlYWQgbG9jayB3aXRoIGEgd3JpdGUgbG9jayB0byBwcmV2ZW50IGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYmxvY2sgbGF5ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQzM2UwOGRiZDVkY2EzMjQ3NWVjZWJkOGNlZDQzNjkzMTA1ODA1MDYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAwMTowMTowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2Jsb2NrL2VsZXZhdG9yLmMgYi9ibG9jay9lbGV2YXRvci5jCmluZGV4IDNiY2QzN2MyYWEzNDAxLi4yMTYxYjZlZWE2ODBjYSAxMDA2NDQKLS0tIGEvYmxvY2svZWxldmF0b3IuYwomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9lbGV2YXRvci5jCkBAIC04MTIsOCAmIzQzOzgxMiwxMyBAQCBzc2l6ZV90IGVsdl9pb3NjaGVkX3N0b3JlKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBjb25zdCBjaGFyICpidWYsCiAJICogcmVmZXJlbmNlIGR1cmluZyBjb25jdXJyZW50IGRpc2sgZGVsZXRpb246CiAJICogICB1cGRhdGVfbnJfaHdxX2xvY2sgLSZndDsga24tJmd0O2FjdGl2ZSAodmlhIGRlbF9nZW5kaXNrIC0mZ3Q7IGtvYmplY3RfZGVsKQogCSAqICAga24tJmd0O2FjdGl2ZSAtJmd0OyB1cGRhdGVfbnJfaHdxX2xvY2sgKHZpYSB0aGlzIHN5c2ZzIHdyaXRlIHBhdGgpCiYjNDM7CSAqCiYjNDM7CSAqIFVzZSB0aGUgd3JpdGVyIGxvY2sgaW5zdGVhZCBvZiB0aGUgcmVhZGVyIGxvY2sgb2YgdXBkYXRlX25yX2h3cV9sb2NrCiYjNDM7CSAqIHRvIHNlcmlhbGl6ZSB0aGUgdHdvLXN0YWdlIGVsZXZhdG9yIHN3aXRjaCBzdGVwcyBpbgomIzQzOwkgKiBlbGV2YXRvcl9jaGFuZ2UoKTogdGhlIGNvcmUgc3dpdGNoIHN0ZXAgdW5kZXIgdGhlIGVsZXZhdG9yIGxvY2sgYW5kCiYjNDM7CSAqIHRoZSBlbGV2YXRvcl9jaGFuZ2VfZG9uZSgpIHN0ZXAgb3V0c2lkZSB0aGUgZWxldmF0b3IgbG9jay4KIAkgKi8KLQlpZiAoIWRvd25fcmVhZF90cnlsb2NrKCZhbXA7c2V0LSZndDt1cGRhdGVfbnJfaHdxX2xvY2spKSB7CiYjNDM7CWlmICghZG93bl93cml0ZV90cnlsb2NrKCZhbXA7c2V0LSZndDt1cGRhdGVfbnJfaHdxX2xvY2spKSB7CiAJCXJldCA9IC1FQlVTWTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtODI0LDcgJiM0Mzs4MjksNyBAQCBzc2l6ZV90IGVsdl9pb3NjaGVkX3N0b3JlKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBjb25zdCBjaGFyICpidWYsCiAJfSBlbHNlIHsKIAkJcmV0ID0gLUVOT0VOVDsKIAl9Ci0JdXBfcmVhZCgmYW1wO3NldC0mZ3Q7dXBkYXRlX25yX2h3cV9sb2NrKTsKJiM0MzsJdXBfd3JpdGUoJmFtcDtzZXQtJmd0O3VwZGF0ZV9ucl9od3FfbG9jayk7CiAKIG91dDoKIAlpZiAoY3R4LnR5cGUpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAxOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTG9ja2luZyBDaGFuZ2UgaW4gdGhlIEJsb2NrIExheWVyKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSByZWFkL3dyaXRlIGxvY2tzIGFyb3VuZCBmb3IgYHNldC0mZ3Q7dXBkYXRlX25yX2h3cV9sb2NrYCB3aXRoaW4gdGhlIGBlbHZfaW9zY2hlZF9zdG9yZWAgZnVuY3Rpb24gaW4gYGJsb2NrL2VsZXZhdG9yLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3JlIGNoYW5naW5nIGBkb3duX3JlYWRfdHJ5bG9ja2AgdG8gYGRvd25fd3JpdGVfdHJ5bG9ja2AgYW5kIGB1cF9yZWFkYCB0byBgdXBfd3JpdGVgLiBUaGlzIGNsZWFybHkgaW5kaWNhdGVzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGxvY2tpbmcgc2NoZW1lIHdpdGhpbiB0aGUgYmxvY2sgbGF5ZXIsIGFuZCBJJiMzOTtkIGJldCBpdCByZWxhdGVzIGRpcmVjdGx5IHRvIG1hbmFnaW5nIEkvTyBzY2hlZHVsZXIgY2hhbmdlcyB0aHJvdWdoIHN5c2ZzLiBJdCBzZWVtcyB0aGUgaW50ZW50aW9uIGlzIHRvIHNlcmlhbGl6ZSB0aGVzZSBvcGVyYXRpb25zIG1vcmUgYWdncmVzc2l2ZWx5LCBwcmV2ZW50aW5nIGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMgb3Igb3RoZXIgd3JpdGUgb3BlcmF0aW9ucyBmcm9tIHN0ZXBwaW5nIG9uIGVhY2ggb3RoZXIuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGNvbnRyb2wgcmVmaW5lbWVudCwgcHJvYmFibHkgYWltZWQgYXQgYXZvaWRpbmcgc29tZSBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIGRhdGEgY29ycnVwdGlvbi4gR2l2ZW4gaXRzIHBsYWNlIGluIHRoZSBibG9jayBsYXllciBhbmQgdGhlIHBvdGVudGlhbCBmb3IgSS9PIHBhdGggaXNzdWVzLCB0aGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgc2VyaW91cyBmdXp6aW5nLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBlbHZfaW9zY2hlZF9zdG9yZWAgaXRzZWxmIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBsb2NrIGNoYW5nZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgc3Vycm91bmRpbmcgY29kZS4gTGV0JiMzOTtzIGRpZyBpbnRvIGBibG9jay9lbGV2YXRvci5jYCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbHZfaW9zY2hlZF9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL2VsZXZhdG9yLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svZWxldmF0b3IuYz03NzQ9c3RhdGljIHZvaWQgZWx2X2lvc2NoZWRfbG9hZF9tb2R1bGUoY29uc3QgY2hhciAqZWxldmF0b3JfbmFtZSlcbi0tXG5ibG9jay9lbGV2YXRvci5jLTc4NS1cbmJsb2NrL2VsZXZhdG9yLmM6Nzg2OnNzaXplX3QgZWx2X2lvc2NoZWRfc3RvcmUoc3RydWN0IGdlbmRpc2sgKmRpc2ssIGNvbnN0IGNoYXIgKmJ1ZixcbmJsb2NrL2VsZXZhdG9yLmMtNzg3LVx0XHRcdCAgc2l6ZV90IGNvdW50KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAxOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEkvTyBTY2hlZHVsZXImIzM5O3MgU3lzZnMgSW50ZXJmYWNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBgZWx2X2lvc2NoZWRfc3RvcmVgIGZ1bmN0aW9uLiBSaWdodCwgaXQmIzM5O3MgdGhlIHN5c2ZzIHN0b3JlIGZ1bmN0aW9uIGZvciB0aGUgSS9PIHNjaGVkdWxlciDigJMgcHJldHR5IHN0YW5kYXJkIHN0dWZmIGZvciBjb25maWd1cmF0aW9uIHRocm91Z2ggc3lzZnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCB3b3JrcyBhbmQgd2hhdCBvcHRpb25zIGl0IGV4cG9zZXMuIFNpbmNlIGl0IGRlYWxzIHdpdGggYmxvY2sgZGV2aWNlcywgSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgc3BlY2lhbGl6ZWQgY29uZmlncy4gSXQgc2VlbXMgdG8gYmUgbG9jYXRlZCBpbiBgYmxvY2svZWxldmF0b3IuY2AuIFRoYXQgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoYXQgdGhlIGVsZXZhdG9yIGlzIHBhcnQgb2YgdGhlIHNjaGVkdWxpbmcgcHJvY2Vzcy4KCkkgc2hvdWxkIGFsc28gbWFrZSBzdXJlIGBDT05GSUdfQkxPQ0tgIGlzIGVuYWJsZWQgc2luY2UgdGhhdCYjMzk7cyBhIHByZS1yZXF1aXNpdGUuIEl0JiMzOTtzIGEgY29yZSBjb25maWcsIHNvIGl0IHNob3VsZCBnZW5lcmFsbHkgYmUgc2V0LiBUbyBjb25maXJtIHRoaXMgYXNzdW1wdGlvbiwgYW5kIHRvIGxvb2sgZm9yIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgaG93IHRoaXMgcGFydCBvZiB0aGUgY29kZSBpcyBjb21waWxlZCwgSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYGJsb2NrL01ha2VmaWxlYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGFueSByZWxldmFudCBidWlsZC10aW1lIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDE6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZWxldmF0b3IubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL01ha2VmaWxlPTY9Q09OVEVYVF9BTkFMWVNJUyA6PSB5XG5ibG9jay9NYWtlZmlsZS03LVxuYmxvY2svTWFrZWZpbGU6ODpvYmoteVx0XHQ6PSBiZGV2Lm8gZm9wcy5vIGJpby5vIGVsZXZhdG9yLm8gYmxrLWNvcmUubyBibGstc3lzZnMubyBcXFxuYmxvY2svTWFrZWZpbGUtOS1cdFx0XHRibGstZmx1c2gubyBibGstc2V0dGluZ3MubyBibGstaW9jLm8gYmxrLW1hcC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBlbGV2YXRvci5vYCBCdWlsZCBhbmQgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMsIGBlbGV2YXRvci5vYCBnZXRzIGJ1aWx0IGF1dG9tYXRpY2FsbHkgYXMgbG9uZyBhcyBgQ09ORklHX0JMT0NLYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgbm8gY29tcGxleCBkZXBlbmRlbmNpZXMgdG8gd29ycnkgYWJvdXQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIGFuIGBvYmoteWAgaW4gdGhlIGJsb2NrIE1ha2VmaWxlLCBzbyB0aGF0JiMzOTtzIHRoYXQuIE5vdywgbXkgZm9jdXMgaXMgb24gZmluZGluZyBhIGZ1enppbmcgZW50cnlwb2ludCwgYW5kIGBlbHZfaW9zY2hlZF9zdG9yZWAgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUuCgpXYWl0IGEgc2Vjb25kLCBpc24mIzM5O3QgYGVsdl9pb3NjaGVkX3N0b3JlYCBhIHN5c2ZzIHN0b3JlIGZ1bmN0aW9uPyBBaCwgeWVzLCB0aGF0JiMzOTtzIHJpZ2h0LiBTbywgY2FuIHdlIGRpcmVjdGx5IGludGVyYWN0IHdpdGggdGhpcyB0aHJvdWdoIGEgZnV6emVyIGxpa2Ugc3l6a2FsbGVyPyBUaGUgYmVhdXR5IG9mIHN5emthbGxlciBpcyBpdHMgYWJpbGl0eSB0byBmdXp6IHN5c2ZzIHdyaXRlcy4gV2UgY2FuIGRlZmluaXRlbHkgdGFyZ2V0IHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIHdoaWNoIGlzIGEgZ3JlYXQgbGVhZC4KCk5vdywgbGV0JiMzOTtzIHNlZSwgd2hhdCBlbHNlIGRvZXMgdGhpcyBoYXZlPyBSaWdodCwgdGhlIHBhdGNoIG1lbnRpb25zIGBlbGV2YXRvcl9jaGFuZ2UoKWAgYW5kIGBlbGV2YXRvcl9jaGFuZ2VfZG9uZSgpYC4gTGV0JiMzOTtzIGRpZyBpbnRvIGBlbHZfaW9zY2hlZF9zdG9yZWAgYW5kIHNlZSB3aGF0IGl0IGFjdHVhbGx5ICpkb2VzKiAtIHRoYXQgd2lsbCB0ZWxsIG1lIGlmIHRob3NlIGFyZSBhbHNvIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIHRhcmdldHMsIG9yIGlmIGBlbHZfaW9zY2hlZF9zdG9yZWAgaXMgdGhlIGNlbnRyYWwgcG9pbnQgdG8gZm9jdXMgb24gZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDE6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtibG9jay9lbGV2YXRvci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzg2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzg2Olx0c3NpemVfdCBlbHZfaW9zY2hlZF9zdG9yZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY29uc3QgY2hhciAqYnVmLFxuIDc4NzpcdFx0XHRcdCAgc2l6ZV90IGNvdW50KVxuIDc4ODpcdHtcbiA3ODk6XHRcdGNoYXIgZWxldmF0b3JfbmFtZVtFTFZfTkFNRV9NQVhdO1xuIDc5MDpcdFx0c3RydWN0IGVsdl9jaGFuZ2VfY3R4IGN0eCA9IHt9O1xuIDc5MTpcdFx0aW50IHJldDtcbiA3OTI6XHRcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gZGlzay1cdTAwM2VxdWV1ZTtcbiA3OTM6XHRcdHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0ID0gcS1cdTAwM2V0YWdfc2V0O1xuIDc5NDpcdFxuIDc5NTpcdFx0LyogTWFrZSBzdXJlIHF1ZXVlIGlzIG5vdCBpbiB0aGUgbWlkZGxlIG9mIGJlaW5nIHJlbW92ZWQgKi9cbiA3OTY6XHRcdGlmICghYmxrX3F1ZXVlX3JlZ2lzdGVyZWQocSkpXG4gNzk3Olx0XHRcdHJldHVybiAtRU5PRU5UO1xuIDc5ODpcdFxuIDc5OTpcdFx0LypcbiA4MDA6XHRcdCAqIElmIHRoZSBhdHRyaWJ1dGUgbmVlZHMgdG8gbG9hZCBhIG1vZHVsZSwgZG8gaXQgYmVmb3JlIGZyZWV6aW5nIHRoZVxuIDgwMTpcdFx0ICogcXVldWUgdG8gZW5zdXJlIHRoYXQgdGhlIG1vZHVsZSBmaWxlIGNhbiBiZSByZWFkIHdoZW4gdGhlIHJlcXVlc3RcbiA4MDI6XHRcdCAqIHF1ZXVlIGlzIHRoZSBvbmUgZm9yIHRoZSBkZXZpY2Ugc3RvcmluZyB0aGUgbW9kdWxlIGZpbGUuXG4gODAzOlx0XHQgKi9cbiA4MDQ6XHRcdHN0cnNjcHkoZWxldmF0b3JfbmFtZSwgYnVmLCBzaXplb2YoZWxldmF0b3JfbmFtZSkpO1xuIDgwNTpcdFx0Y3R4Lm5hbWUgPSBzdHJzdHJpcChlbGV2YXRvcl9uYW1lKTtcbiA4MDY6XHRcbiA4MDc6XHRcdGVsdl9pb3NjaGVkX2xvYWRfbW9kdWxlKGN0eC5uYW1lKTtcbiA4MDg6XHRcdGN0eC50eXBlID0gZWxldmF0b3JfZmluZF9nZXQoY3R4Lm5hbWUpO1xuIDgwOTpcdFxuIDgxMDpcdFx0LypcbiA4MTE6XHRcdCAqIFVzZSB0cnlsb2NrIHRvIGF2b2lkIGNpcmN1bGFyIGxvY2sgZGVwZW5kZW5jeSB3aXRoIGtlcm5mcyBhY3RpdmVcbiA4MTI6XHRcdCAqIHJlZmVyZW5jZSBkdXJpbmcgY29uY3VycmVudCBkaXNrIGRlbGV0aW9uOlxuIDgxMzpcdFx0ICogICB1cGRhdGVfbnJfaHdxX2xvY2sgLVx1MDAzZSBrbi1cdTAwM2VhY3RpdmUgKHZpYSBkZWxfZ2VuZGlzayAtXHUwMDNlIGtvYmplY3RfZGVsKVxuIDgxNDpcdFx0ICogICBrbi1cdTAwM2VhY3RpdmUgLVx1MDAzZSB1cGRhdGVfbnJfaHdxX2xvY2sgKHZpYSB0aGlzIHN5c2ZzIHdyaXRlIHBhdGgpXG4gODE1Olx0XHQgKlxuIDgxNjpcdFx0ICogVXNlIHRoZSB3cml0ZXIgbG9jayBpbnN0ZWFkIG9mIHRoZSByZWFkZXIgbG9jayBvZiB1cGRhdGVfbnJfaHdxX2xvY2tcbiA4MTc6XHRcdCAqIHRvIHNlcmlhbGl6ZSB0aGUgdHdvLXN0YWdlIGVsZXZhdG9yIHN3aXRjaCBzdGVwcyBpblxuIDgxODpcdFx0ICogZWxldmF0b3JfY2hhbmdlKCk6IHRoZSBjb3JlIHN3aXRjaCBzdGVwIHVuZGVyIHRoZSBlbGV2YXRvciBsb2NrIGFuZFxuIDgxOTpcdFx0ICogdGhlIGVsZXZhdG9yX2NoYW5nZV9kb25lKCkgc3RlcCBvdXRzaWRlIHRoZSBlbGV2YXRvciBsb2NrLlxuIDgyMDpcdFx0ICovXG4gODIxOlx0XHRpZiAoIWRvd25fd3JpdGVfdHJ5bG9jayhcdTAwMjZzZXQtXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKSkge1xuIDgyMjpcdFx0XHRyZXQgPSAtRUJVU1k7XG4gODIzOlx0XHRcdGdvdG8gb3V0O1xuIDgyNDpcdFx0fVxuIDgyNTpcdFx0aWYgKCFibGtfcXVldWVfbm9fZWx2X3N3aXRjaChxKSkge1xuIDgyNjpcdFx0XHRyZXQgPSBlbGV2YXRvcl9jaGFuZ2UocSwgXHUwMDI2Y3R4KTtcbiA4Mjc6XHRcdFx0aWYgKCFyZXQpXG4gODI4Olx0XHRcdFx0cmV0ID0gY291bnQ7XG4gODI5Olx0XHR9IGVsc2Uge1xuIDgzMDpcdFx0XHRyZXQgPSAtRU5PRU5UO1xuIDgzMTpcdFx0fVxuIDgzMjpcdFx0dXBfd3JpdGUoXHUwMDI2c2V0LVx1MDAzZXVwZGF0ZV9ucl9od3FfbG9jayk7XG4gODMzOlx0XG4gODM0Olx0b3V0OlxuIDgzNTpcdFx0aWYgKGN0eC50eXBlKVxuIDgzNjpcdFx0XHRlbGV2YXRvcl9wdXQoY3R4LnR5cGUpO1xuIDgzNzpcdFx0cmV0dXJuIHJldDtcbiA4Mzg6XHR9XG4gODM5Olx0XG4gODQwOlx0c3NpemVfdCBlbHZfaW9zY2hlZF9zaG93KHN0cnVjdCBnZW5kaXNrICpkaXNrLCBjaGFyICpuYW1lKVxuIDg0MTpcdHtcbiA4NDI6XHRcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gZGlzay1cdTAwM2VxdWV1ZTtcbiA4NDM6XHRcdHN0cnVjdCBlbGV2YXRvcl90eXBlICpjdXIgPSBOVUxMLCAqZTtcbiA4NDQ6XHRcdGludCBsZW4gPSAwO1xuIDg0NTpcdFxuIDg0NjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZxLVx1MDAzZWVsZXZhdG9yX2xvY2spO1xuIDg0NzpcdFx0aWYgKCFxLVx1MDAzZWVsZXZhdG9yKSB7XG4gODQ4Olx0XHRcdGxlbiAmIzQzOz0gc3ByaW50ZihuYW1lJiM0MztsZW4sIFwmIzM0O1tub25lXSBcJiMzNDspO1xuIDg0OTpcdFx0fSBlbHNlIHtcbiA4NTA6XHRcdFx0bGVuICYjNDM7PSBzcHJpbnRmKG5hbWUmIzQzO2xlbiwgXCYjMzQ7bm9uZSBcJiMzNDspO1xuIDg1MTpcdFx0XHRjdXIgPSBxLVx1MDAzZWVsZXZhdG9yLVx1MDAzZXR5cGU7XG4gODUyOlx0XHR9XG4gODUzOlx0XG4gODU0Olx0XHRzcGluX2xvY2soXHUwMDI2ZWx2X2xpc3RfbG9jayk7XG4gODU1Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGUsIFx1MDAyNmVsdl9saXN0LCBsaXN0KSB7XG4gODU2Olx0XHRcdGlmIChlID09IGN1cilcbiA4NTc6XHRcdFx0XHRsZW4gJiM0Mzs9IHNwcmludGYobmFtZSYjNDM7bGVuLCBcJiMzNDtbJXNdIFwmIzM0OywgZS1cdTAwM2VlbGV2YXRvcl9uYW1lKTtcbiA4NTg6XHRcdFx0ZWxzZVxuIDg1OTpcdFx0XHRcdGxlbiAmIzQzOz0gc3ByaW50ZihuYW1lJiM0MztsZW4sIFwmIzM0OyVzIFwmIzM0OywgZS1cdTAwM2VlbGV2YXRvcl9uYW1lKTtcbiA4NjA6XHRcdH1cbiA4NjE6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmVsdl9saXN0X2xvY2spO1xuIDg2MjpcdFxuIDg2MzpcdFx0bGVuICYjNDM7PSBzcHJpbnRmKG5hbWUmIzQzO2xlbiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiA4NjQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZxLVx1MDAzZWVsZXZhdG9yX2xvY2spO1xuIDg2NTpcdFxuIDg2NjpcdFx0cmV0dXJuIGxlbjtcbiA4Njc6XHR9XG4gODY4Olx0XG4gODY5Olx0c3RydWN0IHJlcXVlc3QgKmVsdl9yYl9mb3JtZXJfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSxcbiA4NzA6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCByZXF1ZXN0ICpycSlcbiA4NzE6XHR7XG4gODcyOlx0XHRzdHJ1Y3QgcmJfbm9kZSAqcmJwcmV2ID0gcmJfcHJldihcdTAwMjZycS1cdTAwM2VyYl9ub2RlKTtcbiA4NzM6XHRcbiA4NzQ6XHRcdGlmIChyYnByZXYpXG4gODc1Olx0XHRcdHJldHVybiByYl9lbnRyeV9ycShyYnByZXYpO1xuIDg3NjpcdFxuIDg3NzpcdFx0cmV0dXJuIE5VTEw7XG4gODc4Olx0fVxuIDg3OTpcdEVYUE9SVF9TWU1CT0woZWx2X3JiX2Zvcm1lcl9yZXF1ZXN0KTtcbiA4ODA6XHRcbiA4ODE6XHRzdHJ1Y3QgcmVxdWVzdCAqZWx2X3JiX2xhdHRlcl9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxuIDg4MjpcdFx0XHRcdFx0ICAgICAgc3RydWN0IHJlcXVlc3QgKnJxKVxuIDg4MzpcdHtcbiA4ODQ6XHRcdHN0cnVjdCByYl9ub2RlICpyYm5leHQgPSByYl9uZXh0KFx1MDAyNnJxLVx1MDAzZXJiX25vZGUpO1xuIDg4NTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAxOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzIKCQkJCQkJCW91dHB1dDogODcKCQkJCQkJCXRob3VnaHRzOiAyNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJL08gU2NoZWR1bGVyIExvY2tpbmcgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgYSB2ZXJ5IHNwZWNpZmljIGNoYW5nZSB3aXRoaW4gdGhlIGJsb2NrIGxheWVyLiBJdCYjMzk7cyB0YXJnZXRpbmcgYGVsdl9pb3NjaGVkX3N0b3JlYCBhbmQgbW9kaWZ5aW5nIHRoZSBsb2NraW5nIG1lY2hhbmlzbSB1c2VkIHdoZW4gc3dpdGNoaW5nIHRoZSBJL08gc2NoZWR1bGVyIHRocm91Z2ggc3lzZnMuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgc3dhcHBpbmcgb3V0IGEgcmVhZCBsb2NrIChgZG93bl9yZWFkX3RyeWxvY2tgLCBgdXBfcmVhZGApIGZvciBhIHdyaXRlIGxvY2sgKGBkb3duX3dyaXRlX3RyeWxvY2tgLCBgdXBfd3JpdGVgKSBvbiBgc2V0LSZndDt1cGRhdGVfbnJfaHdxX2xvY2tgLiBUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdG8gcHJldmVudCBjb25jdXJyZW50IGVsZXZhdG9yIHN3aXRjaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFpbWVkIGF0IGVuc3VyaW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIEkvTyBzY2hlZHVsZXIgc3RhdGUuCgpNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0aGF0IHRoaXMgaXMgYSBzbWFydCBtb3ZlIOKAkyBhIHdyaXRlIGxvY2sgbWFrZXMgc2Vuc2UgdG8gc2VyaWFsaXplIHRoZXNlIG9wZXJhdGlvbnMuIFRoZSBjb2RlIGhhcyB0byBlbnN1cmUgdGhhdCBhbiBlbGV2YXRvciBjaGFuZ2Ugd29uJiMzOTt0IGhhcHBlbiBjb25jdXJyZW50bHkgd2l0aCBhbnkgb3RoZXIgb3BlcmF0aW9uLgoKTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgdGhlIGZvY3VzIHN5bWJvbHMgY2hvc2VuIGFyZSBhcHByb3ByaWF0ZS4gYGVsZXZhdG9yX2NoYW5nZWAgaXMgbGlzdGVkLiBJIHNob3VsZCBjaGVjayB0aGF0IGBlbGV2YXRvcl9jaGFuZ2VgIGlzIGNvcnJlY3RseSB0aWVkIHRvIHRoZSBwbGFjZSBpbiB0aGUgY29kZSB3aGVyZSB0aGUgbG9jayBpcyB1c2VkLiBZZXMsIGBlbGV2YXRvcl9jaGFuZ2VgIGlzIGNhbGxlZCBkaXJlY3RseSBieSBgZWx2X2lvc2NoZWRfc3RvcmVgLCBzbyBpdCYjMzk7cyBhIGdvb2QgY2hvaWNlIHRvIGZvY3VzIG9uLiBTbywgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBjbGVhciwgd2VsbC1kZWZpbmVkIHByb2JsZW0gYW5kIHRoZSBmb2N1cyBzeW1ib2xzIGFyZSB2YWxpZCBmb3IgaGlnaGxpZ2h0aW5nIHRoZSBpbXBhY3RlZCBhcmVhcy4gVGhlIGFic2VuY2Ugb2Ygc3BlY2lmaWMgY29uZmlnIHJlcXVpcmVtZW50cyBpcyBleHBlY3RlZCBmb3IgdGhpcyB0eXBlIG9mIGNoYW5nZS4gVGhlIEpTT04gc3VtbWFyeSBsb29rcyBzb2xpZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDE6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vsdl9pb3NjaGVkX3N0b3JlJiMzNDssCiAgICAmIzM0O2VsZXZhdG9yX2NoYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBsb2NraW5nIHByaW1pdGl2ZSB1c2VkIHdoZW4gc3dpdGNoaW5nIHRoZSBJL08gc2NoZWR1bGVyIHZpYSBzeXNmcywgcmVwbGFjaW5nIGEgcmVhZCBsb2NrIHdpdGggYSB3cml0ZSBsb2NrIHRvIHByZXZlbnQgY29uY3VycmVudCBlbGV2YXRvciBzd2l0Y2hlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBibG9jayBsYXllci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbHZfaW9zY2hlZF9zdG9yZSYjMzQ7LAogICAgJiMzNDtlbGV2YXRvcl9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbG9ja2luZyBwcmltaXRpdmUgdXNlZCB3aGVuIHN3aXRjaGluZyB0aGUgSS9PIHNjaGVkdWxlciB2aWEgc3lzZnMsIHJlcGxhY2luZyBhIHJlYWQgbG9jayB3aXRoIGEgd3JpdGUgbG9jayB0byBwcmV2ZW50IGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYmxvY2sgbGF5ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMTowMTowMi4zNzIzNjgzNzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTcwNjQwOTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbHZfaW9zY2hlZF9zdG9yZVwiLFxuICAgIFwiZWxldmF0b3JfY2hhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbG9ja2luZyBwcmltaXRpdmUgdXNlZCB3aGVuIHN3aXRjaGluZyB0aGUgSS9PIHNjaGVkdWxlciB2aWEgc3lzZnMsIHJlcGxhY2luZyBhIHJlYWQgbG9jayB3aXRoIGEgd3JpdGUgbG9jayB0byBwcmV2ZW50IGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYmxvY2sgbGF5ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAxOjAxOjAyLjM3MjM3NTgzNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxNjEwMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDMzZTA4ZGJkNWRjYTMyNDc1ZWNlYmQ4Y2VkNDM2OTMxMDU4MDUwNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAwMTowMTowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9ibG9jay9lbGV2YXRvci5jIGIvYmxvY2svZWxldmF0b3IuY1xcbmluZGV4IDNiY2QzN2MyYWEzNDAxLi4yMTYxYjZlZWE2ODBjYSAxMDA2NDRcXG4tLS0gYS9ibG9jay9lbGV2YXRvci5jXFxuKysrIGIvYmxvY2svZWxldmF0b3IuY1xcbkBAIC04MTIsOCArODEyLDEzIEBAIHNzaXplX3QgZWx2X2lvc2NoZWRfc3RvcmUoc3RydWN0IGdlbmRpc2sgKmRpc2ssIGNvbnN0IGNoYXIgKmJ1ZixcXG4gXFx0ICogcmVmZXJlbmNlIGR1cmluZyBjb25jdXJyZW50IGRpc2sgZGVsZXRpb246XFxuIFxcdCAqICAgdXBkYXRlX25yX2h3cV9sb2NrIC1cXHUwMDNlIGtuLVxcdTAwM2VhY3RpdmUgKHZpYSBkZWxfZ2VuZGlzayAtXFx1MDAzZSBrb2JqZWN0X2RlbClcXG4gXFx0ICogICBrbi1cXHUwMDNlYWN0aXZlIC1cXHUwMDNlIHVwZGF0ZV9ucl9od3FfbG9jayAodmlhIHRoaXMgc3lzZnMgd3JpdGUgcGF0aClcXG4rXFx0ICpcXG4rXFx0ICogVXNlIHRoZSB3cml0ZXIgbG9jayBpbnN0ZWFkIG9mIHRoZSByZWFkZXIgbG9jayBvZiB1cGRhdGVfbnJfaHdxX2xvY2tcXG4rXFx0ICogdG8gc2VyaWFsaXplIHRoZSB0d28tc3RhZ2UgZWxldmF0b3Igc3dpdGNoIHN0ZXBzIGluXFxuK1xcdCAqIGVsZXZhdG9yX2NoYW5nZSgpOiB0aGUgY29yZSBzd2l0Y2ggc3RlcCB1bmRlciB0aGUgZWxldmF0b3IgbG9jayBhbmRcXG4rXFx0ICogdGhlIGVsZXZhdG9yX2NoYW5nZV9kb25lKCkgc3RlcCBvdXRzaWRlIHRoZSBlbGV2YXRvciBsb2NrLlxcbiBcXHQgKi9cXG4tXFx0aWYgKCFkb3duX3JlYWRfdHJ5bG9jayhcXHUwMDI2c2V0LVxcdTAwM2V1cGRhdGVfbnJfaHdxX2xvY2spKSB7XFxuK1xcdGlmICghZG93bl93cml0ZV90cnlsb2NrKFxcdTAwMjZzZXQtXFx1MDAzZXVwZGF0ZV9ucl9od3FfbG9jaykpIHtcXG4gXFx0XFx0cmV0ID0gLUVCVVNZO1xcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbkBAIC04MjQsNyArODI5LDcgQEAgc3NpemVfdCBlbHZfaW9zY2hlZF9zdG9yZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY29uc3QgY2hhciAqYnVmLFxcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRyZXQgPSAtRU5PRU5UO1xcbiBcXHR9XFxuLVxcdHVwX3JlYWQoXFx1MDAyNnNldC1cXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKTtcXG4rXFx0dXBfd3JpdGUoXFx1MDAyNnNldC1cXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKTtcXG4gXFxuIG91dDpcXG4gXFx0aWYgKGN0eC50eXBlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMTowMTowMi45MzQ5NTg2MDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MTQzODAxMjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVsdl9pb3NjaGVkX3N0b3JlXCIsXG4gICAgXCJlbGV2YXRvcl9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBsb2NraW5nIHByaW1pdGl2ZSB1c2VkIHdoZW4gc3dpdGNoaW5nIHRoZSBJL08gc2NoZWR1bGVyIHZpYSBzeXNmcywgcmVwbGFjaW5nIGEgcmVhZCBsb2NrIHdpdGggYSB3cml0ZSBsb2NrIHRvIHByZXZlbnQgY29uY3VycmVudCBlbGV2YXRvciBzd2l0Y2hlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBibG9jayBsYXllci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0MzNlMDhkYmQ1ZGNhMzI0NzVlY2ViZDhjZWQ0MzY5MzEwNTgwNTA2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMDE6MDE6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9lbGV2YXRvci5jIGIvYmxvY2svZWxldmF0b3IuY1xuaW5kZXggM2JjZDM3YzJhYTM0MDEuLjIxNjFiNmVlYTY4MGNhIDEwMDY0NFxuLS0tIGEvYmxvY2svZWxldmF0b3IuY1xuKysrIGIvYmxvY2svZWxldmF0b3IuY1xuQEAgLTgxMiw4ICs4MTIsMTMgQEAgc3NpemVfdCBlbHZfaW9zY2hlZF9zdG9yZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY29uc3QgY2hhciAqYnVmLFxuIFx0ICogcmVmZXJlbmNlIGR1cmluZyBjb25jdXJyZW50IGRpc2sgZGVsZXRpb246XG4gXHQgKiAgIHVwZGF0ZV9ucl9od3FfbG9jayAtXHUwMDNlIGtuLVx1MDAzZWFjdGl2ZSAodmlhIGRlbF9nZW5kaXNrIC1cdTAwM2Uga29iamVjdF9kZWwpXG4gXHQgKiAgIGtuLVx1MDAzZWFjdGl2ZSAtXHUwMDNlIHVwZGF0ZV9ucl9od3FfbG9jayAodmlhIHRoaXMgc3lzZnMgd3JpdGUgcGF0aClcbitcdCAqXG4rXHQgKiBVc2UgdGhlIHdyaXRlciBsb2NrIGluc3RlYWQgb2YgdGhlIHJlYWRlciBsb2NrIG9mIHVwZGF0ZV9ucl9od3FfbG9ja1xuK1x0ICogdG8gc2VyaWFsaXplIHRoZSB0d28tc3RhZ2UgZWxldmF0b3Igc3dpdGNoIHN0ZXBzIGluXG4rXHQgKiBlbGV2YXRvcl9jaGFuZ2UoKTogdGhlIGNvcmUgc3dpdGNoIHN0ZXAgdW5kZXIgdGhlIGVsZXZhdG9yIGxvY2sgYW5kXG4rXHQgKiB0aGUgZWxldmF0b3JfY2hhbmdlX2RvbmUoKSBzdGVwIG91dHNpZGUgdGhlIGVsZXZhdG9yIGxvY2suXG4gXHQgKi9cbi1cdGlmICghZG93bl9yZWFkX3RyeWxvY2soXHUwMDI2c2V0LVx1MDAzZXVwZGF0ZV9ucl9od3FfbG9jaykpIHtcbitcdGlmICghZG93bl93cml0ZV90cnlsb2NrKFx1MDAyNnNldC1cdTAwM2V1cGRhdGVfbnJfaHdxX2xvY2spKSB7XG4gXHRcdHJldCA9IC1FQlVTWTtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5AQCAtODI0LDcgKzgyOSw3IEBAIHNzaXplX3QgZWx2X2lvc2NoZWRfc3RvcmUoc3RydWN0IGdlbmRpc2sgKmRpc2ssIGNvbnN0IGNoYXIgKmJ1ZixcbiBcdH0gZWxzZSB7XG4gXHRcdHJldCA9IC1FTk9FTlQ7XG4gXHR9XG4tXHR1cF9yZWFkKFx1MDAyNnNldC1cdTAwM2V1cGRhdGVfbnJfaHdxX2xvY2spO1xuK1x0dXBfd3JpdGUoXHUwMDI2c2V0LVx1MDAzZXVwZGF0ZV9ucl9od3FfbG9jayk7XG4gXG4gb3V0OlxuIFx0aWYgKGN0eC50eXBlKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDE6MDE6MDIuOTM0OTYwNjc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwMDE2ODU4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBMb2NraW5nIENoYW5nZSBpbiB0aGUgQmxvY2sgTGF5ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyB0aGUgcmVhZC93cml0ZSBsb2NrcyBhcm91bmQgZm9yIGBzZXQtXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrYCB3aXRoaW4gdGhlIGBlbHZfaW9zY2hlZF9zdG9yZWAgZnVuY3Rpb24gaW4gYGJsb2NrL2VsZXZhdG9yLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgY2hhbmdpbmcgYGRvd25fcmVhZF90cnlsb2NrYCB0byBgZG93bl93cml0ZV90cnlsb2NrYCBhbmQgYHVwX3JlYWRgIHRvIGB1cF93cml0ZWAuIFRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbG9ja2luZyBzY2hlbWUgd2l0aGluIHRoZSBibG9jayBsYXllciwgYW5kIEknZCBiZXQgaXQgcmVsYXRlcyBkaXJlY3RseSB0byBtYW5hZ2luZyBJL08gc2NoZWR1bGVyIGNoYW5nZXMgdGhyb3VnaCBzeXNmcy4gSXQgc2VlbXMgdGhlIGludGVudGlvbiBpcyB0byBzZXJpYWxpemUgdGhlc2Ugb3BlcmF0aW9ucyBtb3JlIGFnZ3Jlc3NpdmVseSwgcHJldmVudGluZyBjb25jdXJyZW50IGVsZXZhdG9yIHN3aXRjaGVzIG9yIG90aGVyIHdyaXRlIG9wZXJhdGlvbnMgZnJvbSBzdGVwcGluZyBvbiBlYWNoIG90aGVyLiBUaGF0J3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGNvbnRyb2wgcmVmaW5lbWVudCwgcHJvYmFibHkgYWltZWQgYXQgYXZvaWRpbmcgc29tZSBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIGRhdGEgY29ycnVwdGlvbi4gR2l2ZW4gaXRzIHBsYWNlIGluIHRoZSBibG9jayBsYXllciBhbmQgdGhlIHBvdGVudGlhbCBmb3IgSS9PIHBhdGggaXNzdWVzLCB0aGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgc2VyaW91cyBmdXp6aW5nLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBlbHZfaW9zY2hlZF9zdG9yZWAgaXRzZWxmIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBsb2NrIGNoYW5nZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgc3Vycm91bmRpbmcgY29kZS4gTGV0J3MgZGlnIGludG8gYGJsb2NrL2VsZXZhdG9yLmNgIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMTowMTowNy45MzUxMzEzMjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzMDc5NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVsdl9pb3NjaGVkX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL2VsZXZhdG9yLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svZWxldmF0b3IuYz03NzQ9c3RhdGljIHZvaWQgZWx2X2lvc2NoZWRfbG9hZF9tb2R1bGUoY29uc3QgY2hhciAqZWxldmF0b3JfbmFtZSlcXG4tLVxcbmJsb2NrL2VsZXZhdG9yLmMtNzg1LVxcbmJsb2NrL2VsZXZhdG9yLmM6Nzg2OnNzaXplX3QgZWx2X2lvc2NoZWRfc3RvcmUoc3RydWN0IGdlbmRpc2sgKmRpc2ssIGNvbnN0IGNoYXIgKmJ1ZixcXG5ibG9jay9lbGV2YXRvci5jLTc4Ny1cXHRcXHRcXHQgIHNpemVfdCBjb3VudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDE6MDE6MDguMzk4MjE1MDY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MzA0ODcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEkvTyBTY2hlZHVsZXIncyBTeXNmcyBJbnRlcmZhY2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZSBgZWx2X2lvc2NoZWRfc3RvcmVgIGZ1bmN0aW9uLiBSaWdodCwgaXQncyB0aGUgc3lzZnMgc3RvcmUgZnVuY3Rpb24gZm9yIHRoZSBJL08gc2NoZWR1bGVyIOKAkyBwcmV0dHkgc3RhbmRhcmQgc3R1ZmYgZm9yIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCBzeXNmcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IHdvcmtzIGFuZCB3aGF0IG9wdGlvbnMgaXQgZXhwb3Nlcy4gU2luY2UgaXQgZGVhbHMgd2l0aCBibG9jayBkZXZpY2VzLCBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3MuIEl0IHNlZW1zIHRvIGJlIGxvY2F0ZWQgaW4gYGJsb2NrL2VsZXZhdG9yLmNgLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGF0IHRoZSBlbGV2YXRvciBpcyBwYXJ0IG9mIHRoZSBzY2hlZHVsaW5nIHByb2Nlc3MuXG5cbkkgc2hvdWxkIGFsc28gbWFrZSBzdXJlIGBDT05GSUdfQkxPQ0tgIGlzIGVuYWJsZWQgc2luY2UgdGhhdCdzIGEgcHJlLXJlcXVpc2l0ZS4gSXQncyBhIGNvcmUgY29uZmlnLCBzbyBpdCBzaG91bGQgZ2VuZXJhbGx5IGJlIHNldC4gVG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24sIGFuZCB0byBsb29rIGZvciBmdXJ0aGVyIGRldGFpbHMgcmVnYXJkaW5nIGhvdyB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgaXMgY29tcGlsZWQsIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYGJsb2NrL01ha2VmaWxlYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGFueSByZWxldmFudCBidWlsZC10aW1lIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjYsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMTowMToxMi4xOTEyNjUxMzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNDY5NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVsZXZhdG9yLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svTWFrZWZpbGU9Nj1DT05URVhUX0FOQUxZU0lTIDo9IHlcXG5ibG9jay9NYWtlZmlsZS03LVxcbmJsb2NrL01ha2VmaWxlOjg6b2JqLXlcXHRcXHQ6PSBiZGV2Lm8gZm9wcy5vIGJpby5vIGVsZXZhdG9yLm8gYmxrLWNvcmUubyBibGstc3lzZnMubyBcXFxcXFxuYmxvY2svTWFrZWZpbGUtOS1cXHRcXHRcXHRibGstZmx1c2gubyBibGstc2V0dGluZ3MubyBibGstaW9jLm8gYmxrLW1hcC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDE6MDE6MTIuMzAzNzM4Njg3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0MTQ1MDc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBlbGV2YXRvci5vYCBCdWlsZCBhbmQgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgYGVsZXZhdG9yLm9gIGdldHMgYnVpbHQgYXV0b21hdGljYWxseSBhcyBsb25nIGFzIGBDT05GSUdfQkxPQ0tgIGlzIGVuYWJsZWQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgbm8gY29tcGxleCBkZXBlbmRlbmNpZXMgdG8gd29ycnkgYWJvdXQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIEl0J3MgYW4gYG9iai15YCBpbiB0aGUgYmxvY2sgTWFrZWZpbGUsIHNvIHRoYXQncyB0aGF0LiBOb3csIG15IGZvY3VzIGlzIG9uIGZpbmRpbmcgYSBmdXp6aW5nIGVudHJ5cG9pbnQsIGFuZCBgZWx2X2lvc2NoZWRfc3RvcmVgIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgZXllLlxuXG5XYWl0IGEgc2Vjb25kLCBpc24ndCBgZWx2X2lvc2NoZWRfc3RvcmVgIGEgc3lzZnMgc3RvcmUgZnVuY3Rpb24/IEFoLCB5ZXMsIHRoYXQncyByaWdodC4gU28sIGNhbiB3ZSBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIHRoaXMgdGhyb3VnaCBhIGZ1enplciBsaWtlIHN5emthbGxlcj8gVGhlIGJlYXV0eSBvZiBzeXprYWxsZXIgaXMgaXRzIGFiaWxpdHkgdG8gZnV6eiBzeXNmcyB3cml0ZXMuIFdlIGNhbiBkZWZpbml0ZWx5IHRhcmdldCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCB3aGljaCBpcyBhIGdyZWF0IGxlYWQuXG5cbk5vdywgbGV0J3Mgc2VlLCB3aGF0IGVsc2UgZG9lcyB0aGlzIGhhdmU/IFJpZ2h0LCB0aGUgcGF0Y2ggbWVudGlvbnMgYGVsZXZhdG9yX2NoYW5nZSgpYCBhbmQgYGVsZXZhdG9yX2NoYW5nZV9kb25lKClgLiBMZXQncyBkaWcgaW50byBgZWx2X2lvc2NoZWRfc3RvcmVgIGFuZCBzZWUgd2hhdCBpdCBhY3R1YWxseSAqZG9lcyogLSB0aGF0IHdpbGwgdGVsbCBtZSBpZiB0aG9zZSBhcmUgYWxzbyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyB0YXJnZXRzLCBvciBpZiBgZWx2X2lvc2NoZWRfc3RvcmVgIGlzIHRoZSBjZW50cmFsIHBvaW50IHRvIGZvY3VzIG9uIGZpcnN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTkyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAxOjAxOjE2LjU0NTE5MTQ3NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJibG9jay9lbGV2YXRvci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc4NixcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3ODY6XFx0c3NpemVfdCBlbHZfaW9zY2hlZF9zdG9yZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY29uc3QgY2hhciAqYnVmLFxcbiA3ODc6XFx0XFx0XFx0XFx0ICBzaXplX3QgY291bnQpXFxuIDc4ODpcXHR7XFxuIDc4OTpcXHRcXHRjaGFyIGVsZXZhdG9yX25hbWVbRUxWX05BTUVfTUFYXTtcXG4gNzkwOlxcdFxcdHN0cnVjdCBlbHZfY2hhbmdlX2N0eCBjdHggPSB7fTtcXG4gNzkxOlxcdFxcdGludCByZXQ7XFxuIDc5MjpcXHRcXHRzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGRpc2stXFx1MDAzZXF1ZXVlO1xcbiA3OTM6XFx0XFx0c3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQgPSBxLVxcdTAwM2V0YWdfc2V0O1xcbiA3OTQ6XFx0XFxuIDc5NTpcXHRcXHQvKiBNYWtlIHN1cmUgcXVldWUgaXMgbm90IGluIHRoZSBtaWRkbGUgb2YgYmVpbmcgcmVtb3ZlZCAqL1xcbiA3OTY6XFx0XFx0aWYgKCFibGtfcXVldWVfcmVnaXN0ZXJlZChxKSlcXG4gNzk3OlxcdFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiA3OTg6XFx0XFxuIDc5OTpcXHRcXHQvKlxcbiA4MDA6XFx0XFx0ICogSWYgdGhlIGF0dHJpYnV0ZSBuZWVkcyB0byBsb2FkIGEgbW9kdWxlLCBkbyBpdCBiZWZvcmUgZnJlZXppbmcgdGhlXFxuIDgwMTpcXHRcXHQgKiBxdWV1ZSB0byBlbnN1cmUgdGhhdCB0aGUgbW9kdWxlIGZpbGUgY2FuIGJlIHJlYWQgd2hlbiB0aGUgcmVxdWVzdFxcbiA4MDI6XFx0XFx0ICogcXVldWUgaXMgdGhlIG9uZSBmb3IgdGhlIGRldmljZSBzdG9yaW5nIHRoZSBtb2R1bGUgZmlsZS5cXG4gODAzOlxcdFxcdCAqL1xcbiA4MDQ6XFx0XFx0c3Ryc2NweShlbGV2YXRvcl9uYW1lLCBidWYsIHNpemVvZihlbGV2YXRvcl9uYW1lKSk7XFxuIDgwNTpcXHRcXHRjdHgubmFtZSA9IHN0cnN0cmlwKGVsZXZhdG9yX25hbWUpO1xcbiA4MDY6XFx0XFxuIDgwNzpcXHRcXHRlbHZfaW9zY2hlZF9sb2FkX21vZHVsZShjdHgubmFtZSk7XFxuIDgwODpcXHRcXHRjdHgudHlwZSA9IGVsZXZhdG9yX2ZpbmRfZ2V0KGN0eC5uYW1lKTtcXG4gODA5OlxcdFxcbiA4MTA6XFx0XFx0LypcXG4gODExOlxcdFxcdCAqIFVzZSB0cnlsb2NrIHRvIGF2b2lkIGNpcmN1bGFyIGxvY2sgZGVwZW5kZW5jeSB3aXRoIGtlcm5mcyBhY3RpdmVcXG4gODEyOlxcdFxcdCAqIHJlZmVyZW5jZSBkdXJpbmcgY29uY3VycmVudCBkaXNrIGRlbGV0aW9uOlxcbiA4MTM6XFx0XFx0ICogICB1cGRhdGVfbnJfaHdxX2xvY2sgLVxcdTAwM2Uga24tXFx1MDAzZWFjdGl2ZSAodmlhIGRlbF9nZW5kaXNrIC1cXHUwMDNlIGtvYmplY3RfZGVsKVxcbiA4MTQ6XFx0XFx0ICogICBrbi1cXHUwMDNlYWN0aXZlIC1cXHUwMDNlIHVwZGF0ZV9ucl9od3FfbG9jayAodmlhIHRoaXMgc3lzZnMgd3JpdGUgcGF0aClcXG4gODE1OlxcdFxcdCAqXFxuIDgxNjpcXHRcXHQgKiBVc2UgdGhlIHdyaXRlciBsb2NrIGluc3RlYWQgb2YgdGhlIHJlYWRlciBsb2NrIG9mIHVwZGF0ZV9ucl9od3FfbG9ja1xcbiA4MTc6XFx0XFx0ICogdG8gc2VyaWFsaXplIHRoZSB0d28tc3RhZ2UgZWxldmF0b3Igc3dpdGNoIHN0ZXBzIGluXFxuIDgxODpcXHRcXHQgKiBlbGV2YXRvcl9jaGFuZ2UoKTogdGhlIGNvcmUgc3dpdGNoIHN0ZXAgdW5kZXIgdGhlIGVsZXZhdG9yIGxvY2sgYW5kXFxuIDgxOTpcXHRcXHQgKiB0aGUgZWxldmF0b3JfY2hhbmdlX2RvbmUoKSBzdGVwIG91dHNpZGUgdGhlIGVsZXZhdG9yIGxvY2suXFxuIDgyMDpcXHRcXHQgKi9cXG4gODIxOlxcdFxcdGlmICghZG93bl93cml0ZV90cnlsb2NrKFxcdTAwMjZzZXQtXFx1MDAzZXVwZGF0ZV9ucl9od3FfbG9jaykpIHtcXG4gODIyOlxcdFxcdFxcdHJldCA9IC1FQlVTWTtcXG4gODIzOlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA4MjQ6XFx0XFx0fVxcbiA4MjU6XFx0XFx0aWYgKCFibGtfcXVldWVfbm9fZWx2X3N3aXRjaChxKSkge1xcbiA4MjY6XFx0XFx0XFx0cmV0ID0gZWxldmF0b3JfY2hhbmdlKHEsIFxcdTAwMjZjdHgpO1xcbiA4Mjc6XFx0XFx0XFx0aWYgKCFyZXQpXFxuIDgyODpcXHRcXHRcXHRcXHRyZXQgPSBjb3VudDtcXG4gODI5OlxcdFxcdH0gZWxzZSB7XFxuIDgzMDpcXHRcXHRcXHRyZXQgPSAtRU5PRU5UO1xcbiA4MzE6XFx0XFx0fVxcbiA4MzI6XFx0XFx0dXBfd3JpdGUoXFx1MDAyNnNldC1cXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKTtcXG4gODMzOlxcdFxcbiA4MzQ6XFx0b3V0OlxcbiA4MzU6XFx0XFx0aWYgKGN0eC50eXBlKVxcbiA4MzY6XFx0XFx0XFx0ZWxldmF0b3JfcHV0KGN0eC50eXBlKTtcXG4gODM3OlxcdFxcdHJldHVybiByZXQ7XFxuIDgzODpcXHR9XFxuIDgzOTpcXHRcXG4gODQwOlxcdHNzaXplX3QgZWx2X2lvc2NoZWRfc2hvdyhzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY2hhciAqbmFtZSlcXG4gODQxOlxcdHtcXG4gODQyOlxcdFxcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gZGlzay1cXHUwMDNlcXVldWU7XFxuIDg0MzpcXHRcXHRzdHJ1Y3QgZWxldmF0b3JfdHlwZSAqY3VyID0gTlVMTCwgKmU7XFxuIDg0NDpcXHRcXHRpbnQgbGVuID0gMDtcXG4gODQ1OlxcdFxcbiA4NDY6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cS1cXHUwMDNlZWxldmF0b3JfbG9jayk7XFxuIDg0NzpcXHRcXHRpZiAoIXEtXFx1MDAzZWVsZXZhdG9yKSB7XFxuIDg0ODpcXHRcXHRcXHRsZW4gKz0gc3ByaW50ZihuYW1lK2xlbiwgXFxcIltub25lXSBcXFwiKTtcXG4gODQ5OlxcdFxcdH0gZWxzZSB7XFxuIDg1MDpcXHRcXHRcXHRsZW4gKz0gc3ByaW50ZihuYW1lK2xlbiwgXFxcIm5vbmUgXFxcIik7XFxuIDg1MTpcXHRcXHRcXHRjdXIgPSBxLVxcdTAwM2VlbGV2YXRvci1cXHUwMDNldHlwZTtcXG4gODUyOlxcdFxcdH1cXG4gODUzOlxcdFxcbiA4NTQ6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZlbHZfbGlzdF9sb2NrKTtcXG4gODU1OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZSwgXFx1MDAyNmVsdl9saXN0LCBsaXN0KSB7XFxuIDg1NjpcXHRcXHRcXHRpZiAoZSA9PSBjdXIpXFxuIDg1NzpcXHRcXHRcXHRcXHRsZW4gKz0gc3ByaW50ZihuYW1lK2xlbiwgXFxcIlslc10gXFxcIiwgZS1cXHUwMDNlZWxldmF0b3JfbmFtZSk7XFxuIDg1ODpcXHRcXHRcXHRlbHNlXFxuIDg1OTpcXHRcXHRcXHRcXHRsZW4gKz0gc3ByaW50ZihuYW1lK2xlbiwgXFxcIiVzIFxcXCIsIGUtXFx1MDAzZWVsZXZhdG9yX25hbWUpO1xcbiA4NjA6XFx0XFx0fVxcbiA4NjE6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmVsdl9saXN0X2xvY2spO1xcbiA4NjI6XFx0XFxuIDg2MzpcXHRcXHRsZW4gKz0gc3ByaW50ZihuYW1lK2xlbiwgXFxcIlxcXFxuXFxcIik7XFxuIDg2NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnEtXFx1MDAzZWVsZXZhdG9yX2xvY2spO1xcbiA4NjU6XFx0XFxuIDg2NjpcXHRcXHRyZXR1cm4gbGVuO1xcbiA4Njc6XFx0fVxcbiA4Njg6XFx0XFxuIDg2OTpcXHRzdHJ1Y3QgcmVxdWVzdCAqZWx2X3JiX2Zvcm1lcl9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxcbiA4NzA6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHJlcXVlc3QgKnJxKVxcbiA4NzE6XFx0e1xcbiA4NzI6XFx0XFx0c3RydWN0IHJiX25vZGUgKnJicHJldiA9IHJiX3ByZXYoXFx1MDAyNnJxLVxcdTAwM2VyYl9ub2RlKTtcXG4gODczOlxcdFxcbiA4NzQ6XFx0XFx0aWYgKHJicHJldilcXG4gODc1OlxcdFxcdFxcdHJldHVybiByYl9lbnRyeV9ycShyYnByZXYpO1xcbiA4NzY6XFx0XFxuIDg3NzpcXHRcXHRyZXR1cm4gTlVMTDtcXG4gODc4OlxcdH1cXG4gODc5OlxcdEVYUE9SVF9TWU1CT0woZWx2X3JiX2Zvcm1lcl9yZXF1ZXN0KTtcXG4gODgwOlxcdFxcbiA4ODE6XFx0c3RydWN0IHJlcXVlc3QgKmVsdl9yYl9sYXR0ZXJfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSxcXG4gODgyOlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCByZXF1ZXN0ICpycSlcXG4gODgzOlxcdHtcXG4gODg0OlxcdFxcdHN0cnVjdCByYl9ub2RlICpyYm5leHQgPSByYl9uZXh0KFxcdTAwMjZycS1cXHUwMDNlcmJfbm9kZSk7XFxuIDg4NTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDE6MDE6MTYuNTQ1MzE1Mjc0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUzMzM4NTc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEkvTyBTY2hlZHVsZXIgTG9ja2luZyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBhIHZlcnkgc3BlY2lmaWMgY2hhbmdlIHdpdGhpbiB0aGUgYmxvY2sgbGF5ZXIuIEl0J3MgdGFyZ2V0aW5nIGBlbHZfaW9zY2hlZF9zdG9yZWAgYW5kIG1vZGlmeWluZyB0aGUgbG9ja2luZyBtZWNoYW5pc20gdXNlZCB3aGVuIHN3aXRjaGluZyB0aGUgSS9PIHNjaGVkdWxlciB0aHJvdWdoIHN5c2ZzLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgc3dhcHBpbmcgb3V0IGEgcmVhZCBsb2NrIChgZG93bl9yZWFkX3RyeWxvY2tgLCBgdXBfcmVhZGApIGZvciBhIHdyaXRlIGxvY2sgKGBkb3duX3dyaXRlX3RyeWxvY2tgLCBgdXBfd3JpdGVgKSBvbiBgc2V0LVx1MDAzZXVwZGF0ZV9ucl9od3FfbG9ja2AuIFRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkOiB0byBwcmV2ZW50IGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWltZWQgYXQgZW5zdXJpbmcgdGhlIGludGVncml0eSBvZiB0aGUgSS9PIHNjaGVkdWxlciBzdGF0ZS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdGhhdCB0aGlzIGlzIGEgc21hcnQgbW92ZSDigJMgYSB3cml0ZSBsb2NrIG1ha2VzIHNlbnNlIHRvIHNlcmlhbGl6ZSB0aGVzZSBvcGVyYXRpb25zLiBUaGUgY29kZSBoYXMgdG8gZW5zdXJlIHRoYXQgYW4gZWxldmF0b3IgY2hhbmdlIHdvbid0IGhhcHBlbiBjb25jdXJyZW50bHkgd2l0aCBhbnkgb3RoZXIgb3BlcmF0aW9uLlxuXG5Ob3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCB0aGUgZm9jdXMgc3ltYm9scyBjaG9zZW4gYXJlIGFwcHJvcHJpYXRlLiBgZWxldmF0b3JfY2hhbmdlYCBpcyBsaXN0ZWQuIEkgc2hvdWxkIGNoZWNrIHRoYXQgYGVsZXZhdG9yX2NoYW5nZWAgaXMgY29ycmVjdGx5IHRpZWQgdG8gdGhlIHBsYWNlIGluIHRoZSBjb2RlIHdoZXJlIHRoZSBsb2NrIGlzIHVzZWQuIFllcywgYGVsZXZhdG9yX2NoYW5nZWAgaXMgY2FsbGVkIGRpcmVjdGx5IGJ5IGBlbHZfaW9zY2hlZF9zdG9yZWAsIHNvIGl0J3MgYSBnb29kIGNob2ljZSB0byBmb2N1cyBvbi4gU28sIHRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgY2xlYXIsIHdlbGwtZGVmaW5lZCBwcm9ibGVtIGFuZCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgdmFsaWQgZm9yIGhpZ2hsaWdodGluZyB0aGUgaW1wYWN0ZWQgYXJlYXMuIFRoZSBhYnNlbmNlIG9mIHNwZWNpZmljIGNvbmZpZyByZXF1aXJlbWVudHMgaXMgZXhwZWN0ZWQgZm9yIHRoaXMgdHlwZSBvZiBjaGFuZ2UuIFRoZSBKU09OIHN1bW1hcnkgbG9va3Mgc29saWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MzIsIk91dHB1dFRva2VucyI6ODcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMTowMToyMi4wNzg3MDM1OTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzM4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVsdl9pb3NjaGVkX3N0b3JlXCIsXG4gICAgXCJlbGV2YXRvcl9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBsb2NraW5nIHByaW1pdGl2ZSB1c2VkIHdoZW4gc3dpdGNoaW5nIHRoZSBJL08gc2NoZWR1bGVyIHZpYSBzeXNmcywgcmVwbGFjaW5nIGEgcmVhZCBsb2NrIHdpdGggYSB3cml0ZSBsb2NrIHRvIHByZXZlbnQgY29uY3VycmVudCBlbGV2YXRvciBzd2l0Y2hlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBibG9jayBsYXllci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbHZfaW9zY2hlZF9zdG9yZVwiLFxuICAgIFwiZWxldmF0b3JfY2hhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbG9ja2luZyBwcmltaXRpdmUgdXNlZCB3aGVuIHN3aXRjaGluZyB0aGUgSS9PIHNjaGVkdWxlciB2aWEgc3lzZnMsIHJlcGxhY2luZyBhIHJlYWQgbG9jayB3aXRoIGEgd3JpdGUgbG9jayB0byBwcmV2ZW50IGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYmxvY2sgbGF5ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6lc4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 00:47:47 +0000 UTC FinishedAt: 2026-06-26 01:01:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4edcdefd4083ae04b1a5656f4be6cd83ae919ef4", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4edcdefd4083ae04b1a5656f4be6cd83ae919ef4", "config_name": "upstream-apparmor-kasan.config", "series_id": "73fa7f16-c35c-481e-984a-1a94178cfb64" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "elv_iosched_store", "elevator_change" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAxOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZWx2X2lvc2NoZWRfc3RvcmUmIzM0OywKICAgICYjMzQ7ZWxldmF0b3JfY2hhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGxvY2tpbmcgcHJpbWl0aXZlIHVzZWQgd2hlbiBzd2l0Y2hpbmcgdGhlIEkvTyBzY2hlZHVsZXIgdmlhIHN5c2ZzLCByZXBsYWNpbmcgYSByZWFkIGxvY2sgd2l0aCBhIHdyaXRlIGxvY2sgdG8gcHJldmVudCBjb25jdXJyZW50IGVsZXZhdG9yIHN3aXRjaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGJsb2NrIGxheWVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAxOjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDMzZTA4ZGJkNWRjYTMyNDc1ZWNlYmQ4Y2VkNDM2OTMxMDU4MDUwNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDAxOjAxOjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2VsZXZhdG9yLmMgYi9ibG9jay9lbGV2YXRvci5jXG5pbmRleCAzYmNkMzdjMmFhMzQwMS4uMjE2MWI2ZWVhNjgwY2EgMTAwNjQ0XG4tLS0gYS9ibG9jay9lbGV2YXRvci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9lbGV2YXRvci5jXG5AQCAtODEyLDggJiM0Mzs4MTIsMTMgQEAgc3NpemVfdCBlbHZfaW9zY2hlZF9zdG9yZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY29uc3QgY2hhciAqYnVmLFxuIFx0ICogcmVmZXJlbmNlIGR1cmluZyBjb25jdXJyZW50IGRpc2sgZGVsZXRpb246XG4gXHQgKiAgIHVwZGF0ZV9ucl9od3FfbG9jayAtXHUwMDNlIGtuLVx1MDAzZWFjdGl2ZSAodmlhIGRlbF9nZW5kaXNrIC1cdTAwM2Uga29iamVjdF9kZWwpXG4gXHQgKiAgIGtuLVx1MDAzZWFjdGl2ZSAtXHUwMDNlIHVwZGF0ZV9ucl9od3FfbG9jayAodmlhIHRoaXMgc3lzZnMgd3JpdGUgcGF0aClcbiYjNDM7XHQgKlxuJiM0MztcdCAqIFVzZSB0aGUgd3JpdGVyIGxvY2sgaW5zdGVhZCBvZiB0aGUgcmVhZGVyIGxvY2sgb2YgdXBkYXRlX25yX2h3cV9sb2NrXG4mIzQzO1x0ICogdG8gc2VyaWFsaXplIHRoZSB0d28tc3RhZ2UgZWxldmF0b3Igc3dpdGNoIHN0ZXBzIGluXG4mIzQzO1x0ICogZWxldmF0b3JfY2hhbmdlKCk6IHRoZSBjb3JlIHN3aXRjaCBzdGVwIHVuZGVyIHRoZSBlbGV2YXRvciBsb2NrIGFuZFxuJiM0MztcdCAqIHRoZSBlbGV2YXRvcl9jaGFuZ2VfZG9uZSgpIHN0ZXAgb3V0c2lkZSB0aGUgZWxldmF0b3IgbG9jay5cbiBcdCAqL1xuLVx0aWYgKCFkb3duX3JlYWRfdHJ5bG9jayhcdTAwMjZzZXQtXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKSkge1xuJiM0MztcdGlmICghZG93bl93cml0ZV90cnlsb2NrKFx1MDAyNnNldC1cdTAwM2V1cGRhdGVfbnJfaHdxX2xvY2spKSB7XG4gXHRcdHJldCA9IC1FQlVTWTtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5AQCAtODI0LDcgJiM0Mzs4MjksNyBAQCBzc2l6ZV90IGVsdl9pb3NjaGVkX3N0b3JlKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBjb25zdCBjaGFyICpidWYsXG4gXHR9IGVsc2Uge1xuIFx0XHRyZXQgPSAtRU5PRU5UO1xuIFx0fVxuLVx0dXBfcmVhZChcdTAwMjZzZXQtXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKTtcbiYjNDM7XHR1cF93cml0ZShcdTAwMjZzZXQtXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKTtcbiBcbiBvdXQ6XG4gXHRpZiAoY3R4LnR5cGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDE6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbHZfaW9zY2hlZF9zdG9yZSYjMzQ7LAogICAgJiMzNDtlbGV2YXRvcl9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbG9ja2luZyBwcmltaXRpdmUgdXNlZCB3aGVuIHN3aXRjaGluZyB0aGUgSS9PIHNjaGVkdWxlciB2aWEgc3lzZnMsIHJlcGxhY2luZyBhIHJlYWQgbG9jayB3aXRoIGEgd3JpdGUgbG9jayB0byBwcmV2ZW50IGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYmxvY2sgbGF5ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQzM2UwOGRiZDVkY2EzMjQ3NWVjZWJkOGNlZDQzNjkzMTA1ODA1MDYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAwMTowMTowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2Jsb2NrL2VsZXZhdG9yLmMgYi9ibG9jay9lbGV2YXRvci5jCmluZGV4IDNiY2QzN2MyYWEzNDAxLi4yMTYxYjZlZWE2ODBjYSAxMDA2NDQKLS0tIGEvYmxvY2svZWxldmF0b3IuYwomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9lbGV2YXRvci5jCkBAIC04MTIsOCAmIzQzOzgxMiwxMyBAQCBzc2l6ZV90IGVsdl9pb3NjaGVkX3N0b3JlKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBjb25zdCBjaGFyICpidWYsCiAJICogcmVmZXJlbmNlIGR1cmluZyBjb25jdXJyZW50IGRpc2sgZGVsZXRpb246CiAJICogICB1cGRhdGVfbnJfaHdxX2xvY2sgLSZndDsga24tJmd0O2FjdGl2ZSAodmlhIGRlbF9nZW5kaXNrIC0mZ3Q7IGtvYmplY3RfZGVsKQogCSAqICAga24tJmd0O2FjdGl2ZSAtJmd0OyB1cGRhdGVfbnJfaHdxX2xvY2sgKHZpYSB0aGlzIHN5c2ZzIHdyaXRlIHBhdGgpCiYjNDM7CSAqCiYjNDM7CSAqIFVzZSB0aGUgd3JpdGVyIGxvY2sgaW5zdGVhZCBvZiB0aGUgcmVhZGVyIGxvY2sgb2YgdXBkYXRlX25yX2h3cV9sb2NrCiYjNDM7CSAqIHRvIHNlcmlhbGl6ZSB0aGUgdHdvLXN0YWdlIGVsZXZhdG9yIHN3aXRjaCBzdGVwcyBpbgomIzQzOwkgKiBlbGV2YXRvcl9jaGFuZ2UoKTogdGhlIGNvcmUgc3dpdGNoIHN0ZXAgdW5kZXIgdGhlIGVsZXZhdG9yIGxvY2sgYW5kCiYjNDM7CSAqIHRoZSBlbGV2YXRvcl9jaGFuZ2VfZG9uZSgpIHN0ZXAgb3V0c2lkZSB0aGUgZWxldmF0b3IgbG9jay4KIAkgKi8KLQlpZiAoIWRvd25fcmVhZF90cnlsb2NrKCZhbXA7c2V0LSZndDt1cGRhdGVfbnJfaHdxX2xvY2spKSB7CiYjNDM7CWlmICghZG93bl93cml0ZV90cnlsb2NrKCZhbXA7c2V0LSZndDt1cGRhdGVfbnJfaHdxX2xvY2spKSB7CiAJCXJldCA9IC1FQlVTWTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtODI0LDcgJiM0Mzs4MjksNyBAQCBzc2l6ZV90IGVsdl9pb3NjaGVkX3N0b3JlKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBjb25zdCBjaGFyICpidWYsCiAJfSBlbHNlIHsKIAkJcmV0ID0gLUVOT0VOVDsKIAl9Ci0JdXBfcmVhZCgmYW1wO3NldC0mZ3Q7dXBkYXRlX25yX2h3cV9sb2NrKTsKJiM0MzsJdXBfd3JpdGUoJmFtcDtzZXQtJmd0O3VwZGF0ZV9ucl9od3FfbG9jayk7CiAKIG91dDoKIAlpZiAoY3R4LnR5cGUpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAxOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTG9ja2luZyBDaGFuZ2UgaW4gdGhlIEJsb2NrIExheWVyKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSByZWFkL3dyaXRlIGxvY2tzIGFyb3VuZCBmb3IgYHNldC0mZ3Q7dXBkYXRlX25yX2h3cV9sb2NrYCB3aXRoaW4gdGhlIGBlbHZfaW9zY2hlZF9zdG9yZWAgZnVuY3Rpb24gaW4gYGJsb2NrL2VsZXZhdG9yLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3JlIGNoYW5naW5nIGBkb3duX3JlYWRfdHJ5bG9ja2AgdG8gYGRvd25fd3JpdGVfdHJ5bG9ja2AgYW5kIGB1cF9yZWFkYCB0byBgdXBfd3JpdGVgLiBUaGlzIGNsZWFybHkgaW5kaWNhdGVzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGxvY2tpbmcgc2NoZW1lIHdpdGhpbiB0aGUgYmxvY2sgbGF5ZXIsIGFuZCBJJiMzOTtkIGJldCBpdCByZWxhdGVzIGRpcmVjdGx5IHRvIG1hbmFnaW5nIEkvTyBzY2hlZHVsZXIgY2hhbmdlcyB0aHJvdWdoIHN5c2ZzLiBJdCBzZWVtcyB0aGUgaW50ZW50aW9uIGlzIHRvIHNlcmlhbGl6ZSB0aGVzZSBvcGVyYXRpb25zIG1vcmUgYWdncmVzc2l2ZWx5LCBwcmV2ZW50aW5nIGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMgb3Igb3RoZXIgd3JpdGUgb3BlcmF0aW9ucyBmcm9tIHN0ZXBwaW5nIG9uIGVhY2ggb3RoZXIuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGNvbnRyb2wgcmVmaW5lbWVudCwgcHJvYmFibHkgYWltZWQgYXQgYXZvaWRpbmcgc29tZSBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIGRhdGEgY29ycnVwdGlvbi4gR2l2ZW4gaXRzIHBsYWNlIGluIHRoZSBibG9jayBsYXllciBhbmQgdGhlIHBvdGVudGlhbCBmb3IgSS9PIHBhdGggaXNzdWVzLCB0aGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgc2VyaW91cyBmdXp6aW5nLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBlbHZfaW9zY2hlZF9zdG9yZWAgaXRzZWxmIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBsb2NrIGNoYW5nZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgc3Vycm91bmRpbmcgY29kZS4gTGV0JiMzOTtzIGRpZyBpbnRvIGBibG9jay9lbGV2YXRvci5jYCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbHZfaW9zY2hlZF9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL2VsZXZhdG9yLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svZWxldmF0b3IuYz03NzQ9c3RhdGljIHZvaWQgZWx2X2lvc2NoZWRfbG9hZF9tb2R1bGUoY29uc3QgY2hhciAqZWxldmF0b3JfbmFtZSlcbi0tXG5ibG9jay9lbGV2YXRvci5jLTc4NS1cbmJsb2NrL2VsZXZhdG9yLmM6Nzg2OnNzaXplX3QgZWx2X2lvc2NoZWRfc3RvcmUoc3RydWN0IGdlbmRpc2sgKmRpc2ssIGNvbnN0IGNoYXIgKmJ1ZixcbmJsb2NrL2VsZXZhdG9yLmMtNzg3LVx0XHRcdCAgc2l6ZV90IGNvdW50KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAxOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEkvTyBTY2hlZHVsZXImIzM5O3MgU3lzZnMgSW50ZXJmYWNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBgZWx2X2lvc2NoZWRfc3RvcmVgIGZ1bmN0aW9uLiBSaWdodCwgaXQmIzM5O3MgdGhlIHN5c2ZzIHN0b3JlIGZ1bmN0aW9uIGZvciB0aGUgSS9PIHNjaGVkdWxlciDigJMgcHJldHR5IHN0YW5kYXJkIHN0dWZmIGZvciBjb25maWd1cmF0aW9uIHRocm91Z2ggc3lzZnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCB3b3JrcyBhbmQgd2hhdCBvcHRpb25zIGl0IGV4cG9zZXMuIFNpbmNlIGl0IGRlYWxzIHdpdGggYmxvY2sgZGV2aWNlcywgSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgc3BlY2lhbGl6ZWQgY29uZmlncy4gSXQgc2VlbXMgdG8gYmUgbG9jYXRlZCBpbiBgYmxvY2svZWxldmF0b3IuY2AuIFRoYXQgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoYXQgdGhlIGVsZXZhdG9yIGlzIHBhcnQgb2YgdGhlIHNjaGVkdWxpbmcgcHJvY2Vzcy4KCkkgc2hvdWxkIGFsc28gbWFrZSBzdXJlIGBDT05GSUdfQkxPQ0tgIGlzIGVuYWJsZWQgc2luY2UgdGhhdCYjMzk7cyBhIHByZS1yZXF1aXNpdGUuIEl0JiMzOTtzIGEgY29yZSBjb25maWcsIHNvIGl0IHNob3VsZCBnZW5lcmFsbHkgYmUgc2V0LiBUbyBjb25maXJtIHRoaXMgYXNzdW1wdGlvbiwgYW5kIHRvIGxvb2sgZm9yIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgaG93IHRoaXMgcGFydCBvZiB0aGUgY29kZSBpcyBjb21waWxlZCwgSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYGJsb2NrL01ha2VmaWxlYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGFueSByZWxldmFudCBidWlsZC10aW1lIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDE6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZWxldmF0b3IubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL01ha2VmaWxlPTY9Q09OVEVYVF9BTkFMWVNJUyA6PSB5XG5ibG9jay9NYWtlZmlsZS03LVxuYmxvY2svTWFrZWZpbGU6ODpvYmoteVx0XHQ6PSBiZGV2Lm8gZm9wcy5vIGJpby5vIGVsZXZhdG9yLm8gYmxrLWNvcmUubyBibGstc3lzZnMubyBcXFxuYmxvY2svTWFrZWZpbGUtOS1cdFx0XHRibGstZmx1c2gubyBibGstc2V0dGluZ3MubyBibGstaW9jLm8gYmxrLW1hcC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBlbGV2YXRvci5vYCBCdWlsZCBhbmQgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMsIGBlbGV2YXRvci5vYCBnZXRzIGJ1aWx0IGF1dG9tYXRpY2FsbHkgYXMgbG9uZyBhcyBgQ09ORklHX0JMT0NLYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgbm8gY29tcGxleCBkZXBlbmRlbmNpZXMgdG8gd29ycnkgYWJvdXQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIGFuIGBvYmoteWAgaW4gdGhlIGJsb2NrIE1ha2VmaWxlLCBzbyB0aGF0JiMzOTtzIHRoYXQuIE5vdywgbXkgZm9jdXMgaXMgb24gZmluZGluZyBhIGZ1enppbmcgZW50cnlwb2ludCwgYW5kIGBlbHZfaW9zY2hlZF9zdG9yZWAgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUuCgpXYWl0IGEgc2Vjb25kLCBpc24mIzM5O3QgYGVsdl9pb3NjaGVkX3N0b3JlYCBhIHN5c2ZzIHN0b3JlIGZ1bmN0aW9uPyBBaCwgeWVzLCB0aGF0JiMzOTtzIHJpZ2h0LiBTbywgY2FuIHdlIGRpcmVjdGx5IGludGVyYWN0IHdpdGggdGhpcyB0aHJvdWdoIGEgZnV6emVyIGxpa2Ugc3l6a2FsbGVyPyBUaGUgYmVhdXR5IG9mIHN5emthbGxlciBpcyBpdHMgYWJpbGl0eSB0byBmdXp6IHN5c2ZzIHdyaXRlcy4gV2UgY2FuIGRlZmluaXRlbHkgdGFyZ2V0IHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIHdoaWNoIGlzIGEgZ3JlYXQgbGVhZC4KCk5vdywgbGV0JiMzOTtzIHNlZSwgd2hhdCBlbHNlIGRvZXMgdGhpcyBoYXZlPyBSaWdodCwgdGhlIHBhdGNoIG1lbnRpb25zIGBlbGV2YXRvcl9jaGFuZ2UoKWAgYW5kIGBlbGV2YXRvcl9jaGFuZ2VfZG9uZSgpYC4gTGV0JiMzOTtzIGRpZyBpbnRvIGBlbHZfaW9zY2hlZF9zdG9yZWAgYW5kIHNlZSB3aGF0IGl0IGFjdHVhbGx5ICpkb2VzKiAtIHRoYXQgd2lsbCB0ZWxsIG1lIGlmIHRob3NlIGFyZSBhbHNvIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIHRhcmdldHMsIG9yIGlmIGBlbHZfaW9zY2hlZF9zdG9yZWAgaXMgdGhlIGNlbnRyYWwgcG9pbnQgdG8gZm9jdXMgb24gZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDE6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtibG9jay9lbGV2YXRvci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzg2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzg2Olx0c3NpemVfdCBlbHZfaW9zY2hlZF9zdG9yZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY29uc3QgY2hhciAqYnVmLFxuIDc4NzpcdFx0XHRcdCAgc2l6ZV90IGNvdW50KVxuIDc4ODpcdHtcbiA3ODk6XHRcdGNoYXIgZWxldmF0b3JfbmFtZVtFTFZfTkFNRV9NQVhdO1xuIDc5MDpcdFx0c3RydWN0IGVsdl9jaGFuZ2VfY3R4IGN0eCA9IHt9O1xuIDc5MTpcdFx0aW50IHJldDtcbiA3OTI6XHRcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gZGlzay1cdTAwM2VxdWV1ZTtcbiA3OTM6XHRcdHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0ID0gcS1cdTAwM2V0YWdfc2V0O1xuIDc5NDpcdFxuIDc5NTpcdFx0LyogTWFrZSBzdXJlIHF1ZXVlIGlzIG5vdCBpbiB0aGUgbWlkZGxlIG9mIGJlaW5nIHJlbW92ZWQgKi9cbiA3OTY6XHRcdGlmICghYmxrX3F1ZXVlX3JlZ2lzdGVyZWQocSkpXG4gNzk3Olx0XHRcdHJldHVybiAtRU5PRU5UO1xuIDc5ODpcdFxuIDc5OTpcdFx0LypcbiA4MDA6XHRcdCAqIElmIHRoZSBhdHRyaWJ1dGUgbmVlZHMgdG8gbG9hZCBhIG1vZHVsZSwgZG8gaXQgYmVmb3JlIGZyZWV6aW5nIHRoZVxuIDgwMTpcdFx0ICogcXVldWUgdG8gZW5zdXJlIHRoYXQgdGhlIG1vZHVsZSBmaWxlIGNhbiBiZSByZWFkIHdoZW4gdGhlIHJlcXVlc3RcbiA4MDI6XHRcdCAqIHF1ZXVlIGlzIHRoZSBvbmUgZm9yIHRoZSBkZXZpY2Ugc3RvcmluZyB0aGUgbW9kdWxlIGZpbGUuXG4gODAzOlx0XHQgKi9cbiA4MDQ6XHRcdHN0cnNjcHkoZWxldmF0b3JfbmFtZSwgYnVmLCBzaXplb2YoZWxldmF0b3JfbmFtZSkpO1xuIDgwNTpcdFx0Y3R4Lm5hbWUgPSBzdHJzdHJpcChlbGV2YXRvcl9uYW1lKTtcbiA4MDY6XHRcbiA4MDc6XHRcdGVsdl9pb3NjaGVkX2xvYWRfbW9kdWxlKGN0eC5uYW1lKTtcbiA4MDg6XHRcdGN0eC50eXBlID0gZWxldmF0b3JfZmluZF9nZXQoY3R4Lm5hbWUpO1xuIDgwOTpcdFxuIDgxMDpcdFx0LypcbiA4MTE6XHRcdCAqIFVzZSB0cnlsb2NrIHRvIGF2b2lkIGNpcmN1bGFyIGxvY2sgZGVwZW5kZW5jeSB3aXRoIGtlcm5mcyBhY3RpdmVcbiA4MTI6XHRcdCAqIHJlZmVyZW5jZSBkdXJpbmcgY29uY3VycmVudCBkaXNrIGRlbGV0aW9uOlxuIDgxMzpcdFx0ICogICB1cGRhdGVfbnJfaHdxX2xvY2sgLVx1MDAzZSBrbi1cdTAwM2VhY3RpdmUgKHZpYSBkZWxfZ2VuZGlzayAtXHUwMDNlIGtvYmplY3RfZGVsKVxuIDgxNDpcdFx0ICogICBrbi1cdTAwM2VhY3RpdmUgLVx1MDAzZSB1cGRhdGVfbnJfaHdxX2xvY2sgKHZpYSB0aGlzIHN5c2ZzIHdyaXRlIHBhdGgpXG4gODE1Olx0XHQgKlxuIDgxNjpcdFx0ICogVXNlIHRoZSB3cml0ZXIgbG9jayBpbnN0ZWFkIG9mIHRoZSByZWFkZXIgbG9jayBvZiB1cGRhdGVfbnJfaHdxX2xvY2tcbiA4MTc6XHRcdCAqIHRvIHNlcmlhbGl6ZSB0aGUgdHdvLXN0YWdlIGVsZXZhdG9yIHN3aXRjaCBzdGVwcyBpblxuIDgxODpcdFx0ICogZWxldmF0b3JfY2hhbmdlKCk6IHRoZSBjb3JlIHN3aXRjaCBzdGVwIHVuZGVyIHRoZSBlbGV2YXRvciBsb2NrIGFuZFxuIDgxOTpcdFx0ICogdGhlIGVsZXZhdG9yX2NoYW5nZV9kb25lKCkgc3RlcCBvdXRzaWRlIHRoZSBlbGV2YXRvciBsb2NrLlxuIDgyMDpcdFx0ICovXG4gODIxOlx0XHRpZiAoIWRvd25fd3JpdGVfdHJ5bG9jayhcdTAwMjZzZXQtXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKSkge1xuIDgyMjpcdFx0XHRyZXQgPSAtRUJVU1k7XG4gODIzOlx0XHRcdGdvdG8gb3V0O1xuIDgyNDpcdFx0fVxuIDgyNTpcdFx0aWYgKCFibGtfcXVldWVfbm9fZWx2X3N3aXRjaChxKSkge1xuIDgyNjpcdFx0XHRyZXQgPSBlbGV2YXRvcl9jaGFuZ2UocSwgXHUwMDI2Y3R4KTtcbiA4Mjc6XHRcdFx0aWYgKCFyZXQpXG4gODI4Olx0XHRcdFx0cmV0ID0gY291bnQ7XG4gODI5Olx0XHR9IGVsc2Uge1xuIDgzMDpcdFx0XHRyZXQgPSAtRU5PRU5UO1xuIDgzMTpcdFx0fVxuIDgzMjpcdFx0dXBfd3JpdGUoXHUwMDI2c2V0LVx1MDAzZXVwZGF0ZV9ucl9od3FfbG9jayk7XG4gODMzOlx0XG4gODM0Olx0b3V0OlxuIDgzNTpcdFx0aWYgKGN0eC50eXBlKVxuIDgzNjpcdFx0XHRlbGV2YXRvcl9wdXQoY3R4LnR5cGUpO1xuIDgzNzpcdFx0cmV0dXJuIHJldDtcbiA4Mzg6XHR9XG4gODM5Olx0XG4gODQwOlx0c3NpemVfdCBlbHZfaW9zY2hlZF9zaG93KHN0cnVjdCBnZW5kaXNrICpkaXNrLCBjaGFyICpuYW1lKVxuIDg0MTpcdHtcbiA4NDI6XHRcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gZGlzay1cdTAwM2VxdWV1ZTtcbiA4NDM6XHRcdHN0cnVjdCBlbGV2YXRvcl90eXBlICpjdXIgPSBOVUxMLCAqZTtcbiA4NDQ6XHRcdGludCBsZW4gPSAwO1xuIDg0NTpcdFxuIDg0NjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZxLVx1MDAzZWVsZXZhdG9yX2xvY2spO1xuIDg0NzpcdFx0aWYgKCFxLVx1MDAzZWVsZXZhdG9yKSB7XG4gODQ4Olx0XHRcdGxlbiAmIzQzOz0gc3ByaW50ZihuYW1lJiM0MztsZW4sIFwmIzM0O1tub25lXSBcJiMzNDspO1xuIDg0OTpcdFx0fSBlbHNlIHtcbiA4NTA6XHRcdFx0bGVuICYjNDM7PSBzcHJpbnRmKG5hbWUmIzQzO2xlbiwgXCYjMzQ7bm9uZSBcJiMzNDspO1xuIDg1MTpcdFx0XHRjdXIgPSBxLVx1MDAzZWVsZXZhdG9yLVx1MDAzZXR5cGU7XG4gODUyOlx0XHR9XG4gODUzOlx0XG4gODU0Olx0XHRzcGluX2xvY2soXHUwMDI2ZWx2X2xpc3RfbG9jayk7XG4gODU1Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGUsIFx1MDAyNmVsdl9saXN0LCBsaXN0KSB7XG4gODU2Olx0XHRcdGlmIChlID09IGN1cilcbiA4NTc6XHRcdFx0XHRsZW4gJiM0Mzs9IHNwcmludGYobmFtZSYjNDM7bGVuLCBcJiMzNDtbJXNdIFwmIzM0OywgZS1cdTAwM2VlbGV2YXRvcl9uYW1lKTtcbiA4NTg6XHRcdFx0ZWxzZVxuIDg1OTpcdFx0XHRcdGxlbiAmIzQzOz0gc3ByaW50ZihuYW1lJiM0MztsZW4sIFwmIzM0OyVzIFwmIzM0OywgZS1cdTAwM2VlbGV2YXRvcl9uYW1lKTtcbiA4NjA6XHRcdH1cbiA4NjE6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmVsdl9saXN0X2xvY2spO1xuIDg2MjpcdFxuIDg2MzpcdFx0bGVuICYjNDM7PSBzcHJpbnRmKG5hbWUmIzQzO2xlbiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiA4NjQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZxLVx1MDAzZWVsZXZhdG9yX2xvY2spO1xuIDg2NTpcdFxuIDg2NjpcdFx0cmV0dXJuIGxlbjtcbiA4Njc6XHR9XG4gODY4Olx0XG4gODY5Olx0c3RydWN0IHJlcXVlc3QgKmVsdl9yYl9mb3JtZXJfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSxcbiA4NzA6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCByZXF1ZXN0ICpycSlcbiA4NzE6XHR7XG4gODcyOlx0XHRzdHJ1Y3QgcmJfbm9kZSAqcmJwcmV2ID0gcmJfcHJldihcdTAwMjZycS1cdTAwM2VyYl9ub2RlKTtcbiA4NzM6XHRcbiA4NzQ6XHRcdGlmIChyYnByZXYpXG4gODc1Olx0XHRcdHJldHVybiByYl9lbnRyeV9ycShyYnByZXYpO1xuIDg3NjpcdFxuIDg3NzpcdFx0cmV0dXJuIE5VTEw7XG4gODc4Olx0fVxuIDg3OTpcdEVYUE9SVF9TWU1CT0woZWx2X3JiX2Zvcm1lcl9yZXF1ZXN0KTtcbiA4ODA6XHRcbiA4ODE6XHRzdHJ1Y3QgcmVxdWVzdCAqZWx2X3JiX2xhdHRlcl9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxuIDg4MjpcdFx0XHRcdFx0ICAgICAgc3RydWN0IHJlcXVlc3QgKnJxKVxuIDg4MzpcdHtcbiA4ODQ6XHRcdHN0cnVjdCByYl9ub2RlICpyYm5leHQgPSByYl9uZXh0KFx1MDAyNnJxLVx1MDAzZXJiX25vZGUpO1xuIDg4NTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAxOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzIKCQkJCQkJCW91dHB1dDogODcKCQkJCQkJCXRob3VnaHRzOiAyNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJL08gU2NoZWR1bGVyIExvY2tpbmcgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgYSB2ZXJ5IHNwZWNpZmljIGNoYW5nZSB3aXRoaW4gdGhlIGJsb2NrIGxheWVyLiBJdCYjMzk7cyB0YXJnZXRpbmcgYGVsdl9pb3NjaGVkX3N0b3JlYCBhbmQgbW9kaWZ5aW5nIHRoZSBsb2NraW5nIG1lY2hhbmlzbSB1c2VkIHdoZW4gc3dpdGNoaW5nIHRoZSBJL08gc2NoZWR1bGVyIHRocm91Z2ggc3lzZnMuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgc3dhcHBpbmcgb3V0IGEgcmVhZCBsb2NrIChgZG93bl9yZWFkX3RyeWxvY2tgLCBgdXBfcmVhZGApIGZvciBhIHdyaXRlIGxvY2sgKGBkb3duX3dyaXRlX3RyeWxvY2tgLCBgdXBfd3JpdGVgKSBvbiBgc2V0LSZndDt1cGRhdGVfbnJfaHdxX2xvY2tgLiBUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdG8gcHJldmVudCBjb25jdXJyZW50IGVsZXZhdG9yIHN3aXRjaGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFpbWVkIGF0IGVuc3VyaW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIEkvTyBzY2hlZHVsZXIgc3RhdGUuCgpNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0aGF0IHRoaXMgaXMgYSBzbWFydCBtb3ZlIOKAkyBhIHdyaXRlIGxvY2sgbWFrZXMgc2Vuc2UgdG8gc2VyaWFsaXplIHRoZXNlIG9wZXJhdGlvbnMuIFRoZSBjb2RlIGhhcyB0byBlbnN1cmUgdGhhdCBhbiBlbGV2YXRvciBjaGFuZ2Ugd29uJiMzOTt0IGhhcHBlbiBjb25jdXJyZW50bHkgd2l0aCBhbnkgb3RoZXIgb3BlcmF0aW9uLgoKTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgdGhlIGZvY3VzIHN5bWJvbHMgY2hvc2VuIGFyZSBhcHByb3ByaWF0ZS4gYGVsZXZhdG9yX2NoYW5nZWAgaXMgbGlzdGVkLiBJIHNob3VsZCBjaGVjayB0aGF0IGBlbGV2YXRvcl9jaGFuZ2VgIGlzIGNvcnJlY3RseSB0aWVkIHRvIHRoZSBwbGFjZSBpbiB0aGUgY29kZSB3aGVyZSB0aGUgbG9jayBpcyB1c2VkLiBZZXMsIGBlbGV2YXRvcl9jaGFuZ2VgIGlzIGNhbGxlZCBkaXJlY3RseSBieSBgZWx2X2lvc2NoZWRfc3RvcmVgLCBzbyBpdCYjMzk7cyBhIGdvb2QgY2hvaWNlIHRvIGZvY3VzIG9uLiBTbywgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBjbGVhciwgd2VsbC1kZWZpbmVkIHByb2JsZW0gYW5kIHRoZSBmb2N1cyBzeW1ib2xzIGFyZSB2YWxpZCBmb3IgaGlnaGxpZ2h0aW5nIHRoZSBpbXBhY3RlZCBhcmVhcy4gVGhlIGFic2VuY2Ugb2Ygc3BlY2lmaWMgY29uZmlnIHJlcXVpcmVtZW50cyBpcyBleHBlY3RlZCBmb3IgdGhpcyB0eXBlIG9mIGNoYW5nZS4gVGhlIEpTT04gc3VtbWFyeSBsb29rcyBzb2xpZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDE6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vsdl9pb3NjaGVkX3N0b3JlJiMzNDssCiAgICAmIzM0O2VsZXZhdG9yX2NoYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBsb2NraW5nIHByaW1pdGl2ZSB1c2VkIHdoZW4gc3dpdGNoaW5nIHRoZSBJL08gc2NoZWR1bGVyIHZpYSBzeXNmcywgcmVwbGFjaW5nIGEgcmVhZCBsb2NrIHdpdGggYSB3cml0ZSBsb2NrIHRvIHByZXZlbnQgY29uY3VycmVudCBlbGV2YXRvciBzd2l0Y2hlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBibG9jayBsYXllci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbHZfaW9zY2hlZF9zdG9yZSYjMzQ7LAogICAgJiMzNDtlbGV2YXRvcl9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbG9ja2luZyBwcmltaXRpdmUgdXNlZCB3aGVuIHN3aXRjaGluZyB0aGUgSS9PIHNjaGVkdWxlciB2aWEgc3lzZnMsIHJlcGxhY2luZyBhIHJlYWQgbG9jayB3aXRoIGEgd3JpdGUgbG9jayB0byBwcmV2ZW50IGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYmxvY2sgbGF5ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMTowMTowMi4zNzIzNjgzNzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTcwNjQwOTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbHZfaW9zY2hlZF9zdG9yZVwiLFxuICAgIFwiZWxldmF0b3JfY2hhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbG9ja2luZyBwcmltaXRpdmUgdXNlZCB3aGVuIHN3aXRjaGluZyB0aGUgSS9PIHNjaGVkdWxlciB2aWEgc3lzZnMsIHJlcGxhY2luZyBhIHJlYWQgbG9jayB3aXRoIGEgd3JpdGUgbG9jayB0byBwcmV2ZW50IGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYmxvY2sgbGF5ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAxOjAxOjAyLjM3MjM3NTgzNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxNjEwMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDMzZTA4ZGJkNWRjYTMyNDc1ZWNlYmQ4Y2VkNDM2OTMxMDU4MDUwNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAwMTowMTowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9ibG9jay9lbGV2YXRvci5jIGIvYmxvY2svZWxldmF0b3IuY1xcbmluZGV4IDNiY2QzN2MyYWEzNDAxLi4yMTYxYjZlZWE2ODBjYSAxMDA2NDRcXG4tLS0gYS9ibG9jay9lbGV2YXRvci5jXFxuKysrIGIvYmxvY2svZWxldmF0b3IuY1xcbkBAIC04MTIsOCArODEyLDEzIEBAIHNzaXplX3QgZWx2X2lvc2NoZWRfc3RvcmUoc3RydWN0IGdlbmRpc2sgKmRpc2ssIGNvbnN0IGNoYXIgKmJ1ZixcXG4gXFx0ICogcmVmZXJlbmNlIGR1cmluZyBjb25jdXJyZW50IGRpc2sgZGVsZXRpb246XFxuIFxcdCAqICAgdXBkYXRlX25yX2h3cV9sb2NrIC1cXHUwMDNlIGtuLVxcdTAwM2VhY3RpdmUgKHZpYSBkZWxfZ2VuZGlzayAtXFx1MDAzZSBrb2JqZWN0X2RlbClcXG4gXFx0ICogICBrbi1cXHUwMDNlYWN0aXZlIC1cXHUwMDNlIHVwZGF0ZV9ucl9od3FfbG9jayAodmlhIHRoaXMgc3lzZnMgd3JpdGUgcGF0aClcXG4rXFx0ICpcXG4rXFx0ICogVXNlIHRoZSB3cml0ZXIgbG9jayBpbnN0ZWFkIG9mIHRoZSByZWFkZXIgbG9jayBvZiB1cGRhdGVfbnJfaHdxX2xvY2tcXG4rXFx0ICogdG8gc2VyaWFsaXplIHRoZSB0d28tc3RhZ2UgZWxldmF0b3Igc3dpdGNoIHN0ZXBzIGluXFxuK1xcdCAqIGVsZXZhdG9yX2NoYW5nZSgpOiB0aGUgY29yZSBzd2l0Y2ggc3RlcCB1bmRlciB0aGUgZWxldmF0b3IgbG9jayBhbmRcXG4rXFx0ICogdGhlIGVsZXZhdG9yX2NoYW5nZV9kb25lKCkgc3RlcCBvdXRzaWRlIHRoZSBlbGV2YXRvciBsb2NrLlxcbiBcXHQgKi9cXG4tXFx0aWYgKCFkb3duX3JlYWRfdHJ5bG9jayhcXHUwMDI2c2V0LVxcdTAwM2V1cGRhdGVfbnJfaHdxX2xvY2spKSB7XFxuK1xcdGlmICghZG93bl93cml0ZV90cnlsb2NrKFxcdTAwMjZzZXQtXFx1MDAzZXVwZGF0ZV9ucl9od3FfbG9jaykpIHtcXG4gXFx0XFx0cmV0ID0gLUVCVVNZO1xcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbkBAIC04MjQsNyArODI5LDcgQEAgc3NpemVfdCBlbHZfaW9zY2hlZF9zdG9yZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY29uc3QgY2hhciAqYnVmLFxcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRyZXQgPSAtRU5PRU5UO1xcbiBcXHR9XFxuLVxcdHVwX3JlYWQoXFx1MDAyNnNldC1cXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKTtcXG4rXFx0dXBfd3JpdGUoXFx1MDAyNnNldC1cXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKTtcXG4gXFxuIG91dDpcXG4gXFx0aWYgKGN0eC50eXBlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMTowMTowMi45MzQ5NTg2MDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MTQzODAxMjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVsdl9pb3NjaGVkX3N0b3JlXCIsXG4gICAgXCJlbGV2YXRvcl9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBsb2NraW5nIHByaW1pdGl2ZSB1c2VkIHdoZW4gc3dpdGNoaW5nIHRoZSBJL08gc2NoZWR1bGVyIHZpYSBzeXNmcywgcmVwbGFjaW5nIGEgcmVhZCBsb2NrIHdpdGggYSB3cml0ZSBsb2NrIHRvIHByZXZlbnQgY29uY3VycmVudCBlbGV2YXRvciBzd2l0Y2hlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBibG9jayBsYXllci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0MzNlMDhkYmQ1ZGNhMzI0NzVlY2ViZDhjZWQ0MzY5MzEwNTgwNTA2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMDE6MDE6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9lbGV2YXRvci5jIGIvYmxvY2svZWxldmF0b3IuY1xuaW5kZXggM2JjZDM3YzJhYTM0MDEuLjIxNjFiNmVlYTY4MGNhIDEwMDY0NFxuLS0tIGEvYmxvY2svZWxldmF0b3IuY1xuKysrIGIvYmxvY2svZWxldmF0b3IuY1xuQEAgLTgxMiw4ICs4MTIsMTMgQEAgc3NpemVfdCBlbHZfaW9zY2hlZF9zdG9yZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY29uc3QgY2hhciAqYnVmLFxuIFx0ICogcmVmZXJlbmNlIGR1cmluZyBjb25jdXJyZW50IGRpc2sgZGVsZXRpb246XG4gXHQgKiAgIHVwZGF0ZV9ucl9od3FfbG9jayAtXHUwMDNlIGtuLVx1MDAzZWFjdGl2ZSAodmlhIGRlbF9nZW5kaXNrIC1cdTAwM2Uga29iamVjdF9kZWwpXG4gXHQgKiAgIGtuLVx1MDAzZWFjdGl2ZSAtXHUwMDNlIHVwZGF0ZV9ucl9od3FfbG9jayAodmlhIHRoaXMgc3lzZnMgd3JpdGUgcGF0aClcbitcdCAqXG4rXHQgKiBVc2UgdGhlIHdyaXRlciBsb2NrIGluc3RlYWQgb2YgdGhlIHJlYWRlciBsb2NrIG9mIHVwZGF0ZV9ucl9od3FfbG9ja1xuK1x0ICogdG8gc2VyaWFsaXplIHRoZSB0d28tc3RhZ2UgZWxldmF0b3Igc3dpdGNoIHN0ZXBzIGluXG4rXHQgKiBlbGV2YXRvcl9jaGFuZ2UoKTogdGhlIGNvcmUgc3dpdGNoIHN0ZXAgdW5kZXIgdGhlIGVsZXZhdG9yIGxvY2sgYW5kXG4rXHQgKiB0aGUgZWxldmF0b3JfY2hhbmdlX2RvbmUoKSBzdGVwIG91dHNpZGUgdGhlIGVsZXZhdG9yIGxvY2suXG4gXHQgKi9cbi1cdGlmICghZG93bl9yZWFkX3RyeWxvY2soXHUwMDI2c2V0LVx1MDAzZXVwZGF0ZV9ucl9od3FfbG9jaykpIHtcbitcdGlmICghZG93bl93cml0ZV90cnlsb2NrKFx1MDAyNnNldC1cdTAwM2V1cGRhdGVfbnJfaHdxX2xvY2spKSB7XG4gXHRcdHJldCA9IC1FQlVTWTtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5AQCAtODI0LDcgKzgyOSw3IEBAIHNzaXplX3QgZWx2X2lvc2NoZWRfc3RvcmUoc3RydWN0IGdlbmRpc2sgKmRpc2ssIGNvbnN0IGNoYXIgKmJ1ZixcbiBcdH0gZWxzZSB7XG4gXHRcdHJldCA9IC1FTk9FTlQ7XG4gXHR9XG4tXHR1cF9yZWFkKFx1MDAyNnNldC1cdTAwM2V1cGRhdGVfbnJfaHdxX2xvY2spO1xuK1x0dXBfd3JpdGUoXHUwMDI2c2V0LVx1MDAzZXVwZGF0ZV9ucl9od3FfbG9jayk7XG4gXG4gb3V0OlxuIFx0aWYgKGN0eC50eXBlKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDE6MDE6MDIuOTM0OTYwNjc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwMDE2ODU4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBMb2NraW5nIENoYW5nZSBpbiB0aGUgQmxvY2sgTGF5ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyB0aGUgcmVhZC93cml0ZSBsb2NrcyBhcm91bmQgZm9yIGBzZXQtXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrYCB3aXRoaW4gdGhlIGBlbHZfaW9zY2hlZF9zdG9yZWAgZnVuY3Rpb24gaW4gYGJsb2NrL2VsZXZhdG9yLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgY2hhbmdpbmcgYGRvd25fcmVhZF90cnlsb2NrYCB0byBgZG93bl93cml0ZV90cnlsb2NrYCBhbmQgYHVwX3JlYWRgIHRvIGB1cF93cml0ZWAuIFRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbG9ja2luZyBzY2hlbWUgd2l0aGluIHRoZSBibG9jayBsYXllciwgYW5kIEknZCBiZXQgaXQgcmVsYXRlcyBkaXJlY3RseSB0byBtYW5hZ2luZyBJL08gc2NoZWR1bGVyIGNoYW5nZXMgdGhyb3VnaCBzeXNmcy4gSXQgc2VlbXMgdGhlIGludGVudGlvbiBpcyB0byBzZXJpYWxpemUgdGhlc2Ugb3BlcmF0aW9ucyBtb3JlIGFnZ3Jlc3NpdmVseSwgcHJldmVudGluZyBjb25jdXJyZW50IGVsZXZhdG9yIHN3aXRjaGVzIG9yIG90aGVyIHdyaXRlIG9wZXJhdGlvbnMgZnJvbSBzdGVwcGluZyBvbiBlYWNoIG90aGVyLiBUaGF0J3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGNvbnRyb2wgcmVmaW5lbWVudCwgcHJvYmFibHkgYWltZWQgYXQgYXZvaWRpbmcgc29tZSBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIGRhdGEgY29ycnVwdGlvbi4gR2l2ZW4gaXRzIHBsYWNlIGluIHRoZSBibG9jayBsYXllciBhbmQgdGhlIHBvdGVudGlhbCBmb3IgSS9PIHBhdGggaXNzdWVzLCB0aGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgc2VyaW91cyBmdXp6aW5nLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBlbHZfaW9zY2hlZF9zdG9yZWAgaXRzZWxmIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBsb2NrIGNoYW5nZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgc3Vycm91bmRpbmcgY29kZS4gTGV0J3MgZGlnIGludG8gYGJsb2NrL2VsZXZhdG9yLmNgIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMTowMTowNy45MzUxMzEzMjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzMDc5NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVsdl9pb3NjaGVkX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL2VsZXZhdG9yLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svZWxldmF0b3IuYz03NzQ9c3RhdGljIHZvaWQgZWx2X2lvc2NoZWRfbG9hZF9tb2R1bGUoY29uc3QgY2hhciAqZWxldmF0b3JfbmFtZSlcXG4tLVxcbmJsb2NrL2VsZXZhdG9yLmMtNzg1LVxcbmJsb2NrL2VsZXZhdG9yLmM6Nzg2OnNzaXplX3QgZWx2X2lvc2NoZWRfc3RvcmUoc3RydWN0IGdlbmRpc2sgKmRpc2ssIGNvbnN0IGNoYXIgKmJ1ZixcXG5ibG9jay9lbGV2YXRvci5jLTc4Ny1cXHRcXHRcXHQgIHNpemVfdCBjb3VudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDE6MDE6MDguMzk4MjE1MDY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MzA0ODcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEkvTyBTY2hlZHVsZXIncyBTeXNmcyBJbnRlcmZhY2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZSBgZWx2X2lvc2NoZWRfc3RvcmVgIGZ1bmN0aW9uLiBSaWdodCwgaXQncyB0aGUgc3lzZnMgc3RvcmUgZnVuY3Rpb24gZm9yIHRoZSBJL08gc2NoZWR1bGVyIOKAkyBwcmV0dHkgc3RhbmRhcmQgc3R1ZmYgZm9yIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCBzeXNmcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IHdvcmtzIGFuZCB3aGF0IG9wdGlvbnMgaXQgZXhwb3Nlcy4gU2luY2UgaXQgZGVhbHMgd2l0aCBibG9jayBkZXZpY2VzLCBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3MuIEl0IHNlZW1zIHRvIGJlIGxvY2F0ZWQgaW4gYGJsb2NrL2VsZXZhdG9yLmNgLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGF0IHRoZSBlbGV2YXRvciBpcyBwYXJ0IG9mIHRoZSBzY2hlZHVsaW5nIHByb2Nlc3MuXG5cbkkgc2hvdWxkIGFsc28gbWFrZSBzdXJlIGBDT05GSUdfQkxPQ0tgIGlzIGVuYWJsZWQgc2luY2UgdGhhdCdzIGEgcHJlLXJlcXVpc2l0ZS4gSXQncyBhIGNvcmUgY29uZmlnLCBzbyBpdCBzaG91bGQgZ2VuZXJhbGx5IGJlIHNldC4gVG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24sIGFuZCB0byBsb29rIGZvciBmdXJ0aGVyIGRldGFpbHMgcmVnYXJkaW5nIGhvdyB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgaXMgY29tcGlsZWQsIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYGJsb2NrL01ha2VmaWxlYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGFueSByZWxldmFudCBidWlsZC10aW1lIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjYsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMTowMToxMi4xOTEyNjUxMzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNDY5NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVsZXZhdG9yLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svTWFrZWZpbGU9Nj1DT05URVhUX0FOQUxZU0lTIDo9IHlcXG5ibG9jay9NYWtlZmlsZS03LVxcbmJsb2NrL01ha2VmaWxlOjg6b2JqLXlcXHRcXHQ6PSBiZGV2Lm8gZm9wcy5vIGJpby5vIGVsZXZhdG9yLm8gYmxrLWNvcmUubyBibGstc3lzZnMubyBcXFxcXFxuYmxvY2svTWFrZWZpbGUtOS1cXHRcXHRcXHRibGstZmx1c2gubyBibGstc2V0dGluZ3MubyBibGstaW9jLm8gYmxrLW1hcC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDE6MDE6MTIuMzAzNzM4Njg3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0MTQ1MDc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBlbGV2YXRvci5vYCBCdWlsZCBhbmQgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgYGVsZXZhdG9yLm9gIGdldHMgYnVpbHQgYXV0b21hdGljYWxseSBhcyBsb25nIGFzIGBDT05GSUdfQkxPQ0tgIGlzIGVuYWJsZWQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgbm8gY29tcGxleCBkZXBlbmRlbmNpZXMgdG8gd29ycnkgYWJvdXQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIEl0J3MgYW4gYG9iai15YCBpbiB0aGUgYmxvY2sgTWFrZWZpbGUsIHNvIHRoYXQncyB0aGF0LiBOb3csIG15IGZvY3VzIGlzIG9uIGZpbmRpbmcgYSBmdXp6aW5nIGVudHJ5cG9pbnQsIGFuZCBgZWx2X2lvc2NoZWRfc3RvcmVgIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgZXllLlxuXG5XYWl0IGEgc2Vjb25kLCBpc24ndCBgZWx2X2lvc2NoZWRfc3RvcmVgIGEgc3lzZnMgc3RvcmUgZnVuY3Rpb24/IEFoLCB5ZXMsIHRoYXQncyByaWdodC4gU28sIGNhbiB3ZSBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIHRoaXMgdGhyb3VnaCBhIGZ1enplciBsaWtlIHN5emthbGxlcj8gVGhlIGJlYXV0eSBvZiBzeXprYWxsZXIgaXMgaXRzIGFiaWxpdHkgdG8gZnV6eiBzeXNmcyB3cml0ZXMuIFdlIGNhbiBkZWZpbml0ZWx5IHRhcmdldCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCB3aGljaCBpcyBhIGdyZWF0IGxlYWQuXG5cbk5vdywgbGV0J3Mgc2VlLCB3aGF0IGVsc2UgZG9lcyB0aGlzIGhhdmU/IFJpZ2h0LCB0aGUgcGF0Y2ggbWVudGlvbnMgYGVsZXZhdG9yX2NoYW5nZSgpYCBhbmQgYGVsZXZhdG9yX2NoYW5nZV9kb25lKClgLiBMZXQncyBkaWcgaW50byBgZWx2X2lvc2NoZWRfc3RvcmVgIGFuZCBzZWUgd2hhdCBpdCBhY3R1YWxseSAqZG9lcyogLSB0aGF0IHdpbGwgdGVsbCBtZSBpZiB0aG9zZSBhcmUgYWxzbyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyB0YXJnZXRzLCBvciBpZiBgZWx2X2lvc2NoZWRfc3RvcmVgIGlzIHRoZSBjZW50cmFsIHBvaW50IHRvIGZvY3VzIG9uIGZpcnN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTkyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAxOjAxOjE2LjU0NTE5MTQ3NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJibG9jay9lbGV2YXRvci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc4NixcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3ODY6XFx0c3NpemVfdCBlbHZfaW9zY2hlZF9zdG9yZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY29uc3QgY2hhciAqYnVmLFxcbiA3ODc6XFx0XFx0XFx0XFx0ICBzaXplX3QgY291bnQpXFxuIDc4ODpcXHR7XFxuIDc4OTpcXHRcXHRjaGFyIGVsZXZhdG9yX25hbWVbRUxWX05BTUVfTUFYXTtcXG4gNzkwOlxcdFxcdHN0cnVjdCBlbHZfY2hhbmdlX2N0eCBjdHggPSB7fTtcXG4gNzkxOlxcdFxcdGludCByZXQ7XFxuIDc5MjpcXHRcXHRzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGRpc2stXFx1MDAzZXF1ZXVlO1xcbiA3OTM6XFx0XFx0c3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQgPSBxLVxcdTAwM2V0YWdfc2V0O1xcbiA3OTQ6XFx0XFxuIDc5NTpcXHRcXHQvKiBNYWtlIHN1cmUgcXVldWUgaXMgbm90IGluIHRoZSBtaWRkbGUgb2YgYmVpbmcgcmVtb3ZlZCAqL1xcbiA3OTY6XFx0XFx0aWYgKCFibGtfcXVldWVfcmVnaXN0ZXJlZChxKSlcXG4gNzk3OlxcdFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiA3OTg6XFx0XFxuIDc5OTpcXHRcXHQvKlxcbiA4MDA6XFx0XFx0ICogSWYgdGhlIGF0dHJpYnV0ZSBuZWVkcyB0byBsb2FkIGEgbW9kdWxlLCBkbyBpdCBiZWZvcmUgZnJlZXppbmcgdGhlXFxuIDgwMTpcXHRcXHQgKiBxdWV1ZSB0byBlbnN1cmUgdGhhdCB0aGUgbW9kdWxlIGZpbGUgY2FuIGJlIHJlYWQgd2hlbiB0aGUgcmVxdWVzdFxcbiA4MDI6XFx0XFx0ICogcXVldWUgaXMgdGhlIG9uZSBmb3IgdGhlIGRldmljZSBzdG9yaW5nIHRoZSBtb2R1bGUgZmlsZS5cXG4gODAzOlxcdFxcdCAqL1xcbiA4MDQ6XFx0XFx0c3Ryc2NweShlbGV2YXRvcl9uYW1lLCBidWYsIHNpemVvZihlbGV2YXRvcl9uYW1lKSk7XFxuIDgwNTpcXHRcXHRjdHgubmFtZSA9IHN0cnN0cmlwKGVsZXZhdG9yX25hbWUpO1xcbiA4MDY6XFx0XFxuIDgwNzpcXHRcXHRlbHZfaW9zY2hlZF9sb2FkX21vZHVsZShjdHgubmFtZSk7XFxuIDgwODpcXHRcXHRjdHgudHlwZSA9IGVsZXZhdG9yX2ZpbmRfZ2V0KGN0eC5uYW1lKTtcXG4gODA5OlxcdFxcbiA4MTA6XFx0XFx0LypcXG4gODExOlxcdFxcdCAqIFVzZSB0cnlsb2NrIHRvIGF2b2lkIGNpcmN1bGFyIGxvY2sgZGVwZW5kZW5jeSB3aXRoIGtlcm5mcyBhY3RpdmVcXG4gODEyOlxcdFxcdCAqIHJlZmVyZW5jZSBkdXJpbmcgY29uY3VycmVudCBkaXNrIGRlbGV0aW9uOlxcbiA4MTM6XFx0XFx0ICogICB1cGRhdGVfbnJfaHdxX2xvY2sgLVxcdTAwM2Uga24tXFx1MDAzZWFjdGl2ZSAodmlhIGRlbF9nZW5kaXNrIC1cXHUwMDNlIGtvYmplY3RfZGVsKVxcbiA4MTQ6XFx0XFx0ICogICBrbi1cXHUwMDNlYWN0aXZlIC1cXHUwMDNlIHVwZGF0ZV9ucl9od3FfbG9jayAodmlhIHRoaXMgc3lzZnMgd3JpdGUgcGF0aClcXG4gODE1OlxcdFxcdCAqXFxuIDgxNjpcXHRcXHQgKiBVc2UgdGhlIHdyaXRlciBsb2NrIGluc3RlYWQgb2YgdGhlIHJlYWRlciBsb2NrIG9mIHVwZGF0ZV9ucl9od3FfbG9ja1xcbiA4MTc6XFx0XFx0ICogdG8gc2VyaWFsaXplIHRoZSB0d28tc3RhZ2UgZWxldmF0b3Igc3dpdGNoIHN0ZXBzIGluXFxuIDgxODpcXHRcXHQgKiBlbGV2YXRvcl9jaGFuZ2UoKTogdGhlIGNvcmUgc3dpdGNoIHN0ZXAgdW5kZXIgdGhlIGVsZXZhdG9yIGxvY2sgYW5kXFxuIDgxOTpcXHRcXHQgKiB0aGUgZWxldmF0b3JfY2hhbmdlX2RvbmUoKSBzdGVwIG91dHNpZGUgdGhlIGVsZXZhdG9yIGxvY2suXFxuIDgyMDpcXHRcXHQgKi9cXG4gODIxOlxcdFxcdGlmICghZG93bl93cml0ZV90cnlsb2NrKFxcdTAwMjZzZXQtXFx1MDAzZXVwZGF0ZV9ucl9od3FfbG9jaykpIHtcXG4gODIyOlxcdFxcdFxcdHJldCA9IC1FQlVTWTtcXG4gODIzOlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA4MjQ6XFx0XFx0fVxcbiA4MjU6XFx0XFx0aWYgKCFibGtfcXVldWVfbm9fZWx2X3N3aXRjaChxKSkge1xcbiA4MjY6XFx0XFx0XFx0cmV0ID0gZWxldmF0b3JfY2hhbmdlKHEsIFxcdTAwMjZjdHgpO1xcbiA4Mjc6XFx0XFx0XFx0aWYgKCFyZXQpXFxuIDgyODpcXHRcXHRcXHRcXHRyZXQgPSBjb3VudDtcXG4gODI5OlxcdFxcdH0gZWxzZSB7XFxuIDgzMDpcXHRcXHRcXHRyZXQgPSAtRU5PRU5UO1xcbiA4MzE6XFx0XFx0fVxcbiA4MzI6XFx0XFx0dXBfd3JpdGUoXFx1MDAyNnNldC1cXHUwMDNldXBkYXRlX25yX2h3cV9sb2NrKTtcXG4gODMzOlxcdFxcbiA4MzQ6XFx0b3V0OlxcbiA4MzU6XFx0XFx0aWYgKGN0eC50eXBlKVxcbiA4MzY6XFx0XFx0XFx0ZWxldmF0b3JfcHV0KGN0eC50eXBlKTtcXG4gODM3OlxcdFxcdHJldHVybiByZXQ7XFxuIDgzODpcXHR9XFxuIDgzOTpcXHRcXG4gODQwOlxcdHNzaXplX3QgZWx2X2lvc2NoZWRfc2hvdyhzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgY2hhciAqbmFtZSlcXG4gODQxOlxcdHtcXG4gODQyOlxcdFxcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gZGlzay1cXHUwMDNlcXVldWU7XFxuIDg0MzpcXHRcXHRzdHJ1Y3QgZWxldmF0b3JfdHlwZSAqY3VyID0gTlVMTCwgKmU7XFxuIDg0NDpcXHRcXHRpbnQgbGVuID0gMDtcXG4gODQ1OlxcdFxcbiA4NDY6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cS1cXHUwMDNlZWxldmF0b3JfbG9jayk7XFxuIDg0NzpcXHRcXHRpZiAoIXEtXFx1MDAzZWVsZXZhdG9yKSB7XFxuIDg0ODpcXHRcXHRcXHRsZW4gKz0gc3ByaW50ZihuYW1lK2xlbiwgXFxcIltub25lXSBcXFwiKTtcXG4gODQ5OlxcdFxcdH0gZWxzZSB7XFxuIDg1MDpcXHRcXHRcXHRsZW4gKz0gc3ByaW50ZihuYW1lK2xlbiwgXFxcIm5vbmUgXFxcIik7XFxuIDg1MTpcXHRcXHRcXHRjdXIgPSBxLVxcdTAwM2VlbGV2YXRvci1cXHUwMDNldHlwZTtcXG4gODUyOlxcdFxcdH1cXG4gODUzOlxcdFxcbiA4NTQ6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZlbHZfbGlzdF9sb2NrKTtcXG4gODU1OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZSwgXFx1MDAyNmVsdl9saXN0LCBsaXN0KSB7XFxuIDg1NjpcXHRcXHRcXHRpZiAoZSA9PSBjdXIpXFxuIDg1NzpcXHRcXHRcXHRcXHRsZW4gKz0gc3ByaW50ZihuYW1lK2xlbiwgXFxcIlslc10gXFxcIiwgZS1cXHUwMDNlZWxldmF0b3JfbmFtZSk7XFxuIDg1ODpcXHRcXHRcXHRlbHNlXFxuIDg1OTpcXHRcXHRcXHRcXHRsZW4gKz0gc3ByaW50ZihuYW1lK2xlbiwgXFxcIiVzIFxcXCIsIGUtXFx1MDAzZWVsZXZhdG9yX25hbWUpO1xcbiA4NjA6XFx0XFx0fVxcbiA4NjE6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmVsdl9saXN0X2xvY2spO1xcbiA4NjI6XFx0XFxuIDg2MzpcXHRcXHRsZW4gKz0gc3ByaW50ZihuYW1lK2xlbiwgXFxcIlxcXFxuXFxcIik7XFxuIDg2NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnEtXFx1MDAzZWVsZXZhdG9yX2xvY2spO1xcbiA4NjU6XFx0XFxuIDg2NjpcXHRcXHRyZXR1cm4gbGVuO1xcbiA4Njc6XFx0fVxcbiA4Njg6XFx0XFxuIDg2OTpcXHRzdHJ1Y3QgcmVxdWVzdCAqZWx2X3JiX2Zvcm1lcl9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxcbiA4NzA6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHJlcXVlc3QgKnJxKVxcbiA4NzE6XFx0e1xcbiA4NzI6XFx0XFx0c3RydWN0IHJiX25vZGUgKnJicHJldiA9IHJiX3ByZXYoXFx1MDAyNnJxLVxcdTAwM2VyYl9ub2RlKTtcXG4gODczOlxcdFxcbiA4NzQ6XFx0XFx0aWYgKHJicHJldilcXG4gODc1OlxcdFxcdFxcdHJldHVybiByYl9lbnRyeV9ycShyYnByZXYpO1xcbiA4NzY6XFx0XFxuIDg3NzpcXHRcXHRyZXR1cm4gTlVMTDtcXG4gODc4OlxcdH1cXG4gODc5OlxcdEVYUE9SVF9TWU1CT0woZWx2X3JiX2Zvcm1lcl9yZXF1ZXN0KTtcXG4gODgwOlxcdFxcbiA4ODE6XFx0c3RydWN0IHJlcXVlc3QgKmVsdl9yYl9sYXR0ZXJfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSxcXG4gODgyOlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCByZXF1ZXN0ICpycSlcXG4gODgzOlxcdHtcXG4gODg0OlxcdFxcdHN0cnVjdCByYl9ub2RlICpyYm5leHQgPSByYl9uZXh0KFxcdTAwMjZycS1cXHUwMDNlcmJfbm9kZSk7XFxuIDg4NTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDE6MDE6MTYuNTQ1MzE1Mjc0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUzMzM4NTc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEkvTyBTY2hlZHVsZXIgTG9ja2luZyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBhIHZlcnkgc3BlY2lmaWMgY2hhbmdlIHdpdGhpbiB0aGUgYmxvY2sgbGF5ZXIuIEl0J3MgdGFyZ2V0aW5nIGBlbHZfaW9zY2hlZF9zdG9yZWAgYW5kIG1vZGlmeWluZyB0aGUgbG9ja2luZyBtZWNoYW5pc20gdXNlZCB3aGVuIHN3aXRjaGluZyB0aGUgSS9PIHNjaGVkdWxlciB0aHJvdWdoIHN5c2ZzLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgc3dhcHBpbmcgb3V0IGEgcmVhZCBsb2NrIChgZG93bl9yZWFkX3RyeWxvY2tgLCBgdXBfcmVhZGApIGZvciBhIHdyaXRlIGxvY2sgKGBkb3duX3dyaXRlX3RyeWxvY2tgLCBgdXBfd3JpdGVgKSBvbiBgc2V0LVx1MDAzZXVwZGF0ZV9ucl9od3FfbG9ja2AuIFRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkOiB0byBwcmV2ZW50IGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWltZWQgYXQgZW5zdXJpbmcgdGhlIGludGVncml0eSBvZiB0aGUgSS9PIHNjaGVkdWxlciBzdGF0ZS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdGhhdCB0aGlzIGlzIGEgc21hcnQgbW92ZSDigJMgYSB3cml0ZSBsb2NrIG1ha2VzIHNlbnNlIHRvIHNlcmlhbGl6ZSB0aGVzZSBvcGVyYXRpb25zLiBUaGUgY29kZSBoYXMgdG8gZW5zdXJlIHRoYXQgYW4gZWxldmF0b3IgY2hhbmdlIHdvbid0IGhhcHBlbiBjb25jdXJyZW50bHkgd2l0aCBhbnkgb3RoZXIgb3BlcmF0aW9uLlxuXG5Ob3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCB0aGUgZm9jdXMgc3ltYm9scyBjaG9zZW4gYXJlIGFwcHJvcHJpYXRlLiBgZWxldmF0b3JfY2hhbmdlYCBpcyBsaXN0ZWQuIEkgc2hvdWxkIGNoZWNrIHRoYXQgYGVsZXZhdG9yX2NoYW5nZWAgaXMgY29ycmVjdGx5IHRpZWQgdG8gdGhlIHBsYWNlIGluIHRoZSBjb2RlIHdoZXJlIHRoZSBsb2NrIGlzIHVzZWQuIFllcywgYGVsZXZhdG9yX2NoYW5nZWAgaXMgY2FsbGVkIGRpcmVjdGx5IGJ5IGBlbHZfaW9zY2hlZF9zdG9yZWAsIHNvIGl0J3MgYSBnb29kIGNob2ljZSB0byBmb2N1cyBvbi4gU28sIHRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgY2xlYXIsIHdlbGwtZGVmaW5lZCBwcm9ibGVtIGFuZCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgdmFsaWQgZm9yIGhpZ2hsaWdodGluZyB0aGUgaW1wYWN0ZWQgYXJlYXMuIFRoZSBhYnNlbmNlIG9mIHNwZWNpZmljIGNvbmZpZyByZXF1aXJlbWVudHMgaXMgZXhwZWN0ZWQgZm9yIHRoaXMgdHlwZSBvZiBjaGFuZ2UuIFRoZSBKU09OIHN1bW1hcnkgbG9va3Mgc29saWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MzIsIk91dHB1dFRva2VucyI6ODcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMTowMToyMi4wNzg3MDM1OTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzM4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVsdl9pb3NjaGVkX3N0b3JlXCIsXG4gICAgXCJlbGV2YXRvcl9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBsb2NraW5nIHByaW1pdGl2ZSB1c2VkIHdoZW4gc3dpdGNoaW5nIHRoZSBJL08gc2NoZWR1bGVyIHZpYSBzeXNmcywgcmVwbGFjaW5nIGEgcmVhZCBsb2NrIHdpdGggYSB3cml0ZSBsb2NrIHRvIHByZXZlbnQgY29uY3VycmVudCBlbGV2YXRvciBzd2l0Y2hlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBibG9jayBsYXllci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbHZfaW9zY2hlZF9zdG9yZVwiLFxuICAgIFwiZWxldmF0b3JfY2hhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbG9ja2luZyBwcmltaXRpdmUgdXNlZCB3aGVuIHN3aXRjaGluZyB0aGUgSS9PIHNjaGVkdWxlciB2aWEgc3lzZnMsIHJlcGxhY2luZyBhIHJlYWQgbG9jayB3aXRoIGEgd3JpdGUgbG9jayB0byBwcmV2ZW50IGNvbmN1cnJlbnQgZWxldmF0b3Igc3dpdGNoZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYmxvY2sgbGF5ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6lc4[1] Phase: Succeeded StartedAt: 2026-06-26 01:01:32 +0000 UTC FinishedAt: 2026-06-26 01:01:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 01:01:32 +0000 UTC FinishedAt: 2026-06-26 01:01:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2] Phase: Succeeded StartedAt: 2026-06-26 01:01:32 +0000 UTC FinishedAt: 2026-06-26 01:53:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-26 01:01:32 +0000 UTC FinishedAt: 2026-06-26 01:53:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-26 01:01:32 +0000 UTC FinishedAt: 2026-06-26 01:01:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-26 01:01:32 +0000 UTC FinishedAt: 2026-06-26 01:01:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowd6lc4/series-workflowd6lc4-convert-artifact-496725712/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-26 01:01:42 +0000 UTC FinishedAt: 2026-06-26 01:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-26 01:01:42 +0000 UTC FinishedAt: 2026-06-26 01:24:32 +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:*989ad598-649c-4f57-b7c9-00e40f0b5908,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-workflowd6lc4/series-workflowd6lc4-convert-artifact-496725712/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": "4d3f0669-f41b-4cd7-8982-0e8b695bdfcb", "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-workflowd6lc4/series-workflowd6lc4-build-action-1611554134/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-26 01:01:42 +0000 UTC FinishedAt: 2026-06-26 01:24:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*989ad598-649c-4f57-b7c9-00e40f0b5908,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-workflowd6lc4/series-workflowd6lc4-convert-artifact-496725712/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": "4d3f0669-f41b-4cd7-8982-0e8b695bdfcb", "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-workflowd6lc4/series-workflowd6lc4-build-action-1611554134/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-26 01:24:32 +0000 UTC FinishedAt: 2026-06-26 01:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-26 01:24:32 +0000 UTC FinishedAt: 2026-06-26 01:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-26 01:24:32 +0000 UTC FinishedAt: 2026-06-26 01:24:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-26 01:24:32 +0000 UTC FinishedAt: 2026-06-26 01:24:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowd6lc4/series-workflowd6lc4-convert-artifact-4250515767/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-26 01:24:42 +0000 UTC FinishedAt: 2026-06-26 01:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-26 01:24:42 +0000 UTC FinishedAt: 2026-06-26 01:26:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4d3f0669-f41b-4cd7-8982-0e8b695bdfcb,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-workflowd6lc4/series-workflowd6lc4-build-action-1611554134/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-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-26 01:26:42 +0000 UTC FinishedAt: 2026-06-26 01:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-26 01:26:42 +0000 UTC FinishedAt: 2026-06-26 01:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-26 01:26:42 +0000 UTC FinishedAt: 2026-06-26 01:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-26 01:26:42 +0000 UTC FinishedAt: 2026-06-26 01:48:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*989ad598-649c-4f57-b7c9-00e40f0b5908,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-workflowd6lc4/series-workflowd6lc4-convert-artifact-4250515767/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": "48484a09-eec5-49be-8c90-10f1cb9f15ab", "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-workflowd6lc4/series-workflowd6lc4-build-action-1724717307/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-26 01:26:42 +0000 UTC FinishedAt: 2026-06-26 01:48:42 +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:*989ad598-649c-4f57-b7c9-00e40f0b5908,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-workflowd6lc4/series-workflowd6lc4-convert-artifact-4250515767/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": "48484a09-eec5-49be-8c90-10f1cb9f15ab", "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-workflowd6lc4/series-workflowd6lc4-build-action-1724717307/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-26 01:48:52 +0000 UTC FinishedAt: 2026-06-26 01:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-26 01:48:52 +0000 UTC FinishedAt: 2026-06-26 01:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-26 01:48:52 +0000 UTC FinishedAt: 2026-06-26 01:50:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-26 01:48:52 +0000 UTC FinishedAt: 2026-06-26 01:50:40 +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:*48484a09-eec5-49be-8c90-10f1cb9f15ab,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-workflowd6lc4/series-workflowd6lc4-build-action-1724717307/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-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-26 01:50:50 +0000 UTC FinishedAt: 2026-06-26 01:53:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-26 01:50:50 +0000 UTC FinishedAt: 2026-06-26 01:53:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"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:*4d3f0669-f41b-4cd7-8982-0e8b695bdfcb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*48484a09-eec5-49be-8c90-10f1cb9f15ab,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-workflowd6lc4/series-workflowd6lc4-build-action-1611554134/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-workflowd6lc4/series-workflowd6lc4-build-action-1724717307/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-26 01:50:50 +0000 UTC FinishedAt: 2026-06-26 01:51:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-26 01:50:50 +0000 UTC FinishedAt: 2026-06-26 01:50:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"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-workflowd6lc4/series-workflowd6lc4-convert-artifact-1774393968/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-26 01:50:50 +0000 UTC FinishedAt: 2026-06-26 01:50:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-26 01:50:50 +0000 UTC FinishedAt: 2026-06-26 01:50:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-26 01:50:50 +0000 UTC FinishedAt: 2026-06-26 01:50:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-26 01:51:00 +0000 UTC FinishedAt: 2026-06-26 01:53:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd6lc4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["elv_iosched_store","elevator_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","series_id":"73fa7f16-c35c-481e-984a-1a94178cfb64","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-26 01:51:00 +0000 UTC FinishedAt: 2026-06-26 01:53:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4d3f0669-f41b-4cd7-8982-0e8b695bdfcb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*48484a09-eec5-49be-8c90-10f1cb9f15ab,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-workflowd6lc4/series-workflowd6lc4-build-action-1611554134/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-workflowd6lc4/series-workflowd6lc4-build-action-1724717307/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-workflowd6lc4/series-workflowd6lc4-convert-artifact-1774393968/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,}