Name: series-workflownb4sh Phase: Succeeded StartedAt: 2026-07-09 15:27:29 +0000 UTC FinishedAt: 2026-07-09 20:35:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[0] Phase: Succeeded StartedAt: 2026-07-09 15:27:29 +0000 UTC FinishedAt: 2026-07-09 15:48:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 15:27:29 +0000 UTC FinishedAt: 2026-07-09 15:48:41 +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": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "a882eb98-4dee-45f2-a541-240da89c5722" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfs_cat_find_brec", "hfs_read_inode", "hfs_file_lookup", "hfs_fill_super" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA5IDE1OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfZmluZF9icmVjJiMzNDssCiAgICAmIzM0O2hmc19yZWFkX2lub2RlJiMzNDssCiAgICAmIzM0O2hmc19maWxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtoZnNfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENhdGFsb2cgTm9kZSBJRHMgKENOSUQpIGFuZCBjaGVja3MgZm9yIGJhZCBpbm9kZXMgaW4gdGhlIEhGUyBmaWxlc3lzdGVtIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgSEZTIHBhcnNlcyBvbi1kaXNrIHN0cnVjdHVyZXMgYW5kIGhhbmRsZXMgY29ycnVwdGVkIGltYWdlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxNTo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU1NDVlZDc2MDA5NGNjOGQ4MzJkZWU0MGI1NmE5NThjMWYwZmUwYTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDE1OjQ3OjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uNDkwYzVlMTMwZGEzYjYgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvY2F0YWxvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvY2F0YWxvZy5jXG5AQCAtMTgyLDYgJiM0MzsxODIsNDAgQEAgaW50IGhmc19jYXRfa2V5Y21wKGNvbnN0IGJ0cmVlX2tleSAqa2V5MSwgY29uc3QgYnRyZWVfa2V5ICprZXkyKVxuIFx0XHRcdCAga2V5Mi1cdTAwM2VjYXQuQ05hbWUubmFtZSwga2V5Mi1cdTAwM2VjYXQuQ05hbWUubGVuKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpXG4mIzQzO3tcbiYjNDM7XHRoZnNfY2F0X3JlYyByZWM7XG4mIzQzO1x0dTMyIGZvdW5kX2NuaWQ7XG4mIzQzO1x0aW50IHJlY19sZW47XG4mIzQzO1xuJiM0MztcdHJlY19sZW4gPSBmZC1cdTAwM2VlbnRyeWxlbmd0aDtcbiYjNDM7XHRpZiAocmVjX2xlbiBcdTAwM2M9IDAgfHwgKHNpemVfdClyZWNfbGVuIFx1MDAzZSBzaXplb2YocmVjKSlcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQoXHUwMDI2cmVjLCAwLCBzaXplb2YocmVjKSk7XG4mIzQzO1x0aGZzX2Jub2RlX3JlYWQoZmQtXHUwMDNlYm5vZGUsIFx1MDAyNnJlYywgZmQtXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHJlYy50eXBlKSB7XG4mIzQzO1x0Y2FzZSBIRlNfQ0RSX0ZJTDpcbiYjNDM7XHRcdGlmICgoc2l6ZV90KXJlY19sZW4gIT0gc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2ZpbGUpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZmlsZS5GbE51bSk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIEhGU19DRFJfRElSOlxuJiM0MztcdFx0aWYgKChzaXplX3QpcmVjX2xlbiAhPSBzaXplb2Yoc3RydWN0IGhmc19jYXRfZGlyKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0XHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmRpci5EaXJJRCk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoZm91bmRfY25pZCAhPSBjbmlkKVxuJiM0MztcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIFRyeSB0byBnZXQgYSBjYXRhbG9nIGVudHJ5IGZvciBnaXZlbiBjYXRhbG9nIGlkICovXG4gLy8gbW92ZSB0byByZWFkX3N1cGVyPz8/XG4gaW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxuQEAgLTIwOCw3ICYjNDM7MjQyLDEyIEBAIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXHRtZW1jcHkoZmQtXHUwMDNlc2VhcmNoX2tleS1cdTAwM2VjYXQuQ05hbWUubmFtZSwgcmVjLnRocmVhZC5DTmFtZS5uYW1lLCBsZW4pO1xuLVx0cmV0dXJuIGhmc19icmVjX2ZpbmQoZmQpO1xuJiM0MztcbiYjNDM7XHRyZXMgPSBoZnNfYnJlY19maW5kKGZkKTtcbiYjNDM7XHRpZiAocmVzKVxuJiM0MztcdFx0cmV0dXJuIHJlcztcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChmZCwgY25pZCk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmVcbmRpZmYgLS1naXQgYS9mcy9oZnMvaGZzX2ZzLmggYi9mcy9oZnMvaGZzX2ZzLmhcbmluZGV4IGYzNjI0NTE0ZmNiMDMwLi42NzA2MzhmMTc0MzhjZSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9oZnNfZnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2hmc19mcy5oXG5AQCAtMTU1LDYgJiM0MzsxNTUsMjUgQEAgZXh0ZXJuIGludCBoZnNfY2F0X21vdmUodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqc3JjX2RpcixcbiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSxcbiBcdFx0XHQgICAgICB1MzIgcGFyZW50LCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSk7XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFZhbGlkYXRlIHRoZSBDTklEIG9mIGEgY2F0YWxvZyByZWNvcmQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaGZzX2lzX3ZhbGlkX2NuaWQodTMyIGNuaWQsIHU4IHR5cGUpXG4mIzQzO3tcbiYjNDM7XHRpZiAobGlrZWx5KGNuaWQgXHUwMDNlPSBIRlNfRklSU1RVU0VSX0NOSUQpKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAoY25pZCkge1xuJiM0MztcdGNhc2UgSEZTX1JPT1RfQ05JRDpcbiYjNDM7XHRcdHJldHVybiB0eXBlID09IEhGU19DRFJfRElSO1xuJiM0MztcdGNhc2UgSEZTX0VYVF9DTklEOlxuJiM0MztcdGNhc2UgSEZTX0NBVF9DTklEOlxuJiM0MztcdFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9GSUw7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gLyogZGlyLmMgKi9cbiBleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBoZnNfZGlyX29wZXJhdGlvbnM7XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGhmc19kaXJfaW5vZGVfb3BlcmF0aW9ucztcbmRpZmYgLS1naXQgYS9mcy9oZnMvaW5vZGUuYyBiL2ZzL2hmcy9pbm9kZS5jXG5pbmRleCBhYzRhOTA1NWM1YzBlYS4uYzllNzVjMmU1NzZhM2YgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvaW5vZGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2lub2RlLmNcbkBAIC0zNjcsNiAmIzQzOzM2Nyw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbiBcdHJlYyA9IGlkYXRhLVx1MDAzZXJlYztcbiBcdHN3aXRjaCAocmVjLVx1MDAzZXR5cGUpIHtcbiBcdGNhc2UgSEZTX0NEUl9GSUw6XG4mIzQzO1x0XHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VmaWxlLkZsTnVtKSwgcmVjLVx1MDAzZXR5cGUpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XG4gXHRcdGlmICghSEZTX0lTX1JTUkMoaW5vZGUpKSB7XG4gXHRcdFx0aGZzX2lub2RlX3JlYWRfZm9yayhpbm9kZSwgcmVjLVx1MDAzZWZpbGUuRXh0UmVjLCByZWMtXHUwMDNlZmlsZS5MZ0xlbixcbiBcdFx0XHRcdFx0ICAgIHJlYy1cdTAwM2VmaWxlLlB5TGVuLCBiZTE2X3RvX2NwdShyZWMtXHUwMDNlZmlsZS5DbHBTaXplKSk7XG5AQCAtMzkwLDYgJiM0MzszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRcdGlub2RlLVx1MDAzZWlfbWFwcGluZy1cdTAwM2VhX29wcyA9IFx1MDAyNmhmc19hb3BzO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgSEZTX0NEUl9ESVI6XG4mIzQzO1x0XHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VkaXIuRGlySUQpLCByZWMtXHUwMDNldHlwZSkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiBcdFx0aW5vZGUtXHUwMDNlaV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtXHUwMDNlZGlyLkRpcklEKTtcbiBcdFx0aW5vZGUtXHUwMDNlaV9zaXplID0gYmUxNl90b19jcHUocmVjLVx1MDAzZWRpci5WYWwpICYjNDM7IDI7XG4gXHRcdEhGU19JKGlub2RlKS1cdTAwM2Vmc19ibG9ja3MgPSAwO1xuQEAgLTU3MSwxMyAmIzQzOzU3NywxOCBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4gXHRyZXMgPSBoZnNfYnJlY19yZWFkKFx1MDAyNmZkLCBcdTAwMjZyZWMsIHNpemVvZihyZWMpKTtcbiBcdGlmICghcmVzKSB7XG4gXHRcdHN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCBcdTAwMjZyZWMgfTtcbi1cdFx0aGZzX3JlYWRfaW5vZGUoaW5vZGUsIFx1MDAyNmlkYXRhKTtcbiYjNDM7XHRcdHJlcyA9IGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4gXHR9XG4gXHRoZnNfZmluZF9leGl0KFx1MDAyNmZkKTtcbiBcdGlmIChyZXMpIHtcbiBcdFx0aXB1dChpbm9kZSk7XG4gXHRcdHJldHVybiBFUlJfUFRSKHJlcyk7XG4gXHR9XG4mIzQzO1xuJiM0MztcdGlmIChpc19iYWRfaW5vZGUoaW5vZGUpKSB7XG4mIzQzO1x0XHRpcHV0KGlub2RlKTtcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuJiM0MztcdH1cbiBcdEhGU19JKGlub2RlKS1cdTAwM2Vyc3JjX2lub2RlID0gZGlyO1xuIFx0SEZTX0koZGlyKS1cdTAwM2Vyc3JjX2lub2RlID0gaW5vZGU7XG4gXHRpZ3JhYihkaXIpO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9zdXBlci5jIGIvZnMvaGZzL3N1cGVyLmNcbmluZGV4IGE0NjZjNDAxZjZiYjI2Li45OGI4MDc5NWJjZGU5YSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9zdXBlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvc3VwZXIuY1xuQEAgLTM3Miw2ICYjNDM7MzcyLDExIEBAIHN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0aWYgKCFyb290X2lub2RlKVxuIFx0XHRnb3RvIGJhaWxfbm9fcm9vdDtcbiBcbiYjNDM7XHRpZiAoaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpKSB7XG4mIzQzO1x0XHRpcHV0KHJvb3RfaW5vZGUpO1xuJiM0MztcdFx0Z290byBiYWlsX25vX3Jvb3Q7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNldF9kZWZhdWx0X2Rfb3Aoc2IsIFx1MDAyNmhmc19kZW50cnlfb3BlcmF0aW9ucyk7XG4gXHRyZXMgPSAtRU5PTUVNO1xuIFx0c2ItXHUwMDNlc19yb290ID0gZF9tYWtlX3Jvb3Qocm9vdF9pbm9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTU6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzX2NhdF9maW5kX2JyZWMmIzM0OywKICAgICYjMzQ7aGZzX3JlYWRfaW5vZGUmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGVfbG9va3VwJiMzNDssCiAgICAmIzM0O2hmc19maWxsX3N1cGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ2F0YWxvZyBOb2RlIElEcyAoQ05JRCkgYW5kIGNoZWNrcyBmb3IgYmFkIGlub2RlcyBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBIRlMgcGFyc2VzIG9uLWRpc2sgc3RydWN0dXJlcyBhbmQgaGFuZGxlcyBjb3JydXB0ZWQgaW1hZ2VzLCB3aGljaCBpcyByZWFjaGFibGUgYnkgbW91bnRpbmcgYW4gSEZTIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NTQ1ZWQ3NjAwOTRjYzhkODMyZGVlNDBiNTZhOTU4YzFmMGZlMGE0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAxNTo0Nzo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jCmluZGV4IDFiZmEzNmQ3MWUyNDdhLi40OTBjNWUxMzBkYTNiNiAxMDA2NDQKLS0tIGEvZnMvaGZzL2NhdGFsb2cuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvY2F0YWxvZy5jCkBAIC0xODIsNiAmIzQzOzE4Miw0MCBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpCiAJCQkgIGtleTItJmd0O2NhdC5DTmFtZS5uYW1lLCBrZXkyLSZndDtjYXQuQ05hbWUubGVuKTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpCiYjNDM7ewomIzQzOwloZnNfY2F0X3JlYyByZWM7CiYjNDM7CXUzMiBmb3VuZF9jbmlkOwomIzQzOwlpbnQgcmVjX2xlbjsKJiM0MzsKJiM0MzsJcmVjX2xlbiA9IGZkLSZndDtlbnRyeWxlbmd0aDsKJiM0MzsJaWYgKHJlY19sZW4gJmx0Oz0gMCB8fCAoc2l6ZV90KXJlY19sZW4gJmd0OyBzaXplb2YocmVjKSkKJiM0MzsJCXJldHVybiAtRUlPOwomIzQzOwomIzQzOwltZW1zZXQoJmFtcDtyZWMsIDAsIHNpemVvZihyZWMpKTsKJiM0MzsJaGZzX2Jub2RlX3JlYWQoZmQtJmd0O2Jub2RlLCAmYW1wO3JlYywgZmQtJmd0O2VudHJ5b2Zmc2V0LCByZWNfbGVuKTsKJiM0MzsKJiM0MzsJc3dpdGNoIChyZWMudHlwZSkgewomIzQzOwljYXNlIEhGU19DRFJfRklMOgomIzQzOwkJaWYgKChzaXplX3QpcmVjX2xlbiAhPSBzaXplb2Yoc3RydWN0IGhmc19jYXRfZmlsZSkpCiYjNDM7CQkJcmV0dXJuIC1FSU87CiYjNDM7CQlmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmZpbGUuRmxOdW0pOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgSEZTX0NEUl9ESVI6CiYjNDM7CQlpZiAoKHNpemVfdClyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9kaXIpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwkJZm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gLUVJTzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoZm91bmRfY25pZCAhPSBjbmlkKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIC8qIFRyeSB0byBnZXQgYSBjYXRhbG9nIGVudHJ5IGZvciBnaXZlbiBjYXRhbG9nIGlkICovCiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz8KIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCwKQEAgLTIwOCw3ICYjNDM7MjQyLDEyIEBAIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCwKIAkJcmV0dXJuIC1FSU87CiAJfQogCW1lbWNweShmZC0mZ3Q7c2VhcmNoX2tleS0mZ3Q7Y2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTsKLQlyZXR1cm4gaGZzX2JyZWNfZmluZChmZCk7CiYjNDM7CiYjNDM7CXJlcyA9IGhmc19icmVjX2ZpbmQoZmQpOwomIzQzOwlpZiAocmVzKQomIzQzOwkJcmV0dXJuIHJlczsKJiM0MzsKJiM0MzsJcmV0dXJuIGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChmZCwgY25pZCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUKZGlmZiAtLWdpdCBhL2ZzL2hmcy9oZnNfZnMuaCBiL2ZzL2hmcy9oZnNfZnMuaAppbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0Ci0tLSBhL2ZzL2hmcy9oZnNfZnMuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvaGZzX2ZzLmgKQEAgLTE1NSw2ICYjNDM7MTU1LDI1IEBAIGV4dGVybiBpbnQgaGZzX2NhdF9tb3ZlKHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKnNyY19kaXIsCiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSwKIAkJCSAgICAgIHUzMiBwYXJlbnQsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lKTsKIAomIzQzOy8qCiYjNDM7ICogVmFsaWRhdGUgdGhlIENOSUQgb2YgYSBjYXRhbG9nIHJlY29yZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaGZzX2lzX3ZhbGlkX2NuaWQodTMyIGNuaWQsIHU4IHR5cGUpCiYjNDM7ewomIzQzOwlpZiAobGlrZWx5KGNuaWQgJmd0Oz0gSEZTX0ZJUlNUVVNFUl9DTklEKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlzd2l0Y2ggKGNuaWQpIHsKJiM0MzsJY2FzZSBIRlNfUk9PVF9DTklEOgomIzQzOwkJcmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9ESVI7CiYjNDM7CWNhc2UgSEZTX0VYVF9DTklEOgomIzQzOwljYXNlIEhGU19DQVRfQ05JRDoKJiM0MzsJCXJldHVybiB0eXBlID09IEhGU19DRFJfRklMOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyogZGlyLmMgKi8KIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9uczsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7CmRpZmYgLS1naXQgYS9mcy9oZnMvaW5vZGUuYyBiL2ZzL2hmcy9pbm9kZS5jCmluZGV4IGFjNGE5MDU1YzVjMGVhLi5jOWU3NWMyZTU3NmEzZiAxMDA2NDQKLS0tIGEvZnMvaGZzL2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2lub2RlLmMKQEAgLTM2Nyw2ICYjNDM7MzY3LDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKQogCXJlYyA9IGlkYXRhLSZndDtyZWM7CiAJc3dpdGNoIChyZWMtJmd0O3R5cGUpIHsKIAljYXNlIEhGU19DRFJfRklMOgomIzQzOwkJaWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtJmd0O2ZpbGUuRmxOdW0pLCByZWMtJmd0O3R5cGUpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwogCQlpZiAoIUhGU19JU19SU1JDKGlub2RlKSkgewogCQkJaGZzX2lub2RlX3JlYWRfZm9yayhpbm9kZSwgcmVjLSZndDtmaWxlLkV4dFJlYywgcmVjLSZndDtmaWxlLkxnTGVuLAogCQkJCQkgICAgcmVjLSZndDtmaWxlLlB5TGVuLCBiZTE2X3RvX2NwdShyZWMtJmd0O2ZpbGUuQ2xwU2l6ZSkpOwpAQCAtMzkwLDYgJiM0MzszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpCiAJCWlub2RlLSZndDtpX21hcHBpbmctJmd0O2Ffb3BzID0gJmFtcDtoZnNfYW9wczsKIAkJYnJlYWs7CiAJY2FzZSBIRlNfQ0RSX0RJUjoKJiM0MzsJCWlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLSZndDtkaXIuRGlySUQpLCByZWMtJmd0O3R5cGUpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwogCQlpbm9kZS0mZ3Q7aV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtJmd0O2Rpci5EaXJJRCk7CiAJCWlub2RlLSZndDtpX3NpemUgPSBiZTE2X3RvX2NwdShyZWMtJmd0O2Rpci5WYWwpICYjNDM7IDI7CiAJCUhGU19JKGlub2RlKS0mZ3Q7ZnNfYmxvY2tzID0gMDsKQEAgLTU3MSwxMyAmIzQzOzU3NywxOCBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCiAJcmVzID0gaGZzX2JyZWNfcmVhZCgmYW1wO2ZkLCAmYW1wO3JlYywgc2l6ZW9mKHJlYykpOwogCWlmICghcmVzKSB7CiAJCXN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCAmYW1wO3JlYyB9OwotCQloZnNfcmVhZF9pbm9kZShpbm9kZSwgJmFtcDtpZGF0YSk7CiYjNDM7CQlyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgJmFtcDtpZGF0YSk7CiAJfQogCWhmc19maW5kX2V4aXQoJmFtcDtmZCk7CiAJaWYgKHJlcykgewogCQlpcHV0KGlub2RlKTsKIAkJcmV0dXJuIEVSUl9QVFIocmVzKTsKIAl9CiYjNDM7CiYjNDM7CWlmIChpc19iYWRfaW5vZGUoaW5vZGUpKSB7CiYjNDM7CQlpcHV0KGlub2RlKTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FSU8pOwomIzQzOwl9CiAJSEZTX0koaW5vZGUpLSZndDtyc3JjX2lub2RlID0gZGlyOwogCUhGU19JKGRpciktJmd0O3JzcmNfaW5vZGUgPSBpbm9kZTsKIAlpZ3JhYihkaXIpOwpkaWZmIC0tZ2l0IGEvZnMvaGZzL3N1cGVyLmMgYi9mcy9oZnMvc3VwZXIuYwppbmRleCBhNDY2YzQwMWY2YmIyNi4uOThiODA3OTViY2RlOWEgMTAwNjQ0Ci0tLSBhL2ZzL2hmcy9zdXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9zdXBlci5jCkBAIC0zNzIsNiAmIzQzOzM3MiwxMSBAQCBzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpZiAoIXJvb3RfaW5vZGUpCiAJCWdvdG8gYmFpbF9ub19yb290OwogCiYjNDM7CWlmIChpc19iYWRfaW5vZGUocm9vdF9pbm9kZSkpIHsKJiM0MzsJCWlwdXQocm9vdF9pbm9kZSk7CiYjNDM7CQlnb3RvIGJhaWxfbm9fcm9vdDsKJiM0MzsJfQomIzQzOwogCXNldF9kZWZhdWx0X2Rfb3Aoc2IsICZhbXA7aGZzX2RlbnRyeV9vcGVyYXRpb25zKTsKIAlyZXMgPSAtRU5PTUVNOwogCXNiLSZndDtzX3Jvb3QgPSBkX21ha2Vfcm9vdChyb290X2lub2RlKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTU6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGZzL2hmcy9gLiBJdCBzZWVtcyB0aGUgZm9jdXMgaXMgb24gdGlnaHRlbmluZyB1cCBDTklEIHZhbGlkYXRpb24g4oCTIHRoYXQmIzM5O3MgZ29vZCwgZXNwZWNpYWxseSB3aXRoIGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGFuZCBgaGZzX2lzX3ZhbGlkX2NuaWRgIGdldHRpbmcgc29tZSBhdHRlbnRpb24uIEl0JiMzOTtzIGFsc28gYWRkaW5nIGNoZWNrcyBmb3IgYGlzX2JhZF9pbm9kZWAgaW4gdGhlIGxvb2t1cCBmdW5jdGlvbiAoYGhmc19maWxlX2xvb2t1cGApIGFuZCBkdXJpbmcgc3VwZXJibG9jayBpbml0aWFsaXphdGlvbiAoYGhmc19maWxsX3N1cGVyYCkuIAoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBIRlMgZmlsZXN5c3RlbS4gU2luY2UgSEZTIGlzIHJlYWNoYWJsZSwgbWVhbmluZyB3ZSBjYW4gbW91bnQgYW4gSEZTIGltYWdlIGFuZCB0cmlnZ2VyIHRoZXNlIGNoYW5nZXMsIGZ1enppbmcgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgYWxsIHRoZSByaWdodCBwbGFjZXMgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuCgpOb3csIGxldCYjMzk7cyBmaWd1cmUgb3V0IHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWFyY2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIGBmcy9oZnMvYCwgb3IgbWF5YmUganVzdCBhIGRpcmVjdCBgQ09ORklHX0hGU19GU2Agd2lsbCBkbyB0aGUgdHJpY2suIEtub3dpbmcgdGhlIGNvbmZpZ3VyYXRpb24gaXMga2V5IGZvciB0ZXN0aW5nIHRoaXMgcHJvcGVybHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SEZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmcy9LY29uZmlnOjI6Y29uZmlnIEhGU19GU1xuZnMvaGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIE1hY2ludG9zaCBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvaGZzL0tjb25maWc9MTc9Y29uZmlnIEhGU19LVU5JVF9URVNUXG5mcy9oZnMvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBIRlMgZmlsZXN5c3RlbVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5mcy9oZnMvS2NvbmZpZzoxOTpcdGRlcGVuZHMgb24gSEZTX0ZTIFx1MDAyNlx1MDAyNiBLVU5JVFxuZnMvaGZzL0tjb25maWctMjAtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDE1OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNjcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIRlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gd29ya2luZyB3aXRoIGlzIGBIRlNfRlNgLiBSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGlkZW50aWZ5aW5nIHRoZSBrZXkgc3ltYm9scyB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBCYXNlZCBvbiB0aGUgZGlmZnMsIGhlcmUgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZDogYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAsIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfaXNfdmFsaWRfY25pZGAsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4KCk5vdywgbGV0JiMzOTtzIHN0cmF0ZWdpY2FsbHkgdGhpbmsgYWJvdXQgdGhlc2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgLiBXaGlsZSBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBsaXN0ZWQsIGl0JiMzOTtzIG1hcmtlZCBhcyBzdGF0aWMsIG1lYW5pbmcgaXQgY291bGQgYmUgaW5saW5lZC4gSSYjMzk7bGwgaW5jbHVkZSBpdCBpbiB0aGUgbGlzdCBmb3Igbm93LCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBob3dldmVyLCB0aGF0IHN5emthbGxlciBtaWdodCBub3QgZGlyZWN0bHkgZGlzY292ZXIgaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zLCBldmVuIGlmIHRoZXkgYXJlIGxpc3RlZCBhcyBwYXJ0IG9mIHRoZSBtb2RpZmljYXRpb25zLiBCdXQsIGl0cyBjYWxsZXIgYGhmc19jYXRfZmluZF9icmVjYCB3aWxsIHN0aWxsIGJlIHJlbGV2YW50LiBMb29rcyBsaWtlIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYCBhcmUgYWxzbyBzdGF0aWMuCgpUbyBzdGFydCwgSSYjMzk7bGwgZXhhbWluZSBgZnMvaGZzL2NhdGFsb2cuY2AgdG8gdW5kZXJzdGFuZCB0aGUgd29ya2luZ3Mgb2YgYGhmc19jYXRfZmluZF9icmVjYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL2NhdGFsb2cuYz0xODU9c3RhdGljIGludCBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB1MzIgY25pZClcbi0tXG5mcy9oZnMvY2F0YWxvZy5jLTIyMC0vLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cbmZzL2hmcy9jYXRhbG9nLmM6MjIxOmludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbmZzL2hmcy9jYXRhbG9nLmMtMjIyLVx0XHQgICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXG4tLVxuZnMvaGZzL2hmc19mcy5oPTE0NT1zdHJ1Y3QgaGZzX2ZpbmRfZGF0YTtcbmZzL2hmcy9oZnNfZnMuaDoxNDY6ZXh0ZXJuIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbmZzL2hmcy9oZnNfZnMuaC0xNDctXHRcdFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpO1xuLS1cbmZzL2hmcy9zdXBlci5jPTMxNj1zdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5mcy9oZnMvc3VwZXIuYy0zNTYtXHRcdGdvdG8gYmFpbF9ub19yb290O1xuZnMvaGZzL3N1cGVyLmM6MzU3Olx0cmVzID0gaGZzX2NhdF9maW5kX2JyZWMoc2IsIEhGU19ST09UX0NOSUQsIFx1MDAyNmZkKTtcbmZzL2hmcy9zdXBlci5jLTM1OC1cdGlmICghcmVzKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI5NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSEZTIEZpbGVzeXN0ZW0gRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBIRlMgZmlsZXN5c3RlbSBmdW5jdGlvbnMuIEl0IHNlZW1zIGBoZnNfY2F0X2ZpbmRfYnJlY2AgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQmIzM5O3MgdmlzaWJsZSBvdXRzaWRlIGl0cyBvcmlnaW5hbCBzb3VyY2UsIGFuZCBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gYGhmc19maWxsX3N1cGVyYC4gSW50ZXJlc3RpbmcuCgpUaGVuIHRoZXJlJiMzOTtzIGBoZnNfcmVhZF9pbm9kZWAuIEkgc2VlIGl0JiMzOTtzIG1hcmtlZCBhcyBgc3RhdGljYCBpbiBgZnMvaGZzL2lub2RlLmNgLCBhbG9uZyB3aXRoIGBoZnNfZmlsZV9sb29rdXBgLiBBbmQgYGhmc19maWxsX3N1cGVyYCBpcyBhbHNvIGBzdGF0aWNgLCBidXQgdGhhdCYjMzk7cyBpbiBgZnMvaGZzL3N1cGVyLmNgLgoKVG8gbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoaXMgY29ycmVjdGx5LCBsZXQmIzM5O3MgbGlzdCB0aGVtIHRvIGJlIGFic29sdXRlbHkgY2xlYXI6CgoqICAgYGhmc19jYXRfZmluZF9icmVjYAoqICAgYGhmc19yZWFkX2lub2RlYAoqICAgYGhmc19maWxlX2xvb2t1cGAKKiAgIGBoZnNfZmlsbF9zdXBlcmAKCldhaXQgYSBtaW51dGUsIGBoZnNfcmVhZF9pbm9kZWAgYmVpbmcgc3RhdGljIGlzIHVudXN1YWwsIGJ1dCBpdCBtaWdodCBzdGlsbCBiZSBhIHVzZWZ1bCBwb2ludCBvZiBleGFtaW5hdGlvbiwgaXQgZGVwZW5kcyBvbiBob3cgaXQgaXMgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIGRpZyBpbnRvIGBoZnNfcmVhZF9pbm9kZWAgZnVydGhlciBhbmQgZmluZCBvdXQgaWYgaXQmIzM5O3MgYWN0aW5nIGFzIGEgY2FsbGJhY2sgb3IgaXMgYmVpbmcgZGlyZWN0bHkgaW52b2tlZC4gVGhhdCB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDE1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hmc19yZWFkX2lub2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzL2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL2lub2RlLmM9MzI1PXN0YXRpYyBpbnQgaGZzX3Rlc3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbi0tXG5mcy9oZnMvaW5vZGUuYy0zNDItLypcbmZzL2hmcy9pbm9kZS5jOjM0MzogKiBoZnNfcmVhZF9pbm9kZVxuZnMvaGZzL2lub2RlLmMtMzQ0LSAqL1xuZnMvaGZzL2lub2RlLmM6MzQ1OnN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbmZzL2hmcy9pbm9kZS5jLTM0Ni17XG4tLVxuZnMvaGZzL2lub2RlLmM9NDI1PXN0cnVjdCBpbm9kZSAqaGZzX2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGhmc19jYXRfa2V5ICprZXksIGhmc19jYXRfcmVjICpyZWMpXG4tLVxuZnMvaGZzL2lub2RlLmMtNDQwLVx0fVxuZnMvaGZzL2lub2RlLmM6NDQxOlx0aW5vZGUgPSBpZ2V0NV9sb2NrZWQoc2IsIGNuaWQsIGhmc190ZXN0X2lub2RlLCBoZnNfcmVhZF9pbm9kZSwgXHUwMDI2ZGF0YSk7XG5mcy9oZnMvaW5vZGUuYy00NDItXHRpZiAoaW5vZGUgXHUwMDI2XHUwMDI2IChpbm9kZV9zdGF0ZV9yZWFkX29uY2UoaW5vZGUpIFx1MDAyNiBJX05FVykpXG4tLVxuZnMvaGZzL2lub2RlLmM9NTUyPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpoZnNfZmlsZV9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9oZnMvaW5vZGUuYy01NzktXHRcdHN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCBcdTAwMjZyZWMgfTtcbmZzL2hmcy9pbm9kZS5jOjU4MDpcdFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFx1MDAyNmlkYXRhKTtcbmZzL2hmcy9pbm9kZS5jLTU4MS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjA5CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBgaGZzX3JlYWRfaW5vZGVgIGlzIGRlZmluaXRlbHkgYSBrZXkgcGxheWVyIGhlcmUuJiMzNDsgSSByZW1lbWJlciBzZWVpbmcgaXQgY2FsbGVkIGFzIGEgY2FsbGJhY2sgd2l0aGluIGBpZ2V0NV9sb2NrZWRgIOKAkyB0aGF0JiMzOTtzIGEgY2xhc3NpYyDigJMgYW5kIGFsc28gZGlyZWN0bHkgaW4gYGhmc19maWxlX2xvb2t1cGAuIEdvb2QgdG8gY29uZmlybSB0aGF0LgoKTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmdXJ0aGVyIGFuZCBsaXN0IHRoZSByZWxldmFudCBzeW1ib2xzLiBJJiMzOTttIHNlZWluZzoKCiogICBgaGZzX2NhdF9maW5kX2JyZWNgCiogICBgaGZzX3JlYWRfaW5vZGVgCiogICBgaGZzX2ZpbGVfbG9va3VwYAoqICAgYGhmc19maWxsX3N1cGVyYAoKTm93LCB0aGUgZ2lzdCBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFib3V0IHZhbGlkYXRpbmcgQ2F0YWxvZyBOb2RlIElEcyAoQ05JRHMpIGFuZCBkb2luZyBtb3JlIHJvYnVzdCBjaGVja2luZyBmb3IgcG90ZW50aWFsbHkgY29ycnVwdCBpbm9kZXMgd2l0aGluIHRoZSBIRlMgZmlsZXN5c3RlbSBkcml2ZXIuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlIOKAkyBpdCYjMzk7cyBkaXJlY3RseSBpbXBhY3RpbmcgaG93IHRoZSBkcml2ZXIgaW50ZXJwcmV0cyBvbi1kaXNrIGRhdGEgc3RydWN0dXJlcyBhbmQsIGltcG9ydGFudGx5LCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgY29ycnVwdGlvbi4gQ2xlYXJseSwgdGhpcyBpcyBzb21ldGhpbmcgdHJpZ2dlcmVkIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS4KCkJlZm9yZSBnb2luZyBhbnkgZnVydGhlciwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbC4gWWVzLCBgSEZTX0ZTYCBpcyB0aGUgY29ycmVjdCBvbmUuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LgoKT2theSwgbGV0JiMzOTtzIGtlZXAgdGhlc2UgZm91ciBzeW1ib2xzIC0gYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIC0gZnJvbnQgb2YgbWluZCBhcyBJIGRpZyBkZWVwZXIuIFRoZXnigJlyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzX2NhdF9maW5kX2JyZWMmIzM0OywKICAgICYjMzQ7aGZzX3JlYWRfaW5vZGUmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGVfbG9va3VwJiMzNDssCiAgICAmIzM0O2hmc19maWxsX3N1cGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ2F0YWxvZyBOb2RlIElEcyAoQ05JRCkgYW5kIGNoZWNrcyBmb3IgYmFkIGlub2RlcyBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBIRlMgcGFyc2VzIG9uLWRpc2sgc3RydWN0dXJlcyBhbmQgaGFuZGxlcyBjb3JydXB0ZWQgaW1hZ2VzLCB3aGljaCBpcyByZWFjaGFibGUgYnkgbW91bnRpbmcgYW4gSEZTIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDYXRhbG9nIE5vZGUgSURzIChDTklEKSBhbmQgY2hlY2tzIGZvciBiYWQgaW5vZGVzIGluIHRoZSBIRlMgZmlsZXN5c3RlbSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IEhGUyBwYXJzZXMgb24tZGlzayBzdHJ1Y3R1cmVzIGFuZCBoYW5kbGVzIGNvcnJ1cHRlZCBpbWFnZXMsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSBtb3VudGluZyBhbiBIRlMgaW1hZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxNTo0Nzo0OC43NzIwMjM0NDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDg3Nzc2MjYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X2ZpbmRfYnJlY1wiLFxuICAgIFwiaGZzX3JlYWRfaW5vZGVcIixcbiAgICBcImhmc19maWxlX2xvb2t1cFwiLFxuICAgIFwiaGZzX2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENhdGFsb2cgTm9kZSBJRHMgKENOSUQpIGFuZCBjaGVja3MgZm9yIGJhZCBpbm9kZXMgaW4gdGhlIEhGUyBmaWxlc3lzdGVtIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgSEZTIHBhcnNlcyBvbi1kaXNrIHN0cnVjdHVyZXMgYW5kIGhhbmRsZXMgY29ycnVwdGVkIGltYWdlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDc6NDguNzcyMDUyNDI0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODIwMjQ3MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1NTQ1ZWQ3NjAwOTRjYzhkODMyZGVlNDBiNTZhOTU4YzFmMGZlMGE0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDkgMTU6NDc6NDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2NhdGFsb2cuYyBiL2ZzL2hmcy9jYXRhbG9nLmNcXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uNDkwYzVlMTMwZGEzYjYgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL2NhdGFsb2cuY1xcbisrKyBiL2ZzL2hmcy9jYXRhbG9nLmNcXG5AQCAtMTgyLDYgKzE4Miw0MCBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpXFxuIFxcdFxcdFxcdCAga2V5Mi1cXHUwMDNlY2F0LkNOYW1lLm5hbWUsIGtleTItXFx1MDAzZWNhdC5DTmFtZS5sZW4pO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIHUzMiBjbmlkKVxcbit7XFxuK1xcdGhmc19jYXRfcmVjIHJlYztcXG4rXFx0dTMyIGZvdW5kX2NuaWQ7XFxuK1xcdGludCByZWNfbGVuO1xcbitcXG4rXFx0cmVjX2xlbiA9IGZkLVxcdTAwM2VlbnRyeWxlbmd0aDtcXG4rXFx0aWYgKHJlY19sZW4gXFx1MDAzYz0gMCB8fCAoc2l6ZV90KXJlY19sZW4gXFx1MDAzZSBzaXplb2YocmVjKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbitcXHRtZW1zZXQoXFx1MDAyNnJlYywgMCwgc2l6ZW9mKHJlYykpO1xcbitcXHRoZnNfYm5vZGVfcmVhZChmZC1cXHUwMDNlYm5vZGUsIFxcdTAwMjZyZWMsIGZkLVxcdTAwM2VlbnRyeW9mZnNldCwgcmVjX2xlbik7XFxuK1xcbitcXHRzd2l0Y2ggKHJlYy50eXBlKSB7XFxuK1xcdGNhc2UgSEZTX0NEUl9GSUw6XFxuK1xcdFxcdGlmICgoc2l6ZV90KXJlY19sZW4gIT0gc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2ZpbGUpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5maWxlLkZsTnVtKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgSEZTX0NEUl9ESVI6XFxuK1xcdFxcdGlmICgoc2l6ZV90KXJlY19sZW4gIT0gc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2RpcikpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRcXHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmRpci5EaXJJRCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGZvdW5kX2NuaWQgIT0gY25pZClcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLyogVHJ5IHRvIGdldCBhIGNhdGFsb2cgZW50cnkgZm9yIGdpdmVuIGNhdGFsb2cgaWQgKi9cXG4gLy8gbW92ZSB0byByZWFkX3N1cGVyPz8/XFxuIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5AQCAtMjA4LDcgKzI0MiwxMiBAQCBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXFxuIFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXHR9XFxuIFxcdG1lbWNweShmZC1cXHUwMDNlc2VhcmNoX2tleS1cXHUwMDNlY2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTtcXG4tXFx0cmV0dXJuIGhmc19icmVjX2ZpbmQoZmQpO1xcbitcXG4rXFx0cmVzID0gaGZzX2JyZWNfZmluZChmZCk7XFxuK1xcdGlmIChyZXMpXFxuK1xcdFxcdHJldHVybiByZXM7XFxuK1xcbitcXHRyZXR1cm4gaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKGZkLCBjbmlkKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZVxcbmRpZmYgLS1naXQgYS9mcy9oZnMvaGZzX2ZzLmggYi9mcy9oZnMvaGZzX2ZzLmhcXG5pbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL2hmc19mcy5oXFxuKysrIGIvZnMvaGZzL2hmc19mcy5oXFxuQEAgLTE1NSw2ICsxNTUsMjUgQEAgZXh0ZXJuIGludCBoZnNfY2F0X21vdmUodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqc3JjX2RpcixcXG4gZXh0ZXJuIHZvaWQgaGZzX2NhdF9idWlsZF9rZXkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgYnRyZWVfa2V5ICprZXksXFxuIFxcdFxcdFxcdCAgICAgIHUzMiBwYXJlbnQsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lKTtcXG4gXFxuKy8qXFxuKyAqIFZhbGlkYXRlIHRoZSBDTklEIG9mIGEgY2F0YWxvZyByZWNvcmQuXFxuKyAqL1xcbitzdGF0aWMgaW5saW5lIGJvb2wgaGZzX2lzX3ZhbGlkX2NuaWQodTMyIGNuaWQsIHU4IHR5cGUpXFxuK3tcXG4rXFx0aWYgKGxpa2VseShjbmlkIFxcdTAwM2U9IEhGU19GSVJTVFVTRVJfQ05JRCkpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0c3dpdGNoIChjbmlkKSB7XFxuK1xcdGNhc2UgSEZTX1JPT1RfQ05JRDpcXG4rXFx0XFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9ESVI7XFxuK1xcdGNhc2UgSEZTX0VYVF9DTklEOlxcbitcXHRjYXNlIEhGU19DQVRfQ05JRDpcXG4rXFx0XFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9GSUw7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbit9XFxuK1xcbiAvKiBkaXIuYyAqL1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBoZnNfZGlyX29wZXJhdGlvbnM7XFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7XFxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9pbm9kZS5jIGIvZnMvaGZzL2lub2RlLmNcXG5pbmRleCBhYzRhOTA1NWM1YzBlYS4uYzllNzVjMmU1NzZhM2YgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL2lub2RlLmNcXG4rKysgYi9mcy9oZnMvaW5vZGUuY1xcbkBAIC0zNjcsNiArMzY3LDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxcbiBcXHRyZWMgPSBpZGF0YS1cXHUwMDNlcmVjO1xcbiBcXHRzd2l0Y2ggKHJlYy1cXHUwMDNldHlwZSkge1xcbiBcXHRjYXNlIEhGU19DRFJfRklMOlxcbitcXHRcXHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cXHUwMDNlZmlsZS5GbE51bSksIHJlYy1cXHUwMDNldHlwZSkpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXG4gXFx0XFx0aWYgKCFIRlNfSVNfUlNSQyhpbm9kZSkpIHtcXG4gXFx0XFx0XFx0aGZzX2lub2RlX3JlYWRfZm9yayhpbm9kZSwgcmVjLVxcdTAwM2VmaWxlLkV4dFJlYywgcmVjLVxcdTAwM2VmaWxlLkxnTGVuLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgcmVjLVxcdTAwM2VmaWxlLlB5TGVuLCBiZTE2X3RvX2NwdShyZWMtXFx1MDAzZWZpbGUuQ2xwU2l6ZSkpO1xcbkBAIC0zOTAsNiArMzkzLDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxcbiBcXHRcXHRpbm9kZS1cXHUwMDNlaV9tYXBwaW5nLVxcdTAwM2VhX29wcyA9IFxcdTAwMjZoZnNfYW9wcztcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgSEZTX0NEUl9ESVI6XFxuK1xcdFxcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVxcdTAwM2VkaXIuRGlySUQpLCByZWMtXFx1MDAzZXR5cGUpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFxuIFxcdFxcdGlub2RlLVxcdTAwM2VpX2lubyA9IGJlMzJfdG9fY3B1KHJlYy1cXHUwMDNlZGlyLkRpcklEKTtcXG4gXFx0XFx0aW5vZGUtXFx1MDAzZWlfc2l6ZSA9IGJlMTZfdG9fY3B1KHJlYy1cXHUwMDNlZGlyLlZhbCkgKyAyO1xcbiBcXHRcXHRIRlNfSShpbm9kZSktXFx1MDAzZWZzX2Jsb2NrcyA9IDA7XFxuQEAgLTU3MSwxMyArNTc3LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpoZnNfZmlsZV9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4gXFx0cmVzID0gaGZzX2JyZWNfcmVhZChcXHUwMDI2ZmQsIFxcdTAwMjZyZWMsIHNpemVvZihyZWMpKTtcXG4gXFx0aWYgKCFyZXMpIHtcXG4gXFx0XFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFxcdTAwMjZyZWMgfTtcXG4tXFx0XFx0aGZzX3JlYWRfaW5vZGUoaW5vZGUsIFxcdTAwMjZpZGF0YSk7XFxuK1xcdFxcdHJlcyA9IGhmc19yZWFkX2lub2RlKGlub2RlLCBcXHUwMDI2aWRhdGEpO1xcbiBcXHR9XFxuIFxcdGhmc19maW5kX2V4aXQoXFx1MDAyNmZkKTtcXG4gXFx0aWYgKHJlcykge1xcbiBcXHRcXHRpcHV0KGlub2RlKTtcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIocmVzKTtcXG4gXFx0fVxcbitcXG4rXFx0aWYgKGlzX2JhZF9pbm9kZShpbm9kZSkpIHtcXG4rXFx0XFx0aXB1dChpbm9kZSk7XFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xcbitcXHR9XFxuIFxcdEhGU19JKGlub2RlKS1cXHUwMDNlcnNyY19pbm9kZSA9IGRpcjtcXG4gXFx0SEZTX0koZGlyKS1cXHUwMDNlcnNyY19pbm9kZSA9IGlub2RlO1xcbiBcXHRpZ3JhYihkaXIpO1xcbmRpZmYgLS1naXQgYS9mcy9oZnMvc3VwZXIuYyBiL2ZzL2hmcy9zdXBlci5jXFxuaW5kZXggYTQ2NmM0MDFmNmJiMjYuLjk4YjgwNzk1YmNkZTlhIDEwMDY0NFxcbi0tLSBhL2ZzL2hmcy9zdXBlci5jXFxuKysrIGIvZnMvaGZzL3N1cGVyLmNcXG5AQCAtMzcyLDYgKzM3MiwxMSBAQCBzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4gXFx0aWYgKCFyb290X2lub2RlKVxcbiBcXHRcXHRnb3RvIGJhaWxfbm9fcm9vdDtcXG4gXFxuK1xcdGlmIChpc19iYWRfaW5vZGUocm9vdF9pbm9kZSkpIHtcXG4rXFx0XFx0aXB1dChyb290X2lub2RlKTtcXG4rXFx0XFx0Z290byBiYWlsX25vX3Jvb3Q7XFxuK1xcdH1cXG4rXFxuIFxcdHNldF9kZWZhdWx0X2Rfb3Aoc2IsIFxcdTAwMjZoZnNfZGVudHJ5X29wZXJhdGlvbnMpO1xcbiBcXHRyZXMgPSAtRU5PTUVNO1xcbiBcXHRzYi1cXHUwMDNlc19yb290ID0gZF9tYWtlX3Jvb3Qocm9vdF9pbm9kZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDE1OjQ3OjQ5LjI1NDg3NTI1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzOTQ5MDA4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzX2NhdF9maW5kX2JyZWNcIixcbiAgICBcImhmc19yZWFkX2lub2RlXCIsXG4gICAgXCJoZnNfZmlsZV9sb29rdXBcIixcbiAgICBcImhmc19maWxsX3N1cGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDYXRhbG9nIE5vZGUgSURzIChDTklEKSBhbmQgY2hlY2tzIGZvciBiYWQgaW5vZGVzIGluIHRoZSBIRlMgZmlsZXN5c3RlbSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IEhGUyBwYXJzZXMgb24tZGlzayBzdHJ1Y3R1cmVzIGFuZCBoYW5kbGVzIGNvcnJ1cHRlZCBpbWFnZXMsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSBtb3VudGluZyBhbiBIRlMgaW1hZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTU0NWVkNzYwMDk0Y2M4ZDgzMmRlZTQwYjU2YTk1OGMxZjBmZTBhNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMTU6NDc6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9oZnMvY2F0YWxvZy5jIGIvZnMvaGZzL2NhdGFsb2cuY1xuaW5kZXggMWJmYTM2ZDcxZTI0N2EuLjQ5MGM1ZTEzMGRhM2I2IDEwMDY0NFxuLS0tIGEvZnMvaGZzL2NhdGFsb2cuY1xuKysrIGIvZnMvaGZzL2NhdGFsb2cuY1xuQEAgLTE4Miw2ICsxODIsNDAgQEAgaW50IGhmc19jYXRfa2V5Y21wKGNvbnN0IGJ0cmVlX2tleSAqa2V5MSwgY29uc3QgYnRyZWVfa2V5ICprZXkyKVxuIFx0XHRcdCAga2V5Mi1cdTAwM2VjYXQuQ05hbWUubmFtZSwga2V5Mi1cdTAwM2VjYXQuQ05hbWUubGVuKTtcbiB9XG4gXG4rc3RhdGljIGludCBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB1MzIgY25pZClcbit7XG4rXHRoZnNfY2F0X3JlYyByZWM7XG4rXHR1MzIgZm91bmRfY25pZDtcbitcdGludCByZWNfbGVuO1xuK1xuK1x0cmVjX2xlbiA9IGZkLVx1MDAzZWVudHJ5bGVuZ3RoO1xuK1x0aWYgKHJlY19sZW4gXHUwMDNjPSAwIHx8IChzaXplX3QpcmVjX2xlbiBcdTAwM2Ugc2l6ZW9mKHJlYykpXG4rXHRcdHJldHVybiAtRUlPO1xuK1xuK1x0bWVtc2V0KFx1MDAyNnJlYywgMCwgc2l6ZW9mKHJlYykpO1xuK1x0aGZzX2Jub2RlX3JlYWQoZmQtXHUwMDNlYm5vZGUsIFx1MDAyNnJlYywgZmQtXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xuK1xuK1x0c3dpdGNoIChyZWMudHlwZSkge1xuK1x0Y2FzZSBIRlNfQ0RSX0ZJTDpcbitcdFx0aWYgKChzaXplX3QpcmVjX2xlbiAhPSBzaXplb2Yoc3RydWN0IGhmc19jYXRfZmlsZSkpXG4rXHRcdFx0cmV0dXJuIC1FSU87XG4rXHRcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZmlsZS5GbE51bSk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBIRlNfQ0RSX0RJUjpcbitcdFx0aWYgKChzaXplX3QpcmVjX2xlbiAhPSBzaXplb2Yoc3RydWN0IGhmc19jYXRfZGlyKSlcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiAtRUlPO1xuK1x0fVxuK1xuK1x0aWYgKGZvdW5kX2NuaWQgIT0gY25pZClcbitcdFx0cmV0dXJuIC1FSU87XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gLyogVHJ5IHRvIGdldCBhIGNhdGFsb2cgZW50cnkgZm9yIGdpdmVuIGNhdGFsb2cgaWQgKi9cbiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cbiBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG5AQCAtMjA4LDcgKzI0MiwxMiBAQCBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG4gXHRcdHJldHVybiAtRUlPO1xuIFx0fVxuIFx0bWVtY3B5KGZkLVx1MDAzZXNlYXJjaF9rZXktXHUwMDNlY2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTtcbi1cdHJldHVybiBoZnNfYnJlY19maW5kKGZkKTtcbitcbitcdHJlcyA9IGhmc19icmVjX2ZpbmQoZmQpO1xuK1x0aWYgKHJlcylcbitcdFx0cmV0dXJuIHJlcztcbitcbitcdHJldHVybiBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoZmQsIGNuaWQpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2hmc19mcy5oIGIvZnMvaGZzL2hmc19mcy5oXG5pbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvaGZzX2ZzLmhcbisrKyBiL2ZzL2hmcy9oZnNfZnMuaFxuQEAgLTE1NSw2ICsxNTUsMjUgQEAgZXh0ZXJuIGludCBoZnNfY2F0X21vdmUodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqc3JjX2RpcixcbiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSxcbiBcdFx0XHQgICAgICB1MzIgcGFyZW50LCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSk7XG4gXG4rLypcbisgKiBWYWxpZGF0ZSB0aGUgQ05JRCBvZiBhIGNhdGFsb2cgcmVjb3JkLlxuKyAqL1xuK3N0YXRpYyBpbmxpbmUgYm9vbCBoZnNfaXNfdmFsaWRfY25pZCh1MzIgY25pZCwgdTggdHlwZSlcbit7XG4rXHRpZiAobGlrZWx5KGNuaWQgXHUwMDNlPSBIRlNfRklSU1RVU0VSX0NOSUQpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHN3aXRjaCAoY25pZCkge1xuK1x0Y2FzZSBIRlNfUk9PVF9DTklEOlxuK1x0XHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0RJUjtcbitcdGNhc2UgSEZTX0VYVF9DTklEOlxuK1x0Y2FzZSBIRlNfQ0FUX0NOSUQ6XG4rXHRcdHJldHVybiB0eXBlID09IEhGU19DRFJfRklMO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK31cbitcbiAvKiBkaXIuYyAqL1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9ucztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9pbm9kZS5jIGIvZnMvaGZzL2lub2RlLmNcbmluZGV4IGFjNGE5MDU1YzVjMGVhLi5jOWU3NWMyZTU3NmEzZiAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9pbm9kZS5jXG4rKysgYi9mcy9oZnMvaW5vZGUuY1xuQEAgLTM2Nyw2ICszNjcsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRyZWMgPSBpZGF0YS1cdTAwM2VyZWM7XG4gXHRzd2l0Y2ggKHJlYy1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIEhGU19DRFJfRklMOlxuK1x0XHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VmaWxlLkZsTnVtKSwgcmVjLVx1MDAzZXR5cGUpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1xuIFx0XHRpZiAoIUhGU19JU19SU1JDKGlub2RlKSkge1xuIFx0XHRcdGhmc19pbm9kZV9yZWFkX2ZvcmsoaW5vZGUsIHJlYy1cdTAwM2VmaWxlLkV4dFJlYywgcmVjLVx1MDAzZWZpbGUuTGdMZW4sXG4gXHRcdFx0XHRcdCAgICByZWMtXHUwMDNlZmlsZS5QeUxlbiwgYmUxNl90b19jcHUocmVjLVx1MDAzZWZpbGUuQ2xwU2l6ZSkpO1xuQEAgLTM5MCw2ICszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRcdGlub2RlLVx1MDAzZWlfbWFwcGluZy1cdTAwM2VhX29wcyA9IFx1MDAyNmhmc19hb3BzO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgSEZTX0NEUl9ESVI6XG4rXHRcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVx1MDAzZWRpci5EaXJJRCksIHJlYy1cdTAwM2V0eXBlKSlcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcbiBcdFx0aW5vZGUtXHUwMDNlaV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtXHUwMDNlZGlyLkRpcklEKTtcbiBcdFx0aW5vZGUtXHUwMDNlaV9zaXplID0gYmUxNl90b19jcHUocmVjLVx1MDAzZWRpci5WYWwpICsgMjtcbiBcdFx0SEZTX0koaW5vZGUpLVx1MDAzZWZzX2Jsb2NrcyA9IDA7XG5AQCAtNTcxLDEzICs1NzcsMTggQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0cmVzID0gaGZzX2JyZWNfcmVhZChcdTAwMjZmZCwgXHUwMDI2cmVjLCBzaXplb2YocmVjKSk7XG4gXHRpZiAoIXJlcykge1xuIFx0XHRzdHJ1Y3QgaGZzX2lnZXRfZGF0YSBpZGF0YSA9IHsgTlVMTCwgXHUwMDI2cmVjIH07XG4tXHRcdGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4rXHRcdHJlcyA9IGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4gXHR9XG4gXHRoZnNfZmluZF9leGl0KFx1MDAyNmZkKTtcbiBcdGlmIChyZXMpIHtcbiBcdFx0aXB1dChpbm9kZSk7XG4gXHRcdHJldHVybiBFUlJfUFRSKHJlcyk7XG4gXHR9XG4rXG4rXHRpZiAoaXNfYmFkX2lub2RlKGlub2RlKSkge1xuK1x0XHRpcHV0KGlub2RlKTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4rXHR9XG4gXHRIRlNfSShpbm9kZSktXHUwMDNlcnNyY19pbm9kZSA9IGRpcjtcbiBcdEhGU19JKGRpciktXHUwMDNlcnNyY19pbm9kZSA9IGlub2RlO1xuIFx0aWdyYWIoZGlyKTtcbmRpZmYgLS1naXQgYS9mcy9oZnMvc3VwZXIuYyBiL2ZzL2hmcy9zdXBlci5jXG5pbmRleCBhNDY2YzQwMWY2YmIyNi4uOThiODA3OTViY2RlOWEgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvc3VwZXIuY1xuKysrIGIvZnMvaGZzL3N1cGVyLmNcbkBAIC0zNzIsNiArMzcyLDExIEBAIHN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0aWYgKCFyb290X2lub2RlKVxuIFx0XHRnb3RvIGJhaWxfbm9fcm9vdDtcbiBcbitcdGlmIChpc19iYWRfaW5vZGUocm9vdF9pbm9kZSkpIHtcbitcdFx0aXB1dChyb290X2lub2RlKTtcbitcdFx0Z290byBiYWlsX25vX3Jvb3Q7XG4rXHR9XG4rXG4gXHRzZXRfZGVmYXVsdF9kX29wKHNiLCBcdTAwMjZoZnNfZGVudHJ5X29wZXJhdGlvbnMpO1xuIFx0cmVzID0gLUVOT01FTTtcbiBcdHNiLVx1MDAzZXNfcm9vdCA9IGRfbWFrZV9yb290KHJvb3RfaW5vZGUpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDc6NDkuMjU0ODc2NzI4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODgzNDQyNzM3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGZzL2hmcy9gLiBJdCBzZWVtcyB0aGUgZm9jdXMgaXMgb24gdGlnaHRlbmluZyB1cCBDTklEIHZhbGlkYXRpb24g4oCTIHRoYXQncyBnb29kLCBlc3BlY2lhbGx5IHdpdGggYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgYW5kIGBoZnNfaXNfdmFsaWRfY25pZGAgZ2V0dGluZyBzb21lIGF0dGVudGlvbi4gSXQncyBhbHNvIGFkZGluZyBjaGVja3MgZm9yIGBpc19iYWRfaW5vZGVgIGluIHRoZSBsb29rdXAgZnVuY3Rpb24gKGBoZnNfZmlsZV9sb29rdXBgKSBhbmQgZHVyaW5nIHN1cGVyYmxvY2sgaW5pdGlhbGl6YXRpb24gKGBoZnNfZmlsbF9zdXBlcmApLiBcblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgaXQncyBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgdGhlIEhGUyBmaWxlc3lzdGVtLiBTaW5jZSBIRlMgaXMgcmVhY2hhYmxlLCBtZWFuaW5nIHdlIGNhbiBtb3VudCBhbiBIRlMgaW1hZ2UgYW5kIHRyaWdnZXIgdGhlc2UgY2hhbmdlcywgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gSXQgbG9va3MgbGlrZSBpdCdzIHRvdWNoaW5nIGFsbCB0aGUgcmlnaHQgcGxhY2VzIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VhcmNoIHRoZSBLY29uZmlnIGZpbGVzIGZvciBgZnMvaGZzL2AsIG9yIG1heWJlIGp1c3QgYSBkaXJlY3QgYENPTkZJR19IRlNfRlNgIHdpbGwgZG8gdGhlIHRyaWNrLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIGlzIGtleSBmb3IgdGVzdGluZyB0aGlzIHByb3Blcmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDc6NTguMDg5MzA2MDg0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDI5NTc4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJIRlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9oZnMvS2NvbmZpZzoyOmNvbmZpZyBIRlNfRlNcXG5mcy9oZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBNYWNpbnRvc2ggZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2hmcy9LY29uZmlnPTE3PWNvbmZpZyBIRlNfS1VOSVRfVEVTVFxcbmZzL2hmcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgSEZTIGZpbGVzeXN0ZW1cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5mcy9oZnMvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIEhGU19GUyBcXHUwMDI2XFx1MDAyNiBLVU5JVFxcbmZzL2hmcy9LY29uZmlnLTIwLVxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDE1OjQ3OjU4LjIyOTYwNjU1OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwNTM2NzQxMjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSEZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSB3b3JraW5nIHdpdGggaXMgYEhGU19GU2AuIFJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBpZGVudGlmeWluZyB0aGUga2V5IHN5bWJvbHMgd2UgbmVlZCB0byBmb2N1cyBvbi4gQmFzZWQgb24gdGhlIGRpZmZzLCBoZXJlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHRvdWNoZWQ6IGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgLCBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX2lzX3ZhbGlkX2NuaWRgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuXG5cbk5vdywgbGV0J3Mgc3RyYXRlZ2ljYWxseSB0aGluayBhYm91dCB0aGVzZS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gV2hpbGUgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgbGlzdGVkLCBpdCdzIG1hcmtlZCBhcyBzdGF0aWMsIG1lYW5pbmcgaXQgY291bGQgYmUgaW5saW5lZC4gSSdsbCBpbmNsdWRlIGl0IGluIHRoZSBsaXN0IGZvciBub3csIGp1c3QgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGhvd2V2ZXIsIHRoYXQgc3l6a2FsbGVyIG1pZ2h0IG5vdCBkaXJlY3RseSBkaXNjb3ZlciBpbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBhcmUgbGlzdGVkIGFzIHBhcnQgb2YgdGhlIG1vZGlmaWNhdGlvbnMuIEJ1dCwgaXRzIGNhbGxlciBgaGZzX2NhdF9maW5kX2JyZWNgIHdpbGwgc3RpbGwgYmUgcmVsZXZhbnQuIExvb2tzIGxpa2UgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIGFyZSBhbHNvIHN0YXRpYy5cblxuVG8gc3RhcnQsIEknbGwgZXhhbWluZSBgZnMvaGZzL2NhdGFsb2cuY2AgdG8gdW5kZXJzdGFuZCB0aGUgd29ya2luZ3Mgb2YgYGhmc19jYXRfZmluZF9icmVjYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxNTo0ODoxOC43NjYzNTEyNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM0ODgxMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGZzX2NhdF9maW5kX2JyZWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnMvY2F0YWxvZy5jPTE4NT1zdGF0aWMgaW50IGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIHUzMiBjbmlkKVxcbi0tXFxuZnMvaGZzL2NhdGFsb2cuYy0yMjAtLy8gbW92ZSB0byByZWFkX3N1cGVyPz8/XFxuZnMvaGZzL2NhdGFsb2cuYzoyMjE6aW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxcbmZzL2hmcy9jYXRhbG9nLmMtMjIyLVxcdFxcdCAgICAgIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZClcXG4tLVxcbmZzL2hmcy9oZnNfZnMuaD0xNDU9c3RydWN0IGhmc19maW5kX2RhdGE7XFxuZnMvaGZzL2hmc19mcy5oOjE0NjpleHRlcm4gaW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxcbmZzL2hmcy9oZnNfZnMuaC0xNDctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpO1xcbi0tXFxuZnMvaGZzL3N1cGVyLmM9MzE2PXN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuZnMvaGZzL3N1cGVyLmMtMzU2LVxcdFxcdGdvdG8gYmFpbF9ub19yb290O1xcbmZzL2hmcy9zdXBlci5jOjM1NzpcXHRyZXMgPSBoZnNfY2F0X2ZpbmRfYnJlYyhzYiwgSEZTX1JPT1RfQ05JRCwgXFx1MDAyNmZkKTtcXG5mcy9oZnMvc3VwZXIuYy0zNTgtXFx0aWYgKCFyZXMpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDg6MTguODg5ODQ4NDU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc1MjUzNjA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSEZTIEZpbGVzeXN0ZW0gRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgSEZTIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLiBJdCBzZWVtcyBgaGZzX2NhdF9maW5kX2JyZWNgIGlzIGV4cG9ydGVkLCBtZWFuaW5nIGl0J3MgdmlzaWJsZSBvdXRzaWRlIGl0cyBvcmlnaW5hbCBzb3VyY2UsIGFuZCBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgaGZzX2ZpbGxfc3VwZXJgLiBJbnRlcmVzdGluZy5cblxuVGhlbiB0aGVyZSdzIGBoZnNfcmVhZF9pbm9kZWAuIEkgc2VlIGl0J3MgbWFya2VkIGFzIGBzdGF0aWNgIGluIGBmcy9oZnMvaW5vZGUuY2AsIGFsb25nIHdpdGggYGhmc19maWxlX2xvb2t1cGAuIEFuZCBgaGZzX2ZpbGxfc3VwZXJgIGlzIGFsc28gYHN0YXRpY2AsIGJ1dCB0aGF0J3MgaW4gYGZzL2hmcy9zdXBlci5jYC5cblxuVG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhpcyBjb3JyZWN0bHksIGxldCdzIGxpc3QgdGhlbSB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyOlxuXG4qICAgYGhmc19jYXRfZmluZF9icmVjYFxuKiAgIGBoZnNfcmVhZF9pbm9kZWBcbiogICBgaGZzX2ZpbGVfbG9va3VwYFxuKiAgIGBoZnNfZmlsbF9zdXBlcmBcblxuV2FpdCBhIG1pbnV0ZSwgYGhmc19yZWFkX2lub2RlYCBiZWluZyBzdGF0aWMgaXMgdW51c3VhbCwgYnV0IGl0IG1pZ2h0IHN0aWxsIGJlIGEgdXNlZnVsIHBvaW50IG9mIGV4YW1pbmF0aW9uLCBpdCBkZXBlbmRzIG9uIGhvdyBpdCBpcyBiZWluZyB1c2VkLiBJIG5lZWQgdG8gZGlnIGludG8gYGhmc19yZWFkX2lub2RlYCBmdXJ0aGVyIGFuZCBmaW5kIG91dCBpZiBpdCdzIGFjdGluZyBhcyBhIGNhbGxiYWNrIG9yIGlzIGJlaW5nIGRpcmVjdGx5IGludm9rZWQuIFRoYXQgd2lsbCBpbmZvcm0gbXkgbmV4dCBzdGVwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI5NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxNTo0ODoyMy42NDIzODcwOTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzUzODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19yZWFkX2lub2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmcy9pbm9kZS5jPTMyNT1zdGF0aWMgaW50IGhmc190ZXN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy0zNDItLypcXG5mcy9oZnMvaW5vZGUuYzozNDM6ICogaGZzX3JlYWRfaW5vZGVcXG5mcy9oZnMvaW5vZGUuYy0zNDQtICovXFxuZnMvaGZzL2lub2RlLmM6MzQ1OnN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcXG5mcy9oZnMvaW5vZGUuYy0zNDYte1xcbi0tXFxuZnMvaGZzL2lub2RlLmM9NDI1PXN0cnVjdCBpbm9kZSAqaGZzX2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGhmc19jYXRfa2V5ICprZXksIGhmc19jYXRfcmVjICpyZWMpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy00NDAtXFx0fVxcbmZzL2hmcy9pbm9kZS5jOjQ0MTpcXHRpbm9kZSA9IGlnZXQ1X2xvY2tlZChzYiwgY25pZCwgaGZzX3Rlc3RfaW5vZGUsIGhmc19yZWFkX2lub2RlLCBcXHUwMDI2ZGF0YSk7XFxuZnMvaGZzL2lub2RlLmMtNDQyLVxcdGlmIChpbm9kZSBcXHUwMDI2XFx1MDAyNiAoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSBcXHUwMDI2IElfTkVXKSlcXG4tLVxcbmZzL2hmcy9pbm9kZS5jPTU1Mj1zdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy01NzktXFx0XFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFxcdTAwMjZyZWMgfTtcXG5mcy9oZnMvaW5vZGUuYzo1ODA6XFx0XFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFxcdTAwMjZpZGF0YSk7XFxuZnMvaGZzL2lub2RlLmMtNTgxLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDg6MjMuNzQ3NzQ3NTAzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxNzkzNzk3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSaWdodCwgYGhmc19yZWFkX2lub2RlYCBpcyBkZWZpbml0ZWx5IGEga2V5IHBsYXllciBoZXJlLlwiIEkgcmVtZW1iZXIgc2VlaW5nIGl0IGNhbGxlZCBhcyBhIGNhbGxiYWNrIHdpdGhpbiBgaWdldDVfbG9ja2VkYCDigJMgdGhhdCdzIGEgY2xhc3NpYyDigJMgYW5kIGFsc28gZGlyZWN0bHkgaW4gYGhmc19maWxlX2xvb2t1cGAuIEdvb2QgdG8gY29uZmlybSB0aGF0LlxuXG5MZXQncyBicmVhayB0aGlzIGRvd24gZnVydGhlciBhbmQgbGlzdCB0aGUgcmVsZXZhbnQgc3ltYm9scy4gSSdtIHNlZWluZzpcblxuKiAgIGBoZnNfY2F0X2ZpbmRfYnJlY2BcbiogICBgaGZzX3JlYWRfaW5vZGVgXG4qICAgYGhmc19maWxlX2xvb2t1cGBcbiogICBgaGZzX2ZpbGxfc3VwZXJgXG5cbk5vdywgdGhlIGdpc3Qgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCB2YWxpZGF0aW5nIENhdGFsb2cgTm9kZSBJRHMgKENOSURzKSBhbmQgZG9pbmcgbW9yZSByb2J1c3QgY2hlY2tpbmcgZm9yIHBvdGVudGlhbGx5IGNvcnJ1cHQgaW5vZGVzIHdpdGhpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSDigJMgaXQncyBkaXJlY3RseSBpbXBhY3RpbmcgaG93IHRoZSBkcml2ZXIgaW50ZXJwcmV0cyBvbi1kaXNrIGRhdGEgc3RydWN0dXJlcyBhbmQsIGltcG9ydGFudGx5LCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgY29ycnVwdGlvbi4gQ2xlYXJseSwgdGhpcyBpcyBzb21ldGhpbmcgdHJpZ2dlcmVkIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS5cblxuQmVmb3JlIGdvaW5nIGFueSBmdXJ0aGVyLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9sLiBZZXMsIGBIRlNfRlNgIGlzIHRoZSBjb3JyZWN0IG9uZS4gVGhhdCdzIGdvb2QgdG8ga25vdy5cblxuT2theSwgbGV0J3Mga2VlcCB0aGVzZSBmb3VyIHN5bWJvbHMgLSBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAgLSBmcm9udCBvZiBtaW5kIGFzIEkgZGlnIGRlZXBlci4gVGhleeKAmXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwYXRjaCdzIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIwOSwiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDg6MjkuNDY1Njg5NTY0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0MDc4MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X2ZpbmRfYnJlY1wiLFxuICAgIFwiaGZzX3JlYWRfaW5vZGVcIixcbiAgICBcImhmc19maWxlX2xvb2t1cFwiLFxuICAgIFwiaGZzX2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENhdGFsb2cgTm9kZSBJRHMgKENOSUQpIGFuZCBjaGVja3MgZm9yIGJhZCBpbm9kZXMgaW4gdGhlIEhGUyBmaWxlc3lzdGVtIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgSEZTIHBhcnNlcyBvbi1kaXNrIHN0cnVjdHVyZXMgYW5kIGhhbmRsZXMgY29ycnVwdGVkIGltYWdlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X2ZpbmRfYnJlY1wiLFxuICAgIFwiaGZzX3JlYWRfaW5vZGVcIixcbiAgICBcImhmc19maWxlX2xvb2t1cFwiLFxuICAgIFwiaGZzX2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENhdGFsb2cgTm9kZSBJRHMgKENOSUQpIGFuZCBjaGVja3MgZm9yIGJhZCBpbm9kZXMgaW4gdGhlIEhGUyBmaWxlc3lzdGVtIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgSEZTIHBhcnNlcyBvbi1kaXNrIHN0cnVjdHVyZXMgYW5kIGhhbmRsZXMgY29ycnVwdGVkIGltYWdlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4sh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 15:27:29 +0000 UTC FinishedAt: 2026-07-09 15:48:31 +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": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "a882eb98-4dee-45f2-a541-240da89c5722" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfs_cat_find_brec", "hfs_read_inode", "hfs_file_lookup", "hfs_fill_super" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA5IDE1OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfZmluZF9icmVjJiMzNDssCiAgICAmIzM0O2hmc19yZWFkX2lub2RlJiMzNDssCiAgICAmIzM0O2hmc19maWxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtoZnNfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENhdGFsb2cgTm9kZSBJRHMgKENOSUQpIGFuZCBjaGVja3MgZm9yIGJhZCBpbm9kZXMgaW4gdGhlIEhGUyBmaWxlc3lzdGVtIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgSEZTIHBhcnNlcyBvbi1kaXNrIHN0cnVjdHVyZXMgYW5kIGhhbmRsZXMgY29ycnVwdGVkIGltYWdlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxNTo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU1NDVlZDc2MDA5NGNjOGQ4MzJkZWU0MGI1NmE5NThjMWYwZmUwYTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDE1OjQ3OjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uNDkwYzVlMTMwZGEzYjYgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvY2F0YWxvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvY2F0YWxvZy5jXG5AQCAtMTgyLDYgJiM0MzsxODIsNDAgQEAgaW50IGhmc19jYXRfa2V5Y21wKGNvbnN0IGJ0cmVlX2tleSAqa2V5MSwgY29uc3QgYnRyZWVfa2V5ICprZXkyKVxuIFx0XHRcdCAga2V5Mi1cdTAwM2VjYXQuQ05hbWUubmFtZSwga2V5Mi1cdTAwM2VjYXQuQ05hbWUubGVuKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpXG4mIzQzO3tcbiYjNDM7XHRoZnNfY2F0X3JlYyByZWM7XG4mIzQzO1x0dTMyIGZvdW5kX2NuaWQ7XG4mIzQzO1x0aW50IHJlY19sZW47XG4mIzQzO1xuJiM0MztcdHJlY19sZW4gPSBmZC1cdTAwM2VlbnRyeWxlbmd0aDtcbiYjNDM7XHRpZiAocmVjX2xlbiBcdTAwM2M9IDAgfHwgKHNpemVfdClyZWNfbGVuIFx1MDAzZSBzaXplb2YocmVjKSlcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQoXHUwMDI2cmVjLCAwLCBzaXplb2YocmVjKSk7XG4mIzQzO1x0aGZzX2Jub2RlX3JlYWQoZmQtXHUwMDNlYm5vZGUsIFx1MDAyNnJlYywgZmQtXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHJlYy50eXBlKSB7XG4mIzQzO1x0Y2FzZSBIRlNfQ0RSX0ZJTDpcbiYjNDM7XHRcdGlmICgoc2l6ZV90KXJlY19sZW4gIT0gc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2ZpbGUpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZmlsZS5GbE51bSk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIEhGU19DRFJfRElSOlxuJiM0MztcdFx0aWYgKChzaXplX3QpcmVjX2xlbiAhPSBzaXplb2Yoc3RydWN0IGhmc19jYXRfZGlyKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0XHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmRpci5EaXJJRCk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoZm91bmRfY25pZCAhPSBjbmlkKVxuJiM0MztcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIFRyeSB0byBnZXQgYSBjYXRhbG9nIGVudHJ5IGZvciBnaXZlbiBjYXRhbG9nIGlkICovXG4gLy8gbW92ZSB0byByZWFkX3N1cGVyPz8/XG4gaW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxuQEAgLTIwOCw3ICYjNDM7MjQyLDEyIEBAIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXHRtZW1jcHkoZmQtXHUwMDNlc2VhcmNoX2tleS1cdTAwM2VjYXQuQ05hbWUubmFtZSwgcmVjLnRocmVhZC5DTmFtZS5uYW1lLCBsZW4pO1xuLVx0cmV0dXJuIGhmc19icmVjX2ZpbmQoZmQpO1xuJiM0MztcbiYjNDM7XHRyZXMgPSBoZnNfYnJlY19maW5kKGZkKTtcbiYjNDM7XHRpZiAocmVzKVxuJiM0MztcdFx0cmV0dXJuIHJlcztcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChmZCwgY25pZCk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmVcbmRpZmYgLS1naXQgYS9mcy9oZnMvaGZzX2ZzLmggYi9mcy9oZnMvaGZzX2ZzLmhcbmluZGV4IGYzNjI0NTE0ZmNiMDMwLi42NzA2MzhmMTc0MzhjZSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9oZnNfZnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2hmc19mcy5oXG5AQCAtMTU1LDYgJiM0MzsxNTUsMjUgQEAgZXh0ZXJuIGludCBoZnNfY2F0X21vdmUodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqc3JjX2RpcixcbiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSxcbiBcdFx0XHQgICAgICB1MzIgcGFyZW50LCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSk7XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFZhbGlkYXRlIHRoZSBDTklEIG9mIGEgY2F0YWxvZyByZWNvcmQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaGZzX2lzX3ZhbGlkX2NuaWQodTMyIGNuaWQsIHU4IHR5cGUpXG4mIzQzO3tcbiYjNDM7XHRpZiAobGlrZWx5KGNuaWQgXHUwMDNlPSBIRlNfRklSU1RVU0VSX0NOSUQpKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAoY25pZCkge1xuJiM0MztcdGNhc2UgSEZTX1JPT1RfQ05JRDpcbiYjNDM7XHRcdHJldHVybiB0eXBlID09IEhGU19DRFJfRElSO1xuJiM0MztcdGNhc2UgSEZTX0VYVF9DTklEOlxuJiM0MztcdGNhc2UgSEZTX0NBVF9DTklEOlxuJiM0MztcdFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9GSUw7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gLyogZGlyLmMgKi9cbiBleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBoZnNfZGlyX29wZXJhdGlvbnM7XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGhmc19kaXJfaW5vZGVfb3BlcmF0aW9ucztcbmRpZmYgLS1naXQgYS9mcy9oZnMvaW5vZGUuYyBiL2ZzL2hmcy9pbm9kZS5jXG5pbmRleCBhYzRhOTA1NWM1YzBlYS4uYzllNzVjMmU1NzZhM2YgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvaW5vZGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2lub2RlLmNcbkBAIC0zNjcsNiAmIzQzOzM2Nyw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbiBcdHJlYyA9IGlkYXRhLVx1MDAzZXJlYztcbiBcdHN3aXRjaCAocmVjLVx1MDAzZXR5cGUpIHtcbiBcdGNhc2UgSEZTX0NEUl9GSUw6XG4mIzQzO1x0XHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VmaWxlLkZsTnVtKSwgcmVjLVx1MDAzZXR5cGUpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XG4gXHRcdGlmICghSEZTX0lTX1JTUkMoaW5vZGUpKSB7XG4gXHRcdFx0aGZzX2lub2RlX3JlYWRfZm9yayhpbm9kZSwgcmVjLVx1MDAzZWZpbGUuRXh0UmVjLCByZWMtXHUwMDNlZmlsZS5MZ0xlbixcbiBcdFx0XHRcdFx0ICAgIHJlYy1cdTAwM2VmaWxlLlB5TGVuLCBiZTE2X3RvX2NwdShyZWMtXHUwMDNlZmlsZS5DbHBTaXplKSk7XG5AQCAtMzkwLDYgJiM0MzszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRcdGlub2RlLVx1MDAzZWlfbWFwcGluZy1cdTAwM2VhX29wcyA9IFx1MDAyNmhmc19hb3BzO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgSEZTX0NEUl9ESVI6XG4mIzQzO1x0XHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VkaXIuRGlySUQpLCByZWMtXHUwMDNldHlwZSkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiBcdFx0aW5vZGUtXHUwMDNlaV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtXHUwMDNlZGlyLkRpcklEKTtcbiBcdFx0aW5vZGUtXHUwMDNlaV9zaXplID0gYmUxNl90b19jcHUocmVjLVx1MDAzZWRpci5WYWwpICYjNDM7IDI7XG4gXHRcdEhGU19JKGlub2RlKS1cdTAwM2Vmc19ibG9ja3MgPSAwO1xuQEAgLTU3MSwxMyAmIzQzOzU3NywxOCBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4gXHRyZXMgPSBoZnNfYnJlY19yZWFkKFx1MDAyNmZkLCBcdTAwMjZyZWMsIHNpemVvZihyZWMpKTtcbiBcdGlmICghcmVzKSB7XG4gXHRcdHN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCBcdTAwMjZyZWMgfTtcbi1cdFx0aGZzX3JlYWRfaW5vZGUoaW5vZGUsIFx1MDAyNmlkYXRhKTtcbiYjNDM7XHRcdHJlcyA9IGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4gXHR9XG4gXHRoZnNfZmluZF9leGl0KFx1MDAyNmZkKTtcbiBcdGlmIChyZXMpIHtcbiBcdFx0aXB1dChpbm9kZSk7XG4gXHRcdHJldHVybiBFUlJfUFRSKHJlcyk7XG4gXHR9XG4mIzQzO1xuJiM0MztcdGlmIChpc19iYWRfaW5vZGUoaW5vZGUpKSB7XG4mIzQzO1x0XHRpcHV0KGlub2RlKTtcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuJiM0MztcdH1cbiBcdEhGU19JKGlub2RlKS1cdTAwM2Vyc3JjX2lub2RlID0gZGlyO1xuIFx0SEZTX0koZGlyKS1cdTAwM2Vyc3JjX2lub2RlID0gaW5vZGU7XG4gXHRpZ3JhYihkaXIpO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9zdXBlci5jIGIvZnMvaGZzL3N1cGVyLmNcbmluZGV4IGE0NjZjNDAxZjZiYjI2Li45OGI4MDc5NWJjZGU5YSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9zdXBlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvc3VwZXIuY1xuQEAgLTM3Miw2ICYjNDM7MzcyLDExIEBAIHN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0aWYgKCFyb290X2lub2RlKVxuIFx0XHRnb3RvIGJhaWxfbm9fcm9vdDtcbiBcbiYjNDM7XHRpZiAoaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpKSB7XG4mIzQzO1x0XHRpcHV0KHJvb3RfaW5vZGUpO1xuJiM0MztcdFx0Z290byBiYWlsX25vX3Jvb3Q7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNldF9kZWZhdWx0X2Rfb3Aoc2IsIFx1MDAyNmhmc19kZW50cnlfb3BlcmF0aW9ucyk7XG4gXHRyZXMgPSAtRU5PTUVNO1xuIFx0c2ItXHUwMDNlc19yb290ID0gZF9tYWtlX3Jvb3Qocm9vdF9pbm9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTU6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzX2NhdF9maW5kX2JyZWMmIzM0OywKICAgICYjMzQ7aGZzX3JlYWRfaW5vZGUmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGVfbG9va3VwJiMzNDssCiAgICAmIzM0O2hmc19maWxsX3N1cGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ2F0YWxvZyBOb2RlIElEcyAoQ05JRCkgYW5kIGNoZWNrcyBmb3IgYmFkIGlub2RlcyBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBIRlMgcGFyc2VzIG9uLWRpc2sgc3RydWN0dXJlcyBhbmQgaGFuZGxlcyBjb3JydXB0ZWQgaW1hZ2VzLCB3aGljaCBpcyByZWFjaGFibGUgYnkgbW91bnRpbmcgYW4gSEZTIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NTQ1ZWQ3NjAwOTRjYzhkODMyZGVlNDBiNTZhOTU4YzFmMGZlMGE0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAxNTo0Nzo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jCmluZGV4IDFiZmEzNmQ3MWUyNDdhLi40OTBjNWUxMzBkYTNiNiAxMDA2NDQKLS0tIGEvZnMvaGZzL2NhdGFsb2cuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvY2F0YWxvZy5jCkBAIC0xODIsNiAmIzQzOzE4Miw0MCBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpCiAJCQkgIGtleTItJmd0O2NhdC5DTmFtZS5uYW1lLCBrZXkyLSZndDtjYXQuQ05hbWUubGVuKTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpCiYjNDM7ewomIzQzOwloZnNfY2F0X3JlYyByZWM7CiYjNDM7CXUzMiBmb3VuZF9jbmlkOwomIzQzOwlpbnQgcmVjX2xlbjsKJiM0MzsKJiM0MzsJcmVjX2xlbiA9IGZkLSZndDtlbnRyeWxlbmd0aDsKJiM0MzsJaWYgKHJlY19sZW4gJmx0Oz0gMCB8fCAoc2l6ZV90KXJlY19sZW4gJmd0OyBzaXplb2YocmVjKSkKJiM0MzsJCXJldHVybiAtRUlPOwomIzQzOwomIzQzOwltZW1zZXQoJmFtcDtyZWMsIDAsIHNpemVvZihyZWMpKTsKJiM0MzsJaGZzX2Jub2RlX3JlYWQoZmQtJmd0O2Jub2RlLCAmYW1wO3JlYywgZmQtJmd0O2VudHJ5b2Zmc2V0LCByZWNfbGVuKTsKJiM0MzsKJiM0MzsJc3dpdGNoIChyZWMudHlwZSkgewomIzQzOwljYXNlIEhGU19DRFJfRklMOgomIzQzOwkJaWYgKChzaXplX3QpcmVjX2xlbiAhPSBzaXplb2Yoc3RydWN0IGhmc19jYXRfZmlsZSkpCiYjNDM7CQkJcmV0dXJuIC1FSU87CiYjNDM7CQlmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmZpbGUuRmxOdW0pOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgSEZTX0NEUl9ESVI6CiYjNDM7CQlpZiAoKHNpemVfdClyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9kaXIpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwkJZm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gLUVJTzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoZm91bmRfY25pZCAhPSBjbmlkKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIC8qIFRyeSB0byBnZXQgYSBjYXRhbG9nIGVudHJ5IGZvciBnaXZlbiBjYXRhbG9nIGlkICovCiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz8KIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCwKQEAgLTIwOCw3ICYjNDM7MjQyLDEyIEBAIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCwKIAkJcmV0dXJuIC1FSU87CiAJfQogCW1lbWNweShmZC0mZ3Q7c2VhcmNoX2tleS0mZ3Q7Y2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTsKLQlyZXR1cm4gaGZzX2JyZWNfZmluZChmZCk7CiYjNDM7CiYjNDM7CXJlcyA9IGhmc19icmVjX2ZpbmQoZmQpOwomIzQzOwlpZiAocmVzKQomIzQzOwkJcmV0dXJuIHJlczsKJiM0MzsKJiM0MzsJcmV0dXJuIGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChmZCwgY25pZCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUKZGlmZiAtLWdpdCBhL2ZzL2hmcy9oZnNfZnMuaCBiL2ZzL2hmcy9oZnNfZnMuaAppbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0Ci0tLSBhL2ZzL2hmcy9oZnNfZnMuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvaGZzX2ZzLmgKQEAgLTE1NSw2ICYjNDM7MTU1LDI1IEBAIGV4dGVybiBpbnQgaGZzX2NhdF9tb3ZlKHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKnNyY19kaXIsCiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSwKIAkJCSAgICAgIHUzMiBwYXJlbnQsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lKTsKIAomIzQzOy8qCiYjNDM7ICogVmFsaWRhdGUgdGhlIENOSUQgb2YgYSBjYXRhbG9nIHJlY29yZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaGZzX2lzX3ZhbGlkX2NuaWQodTMyIGNuaWQsIHU4IHR5cGUpCiYjNDM7ewomIzQzOwlpZiAobGlrZWx5KGNuaWQgJmd0Oz0gSEZTX0ZJUlNUVVNFUl9DTklEKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlzd2l0Y2ggKGNuaWQpIHsKJiM0MzsJY2FzZSBIRlNfUk9PVF9DTklEOgomIzQzOwkJcmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9ESVI7CiYjNDM7CWNhc2UgSEZTX0VYVF9DTklEOgomIzQzOwljYXNlIEhGU19DQVRfQ05JRDoKJiM0MzsJCXJldHVybiB0eXBlID09IEhGU19DRFJfRklMOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyogZGlyLmMgKi8KIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9uczsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7CmRpZmYgLS1naXQgYS9mcy9oZnMvaW5vZGUuYyBiL2ZzL2hmcy9pbm9kZS5jCmluZGV4IGFjNGE5MDU1YzVjMGVhLi5jOWU3NWMyZTU3NmEzZiAxMDA2NDQKLS0tIGEvZnMvaGZzL2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2lub2RlLmMKQEAgLTM2Nyw2ICYjNDM7MzY3LDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKQogCXJlYyA9IGlkYXRhLSZndDtyZWM7CiAJc3dpdGNoIChyZWMtJmd0O3R5cGUpIHsKIAljYXNlIEhGU19DRFJfRklMOgomIzQzOwkJaWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtJmd0O2ZpbGUuRmxOdW0pLCByZWMtJmd0O3R5cGUpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwogCQlpZiAoIUhGU19JU19SU1JDKGlub2RlKSkgewogCQkJaGZzX2lub2RlX3JlYWRfZm9yayhpbm9kZSwgcmVjLSZndDtmaWxlLkV4dFJlYywgcmVjLSZndDtmaWxlLkxnTGVuLAogCQkJCQkgICAgcmVjLSZndDtmaWxlLlB5TGVuLCBiZTE2X3RvX2NwdShyZWMtJmd0O2ZpbGUuQ2xwU2l6ZSkpOwpAQCAtMzkwLDYgJiM0MzszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpCiAJCWlub2RlLSZndDtpX21hcHBpbmctJmd0O2Ffb3BzID0gJmFtcDtoZnNfYW9wczsKIAkJYnJlYWs7CiAJY2FzZSBIRlNfQ0RSX0RJUjoKJiM0MzsJCWlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLSZndDtkaXIuRGlySUQpLCByZWMtJmd0O3R5cGUpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwogCQlpbm9kZS0mZ3Q7aV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtJmd0O2Rpci5EaXJJRCk7CiAJCWlub2RlLSZndDtpX3NpemUgPSBiZTE2X3RvX2NwdShyZWMtJmd0O2Rpci5WYWwpICYjNDM7IDI7CiAJCUhGU19JKGlub2RlKS0mZ3Q7ZnNfYmxvY2tzID0gMDsKQEAgLTU3MSwxMyAmIzQzOzU3NywxOCBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCiAJcmVzID0gaGZzX2JyZWNfcmVhZCgmYW1wO2ZkLCAmYW1wO3JlYywgc2l6ZW9mKHJlYykpOwogCWlmICghcmVzKSB7CiAJCXN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCAmYW1wO3JlYyB9OwotCQloZnNfcmVhZF9pbm9kZShpbm9kZSwgJmFtcDtpZGF0YSk7CiYjNDM7CQlyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgJmFtcDtpZGF0YSk7CiAJfQogCWhmc19maW5kX2V4aXQoJmFtcDtmZCk7CiAJaWYgKHJlcykgewogCQlpcHV0KGlub2RlKTsKIAkJcmV0dXJuIEVSUl9QVFIocmVzKTsKIAl9CiYjNDM7CiYjNDM7CWlmIChpc19iYWRfaW5vZGUoaW5vZGUpKSB7CiYjNDM7CQlpcHV0KGlub2RlKTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FSU8pOwomIzQzOwl9CiAJSEZTX0koaW5vZGUpLSZndDtyc3JjX2lub2RlID0gZGlyOwogCUhGU19JKGRpciktJmd0O3JzcmNfaW5vZGUgPSBpbm9kZTsKIAlpZ3JhYihkaXIpOwpkaWZmIC0tZ2l0IGEvZnMvaGZzL3N1cGVyLmMgYi9mcy9oZnMvc3VwZXIuYwppbmRleCBhNDY2YzQwMWY2YmIyNi4uOThiODA3OTViY2RlOWEgMTAwNjQ0Ci0tLSBhL2ZzL2hmcy9zdXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9zdXBlci5jCkBAIC0zNzIsNiAmIzQzOzM3MiwxMSBAQCBzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpZiAoIXJvb3RfaW5vZGUpCiAJCWdvdG8gYmFpbF9ub19yb290OwogCiYjNDM7CWlmIChpc19iYWRfaW5vZGUocm9vdF9pbm9kZSkpIHsKJiM0MzsJCWlwdXQocm9vdF9pbm9kZSk7CiYjNDM7CQlnb3RvIGJhaWxfbm9fcm9vdDsKJiM0MzsJfQomIzQzOwogCXNldF9kZWZhdWx0X2Rfb3Aoc2IsICZhbXA7aGZzX2RlbnRyeV9vcGVyYXRpb25zKTsKIAlyZXMgPSAtRU5PTUVNOwogCXNiLSZndDtzX3Jvb3QgPSBkX21ha2Vfcm9vdChyb290X2lub2RlKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTU6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGZzL2hmcy9gLiBJdCBzZWVtcyB0aGUgZm9jdXMgaXMgb24gdGlnaHRlbmluZyB1cCBDTklEIHZhbGlkYXRpb24g4oCTIHRoYXQmIzM5O3MgZ29vZCwgZXNwZWNpYWxseSB3aXRoIGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGFuZCBgaGZzX2lzX3ZhbGlkX2NuaWRgIGdldHRpbmcgc29tZSBhdHRlbnRpb24uIEl0JiMzOTtzIGFsc28gYWRkaW5nIGNoZWNrcyBmb3IgYGlzX2JhZF9pbm9kZWAgaW4gdGhlIGxvb2t1cCBmdW5jdGlvbiAoYGhmc19maWxlX2xvb2t1cGApIGFuZCBkdXJpbmcgc3VwZXJibG9jayBpbml0aWFsaXphdGlvbiAoYGhmc19maWxsX3N1cGVyYCkuIAoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBIRlMgZmlsZXN5c3RlbS4gU2luY2UgSEZTIGlzIHJlYWNoYWJsZSwgbWVhbmluZyB3ZSBjYW4gbW91bnQgYW4gSEZTIGltYWdlIGFuZCB0cmlnZ2VyIHRoZXNlIGNoYW5nZXMsIGZ1enppbmcgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgYWxsIHRoZSByaWdodCBwbGFjZXMgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuCgpOb3csIGxldCYjMzk7cyBmaWd1cmUgb3V0IHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWFyY2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIGBmcy9oZnMvYCwgb3IgbWF5YmUganVzdCBhIGRpcmVjdCBgQ09ORklHX0hGU19GU2Agd2lsbCBkbyB0aGUgdHJpY2suIEtub3dpbmcgdGhlIGNvbmZpZ3VyYXRpb24gaXMga2V5IGZvciB0ZXN0aW5nIHRoaXMgcHJvcGVybHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SEZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmcy9LY29uZmlnOjI6Y29uZmlnIEhGU19GU1xuZnMvaGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIE1hY2ludG9zaCBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvaGZzL0tjb25maWc9MTc9Y29uZmlnIEhGU19LVU5JVF9URVNUXG5mcy9oZnMvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBIRlMgZmlsZXN5c3RlbVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5mcy9oZnMvS2NvbmZpZzoxOTpcdGRlcGVuZHMgb24gSEZTX0ZTIFx1MDAyNlx1MDAyNiBLVU5JVFxuZnMvaGZzL0tjb25maWctMjAtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDE1OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNjcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIRlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gd29ya2luZyB3aXRoIGlzIGBIRlNfRlNgLiBSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGlkZW50aWZ5aW5nIHRoZSBrZXkgc3ltYm9scyB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBCYXNlZCBvbiB0aGUgZGlmZnMsIGhlcmUgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZDogYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAsIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfaXNfdmFsaWRfY25pZGAsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4KCk5vdywgbGV0JiMzOTtzIHN0cmF0ZWdpY2FsbHkgdGhpbmsgYWJvdXQgdGhlc2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgLiBXaGlsZSBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBsaXN0ZWQsIGl0JiMzOTtzIG1hcmtlZCBhcyBzdGF0aWMsIG1lYW5pbmcgaXQgY291bGQgYmUgaW5saW5lZC4gSSYjMzk7bGwgaW5jbHVkZSBpdCBpbiB0aGUgbGlzdCBmb3Igbm93LCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBob3dldmVyLCB0aGF0IHN5emthbGxlciBtaWdodCBub3QgZGlyZWN0bHkgZGlzY292ZXIgaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zLCBldmVuIGlmIHRoZXkgYXJlIGxpc3RlZCBhcyBwYXJ0IG9mIHRoZSBtb2RpZmljYXRpb25zLiBCdXQsIGl0cyBjYWxsZXIgYGhmc19jYXRfZmluZF9icmVjYCB3aWxsIHN0aWxsIGJlIHJlbGV2YW50LiBMb29rcyBsaWtlIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYCBhcmUgYWxzbyBzdGF0aWMuCgpUbyBzdGFydCwgSSYjMzk7bGwgZXhhbWluZSBgZnMvaGZzL2NhdGFsb2cuY2AgdG8gdW5kZXJzdGFuZCB0aGUgd29ya2luZ3Mgb2YgYGhmc19jYXRfZmluZF9icmVjYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL2NhdGFsb2cuYz0xODU9c3RhdGljIGludCBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB1MzIgY25pZClcbi0tXG5mcy9oZnMvY2F0YWxvZy5jLTIyMC0vLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cbmZzL2hmcy9jYXRhbG9nLmM6MjIxOmludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbmZzL2hmcy9jYXRhbG9nLmMtMjIyLVx0XHQgICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXG4tLVxuZnMvaGZzL2hmc19mcy5oPTE0NT1zdHJ1Y3QgaGZzX2ZpbmRfZGF0YTtcbmZzL2hmcy9oZnNfZnMuaDoxNDY6ZXh0ZXJuIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbmZzL2hmcy9oZnNfZnMuaC0xNDctXHRcdFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpO1xuLS1cbmZzL2hmcy9zdXBlci5jPTMxNj1zdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5mcy9oZnMvc3VwZXIuYy0zNTYtXHRcdGdvdG8gYmFpbF9ub19yb290O1xuZnMvaGZzL3N1cGVyLmM6MzU3Olx0cmVzID0gaGZzX2NhdF9maW5kX2JyZWMoc2IsIEhGU19ST09UX0NOSUQsIFx1MDAyNmZkKTtcbmZzL2hmcy9zdXBlci5jLTM1OC1cdGlmICghcmVzKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI5NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSEZTIEZpbGVzeXN0ZW0gRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBIRlMgZmlsZXN5c3RlbSBmdW5jdGlvbnMuIEl0IHNlZW1zIGBoZnNfY2F0X2ZpbmRfYnJlY2AgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQmIzM5O3MgdmlzaWJsZSBvdXRzaWRlIGl0cyBvcmlnaW5hbCBzb3VyY2UsIGFuZCBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gYGhmc19maWxsX3N1cGVyYC4gSW50ZXJlc3RpbmcuCgpUaGVuIHRoZXJlJiMzOTtzIGBoZnNfcmVhZF9pbm9kZWAuIEkgc2VlIGl0JiMzOTtzIG1hcmtlZCBhcyBgc3RhdGljYCBpbiBgZnMvaGZzL2lub2RlLmNgLCBhbG9uZyB3aXRoIGBoZnNfZmlsZV9sb29rdXBgLiBBbmQgYGhmc19maWxsX3N1cGVyYCBpcyBhbHNvIGBzdGF0aWNgLCBidXQgdGhhdCYjMzk7cyBpbiBgZnMvaGZzL3N1cGVyLmNgLgoKVG8gbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoaXMgY29ycmVjdGx5LCBsZXQmIzM5O3MgbGlzdCB0aGVtIHRvIGJlIGFic29sdXRlbHkgY2xlYXI6CgoqICAgYGhmc19jYXRfZmluZF9icmVjYAoqICAgYGhmc19yZWFkX2lub2RlYAoqICAgYGhmc19maWxlX2xvb2t1cGAKKiAgIGBoZnNfZmlsbF9zdXBlcmAKCldhaXQgYSBtaW51dGUsIGBoZnNfcmVhZF9pbm9kZWAgYmVpbmcgc3RhdGljIGlzIHVudXN1YWwsIGJ1dCBpdCBtaWdodCBzdGlsbCBiZSBhIHVzZWZ1bCBwb2ludCBvZiBleGFtaW5hdGlvbiwgaXQgZGVwZW5kcyBvbiBob3cgaXQgaXMgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIGRpZyBpbnRvIGBoZnNfcmVhZF9pbm9kZWAgZnVydGhlciBhbmQgZmluZCBvdXQgaWYgaXQmIzM5O3MgYWN0aW5nIGFzIGEgY2FsbGJhY2sgb3IgaXMgYmVpbmcgZGlyZWN0bHkgaW52b2tlZC4gVGhhdCB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDE1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hmc19yZWFkX2lub2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzL2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL2lub2RlLmM9MzI1PXN0YXRpYyBpbnQgaGZzX3Rlc3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbi0tXG5mcy9oZnMvaW5vZGUuYy0zNDItLypcbmZzL2hmcy9pbm9kZS5jOjM0MzogKiBoZnNfcmVhZF9pbm9kZVxuZnMvaGZzL2lub2RlLmMtMzQ0LSAqL1xuZnMvaGZzL2lub2RlLmM6MzQ1OnN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbmZzL2hmcy9pbm9kZS5jLTM0Ni17XG4tLVxuZnMvaGZzL2lub2RlLmM9NDI1PXN0cnVjdCBpbm9kZSAqaGZzX2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGhmc19jYXRfa2V5ICprZXksIGhmc19jYXRfcmVjICpyZWMpXG4tLVxuZnMvaGZzL2lub2RlLmMtNDQwLVx0fVxuZnMvaGZzL2lub2RlLmM6NDQxOlx0aW5vZGUgPSBpZ2V0NV9sb2NrZWQoc2IsIGNuaWQsIGhmc190ZXN0X2lub2RlLCBoZnNfcmVhZF9pbm9kZSwgXHUwMDI2ZGF0YSk7XG5mcy9oZnMvaW5vZGUuYy00NDItXHRpZiAoaW5vZGUgXHUwMDI2XHUwMDI2IChpbm9kZV9zdGF0ZV9yZWFkX29uY2UoaW5vZGUpIFx1MDAyNiBJX05FVykpXG4tLVxuZnMvaGZzL2lub2RlLmM9NTUyPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpoZnNfZmlsZV9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9oZnMvaW5vZGUuYy01NzktXHRcdHN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCBcdTAwMjZyZWMgfTtcbmZzL2hmcy9pbm9kZS5jOjU4MDpcdFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFx1MDAyNmlkYXRhKTtcbmZzL2hmcy9pbm9kZS5jLTU4MS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjA5CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBgaGZzX3JlYWRfaW5vZGVgIGlzIGRlZmluaXRlbHkgYSBrZXkgcGxheWVyIGhlcmUuJiMzNDsgSSByZW1lbWJlciBzZWVpbmcgaXQgY2FsbGVkIGFzIGEgY2FsbGJhY2sgd2l0aGluIGBpZ2V0NV9sb2NrZWRgIOKAkyB0aGF0JiMzOTtzIGEgY2xhc3NpYyDigJMgYW5kIGFsc28gZGlyZWN0bHkgaW4gYGhmc19maWxlX2xvb2t1cGAuIEdvb2QgdG8gY29uZmlybSB0aGF0LgoKTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmdXJ0aGVyIGFuZCBsaXN0IHRoZSByZWxldmFudCBzeW1ib2xzLiBJJiMzOTttIHNlZWluZzoKCiogICBgaGZzX2NhdF9maW5kX2JyZWNgCiogICBgaGZzX3JlYWRfaW5vZGVgCiogICBgaGZzX2ZpbGVfbG9va3VwYAoqICAgYGhmc19maWxsX3N1cGVyYAoKTm93LCB0aGUgZ2lzdCBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFib3V0IHZhbGlkYXRpbmcgQ2F0YWxvZyBOb2RlIElEcyAoQ05JRHMpIGFuZCBkb2luZyBtb3JlIHJvYnVzdCBjaGVja2luZyBmb3IgcG90ZW50aWFsbHkgY29ycnVwdCBpbm9kZXMgd2l0aGluIHRoZSBIRlMgZmlsZXN5c3RlbSBkcml2ZXIuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlIOKAkyBpdCYjMzk7cyBkaXJlY3RseSBpbXBhY3RpbmcgaG93IHRoZSBkcml2ZXIgaW50ZXJwcmV0cyBvbi1kaXNrIGRhdGEgc3RydWN0dXJlcyBhbmQsIGltcG9ydGFudGx5LCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgY29ycnVwdGlvbi4gQ2xlYXJseSwgdGhpcyBpcyBzb21ldGhpbmcgdHJpZ2dlcmVkIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS4KCkJlZm9yZSBnb2luZyBhbnkgZnVydGhlciwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbC4gWWVzLCBgSEZTX0ZTYCBpcyB0aGUgY29ycmVjdCBvbmUuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LgoKT2theSwgbGV0JiMzOTtzIGtlZXAgdGhlc2UgZm91ciBzeW1ib2xzIC0gYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIC0gZnJvbnQgb2YgbWluZCBhcyBJIGRpZyBkZWVwZXIuIFRoZXnigJlyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzX2NhdF9maW5kX2JyZWMmIzM0OywKICAgICYjMzQ7aGZzX3JlYWRfaW5vZGUmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGVfbG9va3VwJiMzNDssCiAgICAmIzM0O2hmc19maWxsX3N1cGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ2F0YWxvZyBOb2RlIElEcyAoQ05JRCkgYW5kIGNoZWNrcyBmb3IgYmFkIGlub2RlcyBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBIRlMgcGFyc2VzIG9uLWRpc2sgc3RydWN0dXJlcyBhbmQgaGFuZGxlcyBjb3JydXB0ZWQgaW1hZ2VzLCB3aGljaCBpcyByZWFjaGFibGUgYnkgbW91bnRpbmcgYW4gSEZTIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDYXRhbG9nIE5vZGUgSURzIChDTklEKSBhbmQgY2hlY2tzIGZvciBiYWQgaW5vZGVzIGluIHRoZSBIRlMgZmlsZXN5c3RlbSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IEhGUyBwYXJzZXMgb24tZGlzayBzdHJ1Y3R1cmVzIGFuZCBoYW5kbGVzIGNvcnJ1cHRlZCBpbWFnZXMsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSBtb3VudGluZyBhbiBIRlMgaW1hZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxNTo0Nzo0OC43NzIwMjM0NDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDg3Nzc2MjYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X2ZpbmRfYnJlY1wiLFxuICAgIFwiaGZzX3JlYWRfaW5vZGVcIixcbiAgICBcImhmc19maWxlX2xvb2t1cFwiLFxuICAgIFwiaGZzX2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENhdGFsb2cgTm9kZSBJRHMgKENOSUQpIGFuZCBjaGVja3MgZm9yIGJhZCBpbm9kZXMgaW4gdGhlIEhGUyBmaWxlc3lzdGVtIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgSEZTIHBhcnNlcyBvbi1kaXNrIHN0cnVjdHVyZXMgYW5kIGhhbmRsZXMgY29ycnVwdGVkIGltYWdlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDc6NDguNzcyMDUyNDI0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODIwMjQ3MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1NTQ1ZWQ3NjAwOTRjYzhkODMyZGVlNDBiNTZhOTU4YzFmMGZlMGE0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDkgMTU6NDc6NDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2NhdGFsb2cuYyBiL2ZzL2hmcy9jYXRhbG9nLmNcXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uNDkwYzVlMTMwZGEzYjYgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL2NhdGFsb2cuY1xcbisrKyBiL2ZzL2hmcy9jYXRhbG9nLmNcXG5AQCAtMTgyLDYgKzE4Miw0MCBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpXFxuIFxcdFxcdFxcdCAga2V5Mi1cXHUwMDNlY2F0LkNOYW1lLm5hbWUsIGtleTItXFx1MDAzZWNhdC5DTmFtZS5sZW4pO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIHUzMiBjbmlkKVxcbit7XFxuK1xcdGhmc19jYXRfcmVjIHJlYztcXG4rXFx0dTMyIGZvdW5kX2NuaWQ7XFxuK1xcdGludCByZWNfbGVuO1xcbitcXG4rXFx0cmVjX2xlbiA9IGZkLVxcdTAwM2VlbnRyeWxlbmd0aDtcXG4rXFx0aWYgKHJlY19sZW4gXFx1MDAzYz0gMCB8fCAoc2l6ZV90KXJlY19sZW4gXFx1MDAzZSBzaXplb2YocmVjKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbitcXHRtZW1zZXQoXFx1MDAyNnJlYywgMCwgc2l6ZW9mKHJlYykpO1xcbitcXHRoZnNfYm5vZGVfcmVhZChmZC1cXHUwMDNlYm5vZGUsIFxcdTAwMjZyZWMsIGZkLVxcdTAwM2VlbnRyeW9mZnNldCwgcmVjX2xlbik7XFxuK1xcbitcXHRzd2l0Y2ggKHJlYy50eXBlKSB7XFxuK1xcdGNhc2UgSEZTX0NEUl9GSUw6XFxuK1xcdFxcdGlmICgoc2l6ZV90KXJlY19sZW4gIT0gc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2ZpbGUpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5maWxlLkZsTnVtKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgSEZTX0NEUl9ESVI6XFxuK1xcdFxcdGlmICgoc2l6ZV90KXJlY19sZW4gIT0gc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2RpcikpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRcXHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmRpci5EaXJJRCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGZvdW5kX2NuaWQgIT0gY25pZClcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLyogVHJ5IHRvIGdldCBhIGNhdGFsb2cgZW50cnkgZm9yIGdpdmVuIGNhdGFsb2cgaWQgKi9cXG4gLy8gbW92ZSB0byByZWFkX3N1cGVyPz8/XFxuIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5AQCAtMjA4LDcgKzI0MiwxMiBAQCBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXFxuIFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXHR9XFxuIFxcdG1lbWNweShmZC1cXHUwMDNlc2VhcmNoX2tleS1cXHUwMDNlY2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTtcXG4tXFx0cmV0dXJuIGhmc19icmVjX2ZpbmQoZmQpO1xcbitcXG4rXFx0cmVzID0gaGZzX2JyZWNfZmluZChmZCk7XFxuK1xcdGlmIChyZXMpXFxuK1xcdFxcdHJldHVybiByZXM7XFxuK1xcbitcXHRyZXR1cm4gaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKGZkLCBjbmlkKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZVxcbmRpZmYgLS1naXQgYS9mcy9oZnMvaGZzX2ZzLmggYi9mcy9oZnMvaGZzX2ZzLmhcXG5pbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL2hmc19mcy5oXFxuKysrIGIvZnMvaGZzL2hmc19mcy5oXFxuQEAgLTE1NSw2ICsxNTUsMjUgQEAgZXh0ZXJuIGludCBoZnNfY2F0X21vdmUodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqc3JjX2RpcixcXG4gZXh0ZXJuIHZvaWQgaGZzX2NhdF9idWlsZF9rZXkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgYnRyZWVfa2V5ICprZXksXFxuIFxcdFxcdFxcdCAgICAgIHUzMiBwYXJlbnQsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lKTtcXG4gXFxuKy8qXFxuKyAqIFZhbGlkYXRlIHRoZSBDTklEIG9mIGEgY2F0YWxvZyByZWNvcmQuXFxuKyAqL1xcbitzdGF0aWMgaW5saW5lIGJvb2wgaGZzX2lzX3ZhbGlkX2NuaWQodTMyIGNuaWQsIHU4IHR5cGUpXFxuK3tcXG4rXFx0aWYgKGxpa2VseShjbmlkIFxcdTAwM2U9IEhGU19GSVJTVFVTRVJfQ05JRCkpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0c3dpdGNoIChjbmlkKSB7XFxuK1xcdGNhc2UgSEZTX1JPT1RfQ05JRDpcXG4rXFx0XFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9ESVI7XFxuK1xcdGNhc2UgSEZTX0VYVF9DTklEOlxcbitcXHRjYXNlIEhGU19DQVRfQ05JRDpcXG4rXFx0XFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9GSUw7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbit9XFxuK1xcbiAvKiBkaXIuYyAqL1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBoZnNfZGlyX29wZXJhdGlvbnM7XFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7XFxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9pbm9kZS5jIGIvZnMvaGZzL2lub2RlLmNcXG5pbmRleCBhYzRhOTA1NWM1YzBlYS4uYzllNzVjMmU1NzZhM2YgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL2lub2RlLmNcXG4rKysgYi9mcy9oZnMvaW5vZGUuY1xcbkBAIC0zNjcsNiArMzY3LDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxcbiBcXHRyZWMgPSBpZGF0YS1cXHUwMDNlcmVjO1xcbiBcXHRzd2l0Y2ggKHJlYy1cXHUwMDNldHlwZSkge1xcbiBcXHRjYXNlIEhGU19DRFJfRklMOlxcbitcXHRcXHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cXHUwMDNlZmlsZS5GbE51bSksIHJlYy1cXHUwMDNldHlwZSkpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXG4gXFx0XFx0aWYgKCFIRlNfSVNfUlNSQyhpbm9kZSkpIHtcXG4gXFx0XFx0XFx0aGZzX2lub2RlX3JlYWRfZm9yayhpbm9kZSwgcmVjLVxcdTAwM2VmaWxlLkV4dFJlYywgcmVjLVxcdTAwM2VmaWxlLkxnTGVuLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgcmVjLVxcdTAwM2VmaWxlLlB5TGVuLCBiZTE2X3RvX2NwdShyZWMtXFx1MDAzZWZpbGUuQ2xwU2l6ZSkpO1xcbkBAIC0zOTAsNiArMzkzLDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxcbiBcXHRcXHRpbm9kZS1cXHUwMDNlaV9tYXBwaW5nLVxcdTAwM2VhX29wcyA9IFxcdTAwMjZoZnNfYW9wcztcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgSEZTX0NEUl9ESVI6XFxuK1xcdFxcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVxcdTAwM2VkaXIuRGlySUQpLCByZWMtXFx1MDAzZXR5cGUpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFxuIFxcdFxcdGlub2RlLVxcdTAwM2VpX2lubyA9IGJlMzJfdG9fY3B1KHJlYy1cXHUwMDNlZGlyLkRpcklEKTtcXG4gXFx0XFx0aW5vZGUtXFx1MDAzZWlfc2l6ZSA9IGJlMTZfdG9fY3B1KHJlYy1cXHUwMDNlZGlyLlZhbCkgKyAyO1xcbiBcXHRcXHRIRlNfSShpbm9kZSktXFx1MDAzZWZzX2Jsb2NrcyA9IDA7XFxuQEAgLTU3MSwxMyArNTc3LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpoZnNfZmlsZV9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4gXFx0cmVzID0gaGZzX2JyZWNfcmVhZChcXHUwMDI2ZmQsIFxcdTAwMjZyZWMsIHNpemVvZihyZWMpKTtcXG4gXFx0aWYgKCFyZXMpIHtcXG4gXFx0XFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFxcdTAwMjZyZWMgfTtcXG4tXFx0XFx0aGZzX3JlYWRfaW5vZGUoaW5vZGUsIFxcdTAwMjZpZGF0YSk7XFxuK1xcdFxcdHJlcyA9IGhmc19yZWFkX2lub2RlKGlub2RlLCBcXHUwMDI2aWRhdGEpO1xcbiBcXHR9XFxuIFxcdGhmc19maW5kX2V4aXQoXFx1MDAyNmZkKTtcXG4gXFx0aWYgKHJlcykge1xcbiBcXHRcXHRpcHV0KGlub2RlKTtcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIocmVzKTtcXG4gXFx0fVxcbitcXG4rXFx0aWYgKGlzX2JhZF9pbm9kZShpbm9kZSkpIHtcXG4rXFx0XFx0aXB1dChpbm9kZSk7XFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xcbitcXHR9XFxuIFxcdEhGU19JKGlub2RlKS1cXHUwMDNlcnNyY19pbm9kZSA9IGRpcjtcXG4gXFx0SEZTX0koZGlyKS1cXHUwMDNlcnNyY19pbm9kZSA9IGlub2RlO1xcbiBcXHRpZ3JhYihkaXIpO1xcbmRpZmYgLS1naXQgYS9mcy9oZnMvc3VwZXIuYyBiL2ZzL2hmcy9zdXBlci5jXFxuaW5kZXggYTQ2NmM0MDFmNmJiMjYuLjk4YjgwNzk1YmNkZTlhIDEwMDY0NFxcbi0tLSBhL2ZzL2hmcy9zdXBlci5jXFxuKysrIGIvZnMvaGZzL3N1cGVyLmNcXG5AQCAtMzcyLDYgKzM3MiwxMSBAQCBzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4gXFx0aWYgKCFyb290X2lub2RlKVxcbiBcXHRcXHRnb3RvIGJhaWxfbm9fcm9vdDtcXG4gXFxuK1xcdGlmIChpc19iYWRfaW5vZGUocm9vdF9pbm9kZSkpIHtcXG4rXFx0XFx0aXB1dChyb290X2lub2RlKTtcXG4rXFx0XFx0Z290byBiYWlsX25vX3Jvb3Q7XFxuK1xcdH1cXG4rXFxuIFxcdHNldF9kZWZhdWx0X2Rfb3Aoc2IsIFxcdTAwMjZoZnNfZGVudHJ5X29wZXJhdGlvbnMpO1xcbiBcXHRyZXMgPSAtRU5PTUVNO1xcbiBcXHRzYi1cXHUwMDNlc19yb290ID0gZF9tYWtlX3Jvb3Qocm9vdF9pbm9kZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDE1OjQ3OjQ5LjI1NDg3NTI1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzOTQ5MDA4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzX2NhdF9maW5kX2JyZWNcIixcbiAgICBcImhmc19yZWFkX2lub2RlXCIsXG4gICAgXCJoZnNfZmlsZV9sb29rdXBcIixcbiAgICBcImhmc19maWxsX3N1cGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDYXRhbG9nIE5vZGUgSURzIChDTklEKSBhbmQgY2hlY2tzIGZvciBiYWQgaW5vZGVzIGluIHRoZSBIRlMgZmlsZXN5c3RlbSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IEhGUyBwYXJzZXMgb24tZGlzayBzdHJ1Y3R1cmVzIGFuZCBoYW5kbGVzIGNvcnJ1cHRlZCBpbWFnZXMsIHdoaWNoIGlzIHJlYWNoYWJsZSBieSBtb3VudGluZyBhbiBIRlMgaW1hZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTU0NWVkNzYwMDk0Y2M4ZDgzMmRlZTQwYjU2YTk1OGMxZjBmZTBhNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMTU6NDc6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9oZnMvY2F0YWxvZy5jIGIvZnMvaGZzL2NhdGFsb2cuY1xuaW5kZXggMWJmYTM2ZDcxZTI0N2EuLjQ5MGM1ZTEzMGRhM2I2IDEwMDY0NFxuLS0tIGEvZnMvaGZzL2NhdGFsb2cuY1xuKysrIGIvZnMvaGZzL2NhdGFsb2cuY1xuQEAgLTE4Miw2ICsxODIsNDAgQEAgaW50IGhmc19jYXRfa2V5Y21wKGNvbnN0IGJ0cmVlX2tleSAqa2V5MSwgY29uc3QgYnRyZWVfa2V5ICprZXkyKVxuIFx0XHRcdCAga2V5Mi1cdTAwM2VjYXQuQ05hbWUubmFtZSwga2V5Mi1cdTAwM2VjYXQuQ05hbWUubGVuKTtcbiB9XG4gXG4rc3RhdGljIGludCBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB1MzIgY25pZClcbit7XG4rXHRoZnNfY2F0X3JlYyByZWM7XG4rXHR1MzIgZm91bmRfY25pZDtcbitcdGludCByZWNfbGVuO1xuK1xuK1x0cmVjX2xlbiA9IGZkLVx1MDAzZWVudHJ5bGVuZ3RoO1xuK1x0aWYgKHJlY19sZW4gXHUwMDNjPSAwIHx8IChzaXplX3QpcmVjX2xlbiBcdTAwM2Ugc2l6ZW9mKHJlYykpXG4rXHRcdHJldHVybiAtRUlPO1xuK1xuK1x0bWVtc2V0KFx1MDAyNnJlYywgMCwgc2l6ZW9mKHJlYykpO1xuK1x0aGZzX2Jub2RlX3JlYWQoZmQtXHUwMDNlYm5vZGUsIFx1MDAyNnJlYywgZmQtXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xuK1xuK1x0c3dpdGNoIChyZWMudHlwZSkge1xuK1x0Y2FzZSBIRlNfQ0RSX0ZJTDpcbitcdFx0aWYgKChzaXplX3QpcmVjX2xlbiAhPSBzaXplb2Yoc3RydWN0IGhmc19jYXRfZmlsZSkpXG4rXHRcdFx0cmV0dXJuIC1FSU87XG4rXHRcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZmlsZS5GbE51bSk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBIRlNfQ0RSX0RJUjpcbitcdFx0aWYgKChzaXplX3QpcmVjX2xlbiAhPSBzaXplb2Yoc3RydWN0IGhmc19jYXRfZGlyKSlcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiAtRUlPO1xuK1x0fVxuK1xuK1x0aWYgKGZvdW5kX2NuaWQgIT0gY25pZClcbitcdFx0cmV0dXJuIC1FSU87XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gLyogVHJ5IHRvIGdldCBhIGNhdGFsb2cgZW50cnkgZm9yIGdpdmVuIGNhdGFsb2cgaWQgKi9cbiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cbiBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG5AQCAtMjA4LDcgKzI0MiwxMiBAQCBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG4gXHRcdHJldHVybiAtRUlPO1xuIFx0fVxuIFx0bWVtY3B5KGZkLVx1MDAzZXNlYXJjaF9rZXktXHUwMDNlY2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTtcbi1cdHJldHVybiBoZnNfYnJlY19maW5kKGZkKTtcbitcbitcdHJlcyA9IGhmc19icmVjX2ZpbmQoZmQpO1xuK1x0aWYgKHJlcylcbitcdFx0cmV0dXJuIHJlcztcbitcbitcdHJldHVybiBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoZmQsIGNuaWQpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2hmc19mcy5oIGIvZnMvaGZzL2hmc19mcy5oXG5pbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvaGZzX2ZzLmhcbisrKyBiL2ZzL2hmcy9oZnNfZnMuaFxuQEAgLTE1NSw2ICsxNTUsMjUgQEAgZXh0ZXJuIGludCBoZnNfY2F0X21vdmUodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqc3JjX2RpcixcbiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSxcbiBcdFx0XHQgICAgICB1MzIgcGFyZW50LCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSk7XG4gXG4rLypcbisgKiBWYWxpZGF0ZSB0aGUgQ05JRCBvZiBhIGNhdGFsb2cgcmVjb3JkLlxuKyAqL1xuK3N0YXRpYyBpbmxpbmUgYm9vbCBoZnNfaXNfdmFsaWRfY25pZCh1MzIgY25pZCwgdTggdHlwZSlcbit7XG4rXHRpZiAobGlrZWx5KGNuaWQgXHUwMDNlPSBIRlNfRklSU1RVU0VSX0NOSUQpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHN3aXRjaCAoY25pZCkge1xuK1x0Y2FzZSBIRlNfUk9PVF9DTklEOlxuK1x0XHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0RJUjtcbitcdGNhc2UgSEZTX0VYVF9DTklEOlxuK1x0Y2FzZSBIRlNfQ0FUX0NOSUQ6XG4rXHRcdHJldHVybiB0eXBlID09IEhGU19DRFJfRklMO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK31cbitcbiAvKiBkaXIuYyAqL1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9ucztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9pbm9kZS5jIGIvZnMvaGZzL2lub2RlLmNcbmluZGV4IGFjNGE5MDU1YzVjMGVhLi5jOWU3NWMyZTU3NmEzZiAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9pbm9kZS5jXG4rKysgYi9mcy9oZnMvaW5vZGUuY1xuQEAgLTM2Nyw2ICszNjcsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRyZWMgPSBpZGF0YS1cdTAwM2VyZWM7XG4gXHRzd2l0Y2ggKHJlYy1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIEhGU19DRFJfRklMOlxuK1x0XHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VmaWxlLkZsTnVtKSwgcmVjLVx1MDAzZXR5cGUpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1xuIFx0XHRpZiAoIUhGU19JU19SU1JDKGlub2RlKSkge1xuIFx0XHRcdGhmc19pbm9kZV9yZWFkX2ZvcmsoaW5vZGUsIHJlYy1cdTAwM2VmaWxlLkV4dFJlYywgcmVjLVx1MDAzZWZpbGUuTGdMZW4sXG4gXHRcdFx0XHRcdCAgICByZWMtXHUwMDNlZmlsZS5QeUxlbiwgYmUxNl90b19jcHUocmVjLVx1MDAzZWZpbGUuQ2xwU2l6ZSkpO1xuQEAgLTM5MCw2ICszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRcdGlub2RlLVx1MDAzZWlfbWFwcGluZy1cdTAwM2VhX29wcyA9IFx1MDAyNmhmc19hb3BzO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgSEZTX0NEUl9ESVI6XG4rXHRcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVx1MDAzZWRpci5EaXJJRCksIHJlYy1cdTAwM2V0eXBlKSlcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcbiBcdFx0aW5vZGUtXHUwMDNlaV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtXHUwMDNlZGlyLkRpcklEKTtcbiBcdFx0aW5vZGUtXHUwMDNlaV9zaXplID0gYmUxNl90b19jcHUocmVjLVx1MDAzZWRpci5WYWwpICsgMjtcbiBcdFx0SEZTX0koaW5vZGUpLVx1MDAzZWZzX2Jsb2NrcyA9IDA7XG5AQCAtNTcxLDEzICs1NzcsMTggQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0cmVzID0gaGZzX2JyZWNfcmVhZChcdTAwMjZmZCwgXHUwMDI2cmVjLCBzaXplb2YocmVjKSk7XG4gXHRpZiAoIXJlcykge1xuIFx0XHRzdHJ1Y3QgaGZzX2lnZXRfZGF0YSBpZGF0YSA9IHsgTlVMTCwgXHUwMDI2cmVjIH07XG4tXHRcdGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4rXHRcdHJlcyA9IGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4gXHR9XG4gXHRoZnNfZmluZF9leGl0KFx1MDAyNmZkKTtcbiBcdGlmIChyZXMpIHtcbiBcdFx0aXB1dChpbm9kZSk7XG4gXHRcdHJldHVybiBFUlJfUFRSKHJlcyk7XG4gXHR9XG4rXG4rXHRpZiAoaXNfYmFkX2lub2RlKGlub2RlKSkge1xuK1x0XHRpcHV0KGlub2RlKTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4rXHR9XG4gXHRIRlNfSShpbm9kZSktXHUwMDNlcnNyY19pbm9kZSA9IGRpcjtcbiBcdEhGU19JKGRpciktXHUwMDNlcnNyY19pbm9kZSA9IGlub2RlO1xuIFx0aWdyYWIoZGlyKTtcbmRpZmYgLS1naXQgYS9mcy9oZnMvc3VwZXIuYyBiL2ZzL2hmcy9zdXBlci5jXG5pbmRleCBhNDY2YzQwMWY2YmIyNi4uOThiODA3OTViY2RlOWEgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvc3VwZXIuY1xuKysrIGIvZnMvaGZzL3N1cGVyLmNcbkBAIC0zNzIsNiArMzcyLDExIEBAIHN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0aWYgKCFyb290X2lub2RlKVxuIFx0XHRnb3RvIGJhaWxfbm9fcm9vdDtcbiBcbitcdGlmIChpc19iYWRfaW5vZGUocm9vdF9pbm9kZSkpIHtcbitcdFx0aXB1dChyb290X2lub2RlKTtcbitcdFx0Z290byBiYWlsX25vX3Jvb3Q7XG4rXHR9XG4rXG4gXHRzZXRfZGVmYXVsdF9kX29wKHNiLCBcdTAwMjZoZnNfZGVudHJ5X29wZXJhdGlvbnMpO1xuIFx0cmVzID0gLUVOT01FTTtcbiBcdHNiLVx1MDAzZXNfcm9vdCA9IGRfbWFrZV9yb290KHJvb3RfaW5vZGUpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDc6NDkuMjU0ODc2NzI4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODgzNDQyNzM3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGZzL2hmcy9gLiBJdCBzZWVtcyB0aGUgZm9jdXMgaXMgb24gdGlnaHRlbmluZyB1cCBDTklEIHZhbGlkYXRpb24g4oCTIHRoYXQncyBnb29kLCBlc3BlY2lhbGx5IHdpdGggYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgYW5kIGBoZnNfaXNfdmFsaWRfY25pZGAgZ2V0dGluZyBzb21lIGF0dGVudGlvbi4gSXQncyBhbHNvIGFkZGluZyBjaGVja3MgZm9yIGBpc19iYWRfaW5vZGVgIGluIHRoZSBsb29rdXAgZnVuY3Rpb24gKGBoZnNfZmlsZV9sb29rdXBgKSBhbmQgZHVyaW5nIHN1cGVyYmxvY2sgaW5pdGlhbGl6YXRpb24gKGBoZnNfZmlsbF9zdXBlcmApLiBcblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgaXQncyBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgdGhlIEhGUyBmaWxlc3lzdGVtLiBTaW5jZSBIRlMgaXMgcmVhY2hhYmxlLCBtZWFuaW5nIHdlIGNhbiBtb3VudCBhbiBIRlMgaW1hZ2UgYW5kIHRyaWdnZXIgdGhlc2UgY2hhbmdlcywgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gSXQgbG9va3MgbGlrZSBpdCdzIHRvdWNoaW5nIGFsbCB0aGUgcmlnaHQgcGxhY2VzIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VhcmNoIHRoZSBLY29uZmlnIGZpbGVzIGZvciBgZnMvaGZzL2AsIG9yIG1heWJlIGp1c3QgYSBkaXJlY3QgYENPTkZJR19IRlNfRlNgIHdpbGwgZG8gdGhlIHRyaWNrLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIGlzIGtleSBmb3IgdGVzdGluZyB0aGlzIHByb3Blcmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDc6NTguMDg5MzA2MDg0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDI5NTc4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJIRlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9oZnMvS2NvbmZpZzoyOmNvbmZpZyBIRlNfRlNcXG5mcy9oZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBNYWNpbnRvc2ggZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2hmcy9LY29uZmlnPTE3PWNvbmZpZyBIRlNfS1VOSVRfVEVTVFxcbmZzL2hmcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgSEZTIGZpbGVzeXN0ZW1cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5mcy9oZnMvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIEhGU19GUyBcXHUwMDI2XFx1MDAyNiBLVU5JVFxcbmZzL2hmcy9LY29uZmlnLTIwLVxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDE1OjQ3OjU4LjIyOTYwNjU1OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwNTM2NzQxMjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSEZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSB3b3JraW5nIHdpdGggaXMgYEhGU19GU2AuIFJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBpZGVudGlmeWluZyB0aGUga2V5IHN5bWJvbHMgd2UgbmVlZCB0byBmb2N1cyBvbi4gQmFzZWQgb24gdGhlIGRpZmZzLCBoZXJlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHRvdWNoZWQ6IGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgLCBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX2lzX3ZhbGlkX2NuaWRgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuXG5cbk5vdywgbGV0J3Mgc3RyYXRlZ2ljYWxseSB0aGluayBhYm91dCB0aGVzZS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gV2hpbGUgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgbGlzdGVkLCBpdCdzIG1hcmtlZCBhcyBzdGF0aWMsIG1lYW5pbmcgaXQgY291bGQgYmUgaW5saW5lZC4gSSdsbCBpbmNsdWRlIGl0IGluIHRoZSBsaXN0IGZvciBub3csIGp1c3QgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGhvd2V2ZXIsIHRoYXQgc3l6a2FsbGVyIG1pZ2h0IG5vdCBkaXJlY3RseSBkaXNjb3ZlciBpbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBhcmUgbGlzdGVkIGFzIHBhcnQgb2YgdGhlIG1vZGlmaWNhdGlvbnMuIEJ1dCwgaXRzIGNhbGxlciBgaGZzX2NhdF9maW5kX2JyZWNgIHdpbGwgc3RpbGwgYmUgcmVsZXZhbnQuIExvb2tzIGxpa2UgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIGFyZSBhbHNvIHN0YXRpYy5cblxuVG8gc3RhcnQsIEknbGwgZXhhbWluZSBgZnMvaGZzL2NhdGFsb2cuY2AgdG8gdW5kZXJzdGFuZCB0aGUgd29ya2luZ3Mgb2YgYGhmc19jYXRfZmluZF9icmVjYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxNTo0ODoxOC43NjYzNTEyNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM0ODgxMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGZzX2NhdF9maW5kX2JyZWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnMvY2F0YWxvZy5jPTE4NT1zdGF0aWMgaW50IGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIHUzMiBjbmlkKVxcbi0tXFxuZnMvaGZzL2NhdGFsb2cuYy0yMjAtLy8gbW92ZSB0byByZWFkX3N1cGVyPz8/XFxuZnMvaGZzL2NhdGFsb2cuYzoyMjE6aW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxcbmZzL2hmcy9jYXRhbG9nLmMtMjIyLVxcdFxcdCAgICAgIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZClcXG4tLVxcbmZzL2hmcy9oZnNfZnMuaD0xNDU9c3RydWN0IGhmc19maW5kX2RhdGE7XFxuZnMvaGZzL2hmc19mcy5oOjE0NjpleHRlcm4gaW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxcbmZzL2hmcy9oZnNfZnMuaC0xNDctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpO1xcbi0tXFxuZnMvaGZzL3N1cGVyLmM9MzE2PXN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuZnMvaGZzL3N1cGVyLmMtMzU2LVxcdFxcdGdvdG8gYmFpbF9ub19yb290O1xcbmZzL2hmcy9zdXBlci5jOjM1NzpcXHRyZXMgPSBoZnNfY2F0X2ZpbmRfYnJlYyhzYiwgSEZTX1JPT1RfQ05JRCwgXFx1MDAyNmZkKTtcXG5mcy9oZnMvc3VwZXIuYy0zNTgtXFx0aWYgKCFyZXMpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDg6MTguODg5ODQ4NDU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc1MjUzNjA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSEZTIEZpbGVzeXN0ZW0gRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgSEZTIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLiBJdCBzZWVtcyBgaGZzX2NhdF9maW5kX2JyZWNgIGlzIGV4cG9ydGVkLCBtZWFuaW5nIGl0J3MgdmlzaWJsZSBvdXRzaWRlIGl0cyBvcmlnaW5hbCBzb3VyY2UsIGFuZCBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgaGZzX2ZpbGxfc3VwZXJgLiBJbnRlcmVzdGluZy5cblxuVGhlbiB0aGVyZSdzIGBoZnNfcmVhZF9pbm9kZWAuIEkgc2VlIGl0J3MgbWFya2VkIGFzIGBzdGF0aWNgIGluIGBmcy9oZnMvaW5vZGUuY2AsIGFsb25nIHdpdGggYGhmc19maWxlX2xvb2t1cGAuIEFuZCBgaGZzX2ZpbGxfc3VwZXJgIGlzIGFsc28gYHN0YXRpY2AsIGJ1dCB0aGF0J3MgaW4gYGZzL2hmcy9zdXBlci5jYC5cblxuVG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhpcyBjb3JyZWN0bHksIGxldCdzIGxpc3QgdGhlbSB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyOlxuXG4qICAgYGhmc19jYXRfZmluZF9icmVjYFxuKiAgIGBoZnNfcmVhZF9pbm9kZWBcbiogICBgaGZzX2ZpbGVfbG9va3VwYFxuKiAgIGBoZnNfZmlsbF9zdXBlcmBcblxuV2FpdCBhIG1pbnV0ZSwgYGhmc19yZWFkX2lub2RlYCBiZWluZyBzdGF0aWMgaXMgdW51c3VhbCwgYnV0IGl0IG1pZ2h0IHN0aWxsIGJlIGEgdXNlZnVsIHBvaW50IG9mIGV4YW1pbmF0aW9uLCBpdCBkZXBlbmRzIG9uIGhvdyBpdCBpcyBiZWluZyB1c2VkLiBJIG5lZWQgdG8gZGlnIGludG8gYGhmc19yZWFkX2lub2RlYCBmdXJ0aGVyIGFuZCBmaW5kIG91dCBpZiBpdCdzIGFjdGluZyBhcyBhIGNhbGxiYWNrIG9yIGlzIGJlaW5nIGRpcmVjdGx5IGludm9rZWQuIFRoYXQgd2lsbCBpbmZvcm0gbXkgbmV4dCBzdGVwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI5NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxNTo0ODoyMy42NDIzODcwOTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzUzODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19yZWFkX2lub2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmcy9pbm9kZS5jPTMyNT1zdGF0aWMgaW50IGhmc190ZXN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy0zNDItLypcXG5mcy9oZnMvaW5vZGUuYzozNDM6ICogaGZzX3JlYWRfaW5vZGVcXG5mcy9oZnMvaW5vZGUuYy0zNDQtICovXFxuZnMvaGZzL2lub2RlLmM6MzQ1OnN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcXG5mcy9oZnMvaW5vZGUuYy0zNDYte1xcbi0tXFxuZnMvaGZzL2lub2RlLmM9NDI1PXN0cnVjdCBpbm9kZSAqaGZzX2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGhmc19jYXRfa2V5ICprZXksIGhmc19jYXRfcmVjICpyZWMpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy00NDAtXFx0fVxcbmZzL2hmcy9pbm9kZS5jOjQ0MTpcXHRpbm9kZSA9IGlnZXQ1X2xvY2tlZChzYiwgY25pZCwgaGZzX3Rlc3RfaW5vZGUsIGhmc19yZWFkX2lub2RlLCBcXHUwMDI2ZGF0YSk7XFxuZnMvaGZzL2lub2RlLmMtNDQyLVxcdGlmIChpbm9kZSBcXHUwMDI2XFx1MDAyNiAoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSBcXHUwMDI2IElfTkVXKSlcXG4tLVxcbmZzL2hmcy9pbm9kZS5jPTU1Mj1zdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy01NzktXFx0XFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFxcdTAwMjZyZWMgfTtcXG5mcy9oZnMvaW5vZGUuYzo1ODA6XFx0XFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFxcdTAwMjZpZGF0YSk7XFxuZnMvaGZzL2lub2RlLmMtNTgxLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDg6MjMuNzQ3NzQ3NTAzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxNzkzNzk3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSaWdodCwgYGhmc19yZWFkX2lub2RlYCBpcyBkZWZpbml0ZWx5IGEga2V5IHBsYXllciBoZXJlLlwiIEkgcmVtZW1iZXIgc2VlaW5nIGl0IGNhbGxlZCBhcyBhIGNhbGxiYWNrIHdpdGhpbiBgaWdldDVfbG9ja2VkYCDigJMgdGhhdCdzIGEgY2xhc3NpYyDigJMgYW5kIGFsc28gZGlyZWN0bHkgaW4gYGhmc19maWxlX2xvb2t1cGAuIEdvb2QgdG8gY29uZmlybSB0aGF0LlxuXG5MZXQncyBicmVhayB0aGlzIGRvd24gZnVydGhlciBhbmQgbGlzdCB0aGUgcmVsZXZhbnQgc3ltYm9scy4gSSdtIHNlZWluZzpcblxuKiAgIGBoZnNfY2F0X2ZpbmRfYnJlY2BcbiogICBgaGZzX3JlYWRfaW5vZGVgXG4qICAgYGhmc19maWxlX2xvb2t1cGBcbiogICBgaGZzX2ZpbGxfc3VwZXJgXG5cbk5vdywgdGhlIGdpc3Qgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCB2YWxpZGF0aW5nIENhdGFsb2cgTm9kZSBJRHMgKENOSURzKSBhbmQgZG9pbmcgbW9yZSByb2J1c3QgY2hlY2tpbmcgZm9yIHBvdGVudGlhbGx5IGNvcnJ1cHQgaW5vZGVzIHdpdGhpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSDigJMgaXQncyBkaXJlY3RseSBpbXBhY3RpbmcgaG93IHRoZSBkcml2ZXIgaW50ZXJwcmV0cyBvbi1kaXNrIGRhdGEgc3RydWN0dXJlcyBhbmQsIGltcG9ydGFudGx5LCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgY29ycnVwdGlvbi4gQ2xlYXJseSwgdGhpcyBpcyBzb21ldGhpbmcgdHJpZ2dlcmVkIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS5cblxuQmVmb3JlIGdvaW5nIGFueSBmdXJ0aGVyLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9sLiBZZXMsIGBIRlNfRlNgIGlzIHRoZSBjb3JyZWN0IG9uZS4gVGhhdCdzIGdvb2QgdG8ga25vdy5cblxuT2theSwgbGV0J3Mga2VlcCB0aGVzZSBmb3VyIHN5bWJvbHMgLSBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAgLSBmcm9udCBvZiBtaW5kIGFzIEkgZGlnIGRlZXBlci4gVGhleeKAmXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwYXRjaCdzIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIwOSwiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTU6NDg6MjkuNDY1Njg5NTY0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0MDc4MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X2ZpbmRfYnJlY1wiLFxuICAgIFwiaGZzX3JlYWRfaW5vZGVcIixcbiAgICBcImhmc19maWxlX2xvb2t1cFwiLFxuICAgIFwiaGZzX2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENhdGFsb2cgTm9kZSBJRHMgKENOSUQpIGFuZCBjaGVja3MgZm9yIGJhZCBpbm9kZXMgaW4gdGhlIEhGUyBmaWxlc3lzdGVtIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgSEZTIHBhcnNlcyBvbi1kaXNrIHN0cnVjdHVyZXMgYW5kIGhhbmRsZXMgY29ycnVwdGVkIGltYWdlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X2ZpbmRfYnJlY1wiLFxuICAgIFwiaGZzX3JlYWRfaW5vZGVcIixcbiAgICBcImhmc19maWxlX2xvb2t1cFwiLFxuICAgIFwiaGZzX2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENhdGFsb2cgTm9kZSBJRHMgKENOSUQpIGFuZCBjaGVja3MgZm9yIGJhZCBpbm9kZXMgaW4gdGhlIEhGUyBmaWxlc3lzdGVtIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgSEZTIHBhcnNlcyBvbi1kaXNrIHN0cnVjdHVyZXMgYW5kIGhhbmRsZXMgY29ycnVwdGVkIGltYWdlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGJ5IG1vdW50aW5nIGFuIEhGUyBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4sh[1] Phase: Succeeded StartedAt: 2026-07-09 15:48:41 +0000 UTC FinishedAt: 2026-07-09 15:48:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 15:48:41 +0000 UTC FinishedAt: 2026-07-09 15:48:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2] Phase: Succeeded StartedAt: 2026-07-09 15:48:41 +0000 UTC FinishedAt: 2026-07-09 20:35:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-09 15:48:41 +0000 UTC FinishedAt: 2026-07-09 20:35:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 15:48:41 +0000 UTC FinishedAt: 2026-07-09 15:48:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 15:48:41 +0000 UTC FinishedAt: 2026-07-09 15:48:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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-workflownb4sh/series-workflownb4sh-convert-artifact-377850086/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 15:48:51 +0000 UTC FinishedAt: 2026-07-09 16:45:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 15:48:51 +0000 UTC FinishedAt: 2026-07-09 16:45:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9b11dc08-9955-4635-b471-422dd000c6d8,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-workflownb4sh/series-workflownb4sh-convert-artifact-377850086/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": "3d72154d-2965-4fea-9f32-aead61ce5fd3", "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-workflownb4sh/series-workflownb4sh-build-action-4001769596/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 15:48:51 +0000 UTC FinishedAt: 2026-07-09 16:45:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9b11dc08-9955-4635-b471-422dd000c6d8,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-workflownb4sh/series-workflownb4sh-convert-artifact-377850086/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": "3d72154d-2965-4fea-9f32-aead61ce5fd3", "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-workflownb4sh/series-workflownb4sh-build-action-4001769596/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 16:45:51 +0000 UTC FinishedAt: 2026-07-09 16:45:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 16:45:51 +0000 UTC FinishedAt: 2026-07-09 16:45:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 16:45:51 +0000 UTC FinishedAt: 2026-07-09 16:46:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 16:45:51 +0000 UTC FinishedAt: 2026-07-09 16:46:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-workflownb4sh/series-workflownb4sh-convert-artifact-2506884665/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 16:46:11 +0000 UTC FinishedAt: 2026-07-09 16:48:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 16:46:11 +0000 UTC FinishedAt: 2026-07-09 16:48:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3d72154d-2965-4fea-9f32-aead61ce5fd3,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-workflownb4sh/series-workflownb4sh-build-action-4001769596/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-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 16:48:44 +0000 UTC FinishedAt: 2026-07-09 16:48:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 16:48:44 +0000 UTC FinishedAt: 2026-07-09 16:48:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 16:48:44 +0000 UTC FinishedAt: 2026-07-09 17:29:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 16:48:44 +0000 UTC FinishedAt: 2026-07-09 17:29:25 +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:*9b11dc08-9955-4635-b471-422dd000c6d8,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-workflownb4sh/series-workflownb4sh-convert-artifact-2506884665/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": "b342a4ae-1fc1-4187-be85-7a7ab0c9f61d", "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-workflownb4sh/series-workflownb4sh-build-action-1512562453/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 16:48:44 +0000 UTC FinishedAt: 2026-07-09 17:29:15 +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:*9b11dc08-9955-4635-b471-422dd000c6d8,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-workflownb4sh/series-workflownb4sh-convert-artifact-2506884665/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": "b342a4ae-1fc1-4187-be85-7a7ab0c9f61d", "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-workflownb4sh/series-workflownb4sh-build-action-1512562453/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:29:25 +0000 UTC FinishedAt: 2026-07-09 17:29:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:29:25 +0000 UTC FinishedAt: 2026-07-09 17:29:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:29:25 +0000 UTC FinishedAt: 2026-07-09 17:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:29:25 +0000 UTC FinishedAt: 2026-07-09 17:31:17 +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:*b342a4ae-1fc1-4187-be85-7a7ab0c9f61d,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-workflownb4sh/series-workflownb4sh-build-action-1512562453/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-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:31:27 +0000 UTC FinishedAt: 2026-07-09 20:35:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:31:27 +0000 UTC FinishedAt: 2026-07-09 20:35:20 +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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"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:*3d72154d-2965-4fea-9f32-aead61ce5fd3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b342a4ae-1fc1-4187-be85-7a7ab0c9f61d,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-workflownb4sh/series-workflownb4sh-build-action-4001769596/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-workflownb4sh/series-workflownb4sh-build-action-1512562453/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:31:27 +0000 UTC FinishedAt: 2026-07-09 17:31:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:31:27 +0000 UTC FinishedAt: 2026-07-09 17:31:34 +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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"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-workflownb4sh/series-workflownb4sh-convert-artifact-2820982446/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:31:27 +0000 UTC FinishedAt: 2026-07-09 17:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:31:27 +0000 UTC FinishedAt: 2026-07-09 17:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:31:27 +0000 UTC FinishedAt: 2026-07-09 17:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:31:37 +0000 UTC FinishedAt: 2026-07-09 20:35:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4sh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"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":["hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"a882eb98-4dee-45f2-a541-240da89c5722","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-07-09 17:31:37 +0000 UTC FinishedAt: 2026-07-09 20:35:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3d72154d-2965-4fea-9f32-aead61ce5fd3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b342a4ae-1fc1-4187-be85-7a7ab0c9f61d,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-workflownb4sh/series-workflownb4sh-build-action-4001769596/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-workflownb4sh/series-workflownb4sh-build-action-1512562453/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-workflownb4sh/series-workflownb4sh-convert-artifact-2820982446/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,}