Name: series-workflowb4cdq Phase: Succeeded StartedAt: 2026-07-22 05:27:42 +0000 UTC FinishedAt: 2026-07-22 10:50:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[0] Phase: Succeeded StartedAt: 2026-07-22 05:27:42 +0000 UTC FinishedAt: 2026-07-22 06:07:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 05:27:42 +0000 UTC FinishedAt: 2026-07-22 06:07:59 +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": "248951ddc14de84de3910f9b13f51491a8cd91df", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "248951ddc14de84de3910f9b13f51491a8cd91df", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING" ], "series_id": "f990a3b7-63f8-49e9-9fab-cad4516acf8e" }, "track": "KASAN", "fuzz": { "focus": [ "fs", "io_uring" ], "focus_symbols": [ "io_fremovexattr_prep", "io_fremovexattr", "io_flistxattr_prep", "io_flistxattr", "file_listxattr", "file_removexattr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDA2OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fZnJlbW92ZXhhdHRyX3ByZXAmIzM0OywKICAgICYjMzQ7aW9fZnJlbW92ZXhhdHRyJiMzNDssCiAgICAmIzM0O2lvX2ZsaXN0eGF0dHJfcHJlcCYjMzQ7LAogICAgJiMzNDtpb19mbGlzdHhhdHRyJiMzNDssCiAgICAmIzM0O2ZpbGVfbGlzdHhhdHRyJiMzNDssCiAgICAmIzM0O2ZpbGVfcmVtb3ZleGF0dHImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBJT1JJTkdfT1BfRlJFTU9WRVhBVFRSIGFuZCBJT1JJTkdfT1BfRkxJU1RYQVRUUiB0byBpb191cmluZy4gSXQgbW9kaWZpZXMgY29yZSBpb191cmluZyBhbmQgeGF0dHIgbG9naWMsIG1ha2luZyBpdCBoaWdobHkgZnVuY3Rpb25hbCBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNjowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk2MmRmMmNlNGVkZGY2MzQ3NTM1NzJmZWVmZWMzOWM4N2M2NWVmNThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwNjowNzowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9pbnRlcm5hbC5oIGIvZnMvaW50ZXJuYWwuaFxuaW5kZXggMzU1ZDkzZjkyMjA4NjEuLmVlODZiMjRkYjc5YWQyIDEwMDY0NFxuLS0tIGEvZnMvaW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaW50ZXJuYWwuaFxuQEAgLTI5Nyw2ICYjNDM7Mjk3LDggQEAgaW50IGZpbGVuYW1lX3NldHhhdHRyKGludCBkZmQsIHN0cnVjdCBmaWxlbmFtZSAqZmlsZW5hbWUsXG4gXHRcdCAgICAgIHVuc2lnbmVkIGludCBsb29rdXBfZmxhZ3MsIHN0cnVjdCBrZXJuZWxfeGF0dHJfY3R4ICpjdHgpO1xuIGludCBzZXR4YXR0cl9jb3B5KGNvbnN0IGNoYXIgX191c2VyICpuYW1lLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KTtcbiBpbnQgaW1wb3J0X3hhdHRyX25hbWUoc3RydWN0IHhhdHRyX25hbWUgKmtuYW1lLCBjb25zdCBjaGFyIF9fdXNlciAqbmFtZSk7XG4mIzQzO3NzaXplX3QgZmlsZV9saXN0eGF0dHIoc3RydWN0IGZpbGUgKmYsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSk7XG4mIzQzO2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpO1xuIFxuIGludCBtYXlfd3JpdGVfeGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuIFxuZGlmZiAtLWdpdCBhL2ZzL3hhdHRyLmMgYi9mcy94YXR0ci5jXG5pbmRleCBkNTg5NzkxMTUyMDA3NS4uMzFiOGE1ZWVlYzFlOGMgMTAwNjQ0XG4tLS0gYS9mcy94YXR0ci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy94YXR0ci5jXG5AQCAtOTUzLDcgJiM0Mzs5NTMsNiBAQCBsaXN0eGF0dHIoc3RydWN0IGRlbnRyeSAqZCwgY2hhciBfX3VzZXIgKmxpc3QsIHNpemVfdCBzaXplKVxuIFx0cmV0dXJuIGVycm9yO1xuIH1cbiBcbi1zdGF0aWNcbiBzc2l6ZV90IGZpbGVfbGlzdHhhdHRyKHN0cnVjdCBmaWxlICpmLCBjaGFyIF9fdXNlciAqbGlzdCwgc2l6ZV90IHNpemUpXG4ge1xuIFx0YXVkaXRfZmlsZShmKTtcbkBAIC0xMDM2LDcgJiM0MzsxMDM1LDcgQEAgcmVtb3ZleGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmQsIGNvbnN0IGNoYXIgKm5hbWUpXG4gXHRyZXR1cm4gdmZzX3JlbW92ZXhhdHRyKGlkbWFwLCBkLCBuYW1lKTtcbiB9XG4gXG4tc3RhdGljIGludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXG4mIzQzO2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXG4ge1xuIFx0aW50IGVycm9yID0gbW50X3dhbnRfd3JpdGVfZmlsZShmKTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oXG5pbmRleCA5MDlmYjdhZWE2MzhlYi4uODA1ZjFlMzFmNDkyNTEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcbkBAIC0zMTgsNiAmIzQzOzMxOCw4IEBAIGVudW0gaW9fdXJpbmdfb3Age1xuIFx0SU9SSU5HX09QX1BJUEUsXG4gXHRJT1JJTkdfT1BfTk9QMTI4LFxuIFx0SU9SSU5HX09QX1VSSU5HX0NNRDEyOCxcbiYjNDM7XHRJT1JJTkdfT1BfRlJFTU9WRVhBVFRSLFxuJiM0MztcdElPUklOR19PUF9GTElTVFhBVFRSLFxuIFxuIFx0LyogdGhpcyBnb2VzIGxhc3QsIG9idmlvdXNseSAqL1xuIFx0SU9SSU5HX09QX0xBU1QsXG5kaWZmIC0tZ2l0IGEvaW9fdXJpbmcvb3BkZWYuYyBiL2lvX3VyaW5nL29wZGVmLmNcbmluZGV4IDRlNThlYjEzNDRlYWEzLi4yNWQ5MjI5ZDhmYzAwMiAxMDA2NDRcbi0tLSBhL2lvX3VyaW5nL29wZGVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2lvX3VyaW5nL29wZGVmLmNcbkBAIC01OTEsNiAmIzQzOzU5MSwxNiBAQCBjb25zdCBzdHJ1Y3QgaW9faXNzdWVfZGVmIGlvX2lzc3VlX2RlZnNbXSA9IHtcbiBcdFx0LnByZXBcdFx0XHQ9IGlvX3VyaW5nX2NtZF9wcmVwLFxuIFx0XHQuaXNzdWVcdFx0XHQ9IGlvX3VyaW5nX2NtZCxcbiBcdH0sXG4mIzQzO1x0W0lPUklOR19PUF9GUkVNT1ZFWEFUVFJdID0ge1xuJiM0MztcdFx0Lm5lZWRzX2ZpbGVcdFx0PSAxLFxuJiM0MztcdFx0LnByZXBcdFx0XHQ9IGlvX2ZyZW1vdmV4YXR0cl9wcmVwLFxuJiM0MztcdFx0Lmlzc3VlXHRcdFx0PSBpb19mcmVtb3ZleGF0dHIsXG4mIzQzO1x0fSxcbiYjNDM7XHRbSU9SSU5HX09QX0ZMSVNUWEFUVFJdID0ge1xuJiM0MztcdFx0Lm5lZWRzX2ZpbGVcdFx0PSAxLFxuJiM0MztcdFx0LnByZXBcdFx0XHQ9IGlvX2ZsaXN0eGF0dHJfcHJlcCxcbiYjNDM7XHRcdC5pc3N1ZVx0XHRcdD0gaW9fZmxpc3R4YXR0cixcbiYjNDM7XHR9LFxuIH07XG4gXG4gY29uc3Qgc3RydWN0IGlvX2NvbGRfZGVmIGlvX2NvbGRfZGVmc1tdID0ge1xuQEAgLTg0OSw2ICYjNDM7ODU5LDE0IEBAIGNvbnN0IHN0cnVjdCBpb19jb2xkX2RlZiBpb19jb2xkX2RlZnNbXSA9IHtcbiBcdFx0LnNxZV9jb3B5XHRcdD0gaW9fdXJpbmdfY21kX3NxZV9jb3B5LFxuIFx0XHQuY2xlYW51cFx0XHQ9IGlvX3VyaW5nX2NtZF9jbGVhbnVwLFxuIFx0fSxcbiYjNDM7XHRbSU9SSU5HX09QX0ZSRU1PVkVYQVRUUl0gPSB7XG4mIzQzO1x0XHQubmFtZVx0XHRcdD0gXCYjMzQ7RlJFTU9WRVhBVFRSXCYjMzQ7LFxuJiM0MztcdFx0LmNsZWFudXBcdFx0PSBpb194YXR0cl9jbGVhbnVwLFxuJiM0MztcdH0sXG4mIzQzO1x0W0lPUklOR19PUF9GTElTVFhBVFRSXSA9IHtcbiYjNDM7XHRcdC5uYW1lXHRcdFx0PSBcJiMzNDtGTElTVFhBVFRSXCYjMzQ7LFxuJiM0MztcdFx0LmNsZWFudXBcdFx0PSBpb194YXR0cl9jbGVhbnVwLFxuJiM0MztcdH0sXG4gfTtcbiBcbiBjb25zdCBjaGFyICppb191cmluZ19nZXRfb3Bjb2RlKHU4IG9wY29kZSlcbmRpZmYgLS1naXQgYS9pb191cmluZy94YXR0ci5jIGIvaW9fdXJpbmcveGF0dHIuY1xuaW5kZXggNTMwM2RmM2YyNDdmNGIuLjliNDEwZjkxZWY0Mzc4IDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcveGF0dHIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcveGF0dHIuY1xuQEAgLTE5NSwzICYjNDM7MTk1LDc3IEBAIGludCBpb19zZXR4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuIFx0aW9feGF0dHJfZmluaXNoKHJlcSwgcmV0KTtcbiBcdHJldHVybiBJT1VfQ09NUExFVEU7XG4gfVxuJiM0MztcbiYjNDM7aW50IGlvX2ZyZW1vdmV4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcbiYjNDM7XHRjb25zdCBjaGFyIF9fdXNlciAqbmFtZTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRJTklUX0RFTEFZRURfRklMRU5BTUUoXHUwMDI2aXgtXHUwMDNlZmlsZW5hbWUpO1xuJiM0MztcdG5hbWUgPSB1NjRfdG9fdXNlcl9wdHIoUkVBRF9PTkNFKHNxZS1cdTAwM2VhZGRyKSk7XG4mIzQzO1xuJiM0MztcdGlmIChSRUFEX09OQ0Uoc3FlLVx1MDAzZWFkZHIyKSB8fCBSRUFEX09OQ0Uoc3FlLVx1MDAzZWxlbikgfHwgUkVBRF9PTkNFKHNxZS1cdTAwM2V4YXR0cl9mbGFncykpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0aXgtXHUwMDNlY3R4LmtuYW1lID0ga21hbGxvY19vYmooKml4LVx1MDAzZWN0eC5rbmFtZSk7XG4mIzQzO1x0aWYgKCFpeC1cdTAwM2VjdHgua25hbWUpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gaW1wb3J0X3hhdHRyX25hbWUoaXgtXHUwMDNlY3R4LmtuYW1lLCBuYW1lKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRrZnJlZShpeC1cdTAwM2VjdHgua25hbWUpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJlcS1cdTAwM2VmbGFncyB8PSBSRVFfRl9ORUVEX0NMRUFOVVA7XG4mIzQzO1x0cmVxLVx1MDAzZWZsYWdzIHw9IFJFUV9GX0ZPUkNFX0FTWU5DO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgaW9fZnJlbW92ZXhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRXQVJOX09OX09OQ0UoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBmaWxlX3JlbW92ZXhhdHRyKHJlcS1cdTAwM2VmaWxlLCBpeC1cdTAwM2VjdHgua25hbWUpO1xuJiM0MztcdGlvX3hhdHRyX2ZpbmlzaChyZXEsIHJldCk7XG4mIzQzO1x0cmV0dXJuIElPVV9DT01QTEVURTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IGlvX2ZsaXN0eGF0dHJfcHJlcChzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgY29uc3Qgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGlvX3hhdHRyICppeCA9IGlvX2tpb2NiX3RvX2NtZChyZXEsIHN0cnVjdCBpb194YXR0cik7XG4mIzQzO1xuJiM0MztcdElOSVRfREVMQVlFRF9GSUxFTkFNRShcdTAwMjZpeC1cdTAwM2VmaWxlbmFtZSk7XG4mIzQzO1x0aXgtXHUwMDNlY3R4LmtuYW1lID0gTlVMTDtcbiYjNDM7XHRpeC1cdTAwM2VjdHgua3ZhbHVlID0gTlVMTDtcbiYjNDM7XG4mIzQzO1x0aWYgKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcikpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0aXgtXHUwMDNlY3R4LnZhbHVlID0gdTY0X3RvX3VzZXJfcHRyKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcjIpKTtcbiYjNDM7XHRpeC1cdTAwM2VjdHguc2l6ZSA9IFJFQURfT05DRShzcWUtXHUwMDNlbGVuKTtcbiYjNDM7XHRpeC1cdTAwM2VjdHguZmxhZ3MgPSBSRUFEX09OQ0Uoc3FlLVx1MDAzZXhhdHRyX2ZsYWdzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGl4LVx1MDAzZWN0eC5mbGFncylcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRyZXEtXHUwMDNlZmxhZ3MgfD0gUkVRX0ZfTkVFRF9DTEVBTlVQO1xuJiM0MztcdHJlcS1cdTAwM2VmbGFncyB8PSBSRVFfRl9GT1JDRV9BU1lOQztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IGlvX2ZsaXN0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpb194YXR0ciAqaXggPSBpb19raW9jYl90b19jbWQocmVxLCBzdHJ1Y3QgaW9feGF0dHIpO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdFdBUk5fT05fT05DRShpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9OT05CTE9DSyk7XG4mIzQzO1xuJiM0MztcdHJldCA9IGZpbGVfbGlzdHhhdHRyKHJlcS1cdTAwM2VmaWxlLCBpeC1cdTAwM2VjdHgudmFsdWUsIGl4LVx1MDAzZWN0eC5zaXplKTtcbiYjNDM7XHRpb194YXR0cl9maW5pc2gocmVxLCByZXQpO1xuJiM0MztcdHJldHVybiBJT1VfQ09NUExFVEU7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9pb191cmluZy94YXR0ci5oIGIvaW9fdXJpbmcveGF0dHIuaFxuaW5kZXggOWI0NTlkMmFlOTBjNWEuLmQyNDg3YjQ5YTVkMjFhIDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcveGF0dHIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcveGF0dHIuaFxuQEAgLTEzLDMgJiM0MzsxMyw5IEBAIGludCBpb19mZ2V0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XG4gXG4gaW50IGlvX2dldHhhdHRyX3ByZXAoc3RydWN0IGlvX2tpb2NiICpyZXEsIGNvbnN0IHN0cnVjdCBpb191cmluZ19zcWUgKnNxZSk7XG4gaW50IGlvX2dldHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuJiM0MztcbiYjNDM7aW50IGlvX2ZyZW1vdmV4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpO1xuJiM0MztpbnQgaW9fZnJlbW92ZXhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuJiM0MztcbiYjNDM7aW50IGlvX2ZsaXN0eGF0dHJfcHJlcChzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgY29uc3Qgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKTtcbiYjNDM7aW50IGlvX2ZsaXN0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxuaW5kZXggZjFjMTZmODE3NzQyMDAuLjc5YmY3YzIyMDA5ZGJiIDEwMDY0NFxuLS0tIGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oXG5AQCAtMjUzLDYgJiM0MzsyNTMsMTkgQEAgZW51bSBpb191cmluZ19vcCB7XG4gXHRJT1JJTkdfT1BfRlVURVhfV0FJVCxcbiBcdElPUklOR19PUF9GVVRFWF9XQUtFLFxuIFx0SU9SSU5HX09QX0ZVVEVYX1dBSVRWLFxuJiM0MztcdElPUklOR19PUF9GSVhFRF9GRF9JTlNUQUxMLFxuJiM0MztcdElPUklOR19PUF9GVFJVTkNBVEUsXG4mIzQzO1x0SU9SSU5HX09QX0JJTkQsXG4mIzQzO1x0SU9SSU5HX09QX0xJU1RFTixcbiYjNDM7XHRJT1JJTkdfT1BfUkVDVl9aQyxcbiYjNDM7XHRJT1JJTkdfT1BfRVBPTExfV0FJVCxcbiYjNDM7XHRJT1JJTkdfT1BfUkVBRFZfRklYRUQsXG4mIzQzO1x0SU9SSU5HX09QX1dSSVRFVl9GSVhFRCxcbiYjNDM7XHRJT1JJTkdfT1BfUElQRSxcbiYjNDM7XHRJT1JJTkdfT1BfTk9QMTI4LFxuJiM0MztcdElPUklOR19PUF9VUklOR19DTUQxMjgsXG4mIzQzO1x0SU9SSU5HX09QX0ZSRU1PVkVYQVRUUixcbiYjNDM7XHRJT1JJTkdfT1BfRkxJU1RYQVRUUixcbiBcbiBcdC8qIHRoaXMgZ29lcyBsYXN0LCBvYnZpb3VzbHkgKi9cbiBcdElPUklOR19PUF9MQVNULFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA2OjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lvX2ZyZW1vdmV4YXR0cl9wcmVwJiMzNDssCiAgICAmIzM0O2lvX2ZyZW1vdmV4YXR0ciYjMzQ7LAogICAgJiMzNDtpb19mbGlzdHhhdHRyX3ByZXAmIzM0OywKICAgICYjMzQ7aW9fZmxpc3R4YXR0ciYjMzQ7LAogICAgJiMzNDtmaWxlX2xpc3R4YXR0ciYjMzQ7LAogICAgJiMzNDtmaWxlX3JlbW92ZXhhdHRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgSU9SSU5HX09QX0ZSRU1PVkVYQVRUUiBhbmQgSU9SSU5HX09QX0ZMSVNUWEFUVFIgdG8gaW9fdXJpbmcuIEl0IG1vZGlmaWVzIGNvcmUgaW9fdXJpbmcgYW5kIHhhdHRyIGxvZ2ljLCBtYWtpbmcgaXQgaGlnaGx5IGZ1bmN0aW9uYWwgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDk2MmRmMmNlNGVkZGY2MzQ3NTM1NzJmZWVmZWMzOWM4N2M2NWVmNTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAwNjowNzowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2ludGVybmFsLmggYi9mcy9pbnRlcm5hbC5oCmluZGV4IDM1NWQ5M2Y5MjIwODYxLi5lZTg2YjI0ZGI3OWFkMiAxMDA2NDQKLS0tIGEvZnMvaW50ZXJuYWwuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9pbnRlcm5hbC5oCkBAIC0yOTcsNiAmIzQzOzI5Nyw4IEBAIGludCBmaWxlbmFtZV9zZXR4YXR0cihpbnQgZGZkLCBzdHJ1Y3QgZmlsZW5hbWUgKmZpbGVuYW1lLAogCQkgICAgICB1bnNpZ25lZCBpbnQgbG9va3VwX2ZsYWdzLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KTsKIGludCBzZXR4YXR0cl9jb3B5KGNvbnN0IGNoYXIgX191c2VyICpuYW1lLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KTsKIGludCBpbXBvcnRfeGF0dHJfbmFtZShzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUsIGNvbnN0IGNoYXIgX191c2VyICpuYW1lKTsKJiM0Mztzc2l6ZV90IGZpbGVfbGlzdHhhdHRyKHN0cnVjdCBmaWxlICpmLCBjaGFyIF9fdXNlciAqbGlzdCwgc2l6ZV90IHNpemUpOwomIzQzO2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpOwogCiBpbnQgbWF5X3dyaXRlX3hhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKIApkaWZmIC0tZ2l0IGEvZnMveGF0dHIuYyBiL2ZzL3hhdHRyLmMKaW5kZXggZDU4OTc5MTE1MjAwNzUuLjMxYjhhNWVlZWMxZThjIDEwMDY0NAotLS0gYS9mcy94YXR0ci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL3hhdHRyLmMKQEAgLTk1Myw3ICYjNDM7OTUzLDYgQEAgbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKmQsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSkKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLXN0YXRpYwogc3NpemVfdCBmaWxlX2xpc3R4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgY2hhciBfX3VzZXIgKmxpc3QsIHNpemVfdCBzaXplKQogewogCWF1ZGl0X2ZpbGUoZik7CkBAIC0xMDM2LDcgJiM0MzsxMDM1LDcgQEAgcmVtb3ZleGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmQsIGNvbnN0IGNoYXIgKm5hbWUpCiAJcmV0dXJuIHZmc19yZW1vdmV4YXR0cihpZG1hcCwgZCwgbmFtZSk7CiB9CiAKLXN0YXRpYyBpbnQgZmlsZV9yZW1vdmV4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IHhhdHRyX25hbWUgKmtuYW1lKQomIzQzO2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpCiB7CiAJaW50IGVycm9yID0gbW50X3dhbnRfd3JpdGVfZmlsZShmKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaAppbmRleCA5MDlmYjdhZWE2MzhlYi4uODA1ZjFlMzFmNDkyNTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oCkBAIC0zMTgsNiAmIzQzOzMxOCw4IEBAIGVudW0gaW9fdXJpbmdfb3AgewogCUlPUklOR19PUF9QSVBFLAogCUlPUklOR19PUF9OT1AxMjgsCiAJSU9SSU5HX09QX1VSSU5HX0NNRDEyOCwKJiM0MzsJSU9SSU5HX09QX0ZSRU1PVkVYQVRUUiwKJiM0MzsJSU9SSU5HX09QX0ZMSVNUWEFUVFIsCiAKIAkvKiB0aGlzIGdvZXMgbGFzdCwgb2J2aW91c2x5ICovCiAJSU9SSU5HX09QX0xBU1QsCmRpZmYgLS1naXQgYS9pb191cmluZy9vcGRlZi5jIGIvaW9fdXJpbmcvb3BkZWYuYwppbmRleCA0ZTU4ZWIxMzQ0ZWFhMy4uMjVkOTIyOWQ4ZmMwMDIgMTAwNjQ0Ci0tLSBhL2lvX3VyaW5nL29wZGVmLmMKJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcvb3BkZWYuYwpAQCAtNTkxLDYgJiM0Mzs1OTEsMTYgQEAgY29uc3Qgc3RydWN0IGlvX2lzc3VlX2RlZiBpb19pc3N1ZV9kZWZzW10gPSB7CiAJCS5wcmVwCQkJPSBpb191cmluZ19jbWRfcHJlcCwKIAkJLmlzc3VlCQkJPSBpb191cmluZ19jbWQsCiAJfSwKJiM0MzsJW0lPUklOR19PUF9GUkVNT1ZFWEFUVFJdID0gewomIzQzOwkJLm5lZWRzX2ZpbGUJCT0gMSwKJiM0MzsJCS5wcmVwCQkJPSBpb19mcmVtb3ZleGF0dHJfcHJlcCwKJiM0MzsJCS5pc3N1ZQkJCT0gaW9fZnJlbW92ZXhhdHRyLAomIzQzOwl9LAomIzQzOwlbSU9SSU5HX09QX0ZMSVNUWEFUVFJdID0gewomIzQzOwkJLm5lZWRzX2ZpbGUJCT0gMSwKJiM0MzsJCS5wcmVwCQkJPSBpb19mbGlzdHhhdHRyX3ByZXAsCiYjNDM7CQkuaXNzdWUJCQk9IGlvX2ZsaXN0eGF0dHIsCiYjNDM7CX0sCiB9OwogCiBjb25zdCBzdHJ1Y3QgaW9fY29sZF9kZWYgaW9fY29sZF9kZWZzW10gPSB7CkBAIC04NDksNiAmIzQzOzg1OSwxNCBAQCBjb25zdCBzdHJ1Y3QgaW9fY29sZF9kZWYgaW9fY29sZF9kZWZzW10gPSB7CiAJCS5zcWVfY29weQkJPSBpb191cmluZ19jbWRfc3FlX2NvcHksCiAJCS5jbGVhbnVwCQk9IGlvX3VyaW5nX2NtZF9jbGVhbnVwLAogCX0sCiYjNDM7CVtJT1JJTkdfT1BfRlJFTU9WRVhBVFRSXSA9IHsKJiM0MzsJCS5uYW1lCQkJPSAmIzM0O0ZSRU1PVkVYQVRUUiYjMzQ7LAomIzQzOwkJLmNsZWFudXAJCT0gaW9feGF0dHJfY2xlYW51cCwKJiM0MzsJfSwKJiM0MzsJW0lPUklOR19PUF9GTElTVFhBVFRSXSA9IHsKJiM0MzsJCS5uYW1lCQkJPSAmIzM0O0ZMSVNUWEFUVFImIzM0OywKJiM0MzsJCS5jbGVhbnVwCQk9IGlvX3hhdHRyX2NsZWFudXAsCiYjNDM7CX0sCiB9OwogCiBjb25zdCBjaGFyICppb191cmluZ19nZXRfb3Bjb2RlKHU4IG9wY29kZSkKZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmMgYi9pb191cmluZy94YXR0ci5jCmluZGV4IDUzMDNkZjNmMjQ3ZjRiLi45YjQxMGY5MWVmNDM3OCAxMDA2NDQKLS0tIGEvaW9fdXJpbmcveGF0dHIuYwomIzQzOyYjNDM7JiM0MzsgYi9pb191cmluZy94YXR0ci5jCkBAIC0xOTUsMyAmIzQzOzE5NSw3NyBAQCBpbnQgaW9fc2V0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncykKIAlpb194YXR0cl9maW5pc2gocmVxLCByZXQpOwogCXJldHVybiBJT1VfQ09NUExFVEU7CiB9CiYjNDM7CiYjNDM7aW50IGlvX2ZyZW1vdmV4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTsKJiM0MzsJY29uc3QgY2hhciBfX3VzZXIgKm5hbWU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CUlOSVRfREVMQVlFRF9GSUxFTkFNRSgmYW1wO2l4LSZndDtmaWxlbmFtZSk7CiYjNDM7CW5hbWUgPSB1NjRfdG9fdXNlcl9wdHIoUkVBRF9PTkNFKHNxZS0mZ3Q7YWRkcikpOwomIzQzOwomIzQzOwlpZiAoUkVBRF9PTkNFKHNxZS0mZ3Q7YWRkcjIpIHx8IFJFQURfT05DRShzcWUtJmd0O2xlbikgfHwgUkVBRF9PTkNFKHNxZS0mZ3Q7eGF0dHJfZmxhZ3MpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWl4LSZndDtjdHgua25hbWUgPSBrbWFsbG9jX29iaigqaXgtJmd0O2N0eC5rbmFtZSk7CiYjNDM7CWlmICghaXgtJmd0O2N0eC5rbmFtZSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlyZXQgPSBpbXBvcnRfeGF0dHJfbmFtZShpeC0mZ3Q7Y3R4LmtuYW1lLCBuYW1lKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJa2ZyZWUoaXgtJmd0O2N0eC5rbmFtZSk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJlcS0mZ3Q7ZmxhZ3MgfD0gUkVRX0ZfTkVFRF9DTEVBTlVQOwomIzQzOwlyZXEtJmd0O2ZsYWdzIHw9IFJFUV9GX0ZPUkNFX0FTWU5DOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IGlvX2ZyZW1vdmV4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKQomIzQzO3sKJiM0MzsJc3RydWN0IGlvX3hhdHRyICppeCA9IGlvX2tpb2NiX3RvX2NtZChyZXEsIHN0cnVjdCBpb194YXR0cik7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CVdBUk5fT05fT05DRShpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKTsKJiM0MzsKJiM0MzsJcmV0ID0gZmlsZV9yZW1vdmV4YXR0cihyZXEtJmd0O2ZpbGUsIGl4LSZndDtjdHgua25hbWUpOwomIzQzOwlpb194YXR0cl9maW5pc2gocmVxLCByZXQpOwomIzQzOwlyZXR1cm4gSU9VX0NPTVBMRVRFOwomIzQzO30KJiM0MzsKJiM0MztpbnQgaW9fZmxpc3R4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTsKJiM0MzsKJiM0MzsJSU5JVF9ERUxBWUVEX0ZJTEVOQU1FKCZhbXA7aXgtJmd0O2ZpbGVuYW1lKTsKJiM0MzsJaXgtJmd0O2N0eC5rbmFtZSA9IE5VTEw7CiYjNDM7CWl4LSZndDtjdHgua3ZhbHVlID0gTlVMTDsKJiM0MzsKJiM0MzsJaWYgKFJFQURfT05DRShzcWUtJmd0O2FkZHIpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWl4LSZndDtjdHgudmFsdWUgPSB1NjRfdG9fdXNlcl9wdHIoUkVBRF9PTkNFKHNxZS0mZ3Q7YWRkcjIpKTsKJiM0MzsJaXgtJmd0O2N0eC5zaXplID0gUkVBRF9PTkNFKHNxZS0mZ3Q7bGVuKTsKJiM0MzsJaXgtJmd0O2N0eC5mbGFncyA9IFJFQURfT05DRShzcWUtJmd0O3hhdHRyX2ZsYWdzKTsKJiM0MzsKJiM0MzsJaWYgKGl4LSZndDtjdHguZmxhZ3MpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJcmVxLSZndDtmbGFncyB8PSBSRVFfRl9ORUVEX0NMRUFOVVA7CiYjNDM7CXJlcS0mZ3Q7ZmxhZ3MgfD0gUkVRX0ZfRk9SQ0VfQVNZTkM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztpbnQgaW9fZmxpc3R4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKQomIzQzO3sKJiM0MzsJc3RydWN0IGlvX3hhdHRyICppeCA9IGlvX2tpb2NiX3RvX2NtZChyZXEsIHN0cnVjdCBpb194YXR0cik7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CVdBUk5fT05fT05DRShpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKTsKJiM0MzsKJiM0MzsJcmV0ID0gZmlsZV9saXN0eGF0dHIocmVxLSZndDtmaWxlLCBpeC0mZ3Q7Y3R4LnZhbHVlLCBpeC0mZ3Q7Y3R4LnNpemUpOwomIzQzOwlpb194YXR0cl9maW5pc2gocmVxLCByZXQpOwomIzQzOwlyZXR1cm4gSU9VX0NPTVBMRVRFOwomIzQzO30KZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmggYi9pb191cmluZy94YXR0ci5oCmluZGV4IDliNDU5ZDJhZTkwYzVhLi5kMjQ4N2I0OWE1ZDIxYSAxMDA2NDQKLS0tIGEvaW9fdXJpbmcveGF0dHIuaAomIzQzOyYjNDM7JiM0MzsgYi9pb191cmluZy94YXR0ci5oCkBAIC0xMywzICYjNDM7MTMsOSBAQCBpbnQgaW9fZmdldHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpOwogCiBpbnQgaW9fZ2V0eGF0dHJfcHJlcChzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgY29uc3Qgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKTsKIGludCBpb19nZXR4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTsKJiM0MzsKJiM0MztpbnQgaW9fZnJlbW92ZXhhdHRyX3ByZXAoc3RydWN0IGlvX2tpb2NiICpyZXEsIGNvbnN0IHN0cnVjdCBpb191cmluZ19zcWUgKnNxZSk7CiYjNDM7aW50IGlvX2ZyZW1vdmV4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTsKJiM0MzsKJiM0MztpbnQgaW9fZmxpc3R4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpOwomIzQzO2ludCBpb19mbGlzdHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaAppbmRleCBmMWMxNmY4MTc3NDIwMC4uNzliZjdjMjIwMDlkYmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oCkBAIC0yNTMsNiAmIzQzOzI1MywxOSBAQCBlbnVtIGlvX3VyaW5nX29wIHsKIAlJT1JJTkdfT1BfRlVURVhfV0FJVCwKIAlJT1JJTkdfT1BfRlVURVhfV0FLRSwKIAlJT1JJTkdfT1BfRlVURVhfV0FJVFYsCiYjNDM7CUlPUklOR19PUF9GSVhFRF9GRF9JTlNUQUxMLAomIzQzOwlJT1JJTkdfT1BfRlRSVU5DQVRFLAomIzQzOwlJT1JJTkdfT1BfQklORCwKJiM0MzsJSU9SSU5HX09QX0xJU1RFTiwKJiM0MzsJSU9SSU5HX09QX1JFQ1ZfWkMsCiYjNDM7CUlPUklOR19PUF9FUE9MTF9XQUlULAomIzQzOwlJT1JJTkdfT1BfUkVBRFZfRklYRUQsCiYjNDM7CUlPUklOR19PUF9XUklURVZfRklYRUQsCiYjNDM7CUlPUklOR19PUF9QSVBFLAomIzQzOwlJT1JJTkdfT1BfTk9QMTI4LAomIzQzOwlJT1JJTkdfT1BfVVJJTkdfQ01EMTI4LAomIzQzOwlJT1JJTkdfT1BfRlJFTU9WRVhBVFRSLAomIzQzOwlJT1JJTkdfT1BfRkxJU1RYQVRUUiwKIAogCS8qIHRoaXMgZ29lcyBsYXN0LCBvYnZpb3VzbHkgKi8KIAlJT1JJTkdfT1BfTEFTVCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU5MAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDMwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpb191cmluZyBYYXR0ciBQYXRjaCoqCgpPa2F5LCBzbyB3ZSBoYXZlIGEgbmV3IHBhdGNoIGxhbmRlZCBmb3IgYGlvX3VyaW5nYCB0aGF04oCZcyBpbnRyb2R1Y2luZyBzdXBwb3J0IGZvciBgSU9SSU5HX09QX0ZSRU1PVkVYQVRUUmAgYW5kIGBJT1JJTkdfT1BfRkxJU1RYQVRUUmAuIEV4Y2VsbGVudCEgVGhpcyBsb29rcyBsaWtlIGl0IHRvdWNoZXMgc29tZSBrZXkgYXJlYXMsIHdoaWNoIGlzIHdoYXQgSSYjMzk7ZCBleHBlY3Q6IGBmcy9pbnRlcm5hbC5oYCwgYGZzL3hhdHRyLmNgLCB0aGUgVUFQSSBoZWFkZXJzIChgaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhgIGFuZCB0aGUgdG9vbCYjMzk7cyBpbmNsdWRlKSwgYW5kIHRoZSByZWxldmFudCBpb191cmluZyBpbXBsZW1lbnRhdGlvbiBmaWxlcyAoYGlvX3VyaW5nL29wZGVmLmNgLCBgaW9fdXJpbmcveGF0dHIuY2AsIGBpb191cmluZy94YXR0ci5oYCkuIFRoaXMgaXMgYSBnb29kIHNpZ247IHdlJiMzOTtyZSBwcm9wZXJseSBleHBhbmRpbmcgdGhlIGludGVyZmFjZXMgaGVyZS4KCkVzc2VudGlhbGx5LCB0aGVzZSBuZXcgb3Bjb2RlcyAoYElPUklOR19PUF9GUkVNT1ZFWEFUVFJgLCBgSU9SSU5HX09QX0ZMSVNUWEFUVFJgKSBhcmUgYmVpbmcgbWFwcGVkIGRpcmVjdGx5IHRvIGBpb19mcmVtb3ZleGF0dHJgIGFuZCBgaW9fZmxpc3R4YXR0cmAgd2l0aGluIGBpb191cmluZy94YXR0ci5jYC4gTG9va3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYW5kIGZyb20gdGhlIGRlc2NyaXB0aW9uLCBpdCBzZWVtcyBmdW5jdGlvbmFsbHkgY29tcGxldGUuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBzb21lIHNlcmlvdXMgZnV6emluZyBhbmQgdGVzdGluZy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IHRoZSBrZXkgc3ltYm9scyBhcmUuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBmb2N1cyBvbiB0aGVzZToKKiAgIGBpb19mcmVtb3ZleGF0dHJfcHJlcGAKKiAgIGBpb19mcmVtb3ZleGF0dHJgCiogICBgaW9fZmxpc3R4YXR0cl9wcmVwYAoqICAgYGlvX2ZsaXN0eGF0dHJgCgpJIG5lZWQgdG8gcXVpY2tseSBjaGVjayBgaW9fdXJpbmcveGF0dHIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGUgbWFpbiBvbmUgSSYjMzk7bSBleHBlY3RpbmcgaXMgYENPTkZJR19JT19VUklOR2AsIGJ1dCB0aGVyZSBtYXkgYmUgbW9yZSBzcGVjaWZpYyB4YXR0ci1yZWxhdGVkIGZsYWdzIHRoYXQgaW1wYWN0IHRoZSBiZWhhdmlvci4gTGV0JiMzOTtzIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSXQgaXMgYSBnb29kIHdheSB0byBzZWUgaWYgd2UgbWlzc2VkIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHXy4qWEFUVFImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM2NAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIEh1bnQgZm9yIGlvX3VyaW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBpb191cmluZ2AgYXJlIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgbmF0dXJlIG9mIGBpb191cmluZ2AsIGlzIHRvIGNoZWNrIHRoZSBgaW9fdXJpbmcvS2NvbmZpZ2AgZmlsZS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UsIGdpdmVuIGl0cyB2ZXJ5IG5hbWUuIEhvd2V2ZXIsIGl0JiMzOTtzIGFsc28gYSBwb3NzaWJpbGl0eSB0aGF0IHNvbWUgY29yZSBpbml0aWFsaXphdGlvbi1yZWxhdGVkIHNldHRpbmdzIG1pZ2h0IGJlIGluIHRoZSBtb3JlIGdlbmVyYWwgYGluaXQvS2NvbmZpZ2AgZmlsZSwgc28gSSBuZWVkIHRvIGNvbnNpZGVyIGJvdGguIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGlvX3VyaW5nL0tjb25maWdgIGFuZCBpZiBpdCBpcyBub3QgcHJlc2VudCB0aGVyZSwgSSYjMzk7bGwgdGhlbiBtb3ZlIG9udG8gYGluaXQvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0lPX1VSSU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvTWFrZWZpbGU9Nz1lbmRpZlxuaW9fdXJpbmcvTWFrZWZpbGUtOC1cbmlvX3VyaW5nL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0lPX1VSSU5HKVx0XHQmIzQzOz0gaW9fdXJpbmcubyBvcGRlZi5vIGtidWYubyByc3JjLm8gbm90aWYubyBcXFxuaW9fdXJpbmcvTWFrZWZpbGUtMTAtXHRcdFx0XHRcdHRjdHgubyBmaWxldGFibGUubyBydy5vIHBvbGwubyBcXFxuLS1cbmlvX3VyaW5nL01ha2VmaWxlLTE4LVxuaW9fdXJpbmcvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0lPX1VSSU5HX1pDUlgpXHQmIzQzOz0gemNyeC5vXG5pb191cmluZy9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfSU9fV1EpXHRcdCYjNDM7PSBpby13cS5vXG4tLVxuaW9fdXJpbmcvTWFrZWZpbGU9MjU9b2JqLSQoQ09ORklHX1BST0NfRlMpICYjNDM7PSBmZGluZm8ub1xuaW9fdXJpbmcvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0lPX1VSSU5HX01PQ0tfRklMRSkgJiM0Mzs9IG1vY2tfZmlsZS5vXG5pb191cmluZy9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfSU9fVVJJTkdfQlBGKSAmIzQzOz0gYnBmX2ZpbHRlci5vXG5pb191cmluZy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfSU9fVVJJTkdfQlBGX09QUykgJiM0Mzs9IGJwZi1vcHMub1xuLS1cbmlvX3VyaW5nL2JwZi1vcHMuaD0xMz1zdHJ1Y3QgaW9fdXJpbmdfYnBmX29wcyB7XG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5oLTE5LVxuaW9fdXJpbmcvYnBmLW9wcy5oOjIwOiNpZmRlZiBDT05GSUdfSU9fVVJJTkdfQlBGX09QU1xuaW9fdXJpbmcvYnBmLW9wcy5oLTIxLXZvaWQgaW9fdW5yZWdpc3Rlcl9icGZfb3BzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KTtcbi0tXG5pb191cmluZy9icGZfZmlsdGVyLmgtNi1cbmlvX3VyaW5nL2JwZl9maWx0ZXIuaDo3OiNpZmRlZiBDT05GSUdfSU9fVVJJTkdfQlBGXG5pb191cmluZy9icGZfZmlsdGVyLmgtOC1cbi0tXG5pb191cmluZy9icGZfZmlsdGVyLmg9NDI9c3RhdGljIGlubGluZSB2b2lkIGlvX2JwZl9maWx0ZXJfY2xvbmUoc3RydWN0IGlvX3Jlc3RyaWN0aW9uICpkc3QsXG4tLVxuaW9fdXJpbmcvYnBmX2ZpbHRlci5oLTQ1LX1cbmlvX3VyaW5nL2JwZl9maWx0ZXIuaDo0NjojZW5kaWYgLyogQ09ORklHX0lPX1VSSU5HX0JQRiAqL1xuaW9fdXJpbmcvYnBmX2ZpbHRlci5oLTQ3LVxuLS1cbmlvX3VyaW5nL3pjcnguaD01ND1zdHJ1Y3QgaW9femNyeF9pZnEge1xuLS1cbmlvX3VyaW5nL3pjcnguaC04NS1cbmlvX3VyaW5nL3pjcnguaDo4NjojaWYgZGVmaW5lZChDT05GSUdfSU9fVVJJTkdfWkNSWClcbmlvX3VyaW5nL3pjcnguaC04Ny1pbnQgaW9femNyeF9jdHJsKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqYXJnLCB1bnNpZ25lZCBucl9hcmcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQ6CgoqKkludmVzdGlnYXRpbmcgRXh0ZW5kZWQgQXR0cmlidXRlICh4YXR0cikgU3VwcG9ydCB3aXRoaW4gdGhlIGBJT19VUklOR2AgQ29udGV4dCoqCgpSaWdodCwgc28gdGhlIHN5c3RlbSBpcyBjb25maWd1cmVkIHRvIHVzZSBgSU9fVVJJTkdgLCB3aGljaCBpcyBhIGtleSBzdGFydGluZyBwb2ludC4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyByZXZvbHZlcyBhcm91bmQgaG93IGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIGhhbmRsZWQgd2l0aGluIHRoaXMgYXN5bmNocm9ub3VzIEkvTyBmcmFtZXdvcmsuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIHhhdHRyIGZ1bmN0aW9uYWxpdHkuCgpJJiMzOTt2ZSBiZWVuIGdpdmVuIGEgbGlzdCBvZiBmb2N1cyBzeW1ib2xzOiBgaW9fZnJlbW92ZXhhdHRyX3ByZXBgLCBgaW9fZnJlbW92ZXhhdHRyYCwgYGlvX2ZsaXN0eGF0dHJfcHJlcGAsIGBpb19mbGlzdHhhdHRyYCwgYGZpbGVfbGlzdHhhdHRyYCwgYW5kIGBmaWxlX3JlbW92ZXhhdHRyYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSBpbW1lZGlhdGVseSBuZWVkIHRvIHplcm8gaW4gb24uIFRoZXkgbG9vayBsaWtlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgcmVtb3ZpbmcgYW5kIGxpc3RpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcyBvbiBmaWxlcywgYm90aCBpbiBhIHN5bmNocm9ub3VzIGFuZCBwb3RlbnRpYWxseSBhc3luY2hyb25vdXMgKGBwcmVwYCBzdWdnZXN0cyBwcmVwZXJhdGlvbiBmb3IgYXN5bmMpLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcm9sZXMgd2l0aGluIHRoZSBgSU9fVVJJTkdgIGVjb3N5c3RlbS4KCkJlZm9yZSBJIGRlbHZlIGludG8gdGhlIGRldGFpbHMgb2YgdGhlc2Ugc3ltYm9scywgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRvIGVuc3VyZSB0aGlzIGlzIHRoZSAqb25seSogY29uZmlndXJhdGlvbiBmb3IgeGF0dHIuIEl0IHdvdWxkIGJlIGEgbmlnaHRtYXJlIHRvIGFzc3VtZSB0aGlzIGlzIHRoZSBvbmx5IG9uZS4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGEgc2Vjb25kYXJ5IHNldHRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHXy4qWEFUVFImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvTWFrZWZpbGU9ND1lcm9mcy1vYmpzIDo9IHN1cGVyLm8gaW5vZGUubyBkYXRhLm8gbmFtZWkubyBkaXIubyBzeXNmcy5vXG5mcy9lcm9mcy9NYWtlZmlsZTo1OmVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSAmIzQzOz0geGF0dHIub1xuZnMvZXJvZnMvTWFrZWZpbGUtNi1lcm9mcy0kKENPTkZJR19FUk9GU19GU19aSVApICYjNDM7PSBkZWNvbXByZXNzb3IubyB6bWFwLm8gemRhdGEubyB6dXRpbC5vXG4tLVxuZnMvZXJvZnMvaW50ZXJuYWwuaD04Nz1zdHJ1Y3QgZXJvZnNfc2JfaW5mbyB7XG4tLVxuZnMvZXJvZnMvaW50ZXJuYWwuaC0xMTEtXHR1MzIgbWV0YV9ibGthZGRyO1xuZnMvZXJvZnMvaW50ZXJuYWwuaDoxMTI6I2lmZGVmIENPTkZJR19FUk9GU19GU19YQVRUUlxuZnMvZXJvZnMvaW50ZXJuYWwuaC0xMTMtXHR1MzIgeGF0dHJfYmxrYWRkcjtcbi0tXG5mcy9lcm9mcy9zdXBlci5jPTI1MD1zdGF0aWMgaW50IGVyb2ZzX3JlYWRfc3VwZXJibG9jayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtMzAzLVx0c2JpLVx1MDAzZW1ldGFfYmxrYWRkciA9IGxlMzJfdG9fY3B1KGRzYi1cdTAwM2VtZXRhX2Jsa2FkZHIpO1xuZnMvZXJvZnMvc3VwZXIuYzozMDQ6I2lmZGVmIENPTkZJR19FUk9GU19GU19YQVRUUlxuZnMvZXJvZnMvc3VwZXIuYy0zMDUtXHRzYmktXHUwMDNleGF0dHJfYmxrYWRkciA9IGxlMzJfdG9fY3B1KGRzYi1cdTAwM2V4YXR0cl9ibGthZGRyKTtcbi0tXG5mcy9lcm9mcy9zdXBlci5jPTM3ND1zdGF0aWMgdm9pZCBlcm9mc19kZWZhdWx0X29wdGlvbnMoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSlcbi0tXG5mcy9lcm9mcy9zdXBlci5jLTM3OS0jZW5kaWZcbmZzL2Vyb2ZzL3N1cGVyLmM6MzgwOlx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSlcbmZzL2Vyb2ZzL3N1cGVyLmMtMzgxLVx0XHRzZXRfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIFhBVFRSX1VTRVIpO1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmM9NDQwPXN0YXRpYyBpbnQgZXJvZnNfZmNfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLFxuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtNDUzLVx0Y2FzZSBPcHRfdXNlcl94YXR0cjpcbmZzL2Vyb2ZzL3N1cGVyLmM6NDU0Olx0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSlcbmZzL2Vyb2ZzL3N1cGVyLmMtNDU1LVx0XHRcdGVycm9yZmMoZmMsIFwmIzM0O3ssbm99dXNlcl94YXR0ciBvcHRpb25zIG5vdCBzdXBwb3J0ZWRcJiMzNDspO1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmM9MTAyMj1zdGF0aWMgaW50IGVyb2ZzX3Nob3dfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGRlbnRyeSAqcm9vdClcbi0tXG5mcy9lcm9mcy9zdXBlci5jLTEwMjYtXG5mcy9lcm9mcy9zdXBlci5jOjEwMjc6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfWEFUVFIpKVxuZnMvZXJvZnMvc3VwZXIuYy0xMDI4LVx0XHRzZXFfcHV0cyhzZXEsIHRlc3Rfb3B0KG9wdCwgWEFUVFJfVVNFUikgP1xuLS1cbmZzL2Vyb2ZzL3hhdHRyLmgtMTItXG5mcy9lcm9mcy94YXR0ci5oOjEzOiNpZmRlZiBDT05GSUdfRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL3hhdHRyLmgtMTQtZXh0ZXJuIGNvbnN0IHN0cnVjdCB4YXR0cl9oYW5kbGVyICogY29uc3QgZXJvZnNfeGF0dHJfaGFuZGxlcnNbXTtcbi0tXG5mcy9lcm9mcy94YXR0ci5oPTIxPXN0YXRpYyBpbmxpbmUgdm9pZCBlcm9mc194YXR0cl9wcmVmaXhlc19jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpIHt9XG4tLVxuZnMvZXJvZnMveGF0dHIuaC0yNC0jZGVmaW5lIGVyb2ZzX3hhdHRyX2hhbmRsZXJzIChOVUxMKVxuZnMvZXJvZnMveGF0dHIuaDoyNTojZW5kaWZcdC8qICFDT05GSUdfRVJPRlNfRlNfWEFUVFIgKi9cbmZzL2Vyb2ZzL3hhdHRyLmgtMjYtXG4tLVxuZnMvZXh0Mi9NYWtlZmlsZT0xMj1DRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxuZnMvZXh0Mi9NYWtlZmlsZS0xMy1cbmZzL2V4dDIvTWFrZWZpbGU6MTQ6ZXh0Mi0kKENPTkZJR19FWFQyX0ZTX1hBVFRSKVx0ICYjNDM7PSB4YXR0ci5vIHhhdHRyX3VzZXIubyB4YXR0cl90cnVzdGVkLm9cbmZzL2V4dDIvTWFrZWZpbGUtMTUtZXh0Mi0kKENPTkZJR19FWFQyX0ZTX1BPU0lYX0FDTCkgJiM0Mzs9IGFjbC5vXG4tLVxuZnMvZXh0Mi9leHQyLmg9NjI3PXN0cnVjdCBleHQyX2lub2RlX2luZm8ge1xuLS1cbmZzL2V4dDIvZXh0Mi5oLTY1MC1cdF9fdTMyXHRpX2Rpcl9zdGFydF9sb29rdXA7XG5mcy9leHQyL2V4dDIuaDo2NTE6I2lmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXG5mcy9leHQyL2V4dDIuaC02NTItXHQvKlxuLS1cbmZzL2V4dDIvc3VwZXIuYz0yMjY9c3RhdGljIHZvaWQgaW5pdF9vbmNlKHZvaWQgKmZvbylcbi0tXG5mcy9leHQyL3N1cGVyLmMtMjMwLVx0cndsb2NrX2luaXQoXHUwMDI2ZWktXHUwMDNlaV9tZXRhX2xvY2spO1xuZnMvZXh0Mi9zdXBlci5jOjIzMTojaWZkZWYgQ09ORklHX0VYVDJfRlNfWEFUVFJcbmZzL2V4dDIvc3VwZXIuYy0yMzItXHRpbml0X3J3c2VtKFx1MDAyNmVpLVx1MDAzZXhhdHRyX3NlbSk7XG4tLVxuZnMvZXh0Mi9zdXBlci5jPTI2MT1zdGF0aWMgaW50IGV4dDJfc2hvd19vcHRpb25zKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZGVudHJ5ICpyb290KVxuLS1cbmZzL2V4dDIvc3VwZXIuYy0zMDctXG5mcy9leHQyL3N1cGVyLmM6MzA4OiNpZmRlZiBDT05GSUdfRVhUMl9GU19YQVRUUlxuZnMvZXh0Mi9zdXBlci5jLTMwOS1cdGlmICh0ZXN0X29wdChzYiwgWEFUVFJfVVNFUikpXG4tLVxuZnMvZXh0Mi9zdXBlci5jPTUxND1zdGF0aWMgaW50IGV4dDJfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSlcbi0tXG5mcy9leHQyL3N1cGVyLmMtNTY3LVx0XHRicmVhaztcbmZzL2V4dDIvc3VwZXIuYzo1Njg6I2lmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXG5mcy9leHQyL3N1cGVyLmMtNTY5LVx0Y2FzZSBPcHRfdXNlcl94YXR0cjpcbi0tXG5mcy9leHQyL3N1cGVyLmM9ODA5PXN0YXRpYyB2b2lkIGV4dDJfc2V0X29wdGlvbnMoc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZXh0Ml9zYl9pbmZvICpzYmkpXG4tLVxuZnMvZXh0Mi9zdXBlci5jLTgzMC1cbmZzL2V4dDIvc3VwZXIuYzo4MzE6I2lmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXG5mcy9leHQyL3N1cGVyLmMtODMyLVx0aWYgKCFjdHhfcGFyc2VkX21vdW50X29wdChjdHgsIEVYVDJfTU9VTlRfWEFUVFJfVVNFUikgXHUwMDI2XHUwMDI2XG4tLVxuZnMvZXh0Mi9zdXBlci5jPTg2ND1zdGF0aWMgaW50IGV4dDJfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxuZnMvZXh0Mi9zdXBlci5jLTExNjEtXG5mcy9leHQyL3N1cGVyLmM6MTE2MjojaWZkZWYgQ09ORklHX0VYVDJfRlNfWEFUVFJcbmZzL2V4dDIvc3VwZXIuYy0xMTYzLVx0c2JpLVx1MDAzZXNfZWFfYmxvY2tfY2FjaGUgPSBleHQyX3hhdHRyX2NyZWF0ZV9jYWNoZSgpO1xuLS1cbmZzL2V4dDIveGF0dHIuaD01Nz1zdHJ1Y3QgbWJfY2FjaGU7XG5mcy9leHQyL3hhdHRyLmgtNTgtXG5mcy9leHQyL3hhdHRyLmg6NTk6IyBpZmRlZiBDT05GSUdfRVhUMl9GU19YQVRUUlxuZnMvZXh0Mi94YXR0ci5oLTYwLVxuLS1cbmZzL2V4dDIveGF0dHIuaD03NT1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgKiBjb25zdCBleHQyX3hhdHRyX2hhbmRsZXJzW107XG5mcy9leHQyL3hhdHRyLmgtNzYtXG5mcy9leHQyL3hhdHRyLmg6Nzc6IyBlbHNlICAvKiBDT05GSUdfRVhUMl9GU19YQVRUUiAqL1xuZnMvZXh0Mi94YXR0ci5oLTc4LVxuLS1cbmZzL2V4dDIveGF0dHIuaD05OD1zdGF0aWMgaW5saW5lIHZvaWQgZXh0Ml94YXR0cl9kZXN0cm95X2NhY2hlKHN0cnVjdCBtYl9jYWNoZSAqY2FjaGUpXG4tLVxuZnMvZXh0Mi94YXR0ci5oLTEwNC1cbmZzL2V4dDIveGF0dHIuaDoxMDU6IyBlbmRpZiAgLyogQ09ORklHX0VYVDJfRlNfWEFUVFIgKi9cbmZzL2V4dDIveGF0dHIuaC0xMDYtXG4tLVxuZnMvZjJmcy9NYWtlZmlsZT03PWYyZnMtJChDT05GSUdfRjJGU19TVEFUX0ZTKSAmIzQzOz0gZGVidWcub1xuZnMvZjJmcy9NYWtlZmlsZTo4OmYyZnMtJChDT05GSUdfRjJGU19GU19YQVRUUikgJiM0Mzs9IHhhdHRyLm9cbmZzL2YyZnMvTWFrZWZpbGUtOS1mMmZzLSQoQ09ORklHX0YyRlNfRlNfUE9TSVhfQUNMKSAmIzQzOz0gYWNsLm9cbi0tXG5mcy9mMmZzL3N1cGVyLmM9NzkwPXN0YXRpYyBpbnQgZjJmc19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxuLS1cbmZzL2YyZnMvc3VwZXIuYy04MjgtXHRcdGJyZWFrO1xuZnMvZjJmcy9zdXBlci5jOjgyOTojaWZkZWYgQ09ORklHX0YyRlNfRlNfWEFUVFJcbmZzL2YyZnMvc3VwZXIuYy04MzAtXHRjYXNlIE9wdF91c2VyX3hhdHRyOlxuLS1cbmZzL2YyZnMvc3VwZXIuYz0yMzc1PXN0YXRpYyBpbnQgZjJmc19zaG93X29wdGlvbnMoc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBkZW50cnkgKnJvb3QpXG4tLVxuZnMvZjJmcy9zdXBlci5jLTI0MDUtXHR9XG5mcy9mMmZzL3N1cGVyLmM6MjQwNjojaWZkZWYgQ09ORklHX0YyRlNfRlNfWEFUVFJcbmZzL2YyZnMvc3VwZXIuYy0yNDA3LVx0aWYgKHRlc3Rfb3B0KHNiaSwgWEFUVFJfVVNFUikpXG4tLVxuZnMvZjJmcy9zdXBlci5jPTI1NDk9c3RhdGljIHZvaWQgZGVmYXVsdF9vcHRpb25zKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYm9vbCByZW1vdW50KVxuLS1cbmZzL2YyZnMvc3VwZXIuYy0yNjAxLVxuZnMvZjJmcy9zdXBlci5jOjI2MDI6I2lmZGVmIENPTkZJR19GMkZTX0ZTX1hBVFRSXG5mcy9mMmZzL3N1cGVyLmMtMjYwMy1cdHNldF9vcHQoc2JpLCBYQVRUUl9VU0VSKTtcbi0tXG5mcy9mMmZzL3hhdHRyLmg9NDg9c3RydWN0IGYyZnNfeGF0dHJfZW50cnkge1xuLS1cbmZzL2YyZnMveGF0dHIuaC0xMjMtXG5mcy9mMmZzL3hhdHRyLmg6MTI0OiNpZmRlZiBDT05GSUdfRjJGU19GU19YQVRUUlxuZnMvZjJmcy94YXR0ci5oLTEyNS1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgZjJmc194YXR0cl91c2VyX2hhbmRsZXI7XG4tLVxuZnMvamZmczIvTWFrZWZpbGU9MTQ9amZmczItJChDT05GSUdfSkZGUzJfRlNfV1JJVEVCVUZGRVIpXHQmIzQzOz0gd2J1Zi5vXG5mcy9qZmZzMi9NYWtlZmlsZToxNTpqZmZzMi0kKENPTkZJR19KRkZTMl9GU19YQVRUUilcdFx0JiM0Mzs9IHhhdHRyLm8geGF0dHJfdHJ1c3RlZC5vIHhhdHRyX3VzZXIub1xuZnMvamZmczIvTWFrZWZpbGUtMTYtamZmczItJChDT05GSUdfSkZGUzJfRlNfU0VDVVJJVFkpXHQmIzQzOz0gc2VjdXJpdHkub1xuLS1cbmZzL2pmZnMyL2VyYXNlLmM9MjA2PXN0YXRpYyBpbmxpbmUgdm9pZCBqZmZzMl9yZW1vdmVfbm9kZV9yZWZzX2Zyb21faW5vX2xpc3Qoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsXG4tLVxuZnMvamZmczIvZXJhc2UuYy0yNzItXHRzd2l0Y2ggKGljLVx1MDAzZWNsYXNzKSB7XG5mcy9qZmZzMi9lcmFzZS5jOjI3MzojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9lcmFzZS5jLTI3NC1cdFx0Y2FzZSBSQVdOT0RFX0NMQVNTX1hBVFRSX0RBVFVNOlxuLS1cbmZzL2pmZnMyL2djLmM9MTI0PWludCBqZmZzMl9nYXJiYWdlX2NvbGxlY3RfcGFzcyhzdHJ1Y3QgamZmczJfc2JfaW5mbyAqYylcbi0tXG5mcy9qZmZzMi9nYy5jLTMyOC1cbmZzL2pmZnMyL2djLmM6MzI5OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL2djLmMtMzMwLVx0LyogV2hlbiAmIzM5O2ljJiMzOTsgcmVmZXJzIHhhdHRyX2RhdHVtL3hhdHRyX3JlZiwgdGhpcyBub2RlIGlzIEdDZWQgYXMgeGF0dHIuXG4tLVxuZnMvamZmczIvamZmczJfZnNfc2IuaD00OT1zdHJ1Y3QgamZmczJfc2JfaW5mbyB7XG4tLVxuZnMvamZmczIvamZmczJfZnNfc2IuaC0xNDUtXG5mcy9qZmZzMi9qZmZzMl9mc19zYi5oOjE0NjojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9qZmZzMl9mc19zYi5oLTE0Ny0jZGVmaW5lIFhBVFRSSU5ERVhfSEFTSFNJWkVcdCg1Nylcbi0tXG5mcy9qZmZzMi9tYWxsb2MuYz0yOD1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmlub2RlX2NhY2hlX3NsYWI7XG5mcy9qZmZzMi9tYWxsb2MuYzoyOTojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9tYWxsb2MuYy0zMC1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKnhhdHRyX2RhdHVtX2NhY2hlO1xuLS1cbmZzL2pmZnMyL21hbGxvYy5jPTM0PWludCBfX2luaXQgamZmczJfY3JlYXRlX3NsYWJfY2FjaGVzKHZvaWQpXG4tLVxuZnMvamZmczIvbWFsbG9jLmMtNjUtXG5mcy9qZmZzMi9tYWxsb2MuYzo2NjojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9tYWxsb2MuYy02Ny1cdHhhdHRyX2RhdHVtX2NhY2hlID0gS01FTV9DQUNIRShqZmZzMl94YXR0cl9kYXR1bSwgMCk7XG4tLVxuZnMvamZmczIvbWFsbG9jLmM9ODI9dm9pZCBqZmZzMl9kZXN0cm95X3NsYWJfY2FjaGVzKHZvaWQpXG4tLVxuZnMvamZmczIvbWFsbG9jLmMtOTAtXHRrbWVtX2NhY2hlX2Rlc3Ryb3koaW5vZGVfY2FjaGVfc2xhYik7XG5mcy9qZmZzMi9tYWxsb2MuYzo5MTojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9tYWxsb2MuYy05Mi1cdGttZW1fY2FjaGVfZGVzdHJveSh4YXR0cl9kYXR1bV9jYWNoZSk7XG4tLVxuZnMvamZmczIvbWFsbG9jLmM9MjU0PXZvaWQgamZmczJfZnJlZV9pbm9kZV9jYWNoZShzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKngpXG4tLVxuZnMvamZmczIvbWFsbG9jLmMtMjU5LVxuZnMvamZmczIvbWFsbG9jLmM6MjYwOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL21hbGxvYy5jLTI2MS1zdHJ1Y3QgamZmczJfeGF0dHJfZGF0dW0gKmpmZnMyX2FsbG9jX3hhdHRyX2RhdHVtKHZvaWQpXG4tLVxuZnMvamZmczIvbm9kZWxpc3QuYz00NTc9dm9pZCBqZmZzMl9kZWxfaW5vX2NhY2hlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKm9sZClcbi0tXG5mcy9qZmZzMi9ub2RlbGlzdC5jLTQ2MC1cbmZzL2pmZnMyL25vZGVsaXN0LmM6NDYxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL25vZGVsaXN0LmMtNDYyLVx0QlVHX09OKG9sZC1cdTAwM2V4cmVmKTtcbi0tXG5mcy9qZmZzMi9ub2RlbGlzdC5oPTE1OD1zdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUge1xuLS1cbmZzL2pmZnMyL25vZGVsaXN0LmgtMTc1LVx0c3RydWN0IGpmZnMyX2lub2RlX2NhY2hlICpuZXh0O1xuZnMvamZmczIvbm9kZWxpc3QuaDoxNzY6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxuZnMvamZmczIvbm9kZWxpc3QuaC0xNzctXHRzdHJ1Y3QgamZmczJfeGF0dHJfcmVmICp4cmVmO1xuLS1cbmZzL2pmZnMyL25vZGVsaXN0Lmg9NDQxPXZvaWQgamZmczJfZnJlZV9pbm9kZV9jYWNoZShzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKik7XG5mcy9qZmZzMi9ub2RlbGlzdC5oOjQ0MjojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9ub2RlbGlzdC5oLTQ0My1zdHJ1Y3QgamZmczJfeGF0dHJfZGF0dW0gKmpmZnMyX2FsbG9jX3hhdHRyX2RhdHVtKHZvaWQpO1xuLS1cbmZzL2pmZnMyL25vZGVtZ210LmM9NTg2PXZvaWQgamZmczJfbWFya19ub2RlX29ic29sZXRlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfcmF3X25vZGVfcmVmICpyZWYpXG4tLVxuZnMvamZmczIvbm9kZW1nbXQuYy04MjMtXHRcdHN3aXRjaCAoaWMtXHUwMDNlY2xhc3MpIHtcbmZzL2pmZnMyL25vZGVtZ210LmM6ODI0OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL25vZGVtZ210LmMtODI1LVx0XHRcdGNhc2UgUkFXTk9ERV9DTEFTU19YQVRUUl9EQVRVTTpcbi0tXG5mcy9qZmZzMi9zY2FuLmM9MzEyPWludCBqZmZzMl9zY2FuX2NsYXNzaWZ5X2plYihzdHJ1Y3QgamZmczJfc2JfaW5mbyAqYywgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmplYilcbi0tXG5mcy9qZmZzMi9zY2FuLmMtMzMwLVxuZnMvamZmczIvc2Nhbi5jOjMzMTojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9zY2FuLmMtMzMyLXN0YXRpYyBpbnQgamZmczJfc2Nhbl94YXR0cl9ub2RlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViLFxuLS1cbmZzL2pmZnMyL3NjYW4uYz00NDc9c3RhdGljIGludCBqZmZzMl9zY2FuX2VyYXNlYmxvY2sgKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViLFxuLS1cbmZzL2pmZnMyL3NjYW4uYy04MzUtXG5mcy9qZmZzMi9zY2FuLmM6ODM2OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL3NjYW4uYy04MzctXHRcdGNhc2UgSkZGUzJfTk9ERVRZUEVfWEFUVFI6XG4tLVxuZnMvamZmczIvc2Nhbi5jLTg3MC1cdFx0XHRicmVhaztcbmZzL2pmZnMyL3NjYW4uYzo4NzE6I2VuZGlmXHQvKiBDT05GSUdfSkZGUzJfRlNfWEFUVFIgKi9cbmZzL2pmZnMyL3NjYW4uYy04NzItXG4tLVxuZnMvamZmczIvc3VtbWFyeS5jPTYzPXN0YXRpYyBpbnQgamZmczJfc3VtX2FkZF9tZW0oc3RydWN0IGpmZnMyX3N1bW1hcnkgKnMsIHVuaW9uIGpmZnMyX3N1bV9tZW0gKml0ZW0pXG4tLVxuZnMvamZmczIvc3VtbWFyeS5jLTgzLVx0XHRcdGJyZWFrO1xuZnMvamZmczIvc3VtbWFyeS5jOjg0OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL3N1bW1hcnkuYy04NS1cdFx0Y2FzZSBKRkZTMl9OT0RFVFlQRV9YQVRUUjpcbi0tXG5mcy9qZmZzMi9zdW1tYXJ5LmM9MTMzPWludCBqZmZzMl9zdW1fYWRkX2RpcmVudF9tZW0oc3RydWN0IGpmZnMyX3N1bW1hcnkgKnMsIHN0cnVjdCBqZmZzMl9yYXdfZGlyZW50ICpyZCxcbi0tXG5mcy9qZmZzMi9zdW1tYXJ5LmMtMTU2LVxuZnMvamZmczIvc3VtbWFyeS5jOjE1NzojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9zdW1tYXJ5LmMtMTU4LWludCBqZmZzMl9zdW1fYWRkX3hhdHRyX21lbShzdHJ1Y3QgamZmczJfc3VtbWFyeSAqcywgc3RydWN0IGpmZnMyX3Jhd194YXR0ciAqcngsIHVpbnQzMl90IG9mcylcbi0tXG5mcy9qZmZzMi9zdW1tYXJ5LmM9MjQ4PWludCBqZmZzMl9zdW1fYWRkX2t2ZWMoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsIGNvbnN0IHN0cnVjdCBrdmVjICppbnZlY3MsXG4tLVxuZnMvamZmczIvc3VtbWFyeS5jLTMxMy1cdFx0fVxuZnMvamZmczIvc3VtbWFyeS5jOjMxNDojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9zdW1tYXJ5LmMtMzE1LVx0XHRjYXNlIEpGRlMyX05PREVUWVBFX1hBVFRSOiB7XG4tLVxuZnMvamZmczIvc3VtbWFyeS5jPTM4Nj1zdGF0aWMgaW50IGpmZnMyX3N1bV9wcm9jZXNzX3N1bV9kYXRhKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViLFxuLS1cbmZzL2pmZnMyL3N1bW1hcnkuYy00ODktXHRcdFx0fVxuZnMvamZmczIvc3VtbWFyeS5jOjQ5MDojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9zdW1tYXJ5LmMtNDkxLVx0XHRcdGNhc2UgSkZGUzJfTk9ERVRZUEVfWEFUVFI6IHtcbi0tXG5mcy9qZmZzMi9zdW1tYXJ5LmM9Njc0PXN0YXRpYyBpbnQgamZmczJfc3VtX3dyaXRlX2RhdGEoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsIHN0cnVjdCBqZmZzMl9lcmFzZWJsb2NrICpqZWIsXG4tLVxuZnMvamZmczIvc3VtbWFyeS5jLTc1NC1cdFx0XHR9XG5mcy9qZmZzMi9zdW1tYXJ5LmM6NzU1OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL3N1bW1hcnkuYy03NTYtXHRcdFx0Y2FzZSBKRkZTMl9OT0RFVFlQRV9YQVRUUjoge1xuLS1cbmZzL2pmZnMyL3hhdHRyLmg9NjY9c3RhdGljIGlubGluZSBpbnQgaXNfeGF0dHJfcmVmX2RlYWQoc3RydWN0IGpmZnMyX3hhdHRyX3JlZiAqcmVmKVxuLS1cbmZzL2pmZnMyL3hhdHRyLmgtNzAtXG5mcy9qZmZzMi94YXR0ci5oOjcxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL3hhdHRyLmgtNzItXG4tLVxuZnMvamZmczIveGF0dHIuaD0xMDE9ZXh0ZXJuIHNzaXplX3QgamZmczJfbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBzaXplX3QpO1xuLS1cbmZzL2pmZnMyL3hhdHRyLmgtMTE2LVxuZnMvamZmczIveGF0dHIuaDoxMTc6I2VuZGlmIC8qIENPTkZJR19KRkZTMl9GU19YQVRUUiAqL1xuZnMvamZmczIveGF0dHIuaC0xMTgtXG4tLVxuZnMvbmlsZnMyL25pbGZzLmg9NDA9c3RydWN0IG5pbGZzX2lub2RlX2luZm8ge1xuLS1cbmZzL25pbGZzMi9uaWxmcy5oLTUxLVxuZnMvbmlsZnMyL25pbGZzLmg6NTI6I2lmZGVmIENPTkZJR19OSUxGU19YQVRUUlxuZnMvbmlsZnMyL25pbGZzLmgtNTMtXHQvKlxuLS1cbmZzL25pbGZzMi9zdXBlci5jPTEzMTQ9c3RhdGljIHZvaWQgbmlsZnNfaW5vZGVfaW5pdF9vbmNlKHZvaWQgKm9iailcbi0tXG5mcy9uaWxmczIvc3VwZXIuYy0xMzE4LVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2aWktXHUwMDNlaV9kaXJ0eSk7XG5mcy9uaWxmczIvc3VwZXIuYzoxMzE5OiNpZmRlZiBDT05GSUdfTklMRlNfWEFUVFJcbmZzL25pbGZzMi9zdXBlci5jLTEzMjAtXHRpbml0X3J3c2VtKFx1MDAyNmlpLVx1MDAzZXhhdHRyX3NlbSk7XG4tLVxuZnMvc21iL2NsaWVudC9NYWtlZmlsZT0xOT0kKG9iaikvY2lmc19zcG5lZ29fbmVndG9rZW5pbml0LmFzbjEubzogJChvYmopL2NpZnNfc3BuZWdvX25lZ3Rva2VuaW5pdC5hc24xLmMgJChvYmopL2NpZnNfc3BuZWdvX25lZ3Rva2VuaW5pdC5hc24xLmhcbmZzL3NtYi9jbGllbnQvTWFrZWZpbGUtMjAtXG5mcy9zbWIvY2xpZW50L01ha2VmaWxlOjIxOmNpZnMtJChDT05GSUdfQ0lGU19YQVRUUikgJiM0Mzs9IHhhdHRyLm9cbmZzL3NtYi9jbGllbnQvTWFrZWZpbGUtMjItXG4tLVxuZnMvc21iL2NsaWVudC9jaWZzX2RlYnVnLmM9NDM4PXN0YXRpYyBpbnQgY2lmc19kZWJ1Z19kYXRhX3Byb2Nfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuZnMvc21iL2NsaWVudC9jaWZzX2RlYnVnLmMtNDgyLSNlbmRpZlxuZnMvc21iL2NsaWVudC9jaWZzX2RlYnVnLmM6NDgzOiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxuZnMvc21iL2NsaWVudC9jaWZzX2RlYnVnLmMtNDg0LVx0c2VxX3ByaW50ZihtLCBcJiMzNDssWEFUVFJcJiMzNDspO1xuLS1cbmZzL3NtYi9jbGllbnQvY2lmc2ZzLmg9MTMyPWludCBjaWZzX3N5bWxpbmsoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvc21iL2NsaWVudC9jaWZzZnMuaC0xMzQtXG5mcy9zbWIvY2xpZW50L2NpZnNmcy5oOjEzNTojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvY2lmc2ZzLmgtMTM2LWV4dGVybiBjb25zdCBzdHJ1Y3QgeGF0dHJfaGFuZGxlciAqIGNvbnN0IGNpZnNfeGF0dHJfaGFuZGxlcnNbXTtcbi0tXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYz0zMDg1PXN0cnVjdCBpbm9kZSAqY2lmc19jcmVhdGVfcmVwYXJzZV9pbm9kZShzdHJ1Y3QgY2lmc19vcGVuX2luZm9fZGF0YSAqZGF0YSxcbi0tXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy0zMTE1LVxuZnMvc21iL2NsaWVudC9jaWZzc21iLmM6MzExNjojaWZuZGVmIENPTkZJR19DSUZTX1hBVFRSXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy0zMTE3LVx0aWYgKHhhdHRyX2lvdilcbi0tXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy0zMTMxLVxuZnMvc21iL2NsaWVudC9jaWZzc21iLmM6MzEzMjojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jLTMxMzMtXHRpZiAoeGF0dHJfaW92KSB7XG4tLVxuZnMvc21iL2NsaWVudC9jaWZzc21iLmM9NjAyNz1DSUZTU01CVW5peFNldFBhdGhJbmZvKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRjb24sXG4tLVxuZnMvc21iL2NsaWVudC9jaWZzc21iLmMtNjEwMS1cbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jOjYxMDI6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy02MTAzLS8qXG4tLVxuZnMvc21iL2NsaWVudC9pbm9kZS5jPTcyMT1zdGF0aWMgaW50IGNpZnNfc2Z1X21vZGUoc3RydWN0IGNpZnNfZmF0dHIgKmZhdHRyLCBjb25zdCB1bnNpZ25lZCBjaGFyICpwYXRoLFxuLS1cbmZzL3NtYi9jbGllbnQvaW5vZGUuYy03MjMte1xuZnMvc21iL2NsaWVudC9pbm9kZS5jOjcyNDojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvaW5vZGUuYy03MjUtXHRzc2l6ZV90IHJjO1xuLS1cbmZzL3NtYi9jbGllbnQvc21iMW9wcy5jPTUzMj1zdGF0aWMgaW50IGNpZnNfcXVlcnlfcGF0aF9pbmZvKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsXG4tLVxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmMtNjQyLVxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmM6NjQzOiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmMtNjQ0LVx0Lypcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYz0xMzkzPXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjFfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYy0xNDY5LVx0LnNlbGVjdF9zZWN0eXBlID0gY2lmc19zZWxlY3Rfc2VjdHlwZSxcbmZzL3NtYi9jbGllbnQvc21iMW9wcy5jOjE0NzA6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYy0xNDcxLVx0LnF1ZXJ5X2FsbF9FQXMgPSBDSUZTU01CUUFsbEVBcyxcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz0xMDMxPXN0YXRpYyBpbnQgc21iMl9xdWVyeV9maWxlX2luZm8oY29uc3QgdW5zaWduZWQgaW50IHhpZCwgc3RydWN0IGNpZnNfdGNvbiAqdGNvbixcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy0xMDQ0LVxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6MTA0NTojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTEwNDYtc3RhdGljIHNzaXplX3Rcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01NTQyPXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjIwX29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmMtNTYyNS1cdC5zZWxlY3Rfc2VjdHlwZSA9IHNtYjJfc2VsZWN0X3NlY3R5cGUsXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYzo1NjI2OiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmMtNTYyNy1cdC5xdWVyeV9hbGxfRUFzID0gc21iMl9xdWVyeV9lYXMsXG4tLVxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM9NTY0ND1zdHJ1Y3Qgc21iX3ZlcnNpb25fb3BlcmF0aW9ucyBzbWIyMV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTU3MzAtXHQuc2VsZWN0X3NlY3R5cGUgPSBzbWIyX3NlbGVjdF9zZWN0eXBlLFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6NTczMTojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTU3MzItXHQucXVlcnlfYWxsX0VBcyA9IHNtYjJfcXVlcnlfZWFzLFxuLS1cbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jPTU3NDg9c3RydWN0IHNtYl92ZXJzaW9uX29wZXJhdGlvbnMgc21iMzBfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01ODQ2LVx0LnNlbGVjdF9zZWN0eXBlID0gc21iMl9zZWxlY3Rfc2VjdHlwZSxcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jOjU4NDc6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01ODQ4LVx0LnF1ZXJ5X2FsbF9FQXMgPSBzbWIyX3F1ZXJ5X2Vhcyxcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01ODY0PXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjMxMV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTU5NjItXHQuc2VsZWN0X3NlY3R5cGUgPSBzbWIyX3NlbGVjdF9zZWN0eXBlLFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6NTk2MzojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTU5NjQtXHQucXVlcnlfYWxsX0VBcyA9IHNtYjJfcXVlcnlfZWFzLFxuLS1cbmZzL3NxdWFzaGZzL01ha2VmaWxlPTEzPXNxdWFzaGZzLSQoQ09ORklHX1NRVUFTSEZTX0RFQ09NUF9NVUxUSV9QRVJDUFUpICYjNDM7PSBkZWNvbXByZXNzb3JfbXVsdGlfcGVyY3B1Lm9cbmZzL3NxdWFzaGZzL01ha2VmaWxlOjE0OnNxdWFzaGZzLSQoQ09ORklHX1NRVUFTSEZTX1hBVFRSKSAmIzQzOz0geGF0dHIubyB4YXR0cl9pZC5vXG5mcy9zcXVhc2hmcy9NYWtlZmlsZS0xNS1zcXVhc2hmcy0kKENPTkZJR19TUVVBU0hGU19MWjQpICYjNDM7PSBsejRfd3JhcHBlci5vXG4tLVxuZnMvc3F1YXNoZnMveGF0dHIuaC0xMC1cbmZzL3NxdWFzaGZzL3hhdHRyLmg6MTE6I2lmZGVmIENPTkZJR19TUVVBU0hGU19YQVRUUlxuZnMvc3F1YXNoZnMveGF0dHIuaC0xMi1leHRlcm4gX19sZTY0ICpzcXVhc2hmc19yZWFkX3hhdHRyX2lkX3RhYmxlKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1NjQsXG4tLVxuZnMvdWJpZnMvTWFrZWZpbGU9OT11Ymlmcy0kKENPTkZJR19GU19FTkNSWVBUSU9OKSAmIzQzOz0gY3J5cHRvLm9cbmZzL3ViaWZzL01ha2VmaWxlOjEwOnViaWZzLSQoQ09ORklHX1VCSUZTX0ZTX1hBVFRSKSAmIzQzOz0geGF0dHIub1xuZnMvdWJpZnMvTWFrZWZpbGUtMTEtdWJpZnMtJChDT05GSUdfVUJJRlNfRlNfQVVUSEVOVElDQVRJT04pICYjNDM7PSBhdXRoLm9cbi0tXG5mcy91Ymlmcy91Ymlmcy5oPTIwMzQ9c3NpemVfdCB1Ymlmc194YXR0cl9nZXQoc3RydWN0IGlub2RlICpob3N0LCBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpidWYsXG4tLVxuZnMvdWJpZnMvdWJpZnMuaC0yMDM2LVxuZnMvdWJpZnMvdWJpZnMuaDoyMDM3OiNpZmRlZiBDT05GSUdfVUJJRlNfRlNfWEFUVFJcbmZzL3ViaWZzL3ViaWZzLmgtMjAzOC1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgKiBjb25zdCB1Ymlmc194YXR0cl9oYW5kbGVyc1tdO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTUwCgkJCQkJCQlvdXRwdXQ6IDE0MgoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJT19VUklORyBYQVRUUiBGdW5jdGlvbiBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHBsYXkgaGVyZSBpcyBkZWZpbml0ZWx5IGBJT19VUklOR2AuIE15IGN1cnJlbnQgdGFyZ2V0IGlzIHVuZGVyc3RhbmRpbmcgaG93IGV4dGVuZGVkIGF0dHJpYnV0ZXMgKHhhdHRycykgYXJlIGhhbmRsZWQgd2l0aCB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIFRoZSBmb2N1cyBzeW1ib2xzIGdpdmUgbWUgYSBzdHJvbmcgc3RhcnRpbmcgcG9pbnQ6IGBpb19mcmVtb3ZleGF0dHJfcHJlcGAsIGBpb19mcmVtb3ZleGF0dHJgLCBgaW9fZmxpc3R4YXR0cl9wcmVwYCwgYGlvX2ZsaXN0eGF0dHJgLCBgZmlsZV9saXN0eGF0dHJgLCBhbmQgYGZpbGVfcmVtb3ZleGF0dHJgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNlbnRyYWwgdG8gcmVtb3ZpbmcgYW5kIGxpc3RpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcywgYW5kIHRoZSAmIzM5O2lvXyYjMzk7IHByZWZpeCBzdHJvbmdseSBzdWdnZXN0cyB0aGV5JiMzOTtyZSByZWxhdGVkIHRvIGFzeW5jaHJvbm91cyBJL08gd2l0aCBpb191cmluZy4KCkJlZm9yZSBJIGp1bXAgaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEp1c3QgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsLiBgQ09ORklHX0lPX1VSSU5HYCBzZWVtcyBsaWtlIHRoZSBwcmltYXJ5IGRyaXZlciwgYnV0IGl0JiMzOTtzIGFsd2F5cyBnb29kIHByYWN0aWNlIHRvIGVsaW1pbmF0ZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMuCgpPbmNlIEkgaGF2ZSBhIHNvbGlkIGdyYXNwIG9uIHRoZXNlIHN5bWJvbHMgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB1bmRlciBgSU9fVVJJTkdgLCBJJiMzOTtsbCB1c2UgYHNldC1yZXN1bHRzYCB0byBwcm92aWRlIGEgY2xlYXIgYW5kIGNvbmNpc2Ugc3VtbWFyeSBvZiBteSBmaW5kaW5ncy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBzdHJ1Y3R1cmVkIGFwcHJvYWNoIGZvciBkb2N1bWVudGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb19mcmVtb3ZleGF0dHJfcHJlcCYjMzQ7LAogICAgJiMzNDtpb19mcmVtb3ZleGF0dHImIzM0OywKICAgICYjMzQ7aW9fZmxpc3R4YXR0cl9wcmVwJiMzNDssCiAgICAmIzM0O2lvX2ZsaXN0eGF0dHImIzM0OywKICAgICYjMzQ7ZmlsZV9saXN0eGF0dHImIzM0OywKICAgICYjMzQ7ZmlsZV9yZW1vdmV4YXR0ciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIElPUklOR19PUF9GUkVNT1ZFWEFUVFIgYW5kIElPUklOR19PUF9GTElTVFhBVFRSIHRvIGlvX3VyaW5nLiBJdCBtb2RpZmllcyBjb3JlIGlvX3VyaW5nIGFuZCB4YXR0ciBsb2dpYywgbWFraW5nIGl0IGhpZ2hseSBmdW5jdGlvbmFsIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lvX2ZyZW1vdmV4YXR0cl9wcmVwJiMzNDssCiAgICAmIzM0O2lvX2ZyZW1vdmV4YXR0ciYjMzQ7LAogICAgJiMzNDtpb19mbGlzdHhhdHRyX3ByZXAmIzM0OywKICAgICYjMzQ7aW9fZmxpc3R4YXR0ciYjMzQ7LAogICAgJiMzNDtmaWxlX2xpc3R4YXR0ciYjMzQ7LAogICAgJiMzNDtmaWxlX3JlbW92ZXhhdHRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgSU9SSU5HX09QX0ZSRU1PVkVYQVRUUiBhbmQgSU9SSU5HX09QX0ZMSVNUWEFUVFIgdG8gaW9fdXJpbmcuIEl0IG1vZGlmaWVzIGNvcmUgaW9fdXJpbmcgYW5kIHhhdHRyIGxvZ2ljLCBtYWtpbmcgaXQgaGlnaGx5IGZ1bmN0aW9uYWwgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzowOS44Mzc0MDA5NTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ0NjM2NTcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX2ZyZW1vdmV4YXR0cl9wcmVwXCIsXG4gICAgXCJpb19mcmVtb3ZleGF0dHJcIixcbiAgICBcImlvX2ZsaXN0eGF0dHJfcHJlcFwiLFxuICAgIFwiaW9fZmxpc3R4YXR0clwiLFxuICAgIFwiZmlsZV9saXN0eGF0dHJcIixcbiAgICBcImZpbGVfcmVtb3ZleGF0dHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIElPUklOR19PUF9GUkVNT1ZFWEFUVFIgYW5kIElPUklOR19PUF9GTElTVFhBVFRSIHRvIGlvX3VyaW5nLiBJdCBtb2RpZmllcyBjb3JlIGlvX3VyaW5nIGFuZCB4YXR0ciBsb2dpYywgbWFraW5nIGl0IGhpZ2hseSBmdW5jdGlvbmFsIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzowOS44Mzc0MDYwMzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4OTQ0NTM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDk2MmRmMmNlNGVkZGY2MzQ3NTM1NzJmZWVmZWMzOWM4N2M2NWVmNThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDY6MDc6MDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvaW50ZXJuYWwuaCBiL2ZzL2ludGVybmFsLmhcXG5pbmRleCAzNTVkOTNmOTIyMDg2MS4uZWU4NmIyNGRiNzlhZDIgMTAwNjQ0XFxuLS0tIGEvZnMvaW50ZXJuYWwuaFxcbisrKyBiL2ZzL2ludGVybmFsLmhcXG5AQCAtMjk3LDYgKzI5Nyw4IEBAIGludCBmaWxlbmFtZV9zZXR4YXR0cihpbnQgZGZkLCBzdHJ1Y3QgZmlsZW5hbWUgKmZpbGVuYW1lLFxcbiBcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbG9va3VwX2ZsYWdzLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KTtcXG4gaW50IHNldHhhdHRyX2NvcHkoY29uc3QgY2hhciBfX3VzZXIgKm5hbWUsIHN0cnVjdCBrZXJuZWxfeGF0dHJfY3R4ICpjdHgpO1xcbiBpbnQgaW1wb3J0X3hhdHRyX25hbWUoc3RydWN0IHhhdHRyX25hbWUgKmtuYW1lLCBjb25zdCBjaGFyIF9fdXNlciAqbmFtZSk7XFxuK3NzaXplX3QgZmlsZV9saXN0eGF0dHIoc3RydWN0IGZpbGUgKmYsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSk7XFxuK2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpO1xcbiBcXG4gaW50IG1heV93cml0ZV94YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICppbm9kZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9mcy94YXR0ci5jIGIvZnMveGF0dHIuY1xcbmluZGV4IGQ1ODk3OTExNTIwMDc1Li4zMWI4YTVlZWVjMWU4YyAxMDA2NDRcXG4tLS0gYS9mcy94YXR0ci5jXFxuKysrIGIvZnMveGF0dHIuY1xcbkBAIC05NTMsNyArOTUzLDYgQEAgbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKmQsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSlcXG4gXFx0cmV0dXJuIGVycm9yO1xcbiB9XFxuIFxcbi1zdGF0aWNcXG4gc3NpemVfdCBmaWxlX2xpc3R4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgY2hhciBfX3VzZXIgKmxpc3QsIHNpemVfdCBzaXplKVxcbiB7XFxuIFxcdGF1ZGl0X2ZpbGUoZik7XFxuQEAgLTEwMzYsNyArMTAzNSw3IEBAIHJlbW92ZXhhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgZGVudHJ5ICpkLCBjb25zdCBjaGFyICpuYW1lKVxcbiBcXHRyZXR1cm4gdmZzX3JlbW92ZXhhdHRyKGlkbWFwLCBkLCBuYW1lKTtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXFxuK2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXFxuIHtcXG4gXFx0aW50IGVycm9yID0gbW50X3dhbnRfd3JpdGVfZmlsZShmKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcXG5pbmRleCA5MDlmYjdhZWE2MzhlYi4uODA1ZjFlMzFmNDkyNTEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxcbkBAIC0zMTgsNiArMzE4LDggQEAgZW51bSBpb191cmluZ19vcCB7XFxuIFxcdElPUklOR19PUF9QSVBFLFxcbiBcXHRJT1JJTkdfT1BfTk9QMTI4LFxcbiBcXHRJT1JJTkdfT1BfVVJJTkdfQ01EMTI4LFxcbitcXHRJT1JJTkdfT1BfRlJFTU9WRVhBVFRSLFxcbitcXHRJT1JJTkdfT1BfRkxJU1RYQVRUUixcXG4gXFxuIFxcdC8qIHRoaXMgZ29lcyBsYXN0LCBvYnZpb3VzbHkgKi9cXG4gXFx0SU9SSU5HX09QX0xBU1QsXFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL29wZGVmLmMgYi9pb191cmluZy9vcGRlZi5jXFxuaW5kZXggNGU1OGViMTM0NGVhYTMuLjI1ZDkyMjlkOGZjMDAyIDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL29wZGVmLmNcXG4rKysgYi9pb191cmluZy9vcGRlZi5jXFxuQEAgLTU5MSw2ICs1OTEsMTYgQEAgY29uc3Qgc3RydWN0IGlvX2lzc3VlX2RlZiBpb19pc3N1ZV9kZWZzW10gPSB7XFxuIFxcdFxcdC5wcmVwXFx0XFx0XFx0PSBpb191cmluZ19jbWRfcHJlcCxcXG4gXFx0XFx0Lmlzc3VlXFx0XFx0XFx0PSBpb191cmluZ19jbWQsXFxuIFxcdH0sXFxuK1xcdFtJT1JJTkdfT1BfRlJFTU9WRVhBVFRSXSA9IHtcXG4rXFx0XFx0Lm5lZWRzX2ZpbGVcXHRcXHQ9IDEsXFxuK1xcdFxcdC5wcmVwXFx0XFx0XFx0PSBpb19mcmVtb3ZleGF0dHJfcHJlcCxcXG4rXFx0XFx0Lmlzc3VlXFx0XFx0XFx0PSBpb19mcmVtb3ZleGF0dHIsXFxuK1xcdH0sXFxuK1xcdFtJT1JJTkdfT1BfRkxJU1RYQVRUUl0gPSB7XFxuK1xcdFxcdC5uZWVkc19maWxlXFx0XFx0PSAxLFxcbitcXHRcXHQucHJlcFxcdFxcdFxcdD0gaW9fZmxpc3R4YXR0cl9wcmVwLFxcbitcXHRcXHQuaXNzdWVcXHRcXHRcXHQ9IGlvX2ZsaXN0eGF0dHIsXFxuK1xcdH0sXFxuIH07XFxuIFxcbiBjb25zdCBzdHJ1Y3QgaW9fY29sZF9kZWYgaW9fY29sZF9kZWZzW10gPSB7XFxuQEAgLTg0OSw2ICs4NTksMTQgQEAgY29uc3Qgc3RydWN0IGlvX2NvbGRfZGVmIGlvX2NvbGRfZGVmc1tdID0ge1xcbiBcXHRcXHQuc3FlX2NvcHlcXHRcXHQ9IGlvX3VyaW5nX2NtZF9zcWVfY29weSxcXG4gXFx0XFx0LmNsZWFudXBcXHRcXHQ9IGlvX3VyaW5nX2NtZF9jbGVhbnVwLFxcbiBcXHR9LFxcbitcXHRbSU9SSU5HX09QX0ZSRU1PVkVYQVRUUl0gPSB7XFxuK1xcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiRlJFTU9WRVhBVFRSXFxcIixcXG4rXFx0XFx0LmNsZWFudXBcXHRcXHQ9IGlvX3hhdHRyX2NsZWFudXAsXFxuK1xcdH0sXFxuK1xcdFtJT1JJTkdfT1BfRkxJU1RYQVRUUl0gPSB7XFxuK1xcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiRkxJU1RYQVRUUlxcXCIsXFxuK1xcdFxcdC5jbGVhbnVwXFx0XFx0PSBpb194YXR0cl9jbGVhbnVwLFxcbitcXHR9LFxcbiB9O1xcbiBcXG4gY29uc3QgY2hhciAqaW9fdXJpbmdfZ2V0X29wY29kZSh1OCBvcGNvZGUpXFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmMgYi9pb191cmluZy94YXR0ci5jXFxuaW5kZXggNTMwM2RmM2YyNDdmNGIuLjliNDEwZjkxZWY0Mzc4IDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL3hhdHRyLmNcXG4rKysgYi9pb191cmluZy94YXR0ci5jXFxuQEAgLTE5NSwzICsxOTUsNzcgQEAgaW50IGlvX3NldHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXFxuIFxcdGlvX3hhdHRyX2ZpbmlzaChyZXEsIHJldCk7XFxuIFxcdHJldHVybiBJT1VfQ09NUExFVEU7XFxuIH1cXG4rXFxuK2ludCBpb19mcmVtb3ZleGF0dHJfcHJlcChzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgY29uc3Qgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKVxcbit7XFxuK1xcdHN0cnVjdCBpb194YXR0ciAqaXggPSBpb19raW9jYl90b19jbWQocmVxLCBzdHJ1Y3QgaW9feGF0dHIpO1xcbitcXHRjb25zdCBjaGFyIF9fdXNlciAqbmFtZTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdElOSVRfREVMQVlFRF9GSUxFTkFNRShcXHUwMDI2aXgtXFx1MDAzZWZpbGVuYW1lKTtcXG4rXFx0bmFtZSA9IHU2NF90b191c2VyX3B0cihSRUFEX09OQ0Uoc3FlLVxcdTAwM2VhZGRyKSk7XFxuK1xcbitcXHRpZiAoUkVBRF9PTkNFKHNxZS1cXHUwMDNlYWRkcjIpIHx8IFJFQURfT05DRShzcWUtXFx1MDAzZWxlbikgfHwgUkVBRF9PTkNFKHNxZS1cXHUwMDNleGF0dHJfZmxhZ3MpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGl4LVxcdTAwM2VjdHgua25hbWUgPSBrbWFsbG9jX29iaigqaXgtXFx1MDAzZWN0eC5rbmFtZSk7XFxuK1xcdGlmICghaXgtXFx1MDAzZWN0eC5rbmFtZSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRyZXQgPSBpbXBvcnRfeGF0dHJfbmFtZShpeC1cXHUwMDNlY3R4LmtuYW1lLCBuYW1lKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRrZnJlZShpeC1cXHUwMDNlY3R4LmtuYW1lKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmVxLVxcdTAwM2VmbGFncyB8PSBSRVFfRl9ORUVEX0NMRUFOVVA7XFxuK1xcdHJlcS1cXHUwMDNlZmxhZ3MgfD0gUkVRX0ZfRk9SQ0VfQVNZTkM7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitpbnQgaW9fZnJlbW92ZXhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXFxuK3tcXG4rXFx0c3RydWN0IGlvX3hhdHRyICppeCA9IGlvX2tpb2NiX3RvX2NtZChyZXEsIHN0cnVjdCBpb194YXR0cik7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRXQVJOX09OX09OQ0UoaXNzdWVfZmxhZ3MgXFx1MDAyNiBJT19VUklOR19GX05PTkJMT0NLKTtcXG4rXFxuK1xcdHJldCA9IGZpbGVfcmVtb3ZleGF0dHIocmVxLVxcdTAwM2VmaWxlLCBpeC1cXHUwMDNlY3R4LmtuYW1lKTtcXG4rXFx0aW9feGF0dHJfZmluaXNoKHJlcSwgcmV0KTtcXG4rXFx0cmV0dXJuIElPVV9DT01QTEVURTtcXG4rfVxcbitcXG4raW50IGlvX2ZsaXN0eGF0dHJfcHJlcChzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgY29uc3Qgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKVxcbit7XFxuK1xcdHN0cnVjdCBpb194YXR0ciAqaXggPSBpb19raW9jYl90b19jbWQocmVxLCBzdHJ1Y3QgaW9feGF0dHIpO1xcbitcXG4rXFx0SU5JVF9ERUxBWUVEX0ZJTEVOQU1FKFxcdTAwMjZpeC1cXHUwMDNlZmlsZW5hbWUpO1xcbitcXHRpeC1cXHUwMDNlY3R4LmtuYW1lID0gTlVMTDtcXG4rXFx0aXgtXFx1MDAzZWN0eC5rdmFsdWUgPSBOVUxMO1xcbitcXG4rXFx0aWYgKFJFQURfT05DRShzcWUtXFx1MDAzZWFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGl4LVxcdTAwM2VjdHgudmFsdWUgPSB1NjRfdG9fdXNlcl9wdHIoUkVBRF9PTkNFKHNxZS1cXHUwMDNlYWRkcjIpKTtcXG4rXFx0aXgtXFx1MDAzZWN0eC5zaXplID0gUkVBRF9PTkNFKHNxZS1cXHUwMDNlbGVuKTtcXG4rXFx0aXgtXFx1MDAzZWN0eC5mbGFncyA9IFJFQURfT05DRShzcWUtXFx1MDAzZXhhdHRyX2ZsYWdzKTtcXG4rXFxuK1xcdGlmIChpeC1cXHUwMDNlY3R4LmZsYWdzKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJlcS1cXHUwMDNlZmxhZ3MgfD0gUkVRX0ZfTkVFRF9DTEVBTlVQO1xcbitcXHRyZXEtXFx1MDAzZWZsYWdzIHw9IFJFUV9GX0ZPUkNFX0FTWU5DO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4raW50IGlvX2ZsaXN0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4re1xcbitcXHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdFdBUk5fT05fT05DRShpc3N1ZV9mbGFncyBcXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spO1xcbitcXG4rXFx0cmV0ID0gZmlsZV9saXN0eGF0dHIocmVxLVxcdTAwM2VmaWxlLCBpeC1cXHUwMDNlY3R4LnZhbHVlLCBpeC1cXHUwMDNlY3R4LnNpemUpO1xcbitcXHRpb194YXR0cl9maW5pc2gocmVxLCByZXQpO1xcbitcXHRyZXR1cm4gSU9VX0NPTVBMRVRFO1xcbit9XFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmggYi9pb191cmluZy94YXR0ci5oXFxuaW5kZXggOWI0NTlkMmFlOTBjNWEuLmQyNDg3YjQ5YTVkMjFhIDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL3hhdHRyLmhcXG4rKysgYi9pb191cmluZy94YXR0ci5oXFxuQEAgLTEzLDMgKzEzLDkgQEAgaW50IGlvX2ZnZXR4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcXG4gXFxuIGludCBpb19nZXR4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpO1xcbiBpbnQgaW9fZ2V0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XFxuK1xcbitpbnQgaW9fZnJlbW92ZXhhdHRyX3ByZXAoc3RydWN0IGlvX2tpb2NiICpyZXEsIGNvbnN0IHN0cnVjdCBpb191cmluZ19zcWUgKnNxZSk7XFxuK2ludCBpb19mcmVtb3ZleGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XFxuK1xcbitpbnQgaW9fZmxpc3R4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpO1xcbitpbnQgaW9fZmxpc3R4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxcbmluZGV4IGYxYzE2ZjgxNzc0MjAwLi43OWJmN2MyMjAwOWRiYiAxMDA2NDRcXG4tLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxcbisrKyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oXFxuQEAgLTI1Myw2ICsyNTMsMTkgQEAgZW51bSBpb191cmluZ19vcCB7XFxuIFxcdElPUklOR19PUF9GVVRFWF9XQUlULFxcbiBcXHRJT1JJTkdfT1BfRlVURVhfV0FLRSxcXG4gXFx0SU9SSU5HX09QX0ZVVEVYX1dBSVRWLFxcbitcXHRJT1JJTkdfT1BfRklYRURfRkRfSU5TVEFMTCxcXG4rXFx0SU9SSU5HX09QX0ZUUlVOQ0FURSxcXG4rXFx0SU9SSU5HX09QX0JJTkQsXFxuK1xcdElPUklOR19PUF9MSVNURU4sXFxuK1xcdElPUklOR19PUF9SRUNWX1pDLFxcbitcXHRJT1JJTkdfT1BfRVBPTExfV0FJVCxcXG4rXFx0SU9SSU5HX09QX1JFQURWX0ZJWEVELFxcbitcXHRJT1JJTkdfT1BfV1JJVEVWX0ZJWEVELFxcbitcXHRJT1JJTkdfT1BfUElQRSxcXG4rXFx0SU9SSU5HX09QX05PUDEyOCxcXG4rXFx0SU9SSU5HX09QX1VSSU5HX0NNRDEyOCxcXG4rXFx0SU9SSU5HX09QX0ZSRU1PVkVYQVRUUixcXG4rXFx0SU9SSU5HX09QX0ZMSVNUWEFUVFIsXFxuIFxcbiBcXHQvKiB0aGlzIGdvZXMgbGFzdCwgb2J2aW91c2x5ICovXFxuIFxcdElPUklOR19PUF9MQVNULFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzoxMC41MjczNzgxMjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNjc1NjM2NzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX2ZyZW1vdmV4YXR0cl9wcmVwXCIsXG4gICAgXCJpb19mcmVtb3ZleGF0dHJcIixcbiAgICBcImlvX2ZsaXN0eGF0dHJfcHJlcFwiLFxuICAgIFwiaW9fZmxpc3R4YXR0clwiLFxuICAgIFwiZmlsZV9saXN0eGF0dHJcIixcbiAgICBcImZpbGVfcmVtb3ZleGF0dHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIElPUklOR19PUF9GUkVNT1ZFWEFUVFIgYW5kIElPUklOR19PUF9GTElTVFhBVFRSIHRvIGlvX3VyaW5nLiBJdCBtb2RpZmllcyBjb3JlIGlvX3VyaW5nIGFuZCB4YXR0ciBsb2dpYywgbWFraW5nIGl0IGhpZ2hseSBmdW5jdGlvbmFsIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDk2MmRmMmNlNGVkZGY2MzQ3NTM1NzJmZWVmZWMzOWM4N2M2NWVmNThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwNjowNzowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2ludGVybmFsLmggYi9mcy9pbnRlcm5hbC5oXG5pbmRleCAzNTVkOTNmOTIyMDg2MS4uZWU4NmIyNGRiNzlhZDIgMTAwNjQ0XG4tLS0gYS9mcy9pbnRlcm5hbC5oXG4rKysgYi9mcy9pbnRlcm5hbC5oXG5AQCAtMjk3LDYgKzI5Nyw4IEBAIGludCBmaWxlbmFtZV9zZXR4YXR0cihpbnQgZGZkLCBzdHJ1Y3QgZmlsZW5hbWUgKmZpbGVuYW1lLFxuIFx0XHQgICAgICB1bnNpZ25lZCBpbnQgbG9va3VwX2ZsYWdzLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KTtcbiBpbnQgc2V0eGF0dHJfY29weShjb25zdCBjaGFyIF9fdXNlciAqbmFtZSwgc3RydWN0IGtlcm5lbF94YXR0cl9jdHggKmN0eCk7XG4gaW50IGltcG9ydF94YXR0cl9uYW1lKHN0cnVjdCB4YXR0cl9uYW1lICprbmFtZSwgY29uc3QgY2hhciBfX3VzZXIgKm5hbWUpO1xuK3NzaXplX3QgZmlsZV9saXN0eGF0dHIoc3RydWN0IGZpbGUgKmYsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSk7XG4raW50IGZpbGVfcmVtb3ZleGF0dHIoc3RydWN0IGZpbGUgKmYsIHN0cnVjdCB4YXR0cl9uYW1lICprbmFtZSk7XG4gXG4gaW50IG1heV93cml0ZV94YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICppbm9kZSk7XG4gXG5kaWZmIC0tZ2l0IGEvZnMveGF0dHIuYyBiL2ZzL3hhdHRyLmNcbmluZGV4IGQ1ODk3OTExNTIwMDc1Li4zMWI4YTVlZWVjMWU4YyAxMDA2NDRcbi0tLSBhL2ZzL3hhdHRyLmNcbisrKyBiL2ZzL3hhdHRyLmNcbkBAIC05NTMsNyArOTUzLDYgQEAgbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKmQsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSlcbiBcdHJldHVybiBlcnJvcjtcbiB9XG4gXG4tc3RhdGljXG4gc3NpemVfdCBmaWxlX2xpc3R4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgY2hhciBfX3VzZXIgKmxpc3QsIHNpemVfdCBzaXplKVxuIHtcbiBcdGF1ZGl0X2ZpbGUoZik7XG5AQCAtMTAzNiw3ICsxMDM1LDcgQEAgcmVtb3ZleGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmQsIGNvbnN0IGNoYXIgKm5hbWUpXG4gXHRyZXR1cm4gdmZzX3JlbW92ZXhhdHRyKGlkbWFwLCBkLCBuYW1lKTtcbiB9XG4gXG4tc3RhdGljIGludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXG4raW50IGZpbGVfcmVtb3ZleGF0dHIoc3RydWN0IGZpbGUgKmYsIHN0cnVjdCB4YXR0cl9uYW1lICprbmFtZSlcbiB7XG4gXHRpbnQgZXJyb3IgPSBtbnRfd2FudF93cml0ZV9maWxlKGYpO1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcbmluZGV4IDkwOWZiN2FlYTYzOGViLi44MDVmMWUzMWY0OTI1MSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxuQEAgLTMxOCw2ICszMTgsOCBAQCBlbnVtIGlvX3VyaW5nX29wIHtcbiBcdElPUklOR19PUF9QSVBFLFxuIFx0SU9SSU5HX09QX05PUDEyOCxcbiBcdElPUklOR19PUF9VUklOR19DTUQxMjgsXG4rXHRJT1JJTkdfT1BfRlJFTU9WRVhBVFRSLFxuK1x0SU9SSU5HX09QX0ZMSVNUWEFUVFIsXG4gXG4gXHQvKiB0aGlzIGdvZXMgbGFzdCwgb2J2aW91c2x5ICovXG4gXHRJT1JJTkdfT1BfTEFTVCxcbmRpZmYgLS1naXQgYS9pb191cmluZy9vcGRlZi5jIGIvaW9fdXJpbmcvb3BkZWYuY1xuaW5kZXggNGU1OGViMTM0NGVhYTMuLjI1ZDkyMjlkOGZjMDAyIDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcvb3BkZWYuY1xuKysrIGIvaW9fdXJpbmcvb3BkZWYuY1xuQEAgLTU5MSw2ICs1OTEsMTYgQEAgY29uc3Qgc3RydWN0IGlvX2lzc3VlX2RlZiBpb19pc3N1ZV9kZWZzW10gPSB7XG4gXHRcdC5wcmVwXHRcdFx0PSBpb191cmluZ19jbWRfcHJlcCxcbiBcdFx0Lmlzc3VlXHRcdFx0PSBpb191cmluZ19jbWQsXG4gXHR9LFxuK1x0W0lPUklOR19PUF9GUkVNT1ZFWEFUVFJdID0ge1xuK1x0XHQubmVlZHNfZmlsZVx0XHQ9IDEsXG4rXHRcdC5wcmVwXHRcdFx0PSBpb19mcmVtb3ZleGF0dHJfcHJlcCxcbitcdFx0Lmlzc3VlXHRcdFx0PSBpb19mcmVtb3ZleGF0dHIsXG4rXHR9LFxuK1x0W0lPUklOR19PUF9GTElTVFhBVFRSXSA9IHtcbitcdFx0Lm5lZWRzX2ZpbGVcdFx0PSAxLFxuK1x0XHQucHJlcFx0XHRcdD0gaW9fZmxpc3R4YXR0cl9wcmVwLFxuK1x0XHQuaXNzdWVcdFx0XHQ9IGlvX2ZsaXN0eGF0dHIsXG4rXHR9LFxuIH07XG4gXG4gY29uc3Qgc3RydWN0IGlvX2NvbGRfZGVmIGlvX2NvbGRfZGVmc1tdID0ge1xuQEAgLTg0OSw2ICs4NTksMTQgQEAgY29uc3Qgc3RydWN0IGlvX2NvbGRfZGVmIGlvX2NvbGRfZGVmc1tdID0ge1xuIFx0XHQuc3FlX2NvcHlcdFx0PSBpb191cmluZ19jbWRfc3FlX2NvcHksXG4gXHRcdC5jbGVhbnVwXHRcdD0gaW9fdXJpbmdfY21kX2NsZWFudXAsXG4gXHR9LFxuK1x0W0lPUklOR19PUF9GUkVNT1ZFWEFUVFJdID0ge1xuK1x0XHQubmFtZVx0XHRcdD0gXCJGUkVNT1ZFWEFUVFJcIixcbitcdFx0LmNsZWFudXBcdFx0PSBpb194YXR0cl9jbGVhbnVwLFxuK1x0fSxcbitcdFtJT1JJTkdfT1BfRkxJU1RYQVRUUl0gPSB7XG4rXHRcdC5uYW1lXHRcdFx0PSBcIkZMSVNUWEFUVFJcIixcbitcdFx0LmNsZWFudXBcdFx0PSBpb194YXR0cl9jbGVhbnVwLFxuK1x0fSxcbiB9O1xuIFxuIGNvbnN0IGNoYXIgKmlvX3VyaW5nX2dldF9vcGNvZGUodTggb3Bjb2RlKVxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmMgYi9pb191cmluZy94YXR0ci5jXG5pbmRleCA1MzAzZGYzZjI0N2Y0Yi4uOWI0MTBmOTFlZjQzNzggMTAwNjQ0XG4tLS0gYS9pb191cmluZy94YXR0ci5jXG4rKysgYi9pb191cmluZy94YXR0ci5jXG5AQCAtMTk1LDMgKzE5NSw3NyBAQCBpbnQgaW9fc2V0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbiBcdGlvX3hhdHRyX2ZpbmlzaChyZXEsIHJldCk7XG4gXHRyZXR1cm4gSU9VX0NPTVBMRVRFO1xuIH1cbitcbitpbnQgaW9fZnJlbW92ZXhhdHRyX3ByZXAoc3RydWN0IGlvX2tpb2NiICpyZXEsIGNvbnN0IHN0cnVjdCBpb191cmluZ19zcWUgKnNxZSlcbit7XG4rXHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcbitcdGNvbnN0IGNoYXIgX191c2VyICpuYW1lO1xuK1x0aW50IHJldDtcbitcbitcdElOSVRfREVMQVlFRF9GSUxFTkFNRShcdTAwMjZpeC1cdTAwM2VmaWxlbmFtZSk7XG4rXHRuYW1lID0gdTY0X3RvX3VzZXJfcHRyKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcikpO1xuK1xuK1x0aWYgKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcjIpIHx8IFJFQURfT05DRShzcWUtXHUwMDNlbGVuKSB8fCBSRUFEX09OQ0Uoc3FlLVx1MDAzZXhhdHRyX2ZsYWdzKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRpeC1cdTAwM2VjdHgua25hbWUgPSBrbWFsbG9jX29iaigqaXgtXHUwMDNlY3R4LmtuYW1lKTtcbitcdGlmICghaXgtXHUwMDNlY3R4LmtuYW1lKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJldCA9IGltcG9ydF94YXR0cl9uYW1lKGl4LVx1MDAzZWN0eC5rbmFtZSwgbmFtZSk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGtmcmVlKGl4LVx1MDAzZWN0eC5rbmFtZSk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXEtXHUwMDNlZmxhZ3MgfD0gUkVRX0ZfTkVFRF9DTEVBTlVQO1xuK1x0cmVxLVx1MDAzZWZsYWdzIHw9IFJFUV9GX0ZPUkNFX0FTWU5DO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK2ludCBpb19mcmVtb3ZleGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbit7XG4rXHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcbitcdGludCByZXQ7XG4rXG4rXHRXQVJOX09OX09OQ0UoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spO1xuK1xuK1x0cmV0ID0gZmlsZV9yZW1vdmV4YXR0cihyZXEtXHUwMDNlZmlsZSwgaXgtXHUwMDNlY3R4LmtuYW1lKTtcbitcdGlvX3hhdHRyX2ZpbmlzaChyZXEsIHJldCk7XG4rXHRyZXR1cm4gSU9VX0NPTVBMRVRFO1xuK31cbitcbitpbnQgaW9fZmxpc3R4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpXG4re1xuK1x0c3RydWN0IGlvX3hhdHRyICppeCA9IGlvX2tpb2NiX3RvX2NtZChyZXEsIHN0cnVjdCBpb194YXR0cik7XG4rXG4rXHRJTklUX0RFTEFZRURfRklMRU5BTUUoXHUwMDI2aXgtXHUwMDNlZmlsZW5hbWUpO1xuK1x0aXgtXHUwMDNlY3R4LmtuYW1lID0gTlVMTDtcbitcdGl4LVx1MDAzZWN0eC5rdmFsdWUgPSBOVUxMO1xuK1xuK1x0aWYgKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcikpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0aXgtXHUwMDNlY3R4LnZhbHVlID0gdTY0X3RvX3VzZXJfcHRyKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcjIpKTtcbitcdGl4LVx1MDAzZWN0eC5zaXplID0gUkVBRF9PTkNFKHNxZS1cdTAwM2VsZW4pO1xuK1x0aXgtXHUwMDNlY3R4LmZsYWdzID0gUkVBRF9PTkNFKHNxZS1cdTAwM2V4YXR0cl9mbGFncyk7XG4rXG4rXHRpZiAoaXgtXHUwMDNlY3R4LmZsYWdzKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJlcS1cdTAwM2VmbGFncyB8PSBSRVFfRl9ORUVEX0NMRUFOVVA7XG4rXHRyZXEtXHUwMDNlZmxhZ3MgfD0gUkVRX0ZfRk9SQ0VfQVNZTkM7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4raW50IGlvX2ZsaXN0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbit7XG4rXHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcbitcdGludCByZXQ7XG4rXG4rXHRXQVJOX09OX09OQ0UoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spO1xuK1xuK1x0cmV0ID0gZmlsZV9saXN0eGF0dHIocmVxLVx1MDAzZWZpbGUsIGl4LVx1MDAzZWN0eC52YWx1ZSwgaXgtXHUwMDNlY3R4LnNpemUpO1xuK1x0aW9feGF0dHJfZmluaXNoKHJlcSwgcmV0KTtcbitcdHJldHVybiBJT1VfQ09NUExFVEU7XG4rfVxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmggYi9pb191cmluZy94YXR0ci5oXG5pbmRleCA5YjQ1OWQyYWU5MGM1YS4uZDI0ODdiNDlhNWQyMWEgMTAwNjQ0XG4tLS0gYS9pb191cmluZy94YXR0ci5oXG4rKysgYi9pb191cmluZy94YXR0ci5oXG5AQCAtMTMsMyArMTMsOSBAQCBpbnQgaW9fZmdldHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuIFxuIGludCBpb19nZXR4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpO1xuIGludCBpb19nZXR4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcbitcbitpbnQgaW9fZnJlbW92ZXhhdHRyX3ByZXAoc3RydWN0IGlvX2tpb2NiICpyZXEsIGNvbnN0IHN0cnVjdCBpb191cmluZ19zcWUgKnNxZSk7XG4raW50IGlvX2ZyZW1vdmV4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcbitcbitpbnQgaW9fZmxpc3R4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpO1xuK2ludCBpb19mbGlzdHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oIGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcbmluZGV4IGYxYzE2ZjgxNzc0MjAwLi43OWJmN2MyMjAwOWRiYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oXG4rKysgYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxuQEAgLTI1Myw2ICsyNTMsMTkgQEAgZW51bSBpb191cmluZ19vcCB7XG4gXHRJT1JJTkdfT1BfRlVURVhfV0FJVCxcbiBcdElPUklOR19PUF9GVVRFWF9XQUtFLFxuIFx0SU9SSU5HX09QX0ZVVEVYX1dBSVRWLFxuK1x0SU9SSU5HX09QX0ZJWEVEX0ZEX0lOU1RBTEwsXG4rXHRJT1JJTkdfT1BfRlRSVU5DQVRFLFxuK1x0SU9SSU5HX09QX0JJTkQsXG4rXHRJT1JJTkdfT1BfTElTVEVOLFxuK1x0SU9SSU5HX09QX1JFQ1ZfWkMsXG4rXHRJT1JJTkdfT1BfRVBPTExfV0FJVCxcbitcdElPUklOR19PUF9SRUFEVl9GSVhFRCxcbitcdElPUklOR19PUF9XUklURVZfRklYRUQsXG4rXHRJT1JJTkdfT1BfUElQRSxcbitcdElPUklOR19PUF9OT1AxMjgsXG4rXHRJT1JJTkdfT1BfVVJJTkdfQ01EMTI4LFxuK1x0SU9SSU5HX09QX0ZSRU1PVkVYQVRUUixcbitcdElPUklOR19PUF9GTElTVFhBVFRSLFxuIFxuIFx0LyogdGhpcyBnb2VzIGxhc3QsIG9idmlvdXNseSAqL1xuIFx0SU9SSU5HX09QX0xBU1QsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzoxMC41MjczNzkyOThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODQ0MzE4NTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGlvX3VyaW5nIFhhdHRyIFBhdGNoKipcblxuT2theSwgc28gd2UgaGF2ZSBhIG5ldyBwYXRjaCBsYW5kZWQgZm9yIGBpb191cmluZ2AgdGhhdOKAmXMgaW50cm9kdWNpbmcgc3VwcG9ydCBmb3IgYElPUklOR19PUF9GUkVNT1ZFWEFUVFJgIGFuZCBgSU9SSU5HX09QX0ZMSVNUWEFUVFJgLiBFeGNlbGxlbnQhIFRoaXMgbG9va3MgbGlrZSBpdCB0b3VjaGVzIHNvbWUga2V5IGFyZWFzLCB3aGljaCBpcyB3aGF0IEknZCBleHBlY3Q6IGBmcy9pbnRlcm5hbC5oYCwgYGZzL3hhdHRyLmNgLCB0aGUgVUFQSSBoZWFkZXJzIChgaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhgIGFuZCB0aGUgdG9vbCdzIGluY2x1ZGUpLCBhbmQgdGhlIHJlbGV2YW50IGlvX3VyaW5nIGltcGxlbWVudGF0aW9uIGZpbGVzIChgaW9fdXJpbmcvb3BkZWYuY2AsIGBpb191cmluZy94YXR0ci5jYCwgYGlvX3VyaW5nL3hhdHRyLmhgKS4gVGhpcyBpcyBhIGdvb2Qgc2lnbjsgd2UncmUgcHJvcGVybHkgZXhwYW5kaW5nIHRoZSBpbnRlcmZhY2VzIGhlcmUuXG5cbkVzc2VudGlhbGx5LCB0aGVzZSBuZXcgb3Bjb2RlcyAoYElPUklOR19PUF9GUkVNT1ZFWEFUVFJgLCBgSU9SSU5HX09QX0ZMSVNUWEFUVFJgKSBhcmUgYmVpbmcgbWFwcGVkIGRpcmVjdGx5IHRvIGBpb19mcmVtb3ZleGF0dHJgIGFuZCBgaW9fZmxpc3R4YXR0cmAgd2l0aGluIGBpb191cmluZy94YXR0ci5jYC4gTG9va3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYW5kIGZyb20gdGhlIGRlc2NyaXB0aW9uLCBpdCBzZWVtcyBmdW5jdGlvbmFsbHkgY29tcGxldGUuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBzb21lIHNlcmlvdXMgZnV6emluZyBhbmQgdGVzdGluZy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gd2hhdCB0aGUga2V5IHN5bWJvbHMgYXJlLiBJJ20gZ29pbmcgdG8gd2FudCB0byBmb2N1cyBvbiB0aGVzZTpcbiogICBgaW9fZnJlbW92ZXhhdHRyX3ByZXBgXG4qICAgYGlvX2ZyZW1vdmV4YXR0cmBcbiogICBgaW9fZmxpc3R4YXR0cl9wcmVwYFxuKiAgIGBpb19mbGlzdHhhdHRyYFxuXG5JIG5lZWQgdG8gcXVpY2tseSBjaGVjayBgaW9fdXJpbmcveGF0dHIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGUgbWFpbiBvbmUgSSdtIGV4cGVjdGluZyBpcyBgQ09ORklHX0lPX1VSSU5HYCwgYnV0IHRoZXJlIG1heSBiZSBtb3JlIHNwZWNpZmljIHhhdHRyLXJlbGF0ZWQgZmxhZ3MgdGhhdCBpbXBhY3QgdGhlIGJlaGF2aW9yLiBMZXQncyBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEl0IGlzIGEgZ29vZCB3YXkgdG8gc2VlIGlmIHdlIG1pc3NlZCBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU5MCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA2OjA3OjE4LjM3MTcwMTM0MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzA0NTY2NTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR18uKlhBVFRSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzoxOC44NDIxNjU2NTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTM3ODEyMTQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSHVudCBmb3IgaW9fdXJpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHdoZXJlIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgaW9fdXJpbmdgIGFyZSBkZWZpbmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiBgaW9fdXJpbmdgLCBpcyB0byBjaGVjayB0aGUgYGlvX3VyaW5nL0tjb25maWdgIGZpbGUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlLCBnaXZlbiBpdHMgdmVyeSBuYW1lLiBIb3dldmVyLCBpdCdzIGFsc28gYSBwb3NzaWJpbGl0eSB0aGF0IHNvbWUgY29yZSBpbml0aWFsaXphdGlvbi1yZWxhdGVkIHNldHRpbmdzIG1pZ2h0IGJlIGluIHRoZSBtb3JlIGdlbmVyYWwgYGluaXQvS2NvbmZpZ2AgZmlsZSwgc28gSSBuZWVkIHRvIGNvbnNpZGVyIGJvdGguIEknbGwgc3RhcnQgd2l0aCBgaW9fdXJpbmcvS2NvbmZpZ2AgYW5kIGlmIGl0IGlzIG5vdCBwcmVzZW50IHRoZXJlLCBJJ2xsIHRoZW4gbW92ZSBvbnRvIGBpbml0L0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzY0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDY6MDc6MzguMjIwMjg5Nzg5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTQ2ODQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfSU9fVVJJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvTWFrZWZpbGU9Nz1lbmRpZlxcbmlvX3VyaW5nL01ha2VmaWxlLTgtXFxuaW9fdXJpbmcvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfSU9fVVJJTkcpXFx0XFx0Kz0gaW9fdXJpbmcubyBvcGRlZi5vIGtidWYubyByc3JjLm8gbm90aWYubyBcXFxcXFxuaW9fdXJpbmcvTWFrZWZpbGUtMTAtXFx0XFx0XFx0XFx0XFx0dGN0eC5vIGZpbGV0YWJsZS5vIHJ3Lm8gcG9sbC5vIFxcXFxcXG4tLVxcbmlvX3VyaW5nL01ha2VmaWxlLTE4LVxcbmlvX3VyaW5nL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19JT19VUklOR19aQ1JYKVxcdCs9IHpjcngub1xcbmlvX3VyaW5nL01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19JT19XUSlcXHRcXHQrPSBpby13cS5vXFxuLS1cXG5pb191cmluZy9NYWtlZmlsZT0yNT1vYmotJChDT05GSUdfUFJPQ19GUykgKz0gZmRpbmZvLm9cXG5pb191cmluZy9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfSU9fVVJJTkdfTU9DS19GSUxFKSArPSBtb2NrX2ZpbGUub1xcbmlvX3VyaW5nL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19JT19VUklOR19CUEYpICs9IGJwZl9maWx0ZXIub1xcbmlvX3VyaW5nL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19JT19VUklOR19CUEZfT1BTKSArPSBicGYtb3BzLm9cXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuaD0xMz1zdHJ1Y3QgaW9fdXJpbmdfYnBmX29wcyB7XFxuLS1cXG5pb191cmluZy9icGYtb3BzLmgtMTktXFxuaW9fdXJpbmcvYnBmLW9wcy5oOjIwOiNpZmRlZiBDT05GSUdfSU9fVVJJTkdfQlBGX09QU1xcbmlvX3VyaW5nL2JwZi1vcHMuaC0yMS12b2lkIGlvX3VucmVnaXN0ZXJfYnBmX29wcyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCk7XFxuLS1cXG5pb191cmluZy9icGZfZmlsdGVyLmgtNi1cXG5pb191cmluZy9icGZfZmlsdGVyLmg6NzojaWZkZWYgQ09ORklHX0lPX1VSSU5HX0JQRlxcbmlvX3VyaW5nL2JwZl9maWx0ZXIuaC04LVxcbi0tXFxuaW9fdXJpbmcvYnBmX2ZpbHRlci5oPTQyPXN0YXRpYyBpbmxpbmUgdm9pZCBpb19icGZfZmlsdGVyX2Nsb25lKHN0cnVjdCBpb19yZXN0cmljdGlvbiAqZHN0LFxcbi0tXFxuaW9fdXJpbmcvYnBmX2ZpbHRlci5oLTQ1LX1cXG5pb191cmluZy9icGZfZmlsdGVyLmg6NDY6I2VuZGlmIC8qIENPTkZJR19JT19VUklOR19CUEYgKi9cXG5pb191cmluZy9icGZfZmlsdGVyLmgtNDctXFxuLS1cXG5pb191cmluZy96Y3J4Lmg9NTQ9c3RydWN0IGlvX3pjcnhfaWZxIHtcXG4tLVxcbmlvX3VyaW5nL3pjcnguaC04NS1cXG5pb191cmluZy96Y3J4Lmg6ODY6I2lmIGRlZmluZWQoQ09ORklHX0lPX1VSSU5HX1pDUlgpXFxuaW9fdXJpbmcvemNyeC5oLTg3LWludCBpb196Y3J4X2N0cmwoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA2OjA3OjM4LjY0NTc2Mjc4NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTk5MjUyNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJ20gbG9va2luZyBhdDpcblxuKipJbnZlc3RpZ2F0aW5nIEV4dGVuZGVkIEF0dHJpYnV0ZSAoeGF0dHIpIFN1cHBvcnQgd2l0aGluIHRoZSBgSU9fVVJJTkdgIENvbnRleHQqKlxuXG5SaWdodCwgc28gdGhlIHN5c3RlbSBpcyBjb25maWd1cmVkIHRvIHVzZSBgSU9fVVJJTkdgLCB3aGljaCBpcyBhIGtleSBzdGFydGluZyBwb2ludC4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyByZXZvbHZlcyBhcm91bmQgaG93IGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIGhhbmRsZWQgd2l0aGluIHRoaXMgYXN5bmNocm9ub3VzIEkvTyBmcmFtZXdvcmsuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIHhhdHRyIGZ1bmN0aW9uYWxpdHkuXG5cbkkndmUgYmVlbiBnaXZlbiBhIGxpc3Qgb2YgZm9jdXMgc3ltYm9sczogYGlvX2ZyZW1vdmV4YXR0cl9wcmVwYCwgYGlvX2ZyZW1vdmV4YXR0cmAsIGBpb19mbGlzdHhhdHRyX3ByZXBgLCBgaW9fZmxpc3R4YXR0cmAsIGBmaWxlX2xpc3R4YXR0cmAsIGFuZCBgZmlsZV9yZW1vdmV4YXR0cmAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIEkgaW1tZWRpYXRlbHkgbmVlZCB0byB6ZXJvIGluIG9uLiBUaGV5IGxvb2sgbGlrZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgZm9yIHJlbW92aW5nIGFuZCBsaXN0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gZmlsZXMsIGJvdGggaW4gYSBzeW5jaHJvbm91cyBhbmQgcG90ZW50aWFsbHkgYXN5bmNocm9ub3VzIChgcHJlcGAgc3VnZ2VzdHMgcHJlcGVyYXRpb24gZm9yIGFzeW5jKS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcm9sZXMgd2l0aGluIHRoZSBgSU9fVVJJTkdgIGVjb3N5c3RlbS5cblxuQmVmb3JlIEkgZGVsdmUgaW50byB0aGUgZGV0YWlscyBvZiB0aGVzZSBzeW1ib2xzLCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdG8gZW5zdXJlIHRoaXMgaXMgdGhlICpvbmx5KiBjb25maWd1cmF0aW9uIGZvciB4YXR0ci4gSXQgd291bGQgYmUgYSBuaWdodG1hcmUgdG8gYXNzdW1lIHRoaXMgaXMgdGhlIG9ubHkgb25lLiBKdXN0IHdhbnQgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYSBzZWNvbmRhcnkgc2V0dGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIxNywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA2OjA3OjQyLjQwNTY5MTc2NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU4Njc4MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHXy4qWEFUVFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Vyb2ZzL01ha2VmaWxlPTQ9ZXJvZnMtb2JqcyA6PSBzdXBlci5vIGlub2RlLm8gZGF0YS5vIG5hbWVpLm8gZGlyLm8gc3lzZnMub1xcbmZzL2Vyb2ZzL01ha2VmaWxlOjU6ZXJvZnMtJChDT05GSUdfRVJPRlNfRlNfWEFUVFIpICs9IHhhdHRyLm9cXG5mcy9lcm9mcy9NYWtlZmlsZS02LWVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1pJUCkgKz0gZGVjb21wcmVzc29yLm8gem1hcC5vIHpkYXRhLm8genV0aWwub1xcbi0tXFxuZnMvZXJvZnMvaW50ZXJuYWwuaD04Nz1zdHJ1Y3QgZXJvZnNfc2JfaW5mbyB7XFxuLS1cXG5mcy9lcm9mcy9pbnRlcm5hbC5oLTExMS1cXHR1MzIgbWV0YV9ibGthZGRyO1xcbmZzL2Vyb2ZzL2ludGVybmFsLmg6MTEyOiNpZmRlZiBDT05GSUdfRVJPRlNfRlNfWEFUVFJcXG5mcy9lcm9mcy9pbnRlcm5hbC5oLTExMy1cXHR1MzIgeGF0dHJfYmxrYWRkcjtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmM9MjUwPXN0YXRpYyBpbnQgZXJvZnNfcmVhZF9zdXBlcmJsb2NrKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTMwMy1cXHRzYmktXFx1MDAzZW1ldGFfYmxrYWRkciA9IGxlMzJfdG9fY3B1KGRzYi1cXHUwMDNlbWV0YV9ibGthZGRyKTtcXG5mcy9lcm9mcy9zdXBlci5jOjMwNDojaWZkZWYgQ09ORklHX0VST0ZTX0ZTX1hBVFRSXFxuZnMvZXJvZnMvc3VwZXIuYy0zMDUtXFx0c2JpLVxcdTAwM2V4YXR0cl9ibGthZGRyID0gbGUzMl90b19jcHUoZHNiLVxcdTAwM2V4YXR0cl9ibGthZGRyKTtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmM9Mzc0PXN0YXRpYyB2b2lkIGVyb2ZzX2RlZmF1bHRfb3B0aW9ucyhzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpKVxcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYy0zNzktI2VuZGlmXFxuZnMvZXJvZnMvc3VwZXIuYzozODA6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSlcXG5mcy9lcm9mcy9zdXBlci5jLTM4MS1cXHRcXHRzZXRfb3B0KFxcdTAwMjZzYmktXFx1MDAzZW9wdCwgWEFUVFJfVVNFUik7XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jPTQ0MD1zdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtNDUzLVxcdGNhc2UgT3B0X3VzZXJfeGF0dHI6XFxuZnMvZXJvZnMvc3VwZXIuYzo0NTQ6XFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19YQVRUUikpXFxuZnMvZXJvZnMvc3VwZXIuYy00NTUtXFx0XFx0XFx0ZXJyb3JmYyhmYywgXFxcInssbm99dXNlcl94YXR0ciBvcHRpb25zIG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmM9MTAyMj1zdGF0aWMgaW50IGVyb2ZzX3Nob3dfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGRlbnRyeSAqcm9vdClcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtMTAyNi1cXG5mcy9lcm9mcy9zdXBlci5jOjEwMjc6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSlcXG5mcy9lcm9mcy9zdXBlci5jLTEwMjgtXFx0XFx0c2VxX3B1dHMoc2VxLCB0ZXN0X29wdChvcHQsIFhBVFRSX1VTRVIpID9cXG4tLVxcbmZzL2Vyb2ZzL3hhdHRyLmgtMTItXFxuZnMvZXJvZnMveGF0dHIuaDoxMzojaWZkZWYgQ09ORklHX0VST0ZTX0ZTX1hBVFRSXFxuZnMvZXJvZnMveGF0dHIuaC0xNC1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgKiBjb25zdCBlcm9mc194YXR0cl9oYW5kbGVyc1tdO1xcbi0tXFxuZnMvZXJvZnMveGF0dHIuaD0yMT1zdGF0aWMgaW5saW5lIHZvaWQgZXJvZnNfeGF0dHJfcHJlZml4ZXNfY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKSB7fVxcbi0tXFxuZnMvZXJvZnMveGF0dHIuaC0yNC0jZGVmaW5lIGVyb2ZzX3hhdHRyX2hhbmRsZXJzIChOVUxMKVxcbmZzL2Vyb2ZzL3hhdHRyLmg6MjU6I2VuZGlmXFx0LyogIUNPTkZJR19FUk9GU19GU19YQVRUUiAqL1xcbmZzL2Vyb2ZzL3hhdHRyLmgtMjYtXFxuLS1cXG5mcy9leHQyL01ha2VmaWxlPTEyPUNGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXFxuZnMvZXh0Mi9NYWtlZmlsZS0xMy1cXG5mcy9leHQyL01ha2VmaWxlOjE0OmV4dDItJChDT05GSUdfRVhUMl9GU19YQVRUUilcXHQgKz0geGF0dHIubyB4YXR0cl91c2VyLm8geGF0dHJfdHJ1c3RlZC5vXFxuZnMvZXh0Mi9NYWtlZmlsZS0xNS1leHQyLSQoQ09ORklHX0VYVDJfRlNfUE9TSVhfQUNMKSArPSBhY2wub1xcbi0tXFxuZnMvZXh0Mi9leHQyLmg9NjI3PXN0cnVjdCBleHQyX2lub2RlX2luZm8ge1xcbi0tXFxuZnMvZXh0Mi9leHQyLmgtNjUwLVxcdF9fdTMyXFx0aV9kaXJfc3RhcnRfbG9va3VwO1xcbmZzL2V4dDIvZXh0Mi5oOjY1MTojaWZkZWYgQ09ORklHX0VYVDJfRlNfWEFUVFJcXG5mcy9leHQyL2V4dDIuaC02NTItXFx0LypcXG4tLVxcbmZzL2V4dDIvc3VwZXIuYz0yMjY9c3RhdGljIHZvaWQgaW5pdF9vbmNlKHZvaWQgKmZvbylcXG4tLVxcbmZzL2V4dDIvc3VwZXIuYy0yMzAtXFx0cndsb2NrX2luaXQoXFx1MDAyNmVpLVxcdTAwM2VpX21ldGFfbG9jayk7XFxuZnMvZXh0Mi9zdXBlci5jOjIzMTojaWZkZWYgQ09ORklHX0VYVDJfRlNfWEFUVFJcXG5mcy9leHQyL3N1cGVyLmMtMjMyLVxcdGluaXRfcndzZW0oXFx1MDAyNmVpLVxcdTAwM2V4YXR0cl9zZW0pO1xcbi0tXFxuZnMvZXh0Mi9zdXBlci5jPTI2MT1zdGF0aWMgaW50IGV4dDJfc2hvd19vcHRpb25zKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZGVudHJ5ICpyb290KVxcbi0tXFxuZnMvZXh0Mi9zdXBlci5jLTMwNy1cXG5mcy9leHQyL3N1cGVyLmM6MzA4OiNpZmRlZiBDT05GSUdfRVhUMl9GU19YQVRUUlxcbmZzL2V4dDIvc3VwZXIuYy0zMDktXFx0aWYgKHRlc3Rfb3B0KHNiLCBYQVRUUl9VU0VSKSlcXG4tLVxcbmZzL2V4dDIvc3VwZXIuYz01MTQ9c3RhdGljIGludCBleHQyX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXFxuLS1cXG5mcy9leHQyL3N1cGVyLmMtNTY3LVxcdFxcdGJyZWFrO1xcbmZzL2V4dDIvc3VwZXIuYzo1Njg6I2lmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXFxuZnMvZXh0Mi9zdXBlci5jLTU2OS1cXHRjYXNlIE9wdF91c2VyX3hhdHRyOlxcbi0tXFxuZnMvZXh0Mi9zdXBlci5jPTgwOT1zdGF0aWMgdm9pZCBleHQyX3NldF9vcHRpb25zKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IGV4dDJfc2JfaW5mbyAqc2JpKVxcbi0tXFxuZnMvZXh0Mi9zdXBlci5jLTgzMC1cXG5mcy9leHQyL3N1cGVyLmM6ODMxOiNpZmRlZiBDT05GSUdfRVhUMl9GU19YQVRUUlxcbmZzL2V4dDIvc3VwZXIuYy04MzItXFx0aWYgKCFjdHhfcGFyc2VkX21vdW50X29wdChjdHgsIEVYVDJfTU9VTlRfWEFUVFJfVVNFUikgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmZzL2V4dDIvc3VwZXIuYz04NjQ9c3RhdGljIGludCBleHQyX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuZnMvZXh0Mi9zdXBlci5jLTExNjEtXFxuZnMvZXh0Mi9zdXBlci5jOjExNjI6I2lmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXFxuZnMvZXh0Mi9zdXBlci5jLTExNjMtXFx0c2JpLVxcdTAwM2VzX2VhX2Jsb2NrX2NhY2hlID0gZXh0Ml94YXR0cl9jcmVhdGVfY2FjaGUoKTtcXG4tLVxcbmZzL2V4dDIveGF0dHIuaD01Nz1zdHJ1Y3QgbWJfY2FjaGU7XFxuZnMvZXh0Mi94YXR0ci5oLTU4LVxcbmZzL2V4dDIveGF0dHIuaDo1OTojIGlmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXFxuZnMvZXh0Mi94YXR0ci5oLTYwLVxcbi0tXFxuZnMvZXh0Mi94YXR0ci5oPTc1PWV4dGVybiBjb25zdCBzdHJ1Y3QgeGF0dHJfaGFuZGxlciAqIGNvbnN0IGV4dDJfeGF0dHJfaGFuZGxlcnNbXTtcXG5mcy9leHQyL3hhdHRyLmgtNzYtXFxuZnMvZXh0Mi94YXR0ci5oOjc3OiMgZWxzZSAgLyogQ09ORklHX0VYVDJfRlNfWEFUVFIgKi9cXG5mcy9leHQyL3hhdHRyLmgtNzgtXFxuLS1cXG5mcy9leHQyL3hhdHRyLmg9OTg9c3RhdGljIGlubGluZSB2b2lkIGV4dDJfeGF0dHJfZGVzdHJveV9jYWNoZShzdHJ1Y3QgbWJfY2FjaGUgKmNhY2hlKVxcbi0tXFxuZnMvZXh0Mi94YXR0ci5oLTEwNC1cXG5mcy9leHQyL3hhdHRyLmg6MTA1OiMgZW5kaWYgIC8qIENPTkZJR19FWFQyX0ZTX1hBVFRSICovXFxuZnMvZXh0Mi94YXR0ci5oLTEwNi1cXG4tLVxcbmZzL2YyZnMvTWFrZWZpbGU9Nz1mMmZzLSQoQ09ORklHX0YyRlNfU1RBVF9GUykgKz0gZGVidWcub1xcbmZzL2YyZnMvTWFrZWZpbGU6ODpmMmZzLSQoQ09ORklHX0YyRlNfRlNfWEFUVFIpICs9IHhhdHRyLm9cXG5mcy9mMmZzL01ha2VmaWxlLTktZjJmcy0kKENPTkZJR19GMkZTX0ZTX1BPU0lYX0FDTCkgKz0gYWNsLm9cXG4tLVxcbmZzL2YyZnMvc3VwZXIuYz03OTA9c3RhdGljIGludCBmMmZzX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXFxuLS1cXG5mcy9mMmZzL3N1cGVyLmMtODI4LVxcdFxcdGJyZWFrO1xcbmZzL2YyZnMvc3VwZXIuYzo4Mjk6I2lmZGVmIENPTkZJR19GMkZTX0ZTX1hBVFRSXFxuZnMvZjJmcy9zdXBlci5jLTgzMC1cXHRjYXNlIE9wdF91c2VyX3hhdHRyOlxcbi0tXFxuZnMvZjJmcy9zdXBlci5jPTIzNzU9c3RhdGljIGludCBmMmZzX3Nob3dfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGRlbnRyeSAqcm9vdClcXG4tLVxcbmZzL2YyZnMvc3VwZXIuYy0yNDA1LVxcdH1cXG5mcy9mMmZzL3N1cGVyLmM6MjQwNjojaWZkZWYgQ09ORklHX0YyRlNfRlNfWEFUVFJcXG5mcy9mMmZzL3N1cGVyLmMtMjQwNy1cXHRpZiAodGVzdF9vcHQoc2JpLCBYQVRUUl9VU0VSKSlcXG4tLVxcbmZzL2YyZnMvc3VwZXIuYz0yNTQ5PXN0YXRpYyB2b2lkIGRlZmF1bHRfb3B0aW9ucyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJvb2wgcmVtb3VudClcXG4tLVxcbmZzL2YyZnMvc3VwZXIuYy0yNjAxLVxcbmZzL2YyZnMvc3VwZXIuYzoyNjAyOiNpZmRlZiBDT05GSUdfRjJGU19GU19YQVRUUlxcbmZzL2YyZnMvc3VwZXIuYy0yNjAzLVxcdHNldF9vcHQoc2JpLCBYQVRUUl9VU0VSKTtcXG4tLVxcbmZzL2YyZnMveGF0dHIuaD00OD1zdHJ1Y3QgZjJmc194YXR0cl9lbnRyeSB7XFxuLS1cXG5mcy9mMmZzL3hhdHRyLmgtMTIzLVxcbmZzL2YyZnMveGF0dHIuaDoxMjQ6I2lmZGVmIENPTkZJR19GMkZTX0ZTX1hBVFRSXFxuZnMvZjJmcy94YXR0ci5oLTEyNS1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgZjJmc194YXR0cl91c2VyX2hhbmRsZXI7XFxuLS1cXG5mcy9qZmZzMi9NYWtlZmlsZT0xND1qZmZzMi0kKENPTkZJR19KRkZTMl9GU19XUklURUJVRkZFUilcXHQrPSB3YnVmLm9cXG5mcy9qZmZzMi9NYWtlZmlsZToxNTpqZmZzMi0kKENPTkZJR19KRkZTMl9GU19YQVRUUilcXHRcXHQrPSB4YXR0ci5vIHhhdHRyX3RydXN0ZWQubyB4YXR0cl91c2VyLm9cXG5mcy9qZmZzMi9NYWtlZmlsZS0xNi1qZmZzMi0kKENPTkZJR19KRkZTMl9GU19TRUNVUklUWSlcXHQrPSBzZWN1cml0eS5vXFxuLS1cXG5mcy9qZmZzMi9lcmFzZS5jPTIwNj1zdGF0aWMgaW5saW5lIHZvaWQgamZmczJfcmVtb3ZlX25vZGVfcmVmc19mcm9tX2lub19saXN0KHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLFxcbi0tXFxuZnMvamZmczIvZXJhc2UuYy0yNzItXFx0c3dpdGNoIChpYy1cXHUwMDNlY2xhc3MpIHtcXG5mcy9qZmZzMi9lcmFzZS5jOjI3MzojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXFxuZnMvamZmczIvZXJhc2UuYy0yNzQtXFx0XFx0Y2FzZSBSQVdOT0RFX0NMQVNTX1hBVFRSX0RBVFVNOlxcbi0tXFxuZnMvamZmczIvZ2MuYz0xMjQ9aW50IGpmZnMyX2dhcmJhZ2VfY29sbGVjdF9wYXNzKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjKVxcbi0tXFxuZnMvamZmczIvZ2MuYy0zMjgtXFxuZnMvamZmczIvZ2MuYzozMjk6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL2djLmMtMzMwLVxcdC8qIFdoZW4gJ2ljJyByZWZlcnMgeGF0dHJfZGF0dW0veGF0dHJfcmVmLCB0aGlzIG5vZGUgaXMgR0NlZCBhcyB4YXR0ci5cXG4tLVxcbmZzL2pmZnMyL2pmZnMyX2ZzX3NiLmg9NDk9c3RydWN0IGpmZnMyX3NiX2luZm8ge1xcbi0tXFxuZnMvamZmczIvamZmczJfZnNfc2IuaC0xNDUtXFxuZnMvamZmczIvamZmczJfZnNfc2IuaDoxNDY6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL2pmZnMyX2ZzX3NiLmgtMTQ3LSNkZWZpbmUgWEFUVFJJTkRFWF9IQVNIU0laRVxcdCg1NylcXG4tLVxcbmZzL2pmZnMyL21hbGxvYy5jPTI4PXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqaW5vZGVfY2FjaGVfc2xhYjtcXG5mcy9qZmZzMi9tYWxsb2MuYzoyOTojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXFxuZnMvamZmczIvbWFsbG9jLmMtMzAtc3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICp4YXR0cl9kYXR1bV9jYWNoZTtcXG4tLVxcbmZzL2pmZnMyL21hbGxvYy5jPTM0PWludCBfX2luaXQgamZmczJfY3JlYXRlX3NsYWJfY2FjaGVzKHZvaWQpXFxuLS1cXG5mcy9qZmZzMi9tYWxsb2MuYy02NS1cXG5mcy9qZmZzMi9tYWxsb2MuYzo2NjojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXFxuZnMvamZmczIvbWFsbG9jLmMtNjctXFx0eGF0dHJfZGF0dW1fY2FjaGUgPSBLTUVNX0NBQ0hFKGpmZnMyX3hhdHRyX2RhdHVtLCAwKTtcXG4tLVxcbmZzL2pmZnMyL21hbGxvYy5jPTgyPXZvaWQgamZmczJfZGVzdHJveV9zbGFiX2NhY2hlcyh2b2lkKVxcbi0tXFxuZnMvamZmczIvbWFsbG9jLmMtOTAtXFx0a21lbV9jYWNoZV9kZXN0cm95KGlub2RlX2NhY2hlX3NsYWIpO1xcbmZzL2pmZnMyL21hbGxvYy5jOjkxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9tYWxsb2MuYy05Mi1cXHRrbWVtX2NhY2hlX2Rlc3Ryb3koeGF0dHJfZGF0dW1fY2FjaGUpO1xcbi0tXFxuZnMvamZmczIvbWFsbG9jLmM9MjU0PXZvaWQgamZmczJfZnJlZV9pbm9kZV9jYWNoZShzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKngpXFxuLS1cXG5mcy9qZmZzMi9tYWxsb2MuYy0yNTktXFxuZnMvamZmczIvbWFsbG9jLmM6MjYwOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9tYWxsb2MuYy0yNjEtc3RydWN0IGpmZnMyX3hhdHRyX2RhdHVtICpqZmZzMl9hbGxvY194YXR0cl9kYXR1bSh2b2lkKVxcbi0tXFxuZnMvamZmczIvbm9kZWxpc3QuYz00NTc9dm9pZCBqZmZzMl9kZWxfaW5vX2NhY2hlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKm9sZClcXG4tLVxcbmZzL2pmZnMyL25vZGVsaXN0LmMtNDYwLVxcbmZzL2pmZnMyL25vZGVsaXN0LmM6NDYxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9ub2RlbGlzdC5jLTQ2Mi1cXHRCVUdfT04ob2xkLVxcdTAwM2V4cmVmKTtcXG4tLVxcbmZzL2pmZnMyL25vZGVsaXN0Lmg9MTU4PXN0cnVjdCBqZmZzMl9pbm9kZV9jYWNoZSB7XFxuLS1cXG5mcy9qZmZzMi9ub2RlbGlzdC5oLTE3NS1cXHRzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKm5leHQ7XFxuZnMvamZmczIvbm9kZWxpc3QuaDoxNzY6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL25vZGVsaXN0LmgtMTc3LVxcdHN0cnVjdCBqZmZzMl94YXR0cl9yZWYgKnhyZWY7XFxuLS1cXG5mcy9qZmZzMi9ub2RlbGlzdC5oPTQ0MT12b2lkIGpmZnMyX2ZyZWVfaW5vZGVfY2FjaGUoc3RydWN0IGpmZnMyX2lub2RlX2NhY2hlICopO1xcbmZzL2pmZnMyL25vZGVsaXN0Lmg6NDQyOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9ub2RlbGlzdC5oLTQ0My1zdHJ1Y3QgamZmczJfeGF0dHJfZGF0dW0gKmpmZnMyX2FsbG9jX3hhdHRyX2RhdHVtKHZvaWQpO1xcbi0tXFxuZnMvamZmczIvbm9kZW1nbXQuYz01ODY9dm9pZCBqZmZzMl9tYXJrX25vZGVfb2Jzb2xldGUoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsIHN0cnVjdCBqZmZzMl9yYXdfbm9kZV9yZWYgKnJlZilcXG4tLVxcbmZzL2pmZnMyL25vZGVtZ210LmMtODIzLVxcdFxcdHN3aXRjaCAoaWMtXFx1MDAzZWNsYXNzKSB7XFxuZnMvamZmczIvbm9kZW1nbXQuYzo4MjQ6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL25vZGVtZ210LmMtODI1LVxcdFxcdFxcdGNhc2UgUkFXTk9ERV9DTEFTU19YQVRUUl9EQVRVTTpcXG4tLVxcbmZzL2pmZnMyL3NjYW4uYz0zMTI9aW50IGpmZnMyX3NjYW5fY2xhc3NpZnlfamViKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViKVxcbi0tXFxuZnMvamZmczIvc2Nhbi5jLTMzMC1cXG5mcy9qZmZzMi9zY2FuLmM6MzMxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9zY2FuLmMtMzMyLXN0YXRpYyBpbnQgamZmczJfc2Nhbl94YXR0cl9ub2RlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViLFxcbi0tXFxuZnMvamZmczIvc2Nhbi5jPTQ0Nz1zdGF0aWMgaW50IGpmZnMyX3NjYW5fZXJhc2VibG9jayAoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsIHN0cnVjdCBqZmZzMl9lcmFzZWJsb2NrICpqZWIsXFxuLS1cXG5mcy9qZmZzMi9zY2FuLmMtODM1LVxcbmZzL2pmZnMyL3NjYW4uYzo4MzY6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL3NjYW4uYy04MzctXFx0XFx0Y2FzZSBKRkZTMl9OT0RFVFlQRV9YQVRUUjpcXG4tLVxcbmZzL2pmZnMyL3NjYW4uYy04NzAtXFx0XFx0XFx0YnJlYWs7XFxuZnMvamZmczIvc2Nhbi5jOjg3MTojZW5kaWZcXHQvKiBDT05GSUdfSkZGUzJfRlNfWEFUVFIgKi9cXG5mcy9qZmZzMi9zY2FuLmMtODcyLVxcbi0tXFxuZnMvamZmczIvc3VtbWFyeS5jPTYzPXN0YXRpYyBpbnQgamZmczJfc3VtX2FkZF9tZW0oc3RydWN0IGpmZnMyX3N1bW1hcnkgKnMsIHVuaW9uIGpmZnMyX3N1bV9tZW0gKml0ZW0pXFxuLS1cXG5mcy9qZmZzMi9zdW1tYXJ5LmMtODMtXFx0XFx0XFx0YnJlYWs7XFxuZnMvamZmczIvc3VtbWFyeS5jOjg0OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9zdW1tYXJ5LmMtODUtXFx0XFx0Y2FzZSBKRkZTMl9OT0RFVFlQRV9YQVRUUjpcXG4tLVxcbmZzL2pmZnMyL3N1bW1hcnkuYz0xMzM9aW50IGpmZnMyX3N1bV9hZGRfZGlyZW50X21lbShzdHJ1Y3QgamZmczJfc3VtbWFyeSAqcywgc3RydWN0IGpmZnMyX3Jhd19kaXJlbnQgKnJkLFxcbi0tXFxuZnMvamZmczIvc3VtbWFyeS5jLTE1Ni1cXG5mcy9qZmZzMi9zdW1tYXJ5LmM6MTU3OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9zdW1tYXJ5LmMtMTU4LWludCBqZmZzMl9zdW1fYWRkX3hhdHRyX21lbShzdHJ1Y3QgamZmczJfc3VtbWFyeSAqcywgc3RydWN0IGpmZnMyX3Jhd194YXR0ciAqcngsIHVpbnQzMl90IG9mcylcXG4tLVxcbmZzL2pmZnMyL3N1bW1hcnkuYz0yNDg9aW50IGpmZnMyX3N1bV9hZGRfa3ZlYyhzdHJ1Y3QgamZmczJfc2JfaW5mbyAqYywgY29uc3Qgc3RydWN0IGt2ZWMgKmludmVjcyxcXG4tLVxcbmZzL2pmZnMyL3N1bW1hcnkuYy0zMTMtXFx0XFx0fVxcbmZzL2pmZnMyL3N1bW1hcnkuYzozMTQ6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL3N1bW1hcnkuYy0zMTUtXFx0XFx0Y2FzZSBKRkZTMl9OT0RFVFlQRV9YQVRUUjoge1xcbi0tXFxuZnMvamZmczIvc3VtbWFyeS5jPTM4Nj1zdGF0aWMgaW50IGpmZnMyX3N1bV9wcm9jZXNzX3N1bV9kYXRhKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViLFxcbi0tXFxuZnMvamZmczIvc3VtbWFyeS5jLTQ4OS1cXHRcXHRcXHR9XFxuZnMvamZmczIvc3VtbWFyeS5jOjQ5MDojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXFxuZnMvamZmczIvc3VtbWFyeS5jLTQ5MS1cXHRcXHRcXHRjYXNlIEpGRlMyX05PREVUWVBFX1hBVFRSOiB7XFxuLS1cXG5mcy9qZmZzMi9zdW1tYXJ5LmM9Njc0PXN0YXRpYyBpbnQgamZmczJfc3VtX3dyaXRlX2RhdGEoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsIHN0cnVjdCBqZmZzMl9lcmFzZWJsb2NrICpqZWIsXFxuLS1cXG5mcy9qZmZzMi9zdW1tYXJ5LmMtNzU0LVxcdFxcdFxcdH1cXG5mcy9qZmZzMi9zdW1tYXJ5LmM6NzU1OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9zdW1tYXJ5LmMtNzU2LVxcdFxcdFxcdGNhc2UgSkZGUzJfTk9ERVRZUEVfWEFUVFI6IHtcXG4tLVxcbmZzL2pmZnMyL3hhdHRyLmg9NjY9c3RhdGljIGlubGluZSBpbnQgaXNfeGF0dHJfcmVmX2RlYWQoc3RydWN0IGpmZnMyX3hhdHRyX3JlZiAqcmVmKVxcbi0tXFxuZnMvamZmczIveGF0dHIuaC03MC1cXG5mcy9qZmZzMi94YXR0ci5oOjcxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi94YXR0ci5oLTcyLVxcbi0tXFxuZnMvamZmczIveGF0dHIuaD0xMDE9ZXh0ZXJuIHNzaXplX3QgamZmczJfbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBzaXplX3QpO1xcbi0tXFxuZnMvamZmczIveGF0dHIuaC0xMTYtXFxuZnMvamZmczIveGF0dHIuaDoxMTc6I2VuZGlmIC8qIENPTkZJR19KRkZTMl9GU19YQVRUUiAqL1xcbmZzL2pmZnMyL3hhdHRyLmgtMTE4LVxcbi0tXFxuZnMvbmlsZnMyL25pbGZzLmg9NDA9c3RydWN0IG5pbGZzX2lub2RlX2luZm8ge1xcbi0tXFxuZnMvbmlsZnMyL25pbGZzLmgtNTEtXFxuZnMvbmlsZnMyL25pbGZzLmg6NTI6I2lmZGVmIENPTkZJR19OSUxGU19YQVRUUlxcbmZzL25pbGZzMi9uaWxmcy5oLTUzLVxcdC8qXFxuLS1cXG5mcy9uaWxmczIvc3VwZXIuYz0xMzE0PXN0YXRpYyB2b2lkIG5pbGZzX2lub2RlX2luaXRfb25jZSh2b2lkICpvYmopXFxuLS1cXG5mcy9uaWxmczIvc3VwZXIuYy0xMzE4LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZpaS1cXHUwMDNlaV9kaXJ0eSk7XFxuZnMvbmlsZnMyL3N1cGVyLmM6MTMxOTojaWZkZWYgQ09ORklHX05JTEZTX1hBVFRSXFxuZnMvbmlsZnMyL3N1cGVyLmMtMTMyMC1cXHRpbml0X3J3c2VtKFxcdTAwMjZpaS1cXHUwMDNleGF0dHJfc2VtKTtcXG4tLVxcbmZzL3NtYi9jbGllbnQvTWFrZWZpbGU9MTk9JChvYmopL2NpZnNfc3BuZWdvX25lZ3Rva2VuaW5pdC5hc24xLm86ICQob2JqKS9jaWZzX3NwbmVnb19uZWd0b2tlbmluaXQuYXNuMS5jICQob2JqKS9jaWZzX3NwbmVnb19uZWd0b2tlbmluaXQuYXNuMS5oXFxuZnMvc21iL2NsaWVudC9NYWtlZmlsZS0yMC1cXG5mcy9zbWIvY2xpZW50L01ha2VmaWxlOjIxOmNpZnMtJChDT05GSUdfQ0lGU19YQVRUUikgKz0geGF0dHIub1xcbmZzL3NtYi9jbGllbnQvTWFrZWZpbGUtMjItXFxuLS1cXG5mcy9zbWIvY2xpZW50L2NpZnNfZGVidWcuYz00Mzg9c3RhdGljIGludCBjaWZzX2RlYnVnX2RhdGFfcHJvY19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmZzL3NtYi9jbGllbnQvY2lmc19kZWJ1Zy5jLTQ4Mi0jZW5kaWZcXG5mcy9zbWIvY2xpZW50L2NpZnNfZGVidWcuYzo0ODM6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXFxuZnMvc21iL2NsaWVudC9jaWZzX2RlYnVnLmMtNDg0LVxcdHNlcV9wcmludGYobSwgXFxcIixYQVRUUlxcXCIpO1xcbi0tXFxuZnMvc21iL2NsaWVudC9jaWZzZnMuaD0xMzI9aW50IGNpZnNfc3ltbGluayhzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL3NtYi9jbGllbnQvY2lmc2ZzLmgtMTM0LVxcbmZzL3NtYi9jbGllbnQvY2lmc2ZzLmg6MTM1OiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxcbmZzL3NtYi9jbGllbnQvY2lmc2ZzLmgtMTM2LWV4dGVybiBjb25zdCBzdHJ1Y3QgeGF0dHJfaGFuZGxlciAqIGNvbnN0IGNpZnNfeGF0dHJfaGFuZGxlcnNbXTtcXG4tLVxcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jPTMwODU9c3RydWN0IGlub2RlICpjaWZzX2NyZWF0ZV9yZXBhcnNlX2lub2RlKHN0cnVjdCBjaWZzX29wZW5faW5mb19kYXRhICpkYXRhLFxcbi0tXFxuZnMvc21iL2NsaWVudC9jaWZzc21iLmMtMzExNS1cXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYzozMTE2OiNpZm5kZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy0zMTE3LVxcdGlmICh4YXR0cl9pb3YpXFxuLS1cXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy0zMTMxLVxcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jOjMxMzI6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXFxuZnMvc21iL2NsaWVudC9jaWZzc21iLmMtMzEzMy1cXHRpZiAoeGF0dHJfaW92KSB7XFxuLS1cXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYz02MDI3PUNJRlNTTUJVbml4U2V0UGF0aEluZm8oY29uc3QgdW5zaWduZWQgaW50IHhpZCwgc3RydWN0IGNpZnNfdGNvbiAqdGNvbixcXG4tLVxcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jLTYxMDEtXFxuZnMvc21iL2NsaWVudC9jaWZzc21iLmM6NjEwMjojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy02MTAzLS8qXFxuLS1cXG5mcy9zbWIvY2xpZW50L2lub2RlLmM9NzIxPXN0YXRpYyBpbnQgY2lmc19zZnVfbW9kZShzdHJ1Y3QgY2lmc19mYXR0ciAqZmF0dHIsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBhdGgsXFxuLS1cXG5mcy9zbWIvY2xpZW50L2lub2RlLmMtNzIzLXtcXG5mcy9zbWIvY2xpZW50L2lub2RlLmM6NzI0OiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxcbmZzL3NtYi9jbGllbnQvaW5vZGUuYy03MjUtXFx0c3NpemVfdCByYztcXG4tLVxcbmZzL3NtYi9jbGllbnQvc21iMW9wcy5jPTUzMj1zdGF0aWMgaW50IGNpZnNfcXVlcnlfcGF0aF9pbmZvKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsXFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYy02NDItXFxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmM6NjQzOiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxcbmZzL3NtYi9jbGllbnQvc21iMW9wcy5jLTY0NC1cXHQvKlxcbi0tXFxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmM9MTM5Mz1zdHJ1Y3Qgc21iX3ZlcnNpb25fb3BlcmF0aW9ucyBzbWIxX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYy0xNDY5LVxcdC5zZWxlY3Rfc2VjdHlwZSA9IGNpZnNfc2VsZWN0X3NlY3R5cGUsXFxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmM6MTQ3MDojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYy0xNDcxLVxcdC5xdWVyeV9hbGxfRUFzID0gQ0lGU1NNQlFBbGxFQXMsXFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz0xMDMxPXN0YXRpYyBpbnQgc21iMl9xdWVyeV9maWxlX2luZm8oY29uc3QgdW5zaWduZWQgaW50IHhpZCwgc3RydWN0IGNpZnNfdGNvbiAqdGNvbixcXG4tLVxcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTEwNDQtXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6MTA0NTojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy0xMDQ2LXN0YXRpYyBzc2l6ZV90XFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01NTQyPXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjIwX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01NjI1LVxcdC5zZWxlY3Rfc2VjdHlwZSA9IHNtYjJfc2VsZWN0X3NlY3R5cGUsXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6NTYyNjojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01NjI3LVxcdC5xdWVyeV9hbGxfRUFzID0gc21iMl9xdWVyeV9lYXMsXFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01NjQ0PXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjIxX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01NzMwLVxcdC5zZWxlY3Rfc2VjdHlwZSA9IHNtYjJfc2VsZWN0X3NlY3R5cGUsXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6NTczMTojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01NzMyLVxcdC5xdWVyeV9hbGxfRUFzID0gc21iMl9xdWVyeV9lYXMsXFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01NzQ4PXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjMwX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01ODQ2LVxcdC5zZWxlY3Rfc2VjdHlwZSA9IHNtYjJfc2VsZWN0X3NlY3R5cGUsXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6NTg0NzojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01ODQ4LVxcdC5xdWVyeV9hbGxfRUFzID0gc21iMl9xdWVyeV9lYXMsXFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01ODY0PXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjMxMV9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmMtNTk2Mi1cXHQuc2VsZWN0X3NlY3R5cGUgPSBzbWIyX3NlbGVjdF9zZWN0eXBlLFxcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jOjU5NjM6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmMtNTk2NC1cXHQucXVlcnlfYWxsX0VBcyA9IHNtYjJfcXVlcnlfZWFzLFxcbi0tXFxuZnMvc3F1YXNoZnMvTWFrZWZpbGU9MTM9c3F1YXNoZnMtJChDT05GSUdfU1FVQVNIRlNfREVDT01QX01VTFRJX1BFUkNQVSkgKz0gZGVjb21wcmVzc29yX211bHRpX3BlcmNwdS5vXFxuZnMvc3F1YXNoZnMvTWFrZWZpbGU6MTQ6c3F1YXNoZnMtJChDT05GSUdfU1FVQVNIRlNfWEFUVFIpICs9IHhhdHRyLm8geGF0dHJfaWQub1xcbmZzL3NxdWFzaGZzL01ha2VmaWxlLTE1LXNxdWFzaGZzLSQoQ09ORklHX1NRVUFTSEZTX0xaNCkgKz0gbHo0X3dyYXBwZXIub1xcbi0tXFxuZnMvc3F1YXNoZnMveGF0dHIuaC0xMC1cXG5mcy9zcXVhc2hmcy94YXR0ci5oOjExOiNpZmRlZiBDT05GSUdfU1FVQVNIRlNfWEFUVFJcXG5mcy9zcXVhc2hmcy94YXR0ci5oLTEyLWV4dGVybiBfX2xlNjQgKnNxdWFzaGZzX3JlYWRfeGF0dHJfaWRfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICosIHU2NCxcXG4tLVxcbmZzL3ViaWZzL01ha2VmaWxlPTk9dWJpZnMtJChDT05GSUdfRlNfRU5DUllQVElPTikgKz0gY3J5cHRvLm9cXG5mcy91Ymlmcy9NYWtlZmlsZToxMDp1Ymlmcy0kKENPTkZJR19VQklGU19GU19YQVRUUikgKz0geGF0dHIub1xcbmZzL3ViaWZzL01ha2VmaWxlLTExLXViaWZzLSQoQ09ORklHX1VCSUZTX0ZTX0FVVEhFTlRJQ0FUSU9OKSArPSBhdXRoLm9cXG4tLVxcbmZzL3ViaWZzL3ViaWZzLmg9MjAzND1zc2l6ZV90IHViaWZzX3hhdHRyX2dldChzdHJ1Y3QgaW5vZGUgKmhvc3QsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmJ1ZixcXG4tLVxcbmZzL3ViaWZzL3ViaWZzLmgtMjAzNi1cXG5mcy91Ymlmcy91Ymlmcy5oOjIwMzc6I2lmZGVmIENPTkZJR19VQklGU19GU19YQVRUUlxcbmZzL3ViaWZzL3ViaWZzLmgtMjAzOC1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgKiBjb25zdCB1Ymlmc194YXR0cl9oYW5kbGVyc1tdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzo0Mi41NjE1NjQ4NjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc1NjY0ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklPX1VSSU5HIFhBVFRSIEZ1bmN0aW9uIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBwbGF5IGhlcmUgaXMgZGVmaW5pdGVseSBgSU9fVVJJTkdgLiBNeSBjdXJyZW50IHRhcmdldCBpcyB1bmRlcnN0YW5kaW5nIGhvdyBleHRlbmRlZCBhdHRyaWJ1dGVzICh4YXR0cnMpIGFyZSBoYW5kbGVkIHdpdGggdGhpcyBzcGVjaWZpYyBjb25maWd1cmF0aW9uLiBUaGUgZm9jdXMgc3ltYm9scyBnaXZlIG1lIGEgc3Ryb25nIHN0YXJ0aW5nIHBvaW50OiBgaW9fZnJlbW92ZXhhdHRyX3ByZXBgLCBgaW9fZnJlbW92ZXhhdHRyYCwgYGlvX2ZsaXN0eGF0dHJfcHJlcGAsIGBpb19mbGlzdHhhdHRyYCwgYGZpbGVfbGlzdHhhdHRyYCwgYW5kIGBmaWxlX3JlbW92ZXhhdHRyYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjZW50cmFsIHRvIHJlbW92aW5nIGFuZCBsaXN0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIGFuZCB0aGUgJ2lvXycgcHJlZml4IHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkncmUgcmVsYXRlZCB0byBhc3luY2hyb25vdXMgSS9PIHdpdGggaW9fdXJpbmcuXG5cbkJlZm9yZSBJIGp1bXAgaW4sIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gSnVzdCB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbC4gYENPTkZJR19JT19VUklOR2Agc2VlbXMgbGlrZSB0aGUgcHJpbWFyeSBkcml2ZXIsIGJ1dCBpdCdzIGFsd2F5cyBnb29kIHByYWN0aWNlIHRvIGVsaW1pbmF0ZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMuXG5cbk9uY2UgSSBoYXZlIGEgc29saWQgZ3Jhc3Agb24gdGhlc2Ugc3ltYm9scyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHVuZGVyIGBJT19VUklOR2AsIEknbGwgdXNlIGBzZXQtcmVzdWx0c2AgdG8gcHJvdmlkZSBhIGNsZWFyIGFuZCBjb25jaXNlIHN1bW1hcnkgb2YgbXkgZmluZGluZ3MuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc3RydWN0dXJlZCBhcHByb2FjaCBmb3IgZG9jdW1lbnRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGludGVyYWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxNTAsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA2OjA3OjQ3LjEzNzIzMTU1OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjUwODU2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19mcmVtb3ZleGF0dHJfcHJlcFwiLFxuICAgIFwiaW9fZnJlbW92ZXhhdHRyXCIsXG4gICAgXCJpb19mbGlzdHhhdHRyX3ByZXBcIixcbiAgICBcImlvX2ZsaXN0eGF0dHJcIixcbiAgICBcImZpbGVfbGlzdHhhdHRyXCIsXG4gICAgXCJmaWxlX3JlbW92ZXhhdHRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBJT1JJTkdfT1BfRlJFTU9WRVhBVFRSIGFuZCBJT1JJTkdfT1BfRkxJU1RYQVRUUiB0byBpb191cmluZy4gSXQgbW9kaWZpZXMgY29yZSBpb191cmluZyBhbmQgeGF0dHIgbG9naWMsIG1ha2luZyBpdCBoaWdobHkgZnVuY3Rpb25hbCBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX2ZyZW1vdmV4YXR0cl9wcmVwXCIsXG4gICAgXCJpb19mcmVtb3ZleGF0dHJcIixcbiAgICBcImlvX2ZsaXN0eGF0dHJfcHJlcFwiLFxuICAgIFwiaW9fZmxpc3R4YXR0clwiLFxuICAgIFwiZmlsZV9saXN0eGF0dHJcIixcbiAgICBcImZpbGVfcmVtb3ZleGF0dHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIElPUklOR19PUF9GUkVNT1ZFWEFUVFIgYW5kIElPUklOR19PUF9GTElTVFhBVFRSIHRvIGlvX3VyaW5nLiBJdCBtb2RpZmllcyBjb3JlIGlvX3VyaW5nIGFuZCB4YXR0ciBsb2dpYywgbWFraW5nIGl0IGhpZ2hseSBmdW5jdGlvbmFsIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowb4cdq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 05:27:42 +0000 UTC FinishedAt: 2026-07-22 06:07:49 +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": "248951ddc14de84de3910f9b13f51491a8cd91df", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "248951ddc14de84de3910f9b13f51491a8cd91df", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING" ], "series_id": "f990a3b7-63f8-49e9-9fab-cad4516acf8e" }, "track": "KASAN", "fuzz": { "focus": [ "fs", "io_uring" ], "focus_symbols": [ "io_fremovexattr_prep", "io_fremovexattr", "io_flistxattr_prep", "io_flistxattr", "file_listxattr", "file_removexattr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDA2OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fZnJlbW92ZXhhdHRyX3ByZXAmIzM0OywKICAgICYjMzQ7aW9fZnJlbW92ZXhhdHRyJiMzNDssCiAgICAmIzM0O2lvX2ZsaXN0eGF0dHJfcHJlcCYjMzQ7LAogICAgJiMzNDtpb19mbGlzdHhhdHRyJiMzNDssCiAgICAmIzM0O2ZpbGVfbGlzdHhhdHRyJiMzNDssCiAgICAmIzM0O2ZpbGVfcmVtb3ZleGF0dHImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBJT1JJTkdfT1BfRlJFTU9WRVhBVFRSIGFuZCBJT1JJTkdfT1BfRkxJU1RYQVRUUiB0byBpb191cmluZy4gSXQgbW9kaWZpZXMgY29yZSBpb191cmluZyBhbmQgeGF0dHIgbG9naWMsIG1ha2luZyBpdCBoaWdobHkgZnVuY3Rpb25hbCBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNjowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk2MmRmMmNlNGVkZGY2MzQ3NTM1NzJmZWVmZWMzOWM4N2M2NWVmNThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwNjowNzowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9pbnRlcm5hbC5oIGIvZnMvaW50ZXJuYWwuaFxuaW5kZXggMzU1ZDkzZjkyMjA4NjEuLmVlODZiMjRkYjc5YWQyIDEwMDY0NFxuLS0tIGEvZnMvaW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaW50ZXJuYWwuaFxuQEAgLTI5Nyw2ICYjNDM7Mjk3LDggQEAgaW50IGZpbGVuYW1lX3NldHhhdHRyKGludCBkZmQsIHN0cnVjdCBmaWxlbmFtZSAqZmlsZW5hbWUsXG4gXHRcdCAgICAgIHVuc2lnbmVkIGludCBsb29rdXBfZmxhZ3MsIHN0cnVjdCBrZXJuZWxfeGF0dHJfY3R4ICpjdHgpO1xuIGludCBzZXR4YXR0cl9jb3B5KGNvbnN0IGNoYXIgX191c2VyICpuYW1lLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KTtcbiBpbnQgaW1wb3J0X3hhdHRyX25hbWUoc3RydWN0IHhhdHRyX25hbWUgKmtuYW1lLCBjb25zdCBjaGFyIF9fdXNlciAqbmFtZSk7XG4mIzQzO3NzaXplX3QgZmlsZV9saXN0eGF0dHIoc3RydWN0IGZpbGUgKmYsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSk7XG4mIzQzO2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpO1xuIFxuIGludCBtYXlfd3JpdGVfeGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuIFxuZGlmZiAtLWdpdCBhL2ZzL3hhdHRyLmMgYi9mcy94YXR0ci5jXG5pbmRleCBkNTg5NzkxMTUyMDA3NS4uMzFiOGE1ZWVlYzFlOGMgMTAwNjQ0XG4tLS0gYS9mcy94YXR0ci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy94YXR0ci5jXG5AQCAtOTUzLDcgJiM0Mzs5NTMsNiBAQCBsaXN0eGF0dHIoc3RydWN0IGRlbnRyeSAqZCwgY2hhciBfX3VzZXIgKmxpc3QsIHNpemVfdCBzaXplKVxuIFx0cmV0dXJuIGVycm9yO1xuIH1cbiBcbi1zdGF0aWNcbiBzc2l6ZV90IGZpbGVfbGlzdHhhdHRyKHN0cnVjdCBmaWxlICpmLCBjaGFyIF9fdXNlciAqbGlzdCwgc2l6ZV90IHNpemUpXG4ge1xuIFx0YXVkaXRfZmlsZShmKTtcbkBAIC0xMDM2LDcgJiM0MzsxMDM1LDcgQEAgcmVtb3ZleGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmQsIGNvbnN0IGNoYXIgKm5hbWUpXG4gXHRyZXR1cm4gdmZzX3JlbW92ZXhhdHRyKGlkbWFwLCBkLCBuYW1lKTtcbiB9XG4gXG4tc3RhdGljIGludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXG4mIzQzO2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXG4ge1xuIFx0aW50IGVycm9yID0gbW50X3dhbnRfd3JpdGVfZmlsZShmKTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oXG5pbmRleCA5MDlmYjdhZWE2MzhlYi4uODA1ZjFlMzFmNDkyNTEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcbkBAIC0zMTgsNiAmIzQzOzMxOCw4IEBAIGVudW0gaW9fdXJpbmdfb3Age1xuIFx0SU9SSU5HX09QX1BJUEUsXG4gXHRJT1JJTkdfT1BfTk9QMTI4LFxuIFx0SU9SSU5HX09QX1VSSU5HX0NNRDEyOCxcbiYjNDM7XHRJT1JJTkdfT1BfRlJFTU9WRVhBVFRSLFxuJiM0MztcdElPUklOR19PUF9GTElTVFhBVFRSLFxuIFxuIFx0LyogdGhpcyBnb2VzIGxhc3QsIG9idmlvdXNseSAqL1xuIFx0SU9SSU5HX09QX0xBU1QsXG5kaWZmIC0tZ2l0IGEvaW9fdXJpbmcvb3BkZWYuYyBiL2lvX3VyaW5nL29wZGVmLmNcbmluZGV4IDRlNThlYjEzNDRlYWEzLi4yNWQ5MjI5ZDhmYzAwMiAxMDA2NDRcbi0tLSBhL2lvX3VyaW5nL29wZGVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2lvX3VyaW5nL29wZGVmLmNcbkBAIC01OTEsNiAmIzQzOzU5MSwxNiBAQCBjb25zdCBzdHJ1Y3QgaW9faXNzdWVfZGVmIGlvX2lzc3VlX2RlZnNbXSA9IHtcbiBcdFx0LnByZXBcdFx0XHQ9IGlvX3VyaW5nX2NtZF9wcmVwLFxuIFx0XHQuaXNzdWVcdFx0XHQ9IGlvX3VyaW5nX2NtZCxcbiBcdH0sXG4mIzQzO1x0W0lPUklOR19PUF9GUkVNT1ZFWEFUVFJdID0ge1xuJiM0MztcdFx0Lm5lZWRzX2ZpbGVcdFx0PSAxLFxuJiM0MztcdFx0LnByZXBcdFx0XHQ9IGlvX2ZyZW1vdmV4YXR0cl9wcmVwLFxuJiM0MztcdFx0Lmlzc3VlXHRcdFx0PSBpb19mcmVtb3ZleGF0dHIsXG4mIzQzO1x0fSxcbiYjNDM7XHRbSU9SSU5HX09QX0ZMSVNUWEFUVFJdID0ge1xuJiM0MztcdFx0Lm5lZWRzX2ZpbGVcdFx0PSAxLFxuJiM0MztcdFx0LnByZXBcdFx0XHQ9IGlvX2ZsaXN0eGF0dHJfcHJlcCxcbiYjNDM7XHRcdC5pc3N1ZVx0XHRcdD0gaW9fZmxpc3R4YXR0cixcbiYjNDM7XHR9LFxuIH07XG4gXG4gY29uc3Qgc3RydWN0IGlvX2NvbGRfZGVmIGlvX2NvbGRfZGVmc1tdID0ge1xuQEAgLTg0OSw2ICYjNDM7ODU5LDE0IEBAIGNvbnN0IHN0cnVjdCBpb19jb2xkX2RlZiBpb19jb2xkX2RlZnNbXSA9IHtcbiBcdFx0LnNxZV9jb3B5XHRcdD0gaW9fdXJpbmdfY21kX3NxZV9jb3B5LFxuIFx0XHQuY2xlYW51cFx0XHQ9IGlvX3VyaW5nX2NtZF9jbGVhbnVwLFxuIFx0fSxcbiYjNDM7XHRbSU9SSU5HX09QX0ZSRU1PVkVYQVRUUl0gPSB7XG4mIzQzO1x0XHQubmFtZVx0XHRcdD0gXCYjMzQ7RlJFTU9WRVhBVFRSXCYjMzQ7LFxuJiM0MztcdFx0LmNsZWFudXBcdFx0PSBpb194YXR0cl9jbGVhbnVwLFxuJiM0MztcdH0sXG4mIzQzO1x0W0lPUklOR19PUF9GTElTVFhBVFRSXSA9IHtcbiYjNDM7XHRcdC5uYW1lXHRcdFx0PSBcJiMzNDtGTElTVFhBVFRSXCYjMzQ7LFxuJiM0MztcdFx0LmNsZWFudXBcdFx0PSBpb194YXR0cl9jbGVhbnVwLFxuJiM0MztcdH0sXG4gfTtcbiBcbiBjb25zdCBjaGFyICppb191cmluZ19nZXRfb3Bjb2RlKHU4IG9wY29kZSlcbmRpZmYgLS1naXQgYS9pb191cmluZy94YXR0ci5jIGIvaW9fdXJpbmcveGF0dHIuY1xuaW5kZXggNTMwM2RmM2YyNDdmNGIuLjliNDEwZjkxZWY0Mzc4IDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcveGF0dHIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcveGF0dHIuY1xuQEAgLTE5NSwzICYjNDM7MTk1LDc3IEBAIGludCBpb19zZXR4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuIFx0aW9feGF0dHJfZmluaXNoKHJlcSwgcmV0KTtcbiBcdHJldHVybiBJT1VfQ09NUExFVEU7XG4gfVxuJiM0MztcbiYjNDM7aW50IGlvX2ZyZW1vdmV4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcbiYjNDM7XHRjb25zdCBjaGFyIF9fdXNlciAqbmFtZTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRJTklUX0RFTEFZRURfRklMRU5BTUUoXHUwMDI2aXgtXHUwMDNlZmlsZW5hbWUpO1xuJiM0MztcdG5hbWUgPSB1NjRfdG9fdXNlcl9wdHIoUkVBRF9PTkNFKHNxZS1cdTAwM2VhZGRyKSk7XG4mIzQzO1xuJiM0MztcdGlmIChSRUFEX09OQ0Uoc3FlLVx1MDAzZWFkZHIyKSB8fCBSRUFEX09OQ0Uoc3FlLVx1MDAzZWxlbikgfHwgUkVBRF9PTkNFKHNxZS1cdTAwM2V4YXR0cl9mbGFncykpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0aXgtXHUwMDNlY3R4LmtuYW1lID0ga21hbGxvY19vYmooKml4LVx1MDAzZWN0eC5rbmFtZSk7XG4mIzQzO1x0aWYgKCFpeC1cdTAwM2VjdHgua25hbWUpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gaW1wb3J0X3hhdHRyX25hbWUoaXgtXHUwMDNlY3R4LmtuYW1lLCBuYW1lKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRrZnJlZShpeC1cdTAwM2VjdHgua25hbWUpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJlcS1cdTAwM2VmbGFncyB8PSBSRVFfRl9ORUVEX0NMRUFOVVA7XG4mIzQzO1x0cmVxLVx1MDAzZWZsYWdzIHw9IFJFUV9GX0ZPUkNFX0FTWU5DO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgaW9fZnJlbW92ZXhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRXQVJOX09OX09OQ0UoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBmaWxlX3JlbW92ZXhhdHRyKHJlcS1cdTAwM2VmaWxlLCBpeC1cdTAwM2VjdHgua25hbWUpO1xuJiM0MztcdGlvX3hhdHRyX2ZpbmlzaChyZXEsIHJldCk7XG4mIzQzO1x0cmV0dXJuIElPVV9DT01QTEVURTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IGlvX2ZsaXN0eGF0dHJfcHJlcChzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgY29uc3Qgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGlvX3hhdHRyICppeCA9IGlvX2tpb2NiX3RvX2NtZChyZXEsIHN0cnVjdCBpb194YXR0cik7XG4mIzQzO1xuJiM0MztcdElOSVRfREVMQVlFRF9GSUxFTkFNRShcdTAwMjZpeC1cdTAwM2VmaWxlbmFtZSk7XG4mIzQzO1x0aXgtXHUwMDNlY3R4LmtuYW1lID0gTlVMTDtcbiYjNDM7XHRpeC1cdTAwM2VjdHgua3ZhbHVlID0gTlVMTDtcbiYjNDM7XG4mIzQzO1x0aWYgKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcikpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0aXgtXHUwMDNlY3R4LnZhbHVlID0gdTY0X3RvX3VzZXJfcHRyKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcjIpKTtcbiYjNDM7XHRpeC1cdTAwM2VjdHguc2l6ZSA9IFJFQURfT05DRShzcWUtXHUwMDNlbGVuKTtcbiYjNDM7XHRpeC1cdTAwM2VjdHguZmxhZ3MgPSBSRUFEX09OQ0Uoc3FlLVx1MDAzZXhhdHRyX2ZsYWdzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGl4LVx1MDAzZWN0eC5mbGFncylcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRyZXEtXHUwMDNlZmxhZ3MgfD0gUkVRX0ZfTkVFRF9DTEVBTlVQO1xuJiM0MztcdHJlcS1cdTAwM2VmbGFncyB8PSBSRVFfRl9GT1JDRV9BU1lOQztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IGlvX2ZsaXN0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpb194YXR0ciAqaXggPSBpb19raW9jYl90b19jbWQocmVxLCBzdHJ1Y3QgaW9feGF0dHIpO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdFdBUk5fT05fT05DRShpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9OT05CTE9DSyk7XG4mIzQzO1xuJiM0MztcdHJldCA9IGZpbGVfbGlzdHhhdHRyKHJlcS1cdTAwM2VmaWxlLCBpeC1cdTAwM2VjdHgudmFsdWUsIGl4LVx1MDAzZWN0eC5zaXplKTtcbiYjNDM7XHRpb194YXR0cl9maW5pc2gocmVxLCByZXQpO1xuJiM0MztcdHJldHVybiBJT1VfQ09NUExFVEU7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9pb191cmluZy94YXR0ci5oIGIvaW9fdXJpbmcveGF0dHIuaFxuaW5kZXggOWI0NTlkMmFlOTBjNWEuLmQyNDg3YjQ5YTVkMjFhIDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcveGF0dHIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcveGF0dHIuaFxuQEAgLTEzLDMgJiM0MzsxMyw5IEBAIGludCBpb19mZ2V0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XG4gXG4gaW50IGlvX2dldHhhdHRyX3ByZXAoc3RydWN0IGlvX2tpb2NiICpyZXEsIGNvbnN0IHN0cnVjdCBpb191cmluZ19zcWUgKnNxZSk7XG4gaW50IGlvX2dldHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuJiM0MztcbiYjNDM7aW50IGlvX2ZyZW1vdmV4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpO1xuJiM0MztpbnQgaW9fZnJlbW92ZXhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuJiM0MztcbiYjNDM7aW50IGlvX2ZsaXN0eGF0dHJfcHJlcChzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgY29uc3Qgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKTtcbiYjNDM7aW50IGlvX2ZsaXN0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxuaW5kZXggZjFjMTZmODE3NzQyMDAuLjc5YmY3YzIyMDA5ZGJiIDEwMDY0NFxuLS0tIGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oXG5AQCAtMjUzLDYgJiM0MzsyNTMsMTkgQEAgZW51bSBpb191cmluZ19vcCB7XG4gXHRJT1JJTkdfT1BfRlVURVhfV0FJVCxcbiBcdElPUklOR19PUF9GVVRFWF9XQUtFLFxuIFx0SU9SSU5HX09QX0ZVVEVYX1dBSVRWLFxuJiM0MztcdElPUklOR19PUF9GSVhFRF9GRF9JTlNUQUxMLFxuJiM0MztcdElPUklOR19PUF9GVFJVTkNBVEUsXG4mIzQzO1x0SU9SSU5HX09QX0JJTkQsXG4mIzQzO1x0SU9SSU5HX09QX0xJU1RFTixcbiYjNDM7XHRJT1JJTkdfT1BfUkVDVl9aQyxcbiYjNDM7XHRJT1JJTkdfT1BfRVBPTExfV0FJVCxcbiYjNDM7XHRJT1JJTkdfT1BfUkVBRFZfRklYRUQsXG4mIzQzO1x0SU9SSU5HX09QX1dSSVRFVl9GSVhFRCxcbiYjNDM7XHRJT1JJTkdfT1BfUElQRSxcbiYjNDM7XHRJT1JJTkdfT1BfTk9QMTI4LFxuJiM0MztcdElPUklOR19PUF9VUklOR19DTUQxMjgsXG4mIzQzO1x0SU9SSU5HX09QX0ZSRU1PVkVYQVRUUixcbiYjNDM7XHRJT1JJTkdfT1BfRkxJU1RYQVRUUixcbiBcbiBcdC8qIHRoaXMgZ29lcyBsYXN0LCBvYnZpb3VzbHkgKi9cbiBcdElPUklOR19PUF9MQVNULFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA2OjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lvX2ZyZW1vdmV4YXR0cl9wcmVwJiMzNDssCiAgICAmIzM0O2lvX2ZyZW1vdmV4YXR0ciYjMzQ7LAogICAgJiMzNDtpb19mbGlzdHhhdHRyX3ByZXAmIzM0OywKICAgICYjMzQ7aW9fZmxpc3R4YXR0ciYjMzQ7LAogICAgJiMzNDtmaWxlX2xpc3R4YXR0ciYjMzQ7LAogICAgJiMzNDtmaWxlX3JlbW92ZXhhdHRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgSU9SSU5HX09QX0ZSRU1PVkVYQVRUUiBhbmQgSU9SSU5HX09QX0ZMSVNUWEFUVFIgdG8gaW9fdXJpbmcuIEl0IG1vZGlmaWVzIGNvcmUgaW9fdXJpbmcgYW5kIHhhdHRyIGxvZ2ljLCBtYWtpbmcgaXQgaGlnaGx5IGZ1bmN0aW9uYWwgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDk2MmRmMmNlNGVkZGY2MzQ3NTM1NzJmZWVmZWMzOWM4N2M2NWVmNTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAwNjowNzowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2ludGVybmFsLmggYi9mcy9pbnRlcm5hbC5oCmluZGV4IDM1NWQ5M2Y5MjIwODYxLi5lZTg2YjI0ZGI3OWFkMiAxMDA2NDQKLS0tIGEvZnMvaW50ZXJuYWwuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9pbnRlcm5hbC5oCkBAIC0yOTcsNiAmIzQzOzI5Nyw4IEBAIGludCBmaWxlbmFtZV9zZXR4YXR0cihpbnQgZGZkLCBzdHJ1Y3QgZmlsZW5hbWUgKmZpbGVuYW1lLAogCQkgICAgICB1bnNpZ25lZCBpbnQgbG9va3VwX2ZsYWdzLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KTsKIGludCBzZXR4YXR0cl9jb3B5KGNvbnN0IGNoYXIgX191c2VyICpuYW1lLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KTsKIGludCBpbXBvcnRfeGF0dHJfbmFtZShzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUsIGNvbnN0IGNoYXIgX191c2VyICpuYW1lKTsKJiM0Mztzc2l6ZV90IGZpbGVfbGlzdHhhdHRyKHN0cnVjdCBmaWxlICpmLCBjaGFyIF9fdXNlciAqbGlzdCwgc2l6ZV90IHNpemUpOwomIzQzO2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpOwogCiBpbnQgbWF5X3dyaXRlX3hhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKIApkaWZmIC0tZ2l0IGEvZnMveGF0dHIuYyBiL2ZzL3hhdHRyLmMKaW5kZXggZDU4OTc5MTE1MjAwNzUuLjMxYjhhNWVlZWMxZThjIDEwMDY0NAotLS0gYS9mcy94YXR0ci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL3hhdHRyLmMKQEAgLTk1Myw3ICYjNDM7OTUzLDYgQEAgbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKmQsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSkKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLXN0YXRpYwogc3NpemVfdCBmaWxlX2xpc3R4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgY2hhciBfX3VzZXIgKmxpc3QsIHNpemVfdCBzaXplKQogewogCWF1ZGl0X2ZpbGUoZik7CkBAIC0xMDM2LDcgJiM0MzsxMDM1LDcgQEAgcmVtb3ZleGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmQsIGNvbnN0IGNoYXIgKm5hbWUpCiAJcmV0dXJuIHZmc19yZW1vdmV4YXR0cihpZG1hcCwgZCwgbmFtZSk7CiB9CiAKLXN0YXRpYyBpbnQgZmlsZV9yZW1vdmV4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IHhhdHRyX25hbWUgKmtuYW1lKQomIzQzO2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpCiB7CiAJaW50IGVycm9yID0gbW50X3dhbnRfd3JpdGVfZmlsZShmKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaAppbmRleCA5MDlmYjdhZWE2MzhlYi4uODA1ZjFlMzFmNDkyNTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oCkBAIC0zMTgsNiAmIzQzOzMxOCw4IEBAIGVudW0gaW9fdXJpbmdfb3AgewogCUlPUklOR19PUF9QSVBFLAogCUlPUklOR19PUF9OT1AxMjgsCiAJSU9SSU5HX09QX1VSSU5HX0NNRDEyOCwKJiM0MzsJSU9SSU5HX09QX0ZSRU1PVkVYQVRUUiwKJiM0MzsJSU9SSU5HX09QX0ZMSVNUWEFUVFIsCiAKIAkvKiB0aGlzIGdvZXMgbGFzdCwgb2J2aW91c2x5ICovCiAJSU9SSU5HX09QX0xBU1QsCmRpZmYgLS1naXQgYS9pb191cmluZy9vcGRlZi5jIGIvaW9fdXJpbmcvb3BkZWYuYwppbmRleCA0ZTU4ZWIxMzQ0ZWFhMy4uMjVkOTIyOWQ4ZmMwMDIgMTAwNjQ0Ci0tLSBhL2lvX3VyaW5nL29wZGVmLmMKJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcvb3BkZWYuYwpAQCAtNTkxLDYgJiM0Mzs1OTEsMTYgQEAgY29uc3Qgc3RydWN0IGlvX2lzc3VlX2RlZiBpb19pc3N1ZV9kZWZzW10gPSB7CiAJCS5wcmVwCQkJPSBpb191cmluZ19jbWRfcHJlcCwKIAkJLmlzc3VlCQkJPSBpb191cmluZ19jbWQsCiAJfSwKJiM0MzsJW0lPUklOR19PUF9GUkVNT1ZFWEFUVFJdID0gewomIzQzOwkJLm5lZWRzX2ZpbGUJCT0gMSwKJiM0MzsJCS5wcmVwCQkJPSBpb19mcmVtb3ZleGF0dHJfcHJlcCwKJiM0MzsJCS5pc3N1ZQkJCT0gaW9fZnJlbW92ZXhhdHRyLAomIzQzOwl9LAomIzQzOwlbSU9SSU5HX09QX0ZMSVNUWEFUVFJdID0gewomIzQzOwkJLm5lZWRzX2ZpbGUJCT0gMSwKJiM0MzsJCS5wcmVwCQkJPSBpb19mbGlzdHhhdHRyX3ByZXAsCiYjNDM7CQkuaXNzdWUJCQk9IGlvX2ZsaXN0eGF0dHIsCiYjNDM7CX0sCiB9OwogCiBjb25zdCBzdHJ1Y3QgaW9fY29sZF9kZWYgaW9fY29sZF9kZWZzW10gPSB7CkBAIC04NDksNiAmIzQzOzg1OSwxNCBAQCBjb25zdCBzdHJ1Y3QgaW9fY29sZF9kZWYgaW9fY29sZF9kZWZzW10gPSB7CiAJCS5zcWVfY29weQkJPSBpb191cmluZ19jbWRfc3FlX2NvcHksCiAJCS5jbGVhbnVwCQk9IGlvX3VyaW5nX2NtZF9jbGVhbnVwLAogCX0sCiYjNDM7CVtJT1JJTkdfT1BfRlJFTU9WRVhBVFRSXSA9IHsKJiM0MzsJCS5uYW1lCQkJPSAmIzM0O0ZSRU1PVkVYQVRUUiYjMzQ7LAomIzQzOwkJLmNsZWFudXAJCT0gaW9feGF0dHJfY2xlYW51cCwKJiM0MzsJfSwKJiM0MzsJW0lPUklOR19PUF9GTElTVFhBVFRSXSA9IHsKJiM0MzsJCS5uYW1lCQkJPSAmIzM0O0ZMSVNUWEFUVFImIzM0OywKJiM0MzsJCS5jbGVhbnVwCQk9IGlvX3hhdHRyX2NsZWFudXAsCiYjNDM7CX0sCiB9OwogCiBjb25zdCBjaGFyICppb191cmluZ19nZXRfb3Bjb2RlKHU4IG9wY29kZSkKZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmMgYi9pb191cmluZy94YXR0ci5jCmluZGV4IDUzMDNkZjNmMjQ3ZjRiLi45YjQxMGY5MWVmNDM3OCAxMDA2NDQKLS0tIGEvaW9fdXJpbmcveGF0dHIuYwomIzQzOyYjNDM7JiM0MzsgYi9pb191cmluZy94YXR0ci5jCkBAIC0xOTUsMyAmIzQzOzE5NSw3NyBAQCBpbnQgaW9fc2V0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncykKIAlpb194YXR0cl9maW5pc2gocmVxLCByZXQpOwogCXJldHVybiBJT1VfQ09NUExFVEU7CiB9CiYjNDM7CiYjNDM7aW50IGlvX2ZyZW1vdmV4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTsKJiM0MzsJY29uc3QgY2hhciBfX3VzZXIgKm5hbWU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CUlOSVRfREVMQVlFRF9GSUxFTkFNRSgmYW1wO2l4LSZndDtmaWxlbmFtZSk7CiYjNDM7CW5hbWUgPSB1NjRfdG9fdXNlcl9wdHIoUkVBRF9PTkNFKHNxZS0mZ3Q7YWRkcikpOwomIzQzOwomIzQzOwlpZiAoUkVBRF9PTkNFKHNxZS0mZ3Q7YWRkcjIpIHx8IFJFQURfT05DRShzcWUtJmd0O2xlbikgfHwgUkVBRF9PTkNFKHNxZS0mZ3Q7eGF0dHJfZmxhZ3MpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWl4LSZndDtjdHgua25hbWUgPSBrbWFsbG9jX29iaigqaXgtJmd0O2N0eC5rbmFtZSk7CiYjNDM7CWlmICghaXgtJmd0O2N0eC5rbmFtZSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlyZXQgPSBpbXBvcnRfeGF0dHJfbmFtZShpeC0mZ3Q7Y3R4LmtuYW1lLCBuYW1lKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJa2ZyZWUoaXgtJmd0O2N0eC5rbmFtZSk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJlcS0mZ3Q7ZmxhZ3MgfD0gUkVRX0ZfTkVFRF9DTEVBTlVQOwomIzQzOwlyZXEtJmd0O2ZsYWdzIHw9IFJFUV9GX0ZPUkNFX0FTWU5DOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IGlvX2ZyZW1vdmV4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKQomIzQzO3sKJiM0MzsJc3RydWN0IGlvX3hhdHRyICppeCA9IGlvX2tpb2NiX3RvX2NtZChyZXEsIHN0cnVjdCBpb194YXR0cik7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CVdBUk5fT05fT05DRShpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKTsKJiM0MzsKJiM0MzsJcmV0ID0gZmlsZV9yZW1vdmV4YXR0cihyZXEtJmd0O2ZpbGUsIGl4LSZndDtjdHgua25hbWUpOwomIzQzOwlpb194YXR0cl9maW5pc2gocmVxLCByZXQpOwomIzQzOwlyZXR1cm4gSU9VX0NPTVBMRVRFOwomIzQzO30KJiM0MzsKJiM0MztpbnQgaW9fZmxpc3R4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTsKJiM0MzsKJiM0MzsJSU5JVF9ERUxBWUVEX0ZJTEVOQU1FKCZhbXA7aXgtJmd0O2ZpbGVuYW1lKTsKJiM0MzsJaXgtJmd0O2N0eC5rbmFtZSA9IE5VTEw7CiYjNDM7CWl4LSZndDtjdHgua3ZhbHVlID0gTlVMTDsKJiM0MzsKJiM0MzsJaWYgKFJFQURfT05DRShzcWUtJmd0O2FkZHIpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWl4LSZndDtjdHgudmFsdWUgPSB1NjRfdG9fdXNlcl9wdHIoUkVBRF9PTkNFKHNxZS0mZ3Q7YWRkcjIpKTsKJiM0MzsJaXgtJmd0O2N0eC5zaXplID0gUkVBRF9PTkNFKHNxZS0mZ3Q7bGVuKTsKJiM0MzsJaXgtJmd0O2N0eC5mbGFncyA9IFJFQURfT05DRShzcWUtJmd0O3hhdHRyX2ZsYWdzKTsKJiM0MzsKJiM0MzsJaWYgKGl4LSZndDtjdHguZmxhZ3MpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJcmVxLSZndDtmbGFncyB8PSBSRVFfRl9ORUVEX0NMRUFOVVA7CiYjNDM7CXJlcS0mZ3Q7ZmxhZ3MgfD0gUkVRX0ZfRk9SQ0VfQVNZTkM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztpbnQgaW9fZmxpc3R4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKQomIzQzO3sKJiM0MzsJc3RydWN0IGlvX3hhdHRyICppeCA9IGlvX2tpb2NiX3RvX2NtZChyZXEsIHN0cnVjdCBpb194YXR0cik7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CVdBUk5fT05fT05DRShpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKTsKJiM0MzsKJiM0MzsJcmV0ID0gZmlsZV9saXN0eGF0dHIocmVxLSZndDtmaWxlLCBpeC0mZ3Q7Y3R4LnZhbHVlLCBpeC0mZ3Q7Y3R4LnNpemUpOwomIzQzOwlpb194YXR0cl9maW5pc2gocmVxLCByZXQpOwomIzQzOwlyZXR1cm4gSU9VX0NPTVBMRVRFOwomIzQzO30KZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmggYi9pb191cmluZy94YXR0ci5oCmluZGV4IDliNDU5ZDJhZTkwYzVhLi5kMjQ4N2I0OWE1ZDIxYSAxMDA2NDQKLS0tIGEvaW9fdXJpbmcveGF0dHIuaAomIzQzOyYjNDM7JiM0MzsgYi9pb191cmluZy94YXR0ci5oCkBAIC0xMywzICYjNDM7MTMsOSBAQCBpbnQgaW9fZmdldHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpOwogCiBpbnQgaW9fZ2V0eGF0dHJfcHJlcChzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgY29uc3Qgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKTsKIGludCBpb19nZXR4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTsKJiM0MzsKJiM0MztpbnQgaW9fZnJlbW92ZXhhdHRyX3ByZXAoc3RydWN0IGlvX2tpb2NiICpyZXEsIGNvbnN0IHN0cnVjdCBpb191cmluZ19zcWUgKnNxZSk7CiYjNDM7aW50IGlvX2ZyZW1vdmV4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTsKJiM0MzsKJiM0MztpbnQgaW9fZmxpc3R4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpOwomIzQzO2ludCBpb19mbGlzdHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaAppbmRleCBmMWMxNmY4MTc3NDIwMC4uNzliZjdjMjIwMDlkYmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oCkBAIC0yNTMsNiAmIzQzOzI1MywxOSBAQCBlbnVtIGlvX3VyaW5nX29wIHsKIAlJT1JJTkdfT1BfRlVURVhfV0FJVCwKIAlJT1JJTkdfT1BfRlVURVhfV0FLRSwKIAlJT1JJTkdfT1BfRlVURVhfV0FJVFYsCiYjNDM7CUlPUklOR19PUF9GSVhFRF9GRF9JTlNUQUxMLAomIzQzOwlJT1JJTkdfT1BfRlRSVU5DQVRFLAomIzQzOwlJT1JJTkdfT1BfQklORCwKJiM0MzsJSU9SSU5HX09QX0xJU1RFTiwKJiM0MzsJSU9SSU5HX09QX1JFQ1ZfWkMsCiYjNDM7CUlPUklOR19PUF9FUE9MTF9XQUlULAomIzQzOwlJT1JJTkdfT1BfUkVBRFZfRklYRUQsCiYjNDM7CUlPUklOR19PUF9XUklURVZfRklYRUQsCiYjNDM7CUlPUklOR19PUF9QSVBFLAomIzQzOwlJT1JJTkdfT1BfTk9QMTI4LAomIzQzOwlJT1JJTkdfT1BfVVJJTkdfQ01EMTI4LAomIzQzOwlJT1JJTkdfT1BfRlJFTU9WRVhBVFRSLAomIzQzOwlJT1JJTkdfT1BfRkxJU1RYQVRUUiwKIAogCS8qIHRoaXMgZ29lcyBsYXN0LCBvYnZpb3VzbHkgKi8KIAlJT1JJTkdfT1BfTEFTVCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU5MAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDMwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpb191cmluZyBYYXR0ciBQYXRjaCoqCgpPa2F5LCBzbyB3ZSBoYXZlIGEgbmV3IHBhdGNoIGxhbmRlZCBmb3IgYGlvX3VyaW5nYCB0aGF04oCZcyBpbnRyb2R1Y2luZyBzdXBwb3J0IGZvciBgSU9SSU5HX09QX0ZSRU1PVkVYQVRUUmAgYW5kIGBJT1JJTkdfT1BfRkxJU1RYQVRUUmAuIEV4Y2VsbGVudCEgVGhpcyBsb29rcyBsaWtlIGl0IHRvdWNoZXMgc29tZSBrZXkgYXJlYXMsIHdoaWNoIGlzIHdoYXQgSSYjMzk7ZCBleHBlY3Q6IGBmcy9pbnRlcm5hbC5oYCwgYGZzL3hhdHRyLmNgLCB0aGUgVUFQSSBoZWFkZXJzIChgaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhgIGFuZCB0aGUgdG9vbCYjMzk7cyBpbmNsdWRlKSwgYW5kIHRoZSByZWxldmFudCBpb191cmluZyBpbXBsZW1lbnRhdGlvbiBmaWxlcyAoYGlvX3VyaW5nL29wZGVmLmNgLCBgaW9fdXJpbmcveGF0dHIuY2AsIGBpb191cmluZy94YXR0ci5oYCkuIFRoaXMgaXMgYSBnb29kIHNpZ247IHdlJiMzOTtyZSBwcm9wZXJseSBleHBhbmRpbmcgdGhlIGludGVyZmFjZXMgaGVyZS4KCkVzc2VudGlhbGx5LCB0aGVzZSBuZXcgb3Bjb2RlcyAoYElPUklOR19PUF9GUkVNT1ZFWEFUVFJgLCBgSU9SSU5HX09QX0ZMSVNUWEFUVFJgKSBhcmUgYmVpbmcgbWFwcGVkIGRpcmVjdGx5IHRvIGBpb19mcmVtb3ZleGF0dHJgIGFuZCBgaW9fZmxpc3R4YXR0cmAgd2l0aGluIGBpb191cmluZy94YXR0ci5jYC4gTG9va3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYW5kIGZyb20gdGhlIGRlc2NyaXB0aW9uLCBpdCBzZWVtcyBmdW5jdGlvbmFsbHkgY29tcGxldGUuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBzb21lIHNlcmlvdXMgZnV6emluZyBhbmQgdGVzdGluZy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IHRoZSBrZXkgc3ltYm9scyBhcmUuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBmb2N1cyBvbiB0aGVzZToKKiAgIGBpb19mcmVtb3ZleGF0dHJfcHJlcGAKKiAgIGBpb19mcmVtb3ZleGF0dHJgCiogICBgaW9fZmxpc3R4YXR0cl9wcmVwYAoqICAgYGlvX2ZsaXN0eGF0dHJgCgpJIG5lZWQgdG8gcXVpY2tseSBjaGVjayBgaW9fdXJpbmcveGF0dHIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGUgbWFpbiBvbmUgSSYjMzk7bSBleHBlY3RpbmcgaXMgYENPTkZJR19JT19VUklOR2AsIGJ1dCB0aGVyZSBtYXkgYmUgbW9yZSBzcGVjaWZpYyB4YXR0ci1yZWxhdGVkIGZsYWdzIHRoYXQgaW1wYWN0IHRoZSBiZWhhdmlvci4gTGV0JiMzOTtzIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSXQgaXMgYSBnb29kIHdheSB0byBzZWUgaWYgd2UgbWlzc2VkIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHXy4qWEFUVFImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM2NAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIEh1bnQgZm9yIGlvX3VyaW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBpb191cmluZ2AgYXJlIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgbmF0dXJlIG9mIGBpb191cmluZ2AsIGlzIHRvIGNoZWNrIHRoZSBgaW9fdXJpbmcvS2NvbmZpZ2AgZmlsZS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UsIGdpdmVuIGl0cyB2ZXJ5IG5hbWUuIEhvd2V2ZXIsIGl0JiMzOTtzIGFsc28gYSBwb3NzaWJpbGl0eSB0aGF0IHNvbWUgY29yZSBpbml0aWFsaXphdGlvbi1yZWxhdGVkIHNldHRpbmdzIG1pZ2h0IGJlIGluIHRoZSBtb3JlIGdlbmVyYWwgYGluaXQvS2NvbmZpZ2AgZmlsZSwgc28gSSBuZWVkIHRvIGNvbnNpZGVyIGJvdGguIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGlvX3VyaW5nL0tjb25maWdgIGFuZCBpZiBpdCBpcyBub3QgcHJlc2VudCB0aGVyZSwgSSYjMzk7bGwgdGhlbiBtb3ZlIG9udG8gYGluaXQvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0lPX1VSSU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvTWFrZWZpbGU9Nz1lbmRpZlxuaW9fdXJpbmcvTWFrZWZpbGUtOC1cbmlvX3VyaW5nL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0lPX1VSSU5HKVx0XHQmIzQzOz0gaW9fdXJpbmcubyBvcGRlZi5vIGtidWYubyByc3JjLm8gbm90aWYubyBcXFxuaW9fdXJpbmcvTWFrZWZpbGUtMTAtXHRcdFx0XHRcdHRjdHgubyBmaWxldGFibGUubyBydy5vIHBvbGwubyBcXFxuLS1cbmlvX3VyaW5nL01ha2VmaWxlLTE4LVxuaW9fdXJpbmcvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0lPX1VSSU5HX1pDUlgpXHQmIzQzOz0gemNyeC5vXG5pb191cmluZy9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfSU9fV1EpXHRcdCYjNDM7PSBpby13cS5vXG4tLVxuaW9fdXJpbmcvTWFrZWZpbGU9MjU9b2JqLSQoQ09ORklHX1BST0NfRlMpICYjNDM7PSBmZGluZm8ub1xuaW9fdXJpbmcvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0lPX1VSSU5HX01PQ0tfRklMRSkgJiM0Mzs9IG1vY2tfZmlsZS5vXG5pb191cmluZy9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfSU9fVVJJTkdfQlBGKSAmIzQzOz0gYnBmX2ZpbHRlci5vXG5pb191cmluZy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfSU9fVVJJTkdfQlBGX09QUykgJiM0Mzs9IGJwZi1vcHMub1xuLS1cbmlvX3VyaW5nL2JwZi1vcHMuaD0xMz1zdHJ1Y3QgaW9fdXJpbmdfYnBmX29wcyB7XG4tLVxuaW9fdXJpbmcvYnBmLW9wcy5oLTE5LVxuaW9fdXJpbmcvYnBmLW9wcy5oOjIwOiNpZmRlZiBDT05GSUdfSU9fVVJJTkdfQlBGX09QU1xuaW9fdXJpbmcvYnBmLW9wcy5oLTIxLXZvaWQgaW9fdW5yZWdpc3Rlcl9icGZfb3BzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4KTtcbi0tXG5pb191cmluZy9icGZfZmlsdGVyLmgtNi1cbmlvX3VyaW5nL2JwZl9maWx0ZXIuaDo3OiNpZmRlZiBDT05GSUdfSU9fVVJJTkdfQlBGXG5pb191cmluZy9icGZfZmlsdGVyLmgtOC1cbi0tXG5pb191cmluZy9icGZfZmlsdGVyLmg9NDI9c3RhdGljIGlubGluZSB2b2lkIGlvX2JwZl9maWx0ZXJfY2xvbmUoc3RydWN0IGlvX3Jlc3RyaWN0aW9uICpkc3QsXG4tLVxuaW9fdXJpbmcvYnBmX2ZpbHRlci5oLTQ1LX1cbmlvX3VyaW5nL2JwZl9maWx0ZXIuaDo0NjojZW5kaWYgLyogQ09ORklHX0lPX1VSSU5HX0JQRiAqL1xuaW9fdXJpbmcvYnBmX2ZpbHRlci5oLTQ3LVxuLS1cbmlvX3VyaW5nL3pjcnguaD01ND1zdHJ1Y3QgaW9femNyeF9pZnEge1xuLS1cbmlvX3VyaW5nL3pjcnguaC04NS1cbmlvX3VyaW5nL3pjcnguaDo4NjojaWYgZGVmaW5lZChDT05GSUdfSU9fVVJJTkdfWkNSWClcbmlvX3VyaW5nL3pjcnguaC04Ny1pbnQgaW9femNyeF9jdHJsKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqYXJnLCB1bnNpZ25lZCBucl9hcmcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQ6CgoqKkludmVzdGlnYXRpbmcgRXh0ZW5kZWQgQXR0cmlidXRlICh4YXR0cikgU3VwcG9ydCB3aXRoaW4gdGhlIGBJT19VUklOR2AgQ29udGV4dCoqCgpSaWdodCwgc28gdGhlIHN5c3RlbSBpcyBjb25maWd1cmVkIHRvIHVzZSBgSU9fVVJJTkdgLCB3aGljaCBpcyBhIGtleSBzdGFydGluZyBwb2ludC4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyByZXZvbHZlcyBhcm91bmQgaG93IGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIGhhbmRsZWQgd2l0aGluIHRoaXMgYXN5bmNocm9ub3VzIEkvTyBmcmFtZXdvcmsuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIHhhdHRyIGZ1bmN0aW9uYWxpdHkuCgpJJiMzOTt2ZSBiZWVuIGdpdmVuIGEgbGlzdCBvZiBmb2N1cyBzeW1ib2xzOiBgaW9fZnJlbW92ZXhhdHRyX3ByZXBgLCBgaW9fZnJlbW92ZXhhdHRyYCwgYGlvX2ZsaXN0eGF0dHJfcHJlcGAsIGBpb19mbGlzdHhhdHRyYCwgYGZpbGVfbGlzdHhhdHRyYCwgYW5kIGBmaWxlX3JlbW92ZXhhdHRyYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSBpbW1lZGlhdGVseSBuZWVkIHRvIHplcm8gaW4gb24uIFRoZXkgbG9vayBsaWtlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgcmVtb3ZpbmcgYW5kIGxpc3RpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcyBvbiBmaWxlcywgYm90aCBpbiBhIHN5bmNocm9ub3VzIGFuZCBwb3RlbnRpYWxseSBhc3luY2hyb25vdXMgKGBwcmVwYCBzdWdnZXN0cyBwcmVwZXJhdGlvbiBmb3IgYXN5bmMpLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcm9sZXMgd2l0aGluIHRoZSBgSU9fVVJJTkdgIGVjb3N5c3RlbS4KCkJlZm9yZSBJIGRlbHZlIGludG8gdGhlIGRldGFpbHMgb2YgdGhlc2Ugc3ltYm9scywgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRvIGVuc3VyZSB0aGlzIGlzIHRoZSAqb25seSogY29uZmlndXJhdGlvbiBmb3IgeGF0dHIuIEl0IHdvdWxkIGJlIGEgbmlnaHRtYXJlIHRvIGFzc3VtZSB0aGlzIGlzIHRoZSBvbmx5IG9uZS4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGEgc2Vjb25kYXJ5IHNldHRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHXy4qWEFUVFImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvTWFrZWZpbGU9ND1lcm9mcy1vYmpzIDo9IHN1cGVyLm8gaW5vZGUubyBkYXRhLm8gbmFtZWkubyBkaXIubyBzeXNmcy5vXG5mcy9lcm9mcy9NYWtlZmlsZTo1OmVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSAmIzQzOz0geGF0dHIub1xuZnMvZXJvZnMvTWFrZWZpbGUtNi1lcm9mcy0kKENPTkZJR19FUk9GU19GU19aSVApICYjNDM7PSBkZWNvbXByZXNzb3IubyB6bWFwLm8gemRhdGEubyB6dXRpbC5vXG4tLVxuZnMvZXJvZnMvaW50ZXJuYWwuaD04Nz1zdHJ1Y3QgZXJvZnNfc2JfaW5mbyB7XG4tLVxuZnMvZXJvZnMvaW50ZXJuYWwuaC0xMTEtXHR1MzIgbWV0YV9ibGthZGRyO1xuZnMvZXJvZnMvaW50ZXJuYWwuaDoxMTI6I2lmZGVmIENPTkZJR19FUk9GU19GU19YQVRUUlxuZnMvZXJvZnMvaW50ZXJuYWwuaC0xMTMtXHR1MzIgeGF0dHJfYmxrYWRkcjtcbi0tXG5mcy9lcm9mcy9zdXBlci5jPTI1MD1zdGF0aWMgaW50IGVyb2ZzX3JlYWRfc3VwZXJibG9jayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtMzAzLVx0c2JpLVx1MDAzZW1ldGFfYmxrYWRkciA9IGxlMzJfdG9fY3B1KGRzYi1cdTAwM2VtZXRhX2Jsa2FkZHIpO1xuZnMvZXJvZnMvc3VwZXIuYzozMDQ6I2lmZGVmIENPTkZJR19FUk9GU19GU19YQVRUUlxuZnMvZXJvZnMvc3VwZXIuYy0zMDUtXHRzYmktXHUwMDNleGF0dHJfYmxrYWRkciA9IGxlMzJfdG9fY3B1KGRzYi1cdTAwM2V4YXR0cl9ibGthZGRyKTtcbi0tXG5mcy9lcm9mcy9zdXBlci5jPTM3ND1zdGF0aWMgdm9pZCBlcm9mc19kZWZhdWx0X29wdGlvbnMoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSlcbi0tXG5mcy9lcm9mcy9zdXBlci5jLTM3OS0jZW5kaWZcbmZzL2Vyb2ZzL3N1cGVyLmM6MzgwOlx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSlcbmZzL2Vyb2ZzL3N1cGVyLmMtMzgxLVx0XHRzZXRfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIFhBVFRSX1VTRVIpO1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmM9NDQwPXN0YXRpYyBpbnQgZXJvZnNfZmNfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLFxuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtNDUzLVx0Y2FzZSBPcHRfdXNlcl94YXR0cjpcbmZzL2Vyb2ZzL3N1cGVyLmM6NDU0Olx0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSlcbmZzL2Vyb2ZzL3N1cGVyLmMtNDU1LVx0XHRcdGVycm9yZmMoZmMsIFwmIzM0O3ssbm99dXNlcl94YXR0ciBvcHRpb25zIG5vdCBzdXBwb3J0ZWRcJiMzNDspO1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmM9MTAyMj1zdGF0aWMgaW50IGVyb2ZzX3Nob3dfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGRlbnRyeSAqcm9vdClcbi0tXG5mcy9lcm9mcy9zdXBlci5jLTEwMjYtXG5mcy9lcm9mcy9zdXBlci5jOjEwMjc6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfWEFUVFIpKVxuZnMvZXJvZnMvc3VwZXIuYy0xMDI4LVx0XHRzZXFfcHV0cyhzZXEsIHRlc3Rfb3B0KG9wdCwgWEFUVFJfVVNFUikgP1xuLS1cbmZzL2Vyb2ZzL3hhdHRyLmgtMTItXG5mcy9lcm9mcy94YXR0ci5oOjEzOiNpZmRlZiBDT05GSUdfRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL3hhdHRyLmgtMTQtZXh0ZXJuIGNvbnN0IHN0cnVjdCB4YXR0cl9oYW5kbGVyICogY29uc3QgZXJvZnNfeGF0dHJfaGFuZGxlcnNbXTtcbi0tXG5mcy9lcm9mcy94YXR0ci5oPTIxPXN0YXRpYyBpbmxpbmUgdm9pZCBlcm9mc194YXR0cl9wcmVmaXhlc19jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpIHt9XG4tLVxuZnMvZXJvZnMveGF0dHIuaC0yNC0jZGVmaW5lIGVyb2ZzX3hhdHRyX2hhbmRsZXJzIChOVUxMKVxuZnMvZXJvZnMveGF0dHIuaDoyNTojZW5kaWZcdC8qICFDT05GSUdfRVJPRlNfRlNfWEFUVFIgKi9cbmZzL2Vyb2ZzL3hhdHRyLmgtMjYtXG4tLVxuZnMvZXh0Mi9NYWtlZmlsZT0xMj1DRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxuZnMvZXh0Mi9NYWtlZmlsZS0xMy1cbmZzL2V4dDIvTWFrZWZpbGU6MTQ6ZXh0Mi0kKENPTkZJR19FWFQyX0ZTX1hBVFRSKVx0ICYjNDM7PSB4YXR0ci5vIHhhdHRyX3VzZXIubyB4YXR0cl90cnVzdGVkLm9cbmZzL2V4dDIvTWFrZWZpbGUtMTUtZXh0Mi0kKENPTkZJR19FWFQyX0ZTX1BPU0lYX0FDTCkgJiM0Mzs9IGFjbC5vXG4tLVxuZnMvZXh0Mi9leHQyLmg9NjI3PXN0cnVjdCBleHQyX2lub2RlX2luZm8ge1xuLS1cbmZzL2V4dDIvZXh0Mi5oLTY1MC1cdF9fdTMyXHRpX2Rpcl9zdGFydF9sb29rdXA7XG5mcy9leHQyL2V4dDIuaDo2NTE6I2lmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXG5mcy9leHQyL2V4dDIuaC02NTItXHQvKlxuLS1cbmZzL2V4dDIvc3VwZXIuYz0yMjY9c3RhdGljIHZvaWQgaW5pdF9vbmNlKHZvaWQgKmZvbylcbi0tXG5mcy9leHQyL3N1cGVyLmMtMjMwLVx0cndsb2NrX2luaXQoXHUwMDI2ZWktXHUwMDNlaV9tZXRhX2xvY2spO1xuZnMvZXh0Mi9zdXBlci5jOjIzMTojaWZkZWYgQ09ORklHX0VYVDJfRlNfWEFUVFJcbmZzL2V4dDIvc3VwZXIuYy0yMzItXHRpbml0X3J3c2VtKFx1MDAyNmVpLVx1MDAzZXhhdHRyX3NlbSk7XG4tLVxuZnMvZXh0Mi9zdXBlci5jPTI2MT1zdGF0aWMgaW50IGV4dDJfc2hvd19vcHRpb25zKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZGVudHJ5ICpyb290KVxuLS1cbmZzL2V4dDIvc3VwZXIuYy0zMDctXG5mcy9leHQyL3N1cGVyLmM6MzA4OiNpZmRlZiBDT05GSUdfRVhUMl9GU19YQVRUUlxuZnMvZXh0Mi9zdXBlci5jLTMwOS1cdGlmICh0ZXN0X29wdChzYiwgWEFUVFJfVVNFUikpXG4tLVxuZnMvZXh0Mi9zdXBlci5jPTUxND1zdGF0aWMgaW50IGV4dDJfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSlcbi0tXG5mcy9leHQyL3N1cGVyLmMtNTY3LVx0XHRicmVhaztcbmZzL2V4dDIvc3VwZXIuYzo1Njg6I2lmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXG5mcy9leHQyL3N1cGVyLmMtNTY5LVx0Y2FzZSBPcHRfdXNlcl94YXR0cjpcbi0tXG5mcy9leHQyL3N1cGVyLmM9ODA5PXN0YXRpYyB2b2lkIGV4dDJfc2V0X29wdGlvbnMoc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZXh0Ml9zYl9pbmZvICpzYmkpXG4tLVxuZnMvZXh0Mi9zdXBlci5jLTgzMC1cbmZzL2V4dDIvc3VwZXIuYzo4MzE6I2lmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXG5mcy9leHQyL3N1cGVyLmMtODMyLVx0aWYgKCFjdHhfcGFyc2VkX21vdW50X29wdChjdHgsIEVYVDJfTU9VTlRfWEFUVFJfVVNFUikgXHUwMDI2XHUwMDI2XG4tLVxuZnMvZXh0Mi9zdXBlci5jPTg2ND1zdGF0aWMgaW50IGV4dDJfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxuZnMvZXh0Mi9zdXBlci5jLTExNjEtXG5mcy9leHQyL3N1cGVyLmM6MTE2MjojaWZkZWYgQ09ORklHX0VYVDJfRlNfWEFUVFJcbmZzL2V4dDIvc3VwZXIuYy0xMTYzLVx0c2JpLVx1MDAzZXNfZWFfYmxvY2tfY2FjaGUgPSBleHQyX3hhdHRyX2NyZWF0ZV9jYWNoZSgpO1xuLS1cbmZzL2V4dDIveGF0dHIuaD01Nz1zdHJ1Y3QgbWJfY2FjaGU7XG5mcy9leHQyL3hhdHRyLmgtNTgtXG5mcy9leHQyL3hhdHRyLmg6NTk6IyBpZmRlZiBDT05GSUdfRVhUMl9GU19YQVRUUlxuZnMvZXh0Mi94YXR0ci5oLTYwLVxuLS1cbmZzL2V4dDIveGF0dHIuaD03NT1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgKiBjb25zdCBleHQyX3hhdHRyX2hhbmRsZXJzW107XG5mcy9leHQyL3hhdHRyLmgtNzYtXG5mcy9leHQyL3hhdHRyLmg6Nzc6IyBlbHNlICAvKiBDT05GSUdfRVhUMl9GU19YQVRUUiAqL1xuZnMvZXh0Mi94YXR0ci5oLTc4LVxuLS1cbmZzL2V4dDIveGF0dHIuaD05OD1zdGF0aWMgaW5saW5lIHZvaWQgZXh0Ml94YXR0cl9kZXN0cm95X2NhY2hlKHN0cnVjdCBtYl9jYWNoZSAqY2FjaGUpXG4tLVxuZnMvZXh0Mi94YXR0ci5oLTEwNC1cbmZzL2V4dDIveGF0dHIuaDoxMDU6IyBlbmRpZiAgLyogQ09ORklHX0VYVDJfRlNfWEFUVFIgKi9cbmZzL2V4dDIveGF0dHIuaC0xMDYtXG4tLVxuZnMvZjJmcy9NYWtlZmlsZT03PWYyZnMtJChDT05GSUdfRjJGU19TVEFUX0ZTKSAmIzQzOz0gZGVidWcub1xuZnMvZjJmcy9NYWtlZmlsZTo4OmYyZnMtJChDT05GSUdfRjJGU19GU19YQVRUUikgJiM0Mzs9IHhhdHRyLm9cbmZzL2YyZnMvTWFrZWZpbGUtOS1mMmZzLSQoQ09ORklHX0YyRlNfRlNfUE9TSVhfQUNMKSAmIzQzOz0gYWNsLm9cbi0tXG5mcy9mMmZzL3N1cGVyLmM9NzkwPXN0YXRpYyBpbnQgZjJmc19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxuLS1cbmZzL2YyZnMvc3VwZXIuYy04MjgtXHRcdGJyZWFrO1xuZnMvZjJmcy9zdXBlci5jOjgyOTojaWZkZWYgQ09ORklHX0YyRlNfRlNfWEFUVFJcbmZzL2YyZnMvc3VwZXIuYy04MzAtXHRjYXNlIE9wdF91c2VyX3hhdHRyOlxuLS1cbmZzL2YyZnMvc3VwZXIuYz0yMzc1PXN0YXRpYyBpbnQgZjJmc19zaG93X29wdGlvbnMoc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBkZW50cnkgKnJvb3QpXG4tLVxuZnMvZjJmcy9zdXBlci5jLTI0MDUtXHR9XG5mcy9mMmZzL3N1cGVyLmM6MjQwNjojaWZkZWYgQ09ORklHX0YyRlNfRlNfWEFUVFJcbmZzL2YyZnMvc3VwZXIuYy0yNDA3LVx0aWYgKHRlc3Rfb3B0KHNiaSwgWEFUVFJfVVNFUikpXG4tLVxuZnMvZjJmcy9zdXBlci5jPTI1NDk9c3RhdGljIHZvaWQgZGVmYXVsdF9vcHRpb25zKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYm9vbCByZW1vdW50KVxuLS1cbmZzL2YyZnMvc3VwZXIuYy0yNjAxLVxuZnMvZjJmcy9zdXBlci5jOjI2MDI6I2lmZGVmIENPTkZJR19GMkZTX0ZTX1hBVFRSXG5mcy9mMmZzL3N1cGVyLmMtMjYwMy1cdHNldF9vcHQoc2JpLCBYQVRUUl9VU0VSKTtcbi0tXG5mcy9mMmZzL3hhdHRyLmg9NDg9c3RydWN0IGYyZnNfeGF0dHJfZW50cnkge1xuLS1cbmZzL2YyZnMveGF0dHIuaC0xMjMtXG5mcy9mMmZzL3hhdHRyLmg6MTI0OiNpZmRlZiBDT05GSUdfRjJGU19GU19YQVRUUlxuZnMvZjJmcy94YXR0ci5oLTEyNS1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgZjJmc194YXR0cl91c2VyX2hhbmRsZXI7XG4tLVxuZnMvamZmczIvTWFrZWZpbGU9MTQ9amZmczItJChDT05GSUdfSkZGUzJfRlNfV1JJVEVCVUZGRVIpXHQmIzQzOz0gd2J1Zi5vXG5mcy9qZmZzMi9NYWtlZmlsZToxNTpqZmZzMi0kKENPTkZJR19KRkZTMl9GU19YQVRUUilcdFx0JiM0Mzs9IHhhdHRyLm8geGF0dHJfdHJ1c3RlZC5vIHhhdHRyX3VzZXIub1xuZnMvamZmczIvTWFrZWZpbGUtMTYtamZmczItJChDT05GSUdfSkZGUzJfRlNfU0VDVVJJVFkpXHQmIzQzOz0gc2VjdXJpdHkub1xuLS1cbmZzL2pmZnMyL2VyYXNlLmM9MjA2PXN0YXRpYyBpbmxpbmUgdm9pZCBqZmZzMl9yZW1vdmVfbm9kZV9yZWZzX2Zyb21faW5vX2xpc3Qoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsXG4tLVxuZnMvamZmczIvZXJhc2UuYy0yNzItXHRzd2l0Y2ggKGljLVx1MDAzZWNsYXNzKSB7XG5mcy9qZmZzMi9lcmFzZS5jOjI3MzojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9lcmFzZS5jLTI3NC1cdFx0Y2FzZSBSQVdOT0RFX0NMQVNTX1hBVFRSX0RBVFVNOlxuLS1cbmZzL2pmZnMyL2djLmM9MTI0PWludCBqZmZzMl9nYXJiYWdlX2NvbGxlY3RfcGFzcyhzdHJ1Y3QgamZmczJfc2JfaW5mbyAqYylcbi0tXG5mcy9qZmZzMi9nYy5jLTMyOC1cbmZzL2pmZnMyL2djLmM6MzI5OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL2djLmMtMzMwLVx0LyogV2hlbiAmIzM5O2ljJiMzOTsgcmVmZXJzIHhhdHRyX2RhdHVtL3hhdHRyX3JlZiwgdGhpcyBub2RlIGlzIEdDZWQgYXMgeGF0dHIuXG4tLVxuZnMvamZmczIvamZmczJfZnNfc2IuaD00OT1zdHJ1Y3QgamZmczJfc2JfaW5mbyB7XG4tLVxuZnMvamZmczIvamZmczJfZnNfc2IuaC0xNDUtXG5mcy9qZmZzMi9qZmZzMl9mc19zYi5oOjE0NjojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9qZmZzMl9mc19zYi5oLTE0Ny0jZGVmaW5lIFhBVFRSSU5ERVhfSEFTSFNJWkVcdCg1Nylcbi0tXG5mcy9qZmZzMi9tYWxsb2MuYz0yOD1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmlub2RlX2NhY2hlX3NsYWI7XG5mcy9qZmZzMi9tYWxsb2MuYzoyOTojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9tYWxsb2MuYy0zMC1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKnhhdHRyX2RhdHVtX2NhY2hlO1xuLS1cbmZzL2pmZnMyL21hbGxvYy5jPTM0PWludCBfX2luaXQgamZmczJfY3JlYXRlX3NsYWJfY2FjaGVzKHZvaWQpXG4tLVxuZnMvamZmczIvbWFsbG9jLmMtNjUtXG5mcy9qZmZzMi9tYWxsb2MuYzo2NjojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9tYWxsb2MuYy02Ny1cdHhhdHRyX2RhdHVtX2NhY2hlID0gS01FTV9DQUNIRShqZmZzMl94YXR0cl9kYXR1bSwgMCk7XG4tLVxuZnMvamZmczIvbWFsbG9jLmM9ODI9dm9pZCBqZmZzMl9kZXN0cm95X3NsYWJfY2FjaGVzKHZvaWQpXG4tLVxuZnMvamZmczIvbWFsbG9jLmMtOTAtXHRrbWVtX2NhY2hlX2Rlc3Ryb3koaW5vZGVfY2FjaGVfc2xhYik7XG5mcy9qZmZzMi9tYWxsb2MuYzo5MTojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9tYWxsb2MuYy05Mi1cdGttZW1fY2FjaGVfZGVzdHJveSh4YXR0cl9kYXR1bV9jYWNoZSk7XG4tLVxuZnMvamZmczIvbWFsbG9jLmM9MjU0PXZvaWQgamZmczJfZnJlZV9pbm9kZV9jYWNoZShzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKngpXG4tLVxuZnMvamZmczIvbWFsbG9jLmMtMjU5LVxuZnMvamZmczIvbWFsbG9jLmM6MjYwOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL21hbGxvYy5jLTI2MS1zdHJ1Y3QgamZmczJfeGF0dHJfZGF0dW0gKmpmZnMyX2FsbG9jX3hhdHRyX2RhdHVtKHZvaWQpXG4tLVxuZnMvamZmczIvbm9kZWxpc3QuYz00NTc9dm9pZCBqZmZzMl9kZWxfaW5vX2NhY2hlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKm9sZClcbi0tXG5mcy9qZmZzMi9ub2RlbGlzdC5jLTQ2MC1cbmZzL2pmZnMyL25vZGVsaXN0LmM6NDYxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL25vZGVsaXN0LmMtNDYyLVx0QlVHX09OKG9sZC1cdTAwM2V4cmVmKTtcbi0tXG5mcy9qZmZzMi9ub2RlbGlzdC5oPTE1OD1zdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUge1xuLS1cbmZzL2pmZnMyL25vZGVsaXN0LmgtMTc1LVx0c3RydWN0IGpmZnMyX2lub2RlX2NhY2hlICpuZXh0O1xuZnMvamZmczIvbm9kZWxpc3QuaDoxNzY6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxuZnMvamZmczIvbm9kZWxpc3QuaC0xNzctXHRzdHJ1Y3QgamZmczJfeGF0dHJfcmVmICp4cmVmO1xuLS1cbmZzL2pmZnMyL25vZGVsaXN0Lmg9NDQxPXZvaWQgamZmczJfZnJlZV9pbm9kZV9jYWNoZShzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKik7XG5mcy9qZmZzMi9ub2RlbGlzdC5oOjQ0MjojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9ub2RlbGlzdC5oLTQ0My1zdHJ1Y3QgamZmczJfeGF0dHJfZGF0dW0gKmpmZnMyX2FsbG9jX3hhdHRyX2RhdHVtKHZvaWQpO1xuLS1cbmZzL2pmZnMyL25vZGVtZ210LmM9NTg2PXZvaWQgamZmczJfbWFya19ub2RlX29ic29sZXRlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfcmF3X25vZGVfcmVmICpyZWYpXG4tLVxuZnMvamZmczIvbm9kZW1nbXQuYy04MjMtXHRcdHN3aXRjaCAoaWMtXHUwMDNlY2xhc3MpIHtcbmZzL2pmZnMyL25vZGVtZ210LmM6ODI0OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL25vZGVtZ210LmMtODI1LVx0XHRcdGNhc2UgUkFXTk9ERV9DTEFTU19YQVRUUl9EQVRVTTpcbi0tXG5mcy9qZmZzMi9zY2FuLmM9MzEyPWludCBqZmZzMl9zY2FuX2NsYXNzaWZ5X2plYihzdHJ1Y3QgamZmczJfc2JfaW5mbyAqYywgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmplYilcbi0tXG5mcy9qZmZzMi9zY2FuLmMtMzMwLVxuZnMvamZmczIvc2Nhbi5jOjMzMTojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9zY2FuLmMtMzMyLXN0YXRpYyBpbnQgamZmczJfc2Nhbl94YXR0cl9ub2RlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViLFxuLS1cbmZzL2pmZnMyL3NjYW4uYz00NDc9c3RhdGljIGludCBqZmZzMl9zY2FuX2VyYXNlYmxvY2sgKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViLFxuLS1cbmZzL2pmZnMyL3NjYW4uYy04MzUtXG5mcy9qZmZzMi9zY2FuLmM6ODM2OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL3NjYW4uYy04MzctXHRcdGNhc2UgSkZGUzJfTk9ERVRZUEVfWEFUVFI6XG4tLVxuZnMvamZmczIvc2Nhbi5jLTg3MC1cdFx0XHRicmVhaztcbmZzL2pmZnMyL3NjYW4uYzo4NzE6I2VuZGlmXHQvKiBDT05GSUdfSkZGUzJfRlNfWEFUVFIgKi9cbmZzL2pmZnMyL3NjYW4uYy04NzItXG4tLVxuZnMvamZmczIvc3VtbWFyeS5jPTYzPXN0YXRpYyBpbnQgamZmczJfc3VtX2FkZF9tZW0oc3RydWN0IGpmZnMyX3N1bW1hcnkgKnMsIHVuaW9uIGpmZnMyX3N1bV9tZW0gKml0ZW0pXG4tLVxuZnMvamZmczIvc3VtbWFyeS5jLTgzLVx0XHRcdGJyZWFrO1xuZnMvamZmczIvc3VtbWFyeS5jOjg0OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL3N1bW1hcnkuYy04NS1cdFx0Y2FzZSBKRkZTMl9OT0RFVFlQRV9YQVRUUjpcbi0tXG5mcy9qZmZzMi9zdW1tYXJ5LmM9MTMzPWludCBqZmZzMl9zdW1fYWRkX2RpcmVudF9tZW0oc3RydWN0IGpmZnMyX3N1bW1hcnkgKnMsIHN0cnVjdCBqZmZzMl9yYXdfZGlyZW50ICpyZCxcbi0tXG5mcy9qZmZzMi9zdW1tYXJ5LmMtMTU2LVxuZnMvamZmczIvc3VtbWFyeS5jOjE1NzojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9zdW1tYXJ5LmMtMTU4LWludCBqZmZzMl9zdW1fYWRkX3hhdHRyX21lbShzdHJ1Y3QgamZmczJfc3VtbWFyeSAqcywgc3RydWN0IGpmZnMyX3Jhd194YXR0ciAqcngsIHVpbnQzMl90IG9mcylcbi0tXG5mcy9qZmZzMi9zdW1tYXJ5LmM9MjQ4PWludCBqZmZzMl9zdW1fYWRkX2t2ZWMoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsIGNvbnN0IHN0cnVjdCBrdmVjICppbnZlY3MsXG4tLVxuZnMvamZmczIvc3VtbWFyeS5jLTMxMy1cdFx0fVxuZnMvamZmczIvc3VtbWFyeS5jOjMxNDojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9zdW1tYXJ5LmMtMzE1LVx0XHRjYXNlIEpGRlMyX05PREVUWVBFX1hBVFRSOiB7XG4tLVxuZnMvamZmczIvc3VtbWFyeS5jPTM4Nj1zdGF0aWMgaW50IGpmZnMyX3N1bV9wcm9jZXNzX3N1bV9kYXRhKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViLFxuLS1cbmZzL2pmZnMyL3N1bW1hcnkuYy00ODktXHRcdFx0fVxuZnMvamZmczIvc3VtbWFyeS5jOjQ5MDojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXG5mcy9qZmZzMi9zdW1tYXJ5LmMtNDkxLVx0XHRcdGNhc2UgSkZGUzJfTk9ERVRZUEVfWEFUVFI6IHtcbi0tXG5mcy9qZmZzMi9zdW1tYXJ5LmM9Njc0PXN0YXRpYyBpbnQgamZmczJfc3VtX3dyaXRlX2RhdGEoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsIHN0cnVjdCBqZmZzMl9lcmFzZWJsb2NrICpqZWIsXG4tLVxuZnMvamZmczIvc3VtbWFyeS5jLTc1NC1cdFx0XHR9XG5mcy9qZmZzMi9zdW1tYXJ5LmM6NzU1OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL3N1bW1hcnkuYy03NTYtXHRcdFx0Y2FzZSBKRkZTMl9OT0RFVFlQRV9YQVRUUjoge1xuLS1cbmZzL2pmZnMyL3hhdHRyLmg9NjY9c3RhdGljIGlubGluZSBpbnQgaXNfeGF0dHJfcmVmX2RlYWQoc3RydWN0IGpmZnMyX3hhdHRyX3JlZiAqcmVmKVxuLS1cbmZzL2pmZnMyL3hhdHRyLmgtNzAtXG5mcy9qZmZzMi94YXR0ci5oOjcxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcbmZzL2pmZnMyL3hhdHRyLmgtNzItXG4tLVxuZnMvamZmczIveGF0dHIuaD0xMDE9ZXh0ZXJuIHNzaXplX3QgamZmczJfbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBzaXplX3QpO1xuLS1cbmZzL2pmZnMyL3hhdHRyLmgtMTE2LVxuZnMvamZmczIveGF0dHIuaDoxMTc6I2VuZGlmIC8qIENPTkZJR19KRkZTMl9GU19YQVRUUiAqL1xuZnMvamZmczIveGF0dHIuaC0xMTgtXG4tLVxuZnMvbmlsZnMyL25pbGZzLmg9NDA9c3RydWN0IG5pbGZzX2lub2RlX2luZm8ge1xuLS1cbmZzL25pbGZzMi9uaWxmcy5oLTUxLVxuZnMvbmlsZnMyL25pbGZzLmg6NTI6I2lmZGVmIENPTkZJR19OSUxGU19YQVRUUlxuZnMvbmlsZnMyL25pbGZzLmgtNTMtXHQvKlxuLS1cbmZzL25pbGZzMi9zdXBlci5jPTEzMTQ9c3RhdGljIHZvaWQgbmlsZnNfaW5vZGVfaW5pdF9vbmNlKHZvaWQgKm9iailcbi0tXG5mcy9uaWxmczIvc3VwZXIuYy0xMzE4LVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2aWktXHUwMDNlaV9kaXJ0eSk7XG5mcy9uaWxmczIvc3VwZXIuYzoxMzE5OiNpZmRlZiBDT05GSUdfTklMRlNfWEFUVFJcbmZzL25pbGZzMi9zdXBlci5jLTEzMjAtXHRpbml0X3J3c2VtKFx1MDAyNmlpLVx1MDAzZXhhdHRyX3NlbSk7XG4tLVxuZnMvc21iL2NsaWVudC9NYWtlZmlsZT0xOT0kKG9iaikvY2lmc19zcG5lZ29fbmVndG9rZW5pbml0LmFzbjEubzogJChvYmopL2NpZnNfc3BuZWdvX25lZ3Rva2VuaW5pdC5hc24xLmMgJChvYmopL2NpZnNfc3BuZWdvX25lZ3Rva2VuaW5pdC5hc24xLmhcbmZzL3NtYi9jbGllbnQvTWFrZWZpbGUtMjAtXG5mcy9zbWIvY2xpZW50L01ha2VmaWxlOjIxOmNpZnMtJChDT05GSUdfQ0lGU19YQVRUUikgJiM0Mzs9IHhhdHRyLm9cbmZzL3NtYi9jbGllbnQvTWFrZWZpbGUtMjItXG4tLVxuZnMvc21iL2NsaWVudC9jaWZzX2RlYnVnLmM9NDM4PXN0YXRpYyBpbnQgY2lmc19kZWJ1Z19kYXRhX3Byb2Nfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuZnMvc21iL2NsaWVudC9jaWZzX2RlYnVnLmMtNDgyLSNlbmRpZlxuZnMvc21iL2NsaWVudC9jaWZzX2RlYnVnLmM6NDgzOiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxuZnMvc21iL2NsaWVudC9jaWZzX2RlYnVnLmMtNDg0LVx0c2VxX3ByaW50ZihtLCBcJiMzNDssWEFUVFJcJiMzNDspO1xuLS1cbmZzL3NtYi9jbGllbnQvY2lmc2ZzLmg9MTMyPWludCBjaWZzX3N5bWxpbmsoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvc21iL2NsaWVudC9jaWZzZnMuaC0xMzQtXG5mcy9zbWIvY2xpZW50L2NpZnNmcy5oOjEzNTojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvY2lmc2ZzLmgtMTM2LWV4dGVybiBjb25zdCBzdHJ1Y3QgeGF0dHJfaGFuZGxlciAqIGNvbnN0IGNpZnNfeGF0dHJfaGFuZGxlcnNbXTtcbi0tXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYz0zMDg1PXN0cnVjdCBpbm9kZSAqY2lmc19jcmVhdGVfcmVwYXJzZV9pbm9kZShzdHJ1Y3QgY2lmc19vcGVuX2luZm9fZGF0YSAqZGF0YSxcbi0tXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy0zMTE1LVxuZnMvc21iL2NsaWVudC9jaWZzc21iLmM6MzExNjojaWZuZGVmIENPTkZJR19DSUZTX1hBVFRSXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy0zMTE3LVx0aWYgKHhhdHRyX2lvdilcbi0tXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy0zMTMxLVxuZnMvc21iL2NsaWVudC9jaWZzc21iLmM6MzEzMjojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jLTMxMzMtXHRpZiAoeGF0dHJfaW92KSB7XG4tLVxuZnMvc21iL2NsaWVudC9jaWZzc21iLmM9NjAyNz1DSUZTU01CVW5peFNldFBhdGhJbmZvKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRjb24sXG4tLVxuZnMvc21iL2NsaWVudC9jaWZzc21iLmMtNjEwMS1cbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jOjYxMDI6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy02MTAzLS8qXG4tLVxuZnMvc21iL2NsaWVudC9pbm9kZS5jPTcyMT1zdGF0aWMgaW50IGNpZnNfc2Z1X21vZGUoc3RydWN0IGNpZnNfZmF0dHIgKmZhdHRyLCBjb25zdCB1bnNpZ25lZCBjaGFyICpwYXRoLFxuLS1cbmZzL3NtYi9jbGllbnQvaW5vZGUuYy03MjMte1xuZnMvc21iL2NsaWVudC9pbm9kZS5jOjcyNDojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvaW5vZGUuYy03MjUtXHRzc2l6ZV90IHJjO1xuLS1cbmZzL3NtYi9jbGllbnQvc21iMW9wcy5jPTUzMj1zdGF0aWMgaW50IGNpZnNfcXVlcnlfcGF0aF9pbmZvKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsXG4tLVxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmMtNjQyLVxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmM6NjQzOiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmMtNjQ0LVx0Lypcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYz0xMzkzPXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjFfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYy0xNDY5LVx0LnNlbGVjdF9zZWN0eXBlID0gY2lmc19zZWxlY3Rfc2VjdHlwZSxcbmZzL3NtYi9jbGllbnQvc21iMW9wcy5jOjE0NzA6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYy0xNDcxLVx0LnF1ZXJ5X2FsbF9FQXMgPSBDSUZTU01CUUFsbEVBcyxcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz0xMDMxPXN0YXRpYyBpbnQgc21iMl9xdWVyeV9maWxlX2luZm8oY29uc3QgdW5zaWduZWQgaW50IHhpZCwgc3RydWN0IGNpZnNfdGNvbiAqdGNvbixcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy0xMDQ0LVxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6MTA0NTojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTEwNDYtc3RhdGljIHNzaXplX3Rcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01NTQyPXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjIwX29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmMtNTYyNS1cdC5zZWxlY3Rfc2VjdHlwZSA9IHNtYjJfc2VsZWN0X3NlY3R5cGUsXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYzo1NjI2OiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmMtNTYyNy1cdC5xdWVyeV9hbGxfRUFzID0gc21iMl9xdWVyeV9lYXMsXG4tLVxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM9NTY0ND1zdHJ1Y3Qgc21iX3ZlcnNpb25fb3BlcmF0aW9ucyBzbWIyMV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTU3MzAtXHQuc2VsZWN0X3NlY3R5cGUgPSBzbWIyX3NlbGVjdF9zZWN0eXBlLFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6NTczMTojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTU3MzItXHQucXVlcnlfYWxsX0VBcyA9IHNtYjJfcXVlcnlfZWFzLFxuLS1cbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jPTU3NDg9c3RydWN0IHNtYl92ZXJzaW9uX29wZXJhdGlvbnMgc21iMzBfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01ODQ2LVx0LnNlbGVjdF9zZWN0eXBlID0gc21iMl9zZWxlY3Rfc2VjdHlwZSxcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jOjU4NDc6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01ODQ4LVx0LnF1ZXJ5X2FsbF9FQXMgPSBzbWIyX3F1ZXJ5X2Vhcyxcbi0tXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01ODY0PXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjMxMV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTU5NjItXHQuc2VsZWN0X3NlY3R5cGUgPSBzbWIyX3NlbGVjdF9zZWN0eXBlLFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6NTk2MzojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTU5NjQtXHQucXVlcnlfYWxsX0VBcyA9IHNtYjJfcXVlcnlfZWFzLFxuLS1cbmZzL3NxdWFzaGZzL01ha2VmaWxlPTEzPXNxdWFzaGZzLSQoQ09ORklHX1NRVUFTSEZTX0RFQ09NUF9NVUxUSV9QRVJDUFUpICYjNDM7PSBkZWNvbXByZXNzb3JfbXVsdGlfcGVyY3B1Lm9cbmZzL3NxdWFzaGZzL01ha2VmaWxlOjE0OnNxdWFzaGZzLSQoQ09ORklHX1NRVUFTSEZTX1hBVFRSKSAmIzQzOz0geGF0dHIubyB4YXR0cl9pZC5vXG5mcy9zcXVhc2hmcy9NYWtlZmlsZS0xNS1zcXVhc2hmcy0kKENPTkZJR19TUVVBU0hGU19MWjQpICYjNDM7PSBsejRfd3JhcHBlci5vXG4tLVxuZnMvc3F1YXNoZnMveGF0dHIuaC0xMC1cbmZzL3NxdWFzaGZzL3hhdHRyLmg6MTE6I2lmZGVmIENPTkZJR19TUVVBU0hGU19YQVRUUlxuZnMvc3F1YXNoZnMveGF0dHIuaC0xMi1leHRlcm4gX19sZTY0ICpzcXVhc2hmc19yZWFkX3hhdHRyX2lkX3RhYmxlKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1NjQsXG4tLVxuZnMvdWJpZnMvTWFrZWZpbGU9OT11Ymlmcy0kKENPTkZJR19GU19FTkNSWVBUSU9OKSAmIzQzOz0gY3J5cHRvLm9cbmZzL3ViaWZzL01ha2VmaWxlOjEwOnViaWZzLSQoQ09ORklHX1VCSUZTX0ZTX1hBVFRSKSAmIzQzOz0geGF0dHIub1xuZnMvdWJpZnMvTWFrZWZpbGUtMTEtdWJpZnMtJChDT05GSUdfVUJJRlNfRlNfQVVUSEVOVElDQVRJT04pICYjNDM7PSBhdXRoLm9cbi0tXG5mcy91Ymlmcy91Ymlmcy5oPTIwMzQ9c3NpemVfdCB1Ymlmc194YXR0cl9nZXQoc3RydWN0IGlub2RlICpob3N0LCBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpidWYsXG4tLVxuZnMvdWJpZnMvdWJpZnMuaC0yMDM2LVxuZnMvdWJpZnMvdWJpZnMuaDoyMDM3OiNpZmRlZiBDT05GSUdfVUJJRlNfRlNfWEFUVFJcbmZzL3ViaWZzL3ViaWZzLmgtMjAzOC1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgKiBjb25zdCB1Ymlmc194YXR0cl9oYW5kbGVyc1tdO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTUwCgkJCQkJCQlvdXRwdXQ6IDE0MgoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJT19VUklORyBYQVRUUiBGdW5jdGlvbiBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHBsYXkgaGVyZSBpcyBkZWZpbml0ZWx5IGBJT19VUklOR2AuIE15IGN1cnJlbnQgdGFyZ2V0IGlzIHVuZGVyc3RhbmRpbmcgaG93IGV4dGVuZGVkIGF0dHJpYnV0ZXMgKHhhdHRycykgYXJlIGhhbmRsZWQgd2l0aCB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIFRoZSBmb2N1cyBzeW1ib2xzIGdpdmUgbWUgYSBzdHJvbmcgc3RhcnRpbmcgcG9pbnQ6IGBpb19mcmVtb3ZleGF0dHJfcHJlcGAsIGBpb19mcmVtb3ZleGF0dHJgLCBgaW9fZmxpc3R4YXR0cl9wcmVwYCwgYGlvX2ZsaXN0eGF0dHJgLCBgZmlsZV9saXN0eGF0dHJgLCBhbmQgYGZpbGVfcmVtb3ZleGF0dHJgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNlbnRyYWwgdG8gcmVtb3ZpbmcgYW5kIGxpc3RpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcywgYW5kIHRoZSAmIzM5O2lvXyYjMzk7IHByZWZpeCBzdHJvbmdseSBzdWdnZXN0cyB0aGV5JiMzOTtyZSByZWxhdGVkIHRvIGFzeW5jaHJvbm91cyBJL08gd2l0aCBpb191cmluZy4KCkJlZm9yZSBJIGp1bXAgaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEp1c3QgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsLiBgQ09ORklHX0lPX1VSSU5HYCBzZWVtcyBsaWtlIHRoZSBwcmltYXJ5IGRyaXZlciwgYnV0IGl0JiMzOTtzIGFsd2F5cyBnb29kIHByYWN0aWNlIHRvIGVsaW1pbmF0ZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMuCgpPbmNlIEkgaGF2ZSBhIHNvbGlkIGdyYXNwIG9uIHRoZXNlIHN5bWJvbHMgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB1bmRlciBgSU9fVVJJTkdgLCBJJiMzOTtsbCB1c2UgYHNldC1yZXN1bHRzYCB0byBwcm92aWRlIGEgY2xlYXIgYW5kIGNvbmNpc2Ugc3VtbWFyeSBvZiBteSBmaW5kaW5ncy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBzdHJ1Y3R1cmVkIGFwcHJvYWNoIGZvciBkb2N1bWVudGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb19mcmVtb3ZleGF0dHJfcHJlcCYjMzQ7LAogICAgJiMzNDtpb19mcmVtb3ZleGF0dHImIzM0OywKICAgICYjMzQ7aW9fZmxpc3R4YXR0cl9wcmVwJiMzNDssCiAgICAmIzM0O2lvX2ZsaXN0eGF0dHImIzM0OywKICAgICYjMzQ7ZmlsZV9saXN0eGF0dHImIzM0OywKICAgICYjMzQ7ZmlsZV9yZW1vdmV4YXR0ciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIElPUklOR19PUF9GUkVNT1ZFWEFUVFIgYW5kIElPUklOR19PUF9GTElTVFhBVFRSIHRvIGlvX3VyaW5nLiBJdCBtb2RpZmllcyBjb3JlIGlvX3VyaW5nIGFuZCB4YXR0ciBsb2dpYywgbWFraW5nIGl0IGhpZ2hseSBmdW5jdGlvbmFsIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lvX2ZyZW1vdmV4YXR0cl9wcmVwJiMzNDssCiAgICAmIzM0O2lvX2ZyZW1vdmV4YXR0ciYjMzQ7LAogICAgJiMzNDtpb19mbGlzdHhhdHRyX3ByZXAmIzM0OywKICAgICYjMzQ7aW9fZmxpc3R4YXR0ciYjMzQ7LAogICAgJiMzNDtmaWxlX2xpc3R4YXR0ciYjMzQ7LAogICAgJiMzNDtmaWxlX3JlbW92ZXhhdHRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgSU9SSU5HX09QX0ZSRU1PVkVYQVRUUiBhbmQgSU9SSU5HX09QX0ZMSVNUWEFUVFIgdG8gaW9fdXJpbmcuIEl0IG1vZGlmaWVzIGNvcmUgaW9fdXJpbmcgYW5kIHhhdHRyIGxvZ2ljLCBtYWtpbmcgaXQgaGlnaGx5IGZ1bmN0aW9uYWwgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzowOS44Mzc0MDA5NTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ0NjM2NTcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX2ZyZW1vdmV4YXR0cl9wcmVwXCIsXG4gICAgXCJpb19mcmVtb3ZleGF0dHJcIixcbiAgICBcImlvX2ZsaXN0eGF0dHJfcHJlcFwiLFxuICAgIFwiaW9fZmxpc3R4YXR0clwiLFxuICAgIFwiZmlsZV9saXN0eGF0dHJcIixcbiAgICBcImZpbGVfcmVtb3ZleGF0dHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIElPUklOR19PUF9GUkVNT1ZFWEFUVFIgYW5kIElPUklOR19PUF9GTElTVFhBVFRSIHRvIGlvX3VyaW5nLiBJdCBtb2RpZmllcyBjb3JlIGlvX3VyaW5nIGFuZCB4YXR0ciBsb2dpYywgbWFraW5nIGl0IGhpZ2hseSBmdW5jdGlvbmFsIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzowOS44Mzc0MDYwMzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4OTQ0NTM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDk2MmRmMmNlNGVkZGY2MzQ3NTM1NzJmZWVmZWMzOWM4N2M2NWVmNThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDY6MDc6MDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvaW50ZXJuYWwuaCBiL2ZzL2ludGVybmFsLmhcXG5pbmRleCAzNTVkOTNmOTIyMDg2MS4uZWU4NmIyNGRiNzlhZDIgMTAwNjQ0XFxuLS0tIGEvZnMvaW50ZXJuYWwuaFxcbisrKyBiL2ZzL2ludGVybmFsLmhcXG5AQCAtMjk3LDYgKzI5Nyw4IEBAIGludCBmaWxlbmFtZV9zZXR4YXR0cihpbnQgZGZkLCBzdHJ1Y3QgZmlsZW5hbWUgKmZpbGVuYW1lLFxcbiBcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbG9va3VwX2ZsYWdzLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KTtcXG4gaW50IHNldHhhdHRyX2NvcHkoY29uc3QgY2hhciBfX3VzZXIgKm5hbWUsIHN0cnVjdCBrZXJuZWxfeGF0dHJfY3R4ICpjdHgpO1xcbiBpbnQgaW1wb3J0X3hhdHRyX25hbWUoc3RydWN0IHhhdHRyX25hbWUgKmtuYW1lLCBjb25zdCBjaGFyIF9fdXNlciAqbmFtZSk7XFxuK3NzaXplX3QgZmlsZV9saXN0eGF0dHIoc3RydWN0IGZpbGUgKmYsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSk7XFxuK2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpO1xcbiBcXG4gaW50IG1heV93cml0ZV94YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICppbm9kZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9mcy94YXR0ci5jIGIvZnMveGF0dHIuY1xcbmluZGV4IGQ1ODk3OTExNTIwMDc1Li4zMWI4YTVlZWVjMWU4YyAxMDA2NDRcXG4tLS0gYS9mcy94YXR0ci5jXFxuKysrIGIvZnMveGF0dHIuY1xcbkBAIC05NTMsNyArOTUzLDYgQEAgbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKmQsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSlcXG4gXFx0cmV0dXJuIGVycm9yO1xcbiB9XFxuIFxcbi1zdGF0aWNcXG4gc3NpemVfdCBmaWxlX2xpc3R4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgY2hhciBfX3VzZXIgKmxpc3QsIHNpemVfdCBzaXplKVxcbiB7XFxuIFxcdGF1ZGl0X2ZpbGUoZik7XFxuQEAgLTEwMzYsNyArMTAzNSw3IEBAIHJlbW92ZXhhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgZGVudHJ5ICpkLCBjb25zdCBjaGFyICpuYW1lKVxcbiBcXHRyZXR1cm4gdmZzX3JlbW92ZXhhdHRyKGlkbWFwLCBkLCBuYW1lKTtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXFxuK2ludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXFxuIHtcXG4gXFx0aW50IGVycm9yID0gbW50X3dhbnRfd3JpdGVfZmlsZShmKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcXG5pbmRleCA5MDlmYjdhZWE2MzhlYi4uODA1ZjFlMzFmNDkyNTEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxcbkBAIC0zMTgsNiArMzE4LDggQEAgZW51bSBpb191cmluZ19vcCB7XFxuIFxcdElPUklOR19PUF9QSVBFLFxcbiBcXHRJT1JJTkdfT1BfTk9QMTI4LFxcbiBcXHRJT1JJTkdfT1BfVVJJTkdfQ01EMTI4LFxcbitcXHRJT1JJTkdfT1BfRlJFTU9WRVhBVFRSLFxcbitcXHRJT1JJTkdfT1BfRkxJU1RYQVRUUixcXG4gXFxuIFxcdC8qIHRoaXMgZ29lcyBsYXN0LCBvYnZpb3VzbHkgKi9cXG4gXFx0SU9SSU5HX09QX0xBU1QsXFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL29wZGVmLmMgYi9pb191cmluZy9vcGRlZi5jXFxuaW5kZXggNGU1OGViMTM0NGVhYTMuLjI1ZDkyMjlkOGZjMDAyIDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL29wZGVmLmNcXG4rKysgYi9pb191cmluZy9vcGRlZi5jXFxuQEAgLTU5MSw2ICs1OTEsMTYgQEAgY29uc3Qgc3RydWN0IGlvX2lzc3VlX2RlZiBpb19pc3N1ZV9kZWZzW10gPSB7XFxuIFxcdFxcdC5wcmVwXFx0XFx0XFx0PSBpb191cmluZ19jbWRfcHJlcCxcXG4gXFx0XFx0Lmlzc3VlXFx0XFx0XFx0PSBpb191cmluZ19jbWQsXFxuIFxcdH0sXFxuK1xcdFtJT1JJTkdfT1BfRlJFTU9WRVhBVFRSXSA9IHtcXG4rXFx0XFx0Lm5lZWRzX2ZpbGVcXHRcXHQ9IDEsXFxuK1xcdFxcdC5wcmVwXFx0XFx0XFx0PSBpb19mcmVtb3ZleGF0dHJfcHJlcCxcXG4rXFx0XFx0Lmlzc3VlXFx0XFx0XFx0PSBpb19mcmVtb3ZleGF0dHIsXFxuK1xcdH0sXFxuK1xcdFtJT1JJTkdfT1BfRkxJU1RYQVRUUl0gPSB7XFxuK1xcdFxcdC5uZWVkc19maWxlXFx0XFx0PSAxLFxcbitcXHRcXHQucHJlcFxcdFxcdFxcdD0gaW9fZmxpc3R4YXR0cl9wcmVwLFxcbitcXHRcXHQuaXNzdWVcXHRcXHRcXHQ9IGlvX2ZsaXN0eGF0dHIsXFxuK1xcdH0sXFxuIH07XFxuIFxcbiBjb25zdCBzdHJ1Y3QgaW9fY29sZF9kZWYgaW9fY29sZF9kZWZzW10gPSB7XFxuQEAgLTg0OSw2ICs4NTksMTQgQEAgY29uc3Qgc3RydWN0IGlvX2NvbGRfZGVmIGlvX2NvbGRfZGVmc1tdID0ge1xcbiBcXHRcXHQuc3FlX2NvcHlcXHRcXHQ9IGlvX3VyaW5nX2NtZF9zcWVfY29weSxcXG4gXFx0XFx0LmNsZWFudXBcXHRcXHQ9IGlvX3VyaW5nX2NtZF9jbGVhbnVwLFxcbiBcXHR9LFxcbitcXHRbSU9SSU5HX09QX0ZSRU1PVkVYQVRUUl0gPSB7XFxuK1xcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiRlJFTU9WRVhBVFRSXFxcIixcXG4rXFx0XFx0LmNsZWFudXBcXHRcXHQ9IGlvX3hhdHRyX2NsZWFudXAsXFxuK1xcdH0sXFxuK1xcdFtJT1JJTkdfT1BfRkxJU1RYQVRUUl0gPSB7XFxuK1xcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiRkxJU1RYQVRUUlxcXCIsXFxuK1xcdFxcdC5jbGVhbnVwXFx0XFx0PSBpb194YXR0cl9jbGVhbnVwLFxcbitcXHR9LFxcbiB9O1xcbiBcXG4gY29uc3QgY2hhciAqaW9fdXJpbmdfZ2V0X29wY29kZSh1OCBvcGNvZGUpXFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmMgYi9pb191cmluZy94YXR0ci5jXFxuaW5kZXggNTMwM2RmM2YyNDdmNGIuLjliNDEwZjkxZWY0Mzc4IDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL3hhdHRyLmNcXG4rKysgYi9pb191cmluZy94YXR0ci5jXFxuQEAgLTE5NSwzICsxOTUsNzcgQEAgaW50IGlvX3NldHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXFxuIFxcdGlvX3hhdHRyX2ZpbmlzaChyZXEsIHJldCk7XFxuIFxcdHJldHVybiBJT1VfQ09NUExFVEU7XFxuIH1cXG4rXFxuK2ludCBpb19mcmVtb3ZleGF0dHJfcHJlcChzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgY29uc3Qgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKVxcbit7XFxuK1xcdHN0cnVjdCBpb194YXR0ciAqaXggPSBpb19raW9jYl90b19jbWQocmVxLCBzdHJ1Y3QgaW9feGF0dHIpO1xcbitcXHRjb25zdCBjaGFyIF9fdXNlciAqbmFtZTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdElOSVRfREVMQVlFRF9GSUxFTkFNRShcXHUwMDI2aXgtXFx1MDAzZWZpbGVuYW1lKTtcXG4rXFx0bmFtZSA9IHU2NF90b191c2VyX3B0cihSRUFEX09OQ0Uoc3FlLVxcdTAwM2VhZGRyKSk7XFxuK1xcbitcXHRpZiAoUkVBRF9PTkNFKHNxZS1cXHUwMDNlYWRkcjIpIHx8IFJFQURfT05DRShzcWUtXFx1MDAzZWxlbikgfHwgUkVBRF9PTkNFKHNxZS1cXHUwMDNleGF0dHJfZmxhZ3MpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGl4LVxcdTAwM2VjdHgua25hbWUgPSBrbWFsbG9jX29iaigqaXgtXFx1MDAzZWN0eC5rbmFtZSk7XFxuK1xcdGlmICghaXgtXFx1MDAzZWN0eC5rbmFtZSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRyZXQgPSBpbXBvcnRfeGF0dHJfbmFtZShpeC1cXHUwMDNlY3R4LmtuYW1lLCBuYW1lKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRrZnJlZShpeC1cXHUwMDNlY3R4LmtuYW1lKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmVxLVxcdTAwM2VmbGFncyB8PSBSRVFfRl9ORUVEX0NMRUFOVVA7XFxuK1xcdHJlcS1cXHUwMDNlZmxhZ3MgfD0gUkVRX0ZfRk9SQ0VfQVNZTkM7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitpbnQgaW9fZnJlbW92ZXhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXFxuK3tcXG4rXFx0c3RydWN0IGlvX3hhdHRyICppeCA9IGlvX2tpb2NiX3RvX2NtZChyZXEsIHN0cnVjdCBpb194YXR0cik7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRXQVJOX09OX09OQ0UoaXNzdWVfZmxhZ3MgXFx1MDAyNiBJT19VUklOR19GX05PTkJMT0NLKTtcXG4rXFxuK1xcdHJldCA9IGZpbGVfcmVtb3ZleGF0dHIocmVxLVxcdTAwM2VmaWxlLCBpeC1cXHUwMDNlY3R4LmtuYW1lKTtcXG4rXFx0aW9feGF0dHJfZmluaXNoKHJlcSwgcmV0KTtcXG4rXFx0cmV0dXJuIElPVV9DT01QTEVURTtcXG4rfVxcbitcXG4raW50IGlvX2ZsaXN0eGF0dHJfcHJlcChzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgY29uc3Qgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKVxcbit7XFxuK1xcdHN0cnVjdCBpb194YXR0ciAqaXggPSBpb19raW9jYl90b19jbWQocmVxLCBzdHJ1Y3QgaW9feGF0dHIpO1xcbitcXG4rXFx0SU5JVF9ERUxBWUVEX0ZJTEVOQU1FKFxcdTAwMjZpeC1cXHUwMDNlZmlsZW5hbWUpO1xcbitcXHRpeC1cXHUwMDNlY3R4LmtuYW1lID0gTlVMTDtcXG4rXFx0aXgtXFx1MDAzZWN0eC5rdmFsdWUgPSBOVUxMO1xcbitcXG4rXFx0aWYgKFJFQURfT05DRShzcWUtXFx1MDAzZWFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGl4LVxcdTAwM2VjdHgudmFsdWUgPSB1NjRfdG9fdXNlcl9wdHIoUkVBRF9PTkNFKHNxZS1cXHUwMDNlYWRkcjIpKTtcXG4rXFx0aXgtXFx1MDAzZWN0eC5zaXplID0gUkVBRF9PTkNFKHNxZS1cXHUwMDNlbGVuKTtcXG4rXFx0aXgtXFx1MDAzZWN0eC5mbGFncyA9IFJFQURfT05DRShzcWUtXFx1MDAzZXhhdHRyX2ZsYWdzKTtcXG4rXFxuK1xcdGlmIChpeC1cXHUwMDNlY3R4LmZsYWdzKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJlcS1cXHUwMDNlZmxhZ3MgfD0gUkVRX0ZfTkVFRF9DTEVBTlVQO1xcbitcXHRyZXEtXFx1MDAzZWZsYWdzIHw9IFJFUV9GX0ZPUkNFX0FTWU5DO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4raW50IGlvX2ZsaXN0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4re1xcbitcXHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdFdBUk5fT05fT05DRShpc3N1ZV9mbGFncyBcXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spO1xcbitcXG4rXFx0cmV0ID0gZmlsZV9saXN0eGF0dHIocmVxLVxcdTAwM2VmaWxlLCBpeC1cXHUwMDNlY3R4LnZhbHVlLCBpeC1cXHUwMDNlY3R4LnNpemUpO1xcbitcXHRpb194YXR0cl9maW5pc2gocmVxLCByZXQpO1xcbitcXHRyZXR1cm4gSU9VX0NPTVBMRVRFO1xcbit9XFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmggYi9pb191cmluZy94YXR0ci5oXFxuaW5kZXggOWI0NTlkMmFlOTBjNWEuLmQyNDg3YjQ5YTVkMjFhIDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL3hhdHRyLmhcXG4rKysgYi9pb191cmluZy94YXR0ci5oXFxuQEAgLTEzLDMgKzEzLDkgQEAgaW50IGlvX2ZnZXR4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcXG4gXFxuIGludCBpb19nZXR4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpO1xcbiBpbnQgaW9fZ2V0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XFxuK1xcbitpbnQgaW9fZnJlbW92ZXhhdHRyX3ByZXAoc3RydWN0IGlvX2tpb2NiICpyZXEsIGNvbnN0IHN0cnVjdCBpb191cmluZ19zcWUgKnNxZSk7XFxuK2ludCBpb19mcmVtb3ZleGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XFxuK1xcbitpbnQgaW9fZmxpc3R4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpO1xcbitpbnQgaW9fZmxpc3R4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxcbmluZGV4IGYxYzE2ZjgxNzc0MjAwLi43OWJmN2MyMjAwOWRiYiAxMDA2NDRcXG4tLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxcbisrKyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oXFxuQEAgLTI1Myw2ICsyNTMsMTkgQEAgZW51bSBpb191cmluZ19vcCB7XFxuIFxcdElPUklOR19PUF9GVVRFWF9XQUlULFxcbiBcXHRJT1JJTkdfT1BfRlVURVhfV0FLRSxcXG4gXFx0SU9SSU5HX09QX0ZVVEVYX1dBSVRWLFxcbitcXHRJT1JJTkdfT1BfRklYRURfRkRfSU5TVEFMTCxcXG4rXFx0SU9SSU5HX09QX0ZUUlVOQ0FURSxcXG4rXFx0SU9SSU5HX09QX0JJTkQsXFxuK1xcdElPUklOR19PUF9MSVNURU4sXFxuK1xcdElPUklOR19PUF9SRUNWX1pDLFxcbitcXHRJT1JJTkdfT1BfRVBPTExfV0FJVCxcXG4rXFx0SU9SSU5HX09QX1JFQURWX0ZJWEVELFxcbitcXHRJT1JJTkdfT1BfV1JJVEVWX0ZJWEVELFxcbitcXHRJT1JJTkdfT1BfUElQRSxcXG4rXFx0SU9SSU5HX09QX05PUDEyOCxcXG4rXFx0SU9SSU5HX09QX1VSSU5HX0NNRDEyOCxcXG4rXFx0SU9SSU5HX09QX0ZSRU1PVkVYQVRUUixcXG4rXFx0SU9SSU5HX09QX0ZMSVNUWEFUVFIsXFxuIFxcbiBcXHQvKiB0aGlzIGdvZXMgbGFzdCwgb2J2aW91c2x5ICovXFxuIFxcdElPUklOR19PUF9MQVNULFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzoxMC41MjczNzgxMjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNjc1NjM2NzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX2ZyZW1vdmV4YXR0cl9wcmVwXCIsXG4gICAgXCJpb19mcmVtb3ZleGF0dHJcIixcbiAgICBcImlvX2ZsaXN0eGF0dHJfcHJlcFwiLFxuICAgIFwiaW9fZmxpc3R4YXR0clwiLFxuICAgIFwiZmlsZV9saXN0eGF0dHJcIixcbiAgICBcImZpbGVfcmVtb3ZleGF0dHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIElPUklOR19PUF9GUkVNT1ZFWEFUVFIgYW5kIElPUklOR19PUF9GTElTVFhBVFRSIHRvIGlvX3VyaW5nLiBJdCBtb2RpZmllcyBjb3JlIGlvX3VyaW5nIGFuZCB4YXR0ciBsb2dpYywgbWFraW5nIGl0IGhpZ2hseSBmdW5jdGlvbmFsIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDk2MmRmMmNlNGVkZGY2MzQ3NTM1NzJmZWVmZWMzOWM4N2M2NWVmNThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwNjowNzowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2ludGVybmFsLmggYi9mcy9pbnRlcm5hbC5oXG5pbmRleCAzNTVkOTNmOTIyMDg2MS4uZWU4NmIyNGRiNzlhZDIgMTAwNjQ0XG4tLS0gYS9mcy9pbnRlcm5hbC5oXG4rKysgYi9mcy9pbnRlcm5hbC5oXG5AQCAtMjk3LDYgKzI5Nyw4IEBAIGludCBmaWxlbmFtZV9zZXR4YXR0cihpbnQgZGZkLCBzdHJ1Y3QgZmlsZW5hbWUgKmZpbGVuYW1lLFxuIFx0XHQgICAgICB1bnNpZ25lZCBpbnQgbG9va3VwX2ZsYWdzLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KTtcbiBpbnQgc2V0eGF0dHJfY29weShjb25zdCBjaGFyIF9fdXNlciAqbmFtZSwgc3RydWN0IGtlcm5lbF94YXR0cl9jdHggKmN0eCk7XG4gaW50IGltcG9ydF94YXR0cl9uYW1lKHN0cnVjdCB4YXR0cl9uYW1lICprbmFtZSwgY29uc3QgY2hhciBfX3VzZXIgKm5hbWUpO1xuK3NzaXplX3QgZmlsZV9saXN0eGF0dHIoc3RydWN0IGZpbGUgKmYsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSk7XG4raW50IGZpbGVfcmVtb3ZleGF0dHIoc3RydWN0IGZpbGUgKmYsIHN0cnVjdCB4YXR0cl9uYW1lICprbmFtZSk7XG4gXG4gaW50IG1heV93cml0ZV94YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICppbm9kZSk7XG4gXG5kaWZmIC0tZ2l0IGEvZnMveGF0dHIuYyBiL2ZzL3hhdHRyLmNcbmluZGV4IGQ1ODk3OTExNTIwMDc1Li4zMWI4YTVlZWVjMWU4YyAxMDA2NDRcbi0tLSBhL2ZzL3hhdHRyLmNcbisrKyBiL2ZzL3hhdHRyLmNcbkBAIC05NTMsNyArOTUzLDYgQEAgbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKmQsIGNoYXIgX191c2VyICpsaXN0LCBzaXplX3Qgc2l6ZSlcbiBcdHJldHVybiBlcnJvcjtcbiB9XG4gXG4tc3RhdGljXG4gc3NpemVfdCBmaWxlX2xpc3R4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgY2hhciBfX3VzZXIgKmxpc3QsIHNpemVfdCBzaXplKVxuIHtcbiBcdGF1ZGl0X2ZpbGUoZik7XG5AQCAtMTAzNiw3ICsxMDM1LDcgQEAgcmVtb3ZleGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmQsIGNvbnN0IGNoYXIgKm5hbWUpXG4gXHRyZXR1cm4gdmZzX3JlbW92ZXhhdHRyKGlkbWFwLCBkLCBuYW1lKTtcbiB9XG4gXG4tc3RhdGljIGludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXG4raW50IGZpbGVfcmVtb3ZleGF0dHIoc3RydWN0IGZpbGUgKmYsIHN0cnVjdCB4YXR0cl9uYW1lICprbmFtZSlcbiB7XG4gXHRpbnQgZXJyb3IgPSBtbnRfd2FudF93cml0ZV9maWxlKGYpO1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcbmluZGV4IDkwOWZiN2FlYTYzOGViLi44MDVmMWUzMWY0OTI1MSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxuQEAgLTMxOCw2ICszMTgsOCBAQCBlbnVtIGlvX3VyaW5nX29wIHtcbiBcdElPUklOR19PUF9QSVBFLFxuIFx0SU9SSU5HX09QX05PUDEyOCxcbiBcdElPUklOR19PUF9VUklOR19DTUQxMjgsXG4rXHRJT1JJTkdfT1BfRlJFTU9WRVhBVFRSLFxuK1x0SU9SSU5HX09QX0ZMSVNUWEFUVFIsXG4gXG4gXHQvKiB0aGlzIGdvZXMgbGFzdCwgb2J2aW91c2x5ICovXG4gXHRJT1JJTkdfT1BfTEFTVCxcbmRpZmYgLS1naXQgYS9pb191cmluZy9vcGRlZi5jIGIvaW9fdXJpbmcvb3BkZWYuY1xuaW5kZXggNGU1OGViMTM0NGVhYTMuLjI1ZDkyMjlkOGZjMDAyIDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcvb3BkZWYuY1xuKysrIGIvaW9fdXJpbmcvb3BkZWYuY1xuQEAgLTU5MSw2ICs1OTEsMTYgQEAgY29uc3Qgc3RydWN0IGlvX2lzc3VlX2RlZiBpb19pc3N1ZV9kZWZzW10gPSB7XG4gXHRcdC5wcmVwXHRcdFx0PSBpb191cmluZ19jbWRfcHJlcCxcbiBcdFx0Lmlzc3VlXHRcdFx0PSBpb191cmluZ19jbWQsXG4gXHR9LFxuK1x0W0lPUklOR19PUF9GUkVNT1ZFWEFUVFJdID0ge1xuK1x0XHQubmVlZHNfZmlsZVx0XHQ9IDEsXG4rXHRcdC5wcmVwXHRcdFx0PSBpb19mcmVtb3ZleGF0dHJfcHJlcCxcbitcdFx0Lmlzc3VlXHRcdFx0PSBpb19mcmVtb3ZleGF0dHIsXG4rXHR9LFxuK1x0W0lPUklOR19PUF9GTElTVFhBVFRSXSA9IHtcbitcdFx0Lm5lZWRzX2ZpbGVcdFx0PSAxLFxuK1x0XHQucHJlcFx0XHRcdD0gaW9fZmxpc3R4YXR0cl9wcmVwLFxuK1x0XHQuaXNzdWVcdFx0XHQ9IGlvX2ZsaXN0eGF0dHIsXG4rXHR9LFxuIH07XG4gXG4gY29uc3Qgc3RydWN0IGlvX2NvbGRfZGVmIGlvX2NvbGRfZGVmc1tdID0ge1xuQEAgLTg0OSw2ICs4NTksMTQgQEAgY29uc3Qgc3RydWN0IGlvX2NvbGRfZGVmIGlvX2NvbGRfZGVmc1tdID0ge1xuIFx0XHQuc3FlX2NvcHlcdFx0PSBpb191cmluZ19jbWRfc3FlX2NvcHksXG4gXHRcdC5jbGVhbnVwXHRcdD0gaW9fdXJpbmdfY21kX2NsZWFudXAsXG4gXHR9LFxuK1x0W0lPUklOR19PUF9GUkVNT1ZFWEFUVFJdID0ge1xuK1x0XHQubmFtZVx0XHRcdD0gXCJGUkVNT1ZFWEFUVFJcIixcbitcdFx0LmNsZWFudXBcdFx0PSBpb194YXR0cl9jbGVhbnVwLFxuK1x0fSxcbitcdFtJT1JJTkdfT1BfRkxJU1RYQVRUUl0gPSB7XG4rXHRcdC5uYW1lXHRcdFx0PSBcIkZMSVNUWEFUVFJcIixcbitcdFx0LmNsZWFudXBcdFx0PSBpb194YXR0cl9jbGVhbnVwLFxuK1x0fSxcbiB9O1xuIFxuIGNvbnN0IGNoYXIgKmlvX3VyaW5nX2dldF9vcGNvZGUodTggb3Bjb2RlKVxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmMgYi9pb191cmluZy94YXR0ci5jXG5pbmRleCA1MzAzZGYzZjI0N2Y0Yi4uOWI0MTBmOTFlZjQzNzggMTAwNjQ0XG4tLS0gYS9pb191cmluZy94YXR0ci5jXG4rKysgYi9pb191cmluZy94YXR0ci5jXG5AQCAtMTk1LDMgKzE5NSw3NyBAQCBpbnQgaW9fc2V0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbiBcdGlvX3hhdHRyX2ZpbmlzaChyZXEsIHJldCk7XG4gXHRyZXR1cm4gSU9VX0NPTVBMRVRFO1xuIH1cbitcbitpbnQgaW9fZnJlbW92ZXhhdHRyX3ByZXAoc3RydWN0IGlvX2tpb2NiICpyZXEsIGNvbnN0IHN0cnVjdCBpb191cmluZ19zcWUgKnNxZSlcbit7XG4rXHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcbitcdGNvbnN0IGNoYXIgX191c2VyICpuYW1lO1xuK1x0aW50IHJldDtcbitcbitcdElOSVRfREVMQVlFRF9GSUxFTkFNRShcdTAwMjZpeC1cdTAwM2VmaWxlbmFtZSk7XG4rXHRuYW1lID0gdTY0X3RvX3VzZXJfcHRyKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcikpO1xuK1xuK1x0aWYgKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcjIpIHx8IFJFQURfT05DRShzcWUtXHUwMDNlbGVuKSB8fCBSRUFEX09OQ0Uoc3FlLVx1MDAzZXhhdHRyX2ZsYWdzKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRpeC1cdTAwM2VjdHgua25hbWUgPSBrbWFsbG9jX29iaigqaXgtXHUwMDNlY3R4LmtuYW1lKTtcbitcdGlmICghaXgtXHUwMDNlY3R4LmtuYW1lKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJldCA9IGltcG9ydF94YXR0cl9uYW1lKGl4LVx1MDAzZWN0eC5rbmFtZSwgbmFtZSk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGtmcmVlKGl4LVx1MDAzZWN0eC5rbmFtZSk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXEtXHUwMDNlZmxhZ3MgfD0gUkVRX0ZfTkVFRF9DTEVBTlVQO1xuK1x0cmVxLVx1MDAzZWZsYWdzIHw9IFJFUV9GX0ZPUkNFX0FTWU5DO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK2ludCBpb19mcmVtb3ZleGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbit7XG4rXHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcbitcdGludCByZXQ7XG4rXG4rXHRXQVJOX09OX09OQ0UoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spO1xuK1xuK1x0cmV0ID0gZmlsZV9yZW1vdmV4YXR0cihyZXEtXHUwMDNlZmlsZSwgaXgtXHUwMDNlY3R4LmtuYW1lKTtcbitcdGlvX3hhdHRyX2ZpbmlzaChyZXEsIHJldCk7XG4rXHRyZXR1cm4gSU9VX0NPTVBMRVRFO1xuK31cbitcbitpbnQgaW9fZmxpc3R4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpXG4re1xuK1x0c3RydWN0IGlvX3hhdHRyICppeCA9IGlvX2tpb2NiX3RvX2NtZChyZXEsIHN0cnVjdCBpb194YXR0cik7XG4rXG4rXHRJTklUX0RFTEFZRURfRklMRU5BTUUoXHUwMDI2aXgtXHUwMDNlZmlsZW5hbWUpO1xuK1x0aXgtXHUwMDNlY3R4LmtuYW1lID0gTlVMTDtcbitcdGl4LVx1MDAzZWN0eC5rdmFsdWUgPSBOVUxMO1xuK1xuK1x0aWYgKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcikpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0aXgtXHUwMDNlY3R4LnZhbHVlID0gdTY0X3RvX3VzZXJfcHRyKFJFQURfT05DRShzcWUtXHUwMDNlYWRkcjIpKTtcbitcdGl4LVx1MDAzZWN0eC5zaXplID0gUkVBRF9PTkNFKHNxZS1cdTAwM2VsZW4pO1xuK1x0aXgtXHUwMDNlY3R4LmZsYWdzID0gUkVBRF9PTkNFKHNxZS1cdTAwM2V4YXR0cl9mbGFncyk7XG4rXG4rXHRpZiAoaXgtXHUwMDNlY3R4LmZsYWdzKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJlcS1cdTAwM2VmbGFncyB8PSBSRVFfRl9ORUVEX0NMRUFOVVA7XG4rXHRyZXEtXHUwMDNlZmxhZ3MgfD0gUkVRX0ZfRk9SQ0VfQVNZTkM7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4raW50IGlvX2ZsaXN0eGF0dHIoc3RydWN0IGlvX2tpb2NiICpyZXEsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbit7XG4rXHRzdHJ1Y3QgaW9feGF0dHIgKml4ID0gaW9fa2lvY2JfdG9fY21kKHJlcSwgc3RydWN0IGlvX3hhdHRyKTtcbitcdGludCByZXQ7XG4rXG4rXHRXQVJOX09OX09OQ0UoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spO1xuK1xuK1x0cmV0ID0gZmlsZV9saXN0eGF0dHIocmVxLVx1MDAzZWZpbGUsIGl4LVx1MDAzZWN0eC52YWx1ZSwgaXgtXHUwMDNlY3R4LnNpemUpO1xuK1x0aW9feGF0dHJfZmluaXNoKHJlcSwgcmV0KTtcbitcdHJldHVybiBJT1VfQ09NUExFVEU7XG4rfVxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL3hhdHRyLmggYi9pb191cmluZy94YXR0ci5oXG5pbmRleCA5YjQ1OWQyYWU5MGM1YS4uZDI0ODdiNDlhNWQyMWEgMTAwNjQ0XG4tLS0gYS9pb191cmluZy94YXR0ci5oXG4rKysgYi9pb191cmluZy94YXR0ci5oXG5AQCAtMTMsMyArMTMsOSBAQCBpbnQgaW9fZmdldHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuIFxuIGludCBpb19nZXR4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpO1xuIGludCBpb19nZXR4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcbitcbitpbnQgaW9fZnJlbW92ZXhhdHRyX3ByZXAoc3RydWN0IGlvX2tpb2NiICpyZXEsIGNvbnN0IHN0cnVjdCBpb191cmluZ19zcWUgKnNxZSk7XG4raW50IGlvX2ZyZW1vdmV4YXR0cihzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcbitcbitpbnQgaW9fZmxpc3R4YXR0cl9wcmVwKHN0cnVjdCBpb19raW9jYiAqcmVxLCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUpO1xuK2ludCBpb19mbGlzdHhhdHRyKHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oIGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhcbmluZGV4IGYxYzE2ZjgxNzc0MjAwLi43OWJmN2MyMjAwOWRiYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oXG4rKysgYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaW9fdXJpbmcuaFxuQEAgLTI1Myw2ICsyNTMsMTkgQEAgZW51bSBpb191cmluZ19vcCB7XG4gXHRJT1JJTkdfT1BfRlVURVhfV0FJVCxcbiBcdElPUklOR19PUF9GVVRFWF9XQUtFLFxuIFx0SU9SSU5HX09QX0ZVVEVYX1dBSVRWLFxuK1x0SU9SSU5HX09QX0ZJWEVEX0ZEX0lOU1RBTEwsXG4rXHRJT1JJTkdfT1BfRlRSVU5DQVRFLFxuK1x0SU9SSU5HX09QX0JJTkQsXG4rXHRJT1JJTkdfT1BfTElTVEVOLFxuK1x0SU9SSU5HX09QX1JFQ1ZfWkMsXG4rXHRJT1JJTkdfT1BfRVBPTExfV0FJVCxcbitcdElPUklOR19PUF9SRUFEVl9GSVhFRCxcbitcdElPUklOR19PUF9XUklURVZfRklYRUQsXG4rXHRJT1JJTkdfT1BfUElQRSxcbitcdElPUklOR19PUF9OT1AxMjgsXG4rXHRJT1JJTkdfT1BfVVJJTkdfQ01EMTI4LFxuK1x0SU9SSU5HX09QX0ZSRU1PVkVYQVRUUixcbitcdElPUklOR19PUF9GTElTVFhBVFRSLFxuIFxuIFx0LyogdGhpcyBnb2VzIGxhc3QsIG9idmlvdXNseSAqL1xuIFx0SU9SSU5HX09QX0xBU1QsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzoxMC41MjczNzkyOThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODQ0MzE4NTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGlvX3VyaW5nIFhhdHRyIFBhdGNoKipcblxuT2theSwgc28gd2UgaGF2ZSBhIG5ldyBwYXRjaCBsYW5kZWQgZm9yIGBpb191cmluZ2AgdGhhdOKAmXMgaW50cm9kdWNpbmcgc3VwcG9ydCBmb3IgYElPUklOR19PUF9GUkVNT1ZFWEFUVFJgIGFuZCBgSU9SSU5HX09QX0ZMSVNUWEFUVFJgLiBFeGNlbGxlbnQhIFRoaXMgbG9va3MgbGlrZSBpdCB0b3VjaGVzIHNvbWUga2V5IGFyZWFzLCB3aGljaCBpcyB3aGF0IEknZCBleHBlY3Q6IGBmcy9pbnRlcm5hbC5oYCwgYGZzL3hhdHRyLmNgLCB0aGUgVUFQSSBoZWFkZXJzIChgaW5jbHVkZS91YXBpL2xpbnV4L2lvX3VyaW5nLmhgIGFuZCB0aGUgdG9vbCdzIGluY2x1ZGUpLCBhbmQgdGhlIHJlbGV2YW50IGlvX3VyaW5nIGltcGxlbWVudGF0aW9uIGZpbGVzIChgaW9fdXJpbmcvb3BkZWYuY2AsIGBpb191cmluZy94YXR0ci5jYCwgYGlvX3VyaW5nL3hhdHRyLmhgKS4gVGhpcyBpcyBhIGdvb2Qgc2lnbjsgd2UncmUgcHJvcGVybHkgZXhwYW5kaW5nIHRoZSBpbnRlcmZhY2VzIGhlcmUuXG5cbkVzc2VudGlhbGx5LCB0aGVzZSBuZXcgb3Bjb2RlcyAoYElPUklOR19PUF9GUkVNT1ZFWEFUVFJgLCBgSU9SSU5HX09QX0ZMSVNUWEFUVFJgKSBhcmUgYmVpbmcgbWFwcGVkIGRpcmVjdGx5IHRvIGBpb19mcmVtb3ZleGF0dHJgIGFuZCBgaW9fZmxpc3R4YXR0cmAgd2l0aGluIGBpb191cmluZy94YXR0ci5jYC4gTG9va3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYW5kIGZyb20gdGhlIGRlc2NyaXB0aW9uLCBpdCBzZWVtcyBmdW5jdGlvbmFsbHkgY29tcGxldGUuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBzb21lIHNlcmlvdXMgZnV6emluZyBhbmQgdGVzdGluZy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gd2hhdCB0aGUga2V5IHN5bWJvbHMgYXJlLiBJJ20gZ29pbmcgdG8gd2FudCB0byBmb2N1cyBvbiB0aGVzZTpcbiogICBgaW9fZnJlbW92ZXhhdHRyX3ByZXBgXG4qICAgYGlvX2ZyZW1vdmV4YXR0cmBcbiogICBgaW9fZmxpc3R4YXR0cl9wcmVwYFxuKiAgIGBpb19mbGlzdHhhdHRyYFxuXG5JIG5lZWQgdG8gcXVpY2tseSBjaGVjayBgaW9fdXJpbmcveGF0dHIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGUgbWFpbiBvbmUgSSdtIGV4cGVjdGluZyBpcyBgQ09ORklHX0lPX1VSSU5HYCwgYnV0IHRoZXJlIG1heSBiZSBtb3JlIHNwZWNpZmljIHhhdHRyLXJlbGF0ZWQgZmxhZ3MgdGhhdCBpbXBhY3QgdGhlIGJlaGF2aW9yLiBMZXQncyBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEl0IGlzIGEgZ29vZCB3YXkgdG8gc2VlIGlmIHdlIG1pc3NlZCBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU5MCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA2OjA3OjE4LjM3MTcwMTM0MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzA0NTY2NTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR18uKlhBVFRSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzoxOC44NDIxNjU2NTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTM3ODEyMTQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSHVudCBmb3IgaW9fdXJpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHdoZXJlIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgaW9fdXJpbmdgIGFyZSBkZWZpbmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiBgaW9fdXJpbmdgLCBpcyB0byBjaGVjayB0aGUgYGlvX3VyaW5nL0tjb25maWdgIGZpbGUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlLCBnaXZlbiBpdHMgdmVyeSBuYW1lLiBIb3dldmVyLCBpdCdzIGFsc28gYSBwb3NzaWJpbGl0eSB0aGF0IHNvbWUgY29yZSBpbml0aWFsaXphdGlvbi1yZWxhdGVkIHNldHRpbmdzIG1pZ2h0IGJlIGluIHRoZSBtb3JlIGdlbmVyYWwgYGluaXQvS2NvbmZpZ2AgZmlsZSwgc28gSSBuZWVkIHRvIGNvbnNpZGVyIGJvdGguIEknbGwgc3RhcnQgd2l0aCBgaW9fdXJpbmcvS2NvbmZpZ2AgYW5kIGlmIGl0IGlzIG5vdCBwcmVzZW50IHRoZXJlLCBJJ2xsIHRoZW4gbW92ZSBvbnRvIGBpbml0L0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzY0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDY6MDc6MzguMjIwMjg5Nzg5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTQ2ODQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfSU9fVVJJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvTWFrZWZpbGU9Nz1lbmRpZlxcbmlvX3VyaW5nL01ha2VmaWxlLTgtXFxuaW9fdXJpbmcvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfSU9fVVJJTkcpXFx0XFx0Kz0gaW9fdXJpbmcubyBvcGRlZi5vIGtidWYubyByc3JjLm8gbm90aWYubyBcXFxcXFxuaW9fdXJpbmcvTWFrZWZpbGUtMTAtXFx0XFx0XFx0XFx0XFx0dGN0eC5vIGZpbGV0YWJsZS5vIHJ3Lm8gcG9sbC5vIFxcXFxcXG4tLVxcbmlvX3VyaW5nL01ha2VmaWxlLTE4LVxcbmlvX3VyaW5nL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19JT19VUklOR19aQ1JYKVxcdCs9IHpjcngub1xcbmlvX3VyaW5nL01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19JT19XUSlcXHRcXHQrPSBpby13cS5vXFxuLS1cXG5pb191cmluZy9NYWtlZmlsZT0yNT1vYmotJChDT05GSUdfUFJPQ19GUykgKz0gZmRpbmZvLm9cXG5pb191cmluZy9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfSU9fVVJJTkdfTU9DS19GSUxFKSArPSBtb2NrX2ZpbGUub1xcbmlvX3VyaW5nL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19JT19VUklOR19CUEYpICs9IGJwZl9maWx0ZXIub1xcbmlvX3VyaW5nL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19JT19VUklOR19CUEZfT1BTKSArPSBicGYtb3BzLm9cXG4tLVxcbmlvX3VyaW5nL2JwZi1vcHMuaD0xMz1zdHJ1Y3QgaW9fdXJpbmdfYnBmX29wcyB7XFxuLS1cXG5pb191cmluZy9icGYtb3BzLmgtMTktXFxuaW9fdXJpbmcvYnBmLW9wcy5oOjIwOiNpZmRlZiBDT05GSUdfSU9fVVJJTkdfQlBGX09QU1xcbmlvX3VyaW5nL2JwZi1vcHMuaC0yMS12b2lkIGlvX3VucmVnaXN0ZXJfYnBmX29wcyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCk7XFxuLS1cXG5pb191cmluZy9icGZfZmlsdGVyLmgtNi1cXG5pb191cmluZy9icGZfZmlsdGVyLmg6NzojaWZkZWYgQ09ORklHX0lPX1VSSU5HX0JQRlxcbmlvX3VyaW5nL2JwZl9maWx0ZXIuaC04LVxcbi0tXFxuaW9fdXJpbmcvYnBmX2ZpbHRlci5oPTQyPXN0YXRpYyBpbmxpbmUgdm9pZCBpb19icGZfZmlsdGVyX2Nsb25lKHN0cnVjdCBpb19yZXN0cmljdGlvbiAqZHN0LFxcbi0tXFxuaW9fdXJpbmcvYnBmX2ZpbHRlci5oLTQ1LX1cXG5pb191cmluZy9icGZfZmlsdGVyLmg6NDY6I2VuZGlmIC8qIENPTkZJR19JT19VUklOR19CUEYgKi9cXG5pb191cmluZy9icGZfZmlsdGVyLmgtNDctXFxuLS1cXG5pb191cmluZy96Y3J4Lmg9NTQ9c3RydWN0IGlvX3pjcnhfaWZxIHtcXG4tLVxcbmlvX3VyaW5nL3pjcnguaC04NS1cXG5pb191cmluZy96Y3J4Lmg6ODY6I2lmIGRlZmluZWQoQ09ORklHX0lPX1VSSU5HX1pDUlgpXFxuaW9fdXJpbmcvemNyeC5oLTg3LWludCBpb196Y3J4X2N0cmwoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA2OjA3OjM4LjY0NTc2Mjc4NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTk5MjUyNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJ20gbG9va2luZyBhdDpcblxuKipJbnZlc3RpZ2F0aW5nIEV4dGVuZGVkIEF0dHJpYnV0ZSAoeGF0dHIpIFN1cHBvcnQgd2l0aGluIHRoZSBgSU9fVVJJTkdgIENvbnRleHQqKlxuXG5SaWdodCwgc28gdGhlIHN5c3RlbSBpcyBjb25maWd1cmVkIHRvIHVzZSBgSU9fVVJJTkdgLCB3aGljaCBpcyBhIGtleSBzdGFydGluZyBwb2ludC4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyByZXZvbHZlcyBhcm91bmQgaG93IGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIGhhbmRsZWQgd2l0aGluIHRoaXMgYXN5bmNocm9ub3VzIEkvTyBmcmFtZXdvcmsuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIHhhdHRyIGZ1bmN0aW9uYWxpdHkuXG5cbkkndmUgYmVlbiBnaXZlbiBhIGxpc3Qgb2YgZm9jdXMgc3ltYm9sczogYGlvX2ZyZW1vdmV4YXR0cl9wcmVwYCwgYGlvX2ZyZW1vdmV4YXR0cmAsIGBpb19mbGlzdHhhdHRyX3ByZXBgLCBgaW9fZmxpc3R4YXR0cmAsIGBmaWxlX2xpc3R4YXR0cmAsIGFuZCBgZmlsZV9yZW1vdmV4YXR0cmAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIEkgaW1tZWRpYXRlbHkgbmVlZCB0byB6ZXJvIGluIG9uLiBUaGV5IGxvb2sgbGlrZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgZm9yIHJlbW92aW5nIGFuZCBsaXN0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gZmlsZXMsIGJvdGggaW4gYSBzeW5jaHJvbm91cyBhbmQgcG90ZW50aWFsbHkgYXN5bmNocm9ub3VzIChgcHJlcGAgc3VnZ2VzdHMgcHJlcGVyYXRpb24gZm9yIGFzeW5jKS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcm9sZXMgd2l0aGluIHRoZSBgSU9fVVJJTkdgIGVjb3N5c3RlbS5cblxuQmVmb3JlIEkgZGVsdmUgaW50byB0aGUgZGV0YWlscyBvZiB0aGVzZSBzeW1ib2xzLCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdG8gZW5zdXJlIHRoaXMgaXMgdGhlICpvbmx5KiBjb25maWd1cmF0aW9uIGZvciB4YXR0ci4gSXQgd291bGQgYmUgYSBuaWdodG1hcmUgdG8gYXNzdW1lIHRoaXMgaXMgdGhlIG9ubHkgb25lLiBKdXN0IHdhbnQgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYSBzZWNvbmRhcnkgc2V0dGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIxNywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA2OjA3OjQyLjQwNTY5MTc2NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU4Njc4MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHXy4qWEFUVFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Vyb2ZzL01ha2VmaWxlPTQ9ZXJvZnMtb2JqcyA6PSBzdXBlci5vIGlub2RlLm8gZGF0YS5vIG5hbWVpLm8gZGlyLm8gc3lzZnMub1xcbmZzL2Vyb2ZzL01ha2VmaWxlOjU6ZXJvZnMtJChDT05GSUdfRVJPRlNfRlNfWEFUVFIpICs9IHhhdHRyLm9cXG5mcy9lcm9mcy9NYWtlZmlsZS02LWVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1pJUCkgKz0gZGVjb21wcmVzc29yLm8gem1hcC5vIHpkYXRhLm8genV0aWwub1xcbi0tXFxuZnMvZXJvZnMvaW50ZXJuYWwuaD04Nz1zdHJ1Y3QgZXJvZnNfc2JfaW5mbyB7XFxuLS1cXG5mcy9lcm9mcy9pbnRlcm5hbC5oLTExMS1cXHR1MzIgbWV0YV9ibGthZGRyO1xcbmZzL2Vyb2ZzL2ludGVybmFsLmg6MTEyOiNpZmRlZiBDT05GSUdfRVJPRlNfRlNfWEFUVFJcXG5mcy9lcm9mcy9pbnRlcm5hbC5oLTExMy1cXHR1MzIgeGF0dHJfYmxrYWRkcjtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmM9MjUwPXN0YXRpYyBpbnQgZXJvZnNfcmVhZF9zdXBlcmJsb2NrKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTMwMy1cXHRzYmktXFx1MDAzZW1ldGFfYmxrYWRkciA9IGxlMzJfdG9fY3B1KGRzYi1cXHUwMDNlbWV0YV9ibGthZGRyKTtcXG5mcy9lcm9mcy9zdXBlci5jOjMwNDojaWZkZWYgQ09ORklHX0VST0ZTX0ZTX1hBVFRSXFxuZnMvZXJvZnMvc3VwZXIuYy0zMDUtXFx0c2JpLVxcdTAwM2V4YXR0cl9ibGthZGRyID0gbGUzMl90b19jcHUoZHNiLVxcdTAwM2V4YXR0cl9ibGthZGRyKTtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmM9Mzc0PXN0YXRpYyB2b2lkIGVyb2ZzX2RlZmF1bHRfb3B0aW9ucyhzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpKVxcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYy0zNzktI2VuZGlmXFxuZnMvZXJvZnMvc3VwZXIuYzozODA6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSlcXG5mcy9lcm9mcy9zdXBlci5jLTM4MS1cXHRcXHRzZXRfb3B0KFxcdTAwMjZzYmktXFx1MDAzZW9wdCwgWEFUVFJfVVNFUik7XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jPTQ0MD1zdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtNDUzLVxcdGNhc2UgT3B0X3VzZXJfeGF0dHI6XFxuZnMvZXJvZnMvc3VwZXIuYzo0NTQ6XFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19YQVRUUikpXFxuZnMvZXJvZnMvc3VwZXIuYy00NTUtXFx0XFx0XFx0ZXJyb3JmYyhmYywgXFxcInssbm99dXNlcl94YXR0ciBvcHRpb25zIG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmM9MTAyMj1zdGF0aWMgaW50IGVyb2ZzX3Nob3dfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGRlbnRyeSAqcm9vdClcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtMTAyNi1cXG5mcy9lcm9mcy9zdXBlci5jOjEwMjc6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSlcXG5mcy9lcm9mcy9zdXBlci5jLTEwMjgtXFx0XFx0c2VxX3B1dHMoc2VxLCB0ZXN0X29wdChvcHQsIFhBVFRSX1VTRVIpID9cXG4tLVxcbmZzL2Vyb2ZzL3hhdHRyLmgtMTItXFxuZnMvZXJvZnMveGF0dHIuaDoxMzojaWZkZWYgQ09ORklHX0VST0ZTX0ZTX1hBVFRSXFxuZnMvZXJvZnMveGF0dHIuaC0xNC1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgKiBjb25zdCBlcm9mc194YXR0cl9oYW5kbGVyc1tdO1xcbi0tXFxuZnMvZXJvZnMveGF0dHIuaD0yMT1zdGF0aWMgaW5saW5lIHZvaWQgZXJvZnNfeGF0dHJfcHJlZml4ZXNfY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKSB7fVxcbi0tXFxuZnMvZXJvZnMveGF0dHIuaC0yNC0jZGVmaW5lIGVyb2ZzX3hhdHRyX2hhbmRsZXJzIChOVUxMKVxcbmZzL2Vyb2ZzL3hhdHRyLmg6MjU6I2VuZGlmXFx0LyogIUNPTkZJR19FUk9GU19GU19YQVRUUiAqL1xcbmZzL2Vyb2ZzL3hhdHRyLmgtMjYtXFxuLS1cXG5mcy9leHQyL01ha2VmaWxlPTEyPUNGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXFxuZnMvZXh0Mi9NYWtlZmlsZS0xMy1cXG5mcy9leHQyL01ha2VmaWxlOjE0OmV4dDItJChDT05GSUdfRVhUMl9GU19YQVRUUilcXHQgKz0geGF0dHIubyB4YXR0cl91c2VyLm8geGF0dHJfdHJ1c3RlZC5vXFxuZnMvZXh0Mi9NYWtlZmlsZS0xNS1leHQyLSQoQ09ORklHX0VYVDJfRlNfUE9TSVhfQUNMKSArPSBhY2wub1xcbi0tXFxuZnMvZXh0Mi9leHQyLmg9NjI3PXN0cnVjdCBleHQyX2lub2RlX2luZm8ge1xcbi0tXFxuZnMvZXh0Mi9leHQyLmgtNjUwLVxcdF9fdTMyXFx0aV9kaXJfc3RhcnRfbG9va3VwO1xcbmZzL2V4dDIvZXh0Mi5oOjY1MTojaWZkZWYgQ09ORklHX0VYVDJfRlNfWEFUVFJcXG5mcy9leHQyL2V4dDIuaC02NTItXFx0LypcXG4tLVxcbmZzL2V4dDIvc3VwZXIuYz0yMjY9c3RhdGljIHZvaWQgaW5pdF9vbmNlKHZvaWQgKmZvbylcXG4tLVxcbmZzL2V4dDIvc3VwZXIuYy0yMzAtXFx0cndsb2NrX2luaXQoXFx1MDAyNmVpLVxcdTAwM2VpX21ldGFfbG9jayk7XFxuZnMvZXh0Mi9zdXBlci5jOjIzMTojaWZkZWYgQ09ORklHX0VYVDJfRlNfWEFUVFJcXG5mcy9leHQyL3N1cGVyLmMtMjMyLVxcdGluaXRfcndzZW0oXFx1MDAyNmVpLVxcdTAwM2V4YXR0cl9zZW0pO1xcbi0tXFxuZnMvZXh0Mi9zdXBlci5jPTI2MT1zdGF0aWMgaW50IGV4dDJfc2hvd19vcHRpb25zKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZGVudHJ5ICpyb290KVxcbi0tXFxuZnMvZXh0Mi9zdXBlci5jLTMwNy1cXG5mcy9leHQyL3N1cGVyLmM6MzA4OiNpZmRlZiBDT05GSUdfRVhUMl9GU19YQVRUUlxcbmZzL2V4dDIvc3VwZXIuYy0zMDktXFx0aWYgKHRlc3Rfb3B0KHNiLCBYQVRUUl9VU0VSKSlcXG4tLVxcbmZzL2V4dDIvc3VwZXIuYz01MTQ9c3RhdGljIGludCBleHQyX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXFxuLS1cXG5mcy9leHQyL3N1cGVyLmMtNTY3LVxcdFxcdGJyZWFrO1xcbmZzL2V4dDIvc3VwZXIuYzo1Njg6I2lmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXFxuZnMvZXh0Mi9zdXBlci5jLTU2OS1cXHRjYXNlIE9wdF91c2VyX3hhdHRyOlxcbi0tXFxuZnMvZXh0Mi9zdXBlci5jPTgwOT1zdGF0aWMgdm9pZCBleHQyX3NldF9vcHRpb25zKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IGV4dDJfc2JfaW5mbyAqc2JpKVxcbi0tXFxuZnMvZXh0Mi9zdXBlci5jLTgzMC1cXG5mcy9leHQyL3N1cGVyLmM6ODMxOiNpZmRlZiBDT05GSUdfRVhUMl9GU19YQVRUUlxcbmZzL2V4dDIvc3VwZXIuYy04MzItXFx0aWYgKCFjdHhfcGFyc2VkX21vdW50X29wdChjdHgsIEVYVDJfTU9VTlRfWEFUVFJfVVNFUikgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmZzL2V4dDIvc3VwZXIuYz04NjQ9c3RhdGljIGludCBleHQyX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuZnMvZXh0Mi9zdXBlci5jLTExNjEtXFxuZnMvZXh0Mi9zdXBlci5jOjExNjI6I2lmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXFxuZnMvZXh0Mi9zdXBlci5jLTExNjMtXFx0c2JpLVxcdTAwM2VzX2VhX2Jsb2NrX2NhY2hlID0gZXh0Ml94YXR0cl9jcmVhdGVfY2FjaGUoKTtcXG4tLVxcbmZzL2V4dDIveGF0dHIuaD01Nz1zdHJ1Y3QgbWJfY2FjaGU7XFxuZnMvZXh0Mi94YXR0ci5oLTU4LVxcbmZzL2V4dDIveGF0dHIuaDo1OTojIGlmZGVmIENPTkZJR19FWFQyX0ZTX1hBVFRSXFxuZnMvZXh0Mi94YXR0ci5oLTYwLVxcbi0tXFxuZnMvZXh0Mi94YXR0ci5oPTc1PWV4dGVybiBjb25zdCBzdHJ1Y3QgeGF0dHJfaGFuZGxlciAqIGNvbnN0IGV4dDJfeGF0dHJfaGFuZGxlcnNbXTtcXG5mcy9leHQyL3hhdHRyLmgtNzYtXFxuZnMvZXh0Mi94YXR0ci5oOjc3OiMgZWxzZSAgLyogQ09ORklHX0VYVDJfRlNfWEFUVFIgKi9cXG5mcy9leHQyL3hhdHRyLmgtNzgtXFxuLS1cXG5mcy9leHQyL3hhdHRyLmg9OTg9c3RhdGljIGlubGluZSB2b2lkIGV4dDJfeGF0dHJfZGVzdHJveV9jYWNoZShzdHJ1Y3QgbWJfY2FjaGUgKmNhY2hlKVxcbi0tXFxuZnMvZXh0Mi94YXR0ci5oLTEwNC1cXG5mcy9leHQyL3hhdHRyLmg6MTA1OiMgZW5kaWYgIC8qIENPTkZJR19FWFQyX0ZTX1hBVFRSICovXFxuZnMvZXh0Mi94YXR0ci5oLTEwNi1cXG4tLVxcbmZzL2YyZnMvTWFrZWZpbGU9Nz1mMmZzLSQoQ09ORklHX0YyRlNfU1RBVF9GUykgKz0gZGVidWcub1xcbmZzL2YyZnMvTWFrZWZpbGU6ODpmMmZzLSQoQ09ORklHX0YyRlNfRlNfWEFUVFIpICs9IHhhdHRyLm9cXG5mcy9mMmZzL01ha2VmaWxlLTktZjJmcy0kKENPTkZJR19GMkZTX0ZTX1BPU0lYX0FDTCkgKz0gYWNsLm9cXG4tLVxcbmZzL2YyZnMvc3VwZXIuYz03OTA9c3RhdGljIGludCBmMmZzX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXFxuLS1cXG5mcy9mMmZzL3N1cGVyLmMtODI4LVxcdFxcdGJyZWFrO1xcbmZzL2YyZnMvc3VwZXIuYzo4Mjk6I2lmZGVmIENPTkZJR19GMkZTX0ZTX1hBVFRSXFxuZnMvZjJmcy9zdXBlci5jLTgzMC1cXHRjYXNlIE9wdF91c2VyX3hhdHRyOlxcbi0tXFxuZnMvZjJmcy9zdXBlci5jPTIzNzU9c3RhdGljIGludCBmMmZzX3Nob3dfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGRlbnRyeSAqcm9vdClcXG4tLVxcbmZzL2YyZnMvc3VwZXIuYy0yNDA1LVxcdH1cXG5mcy9mMmZzL3N1cGVyLmM6MjQwNjojaWZkZWYgQ09ORklHX0YyRlNfRlNfWEFUVFJcXG5mcy9mMmZzL3N1cGVyLmMtMjQwNy1cXHRpZiAodGVzdF9vcHQoc2JpLCBYQVRUUl9VU0VSKSlcXG4tLVxcbmZzL2YyZnMvc3VwZXIuYz0yNTQ5PXN0YXRpYyB2b2lkIGRlZmF1bHRfb3B0aW9ucyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJvb2wgcmVtb3VudClcXG4tLVxcbmZzL2YyZnMvc3VwZXIuYy0yNjAxLVxcbmZzL2YyZnMvc3VwZXIuYzoyNjAyOiNpZmRlZiBDT05GSUdfRjJGU19GU19YQVRUUlxcbmZzL2YyZnMvc3VwZXIuYy0yNjAzLVxcdHNldF9vcHQoc2JpLCBYQVRUUl9VU0VSKTtcXG4tLVxcbmZzL2YyZnMveGF0dHIuaD00OD1zdHJ1Y3QgZjJmc194YXR0cl9lbnRyeSB7XFxuLS1cXG5mcy9mMmZzL3hhdHRyLmgtMTIzLVxcbmZzL2YyZnMveGF0dHIuaDoxMjQ6I2lmZGVmIENPTkZJR19GMkZTX0ZTX1hBVFRSXFxuZnMvZjJmcy94YXR0ci5oLTEyNS1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgZjJmc194YXR0cl91c2VyX2hhbmRsZXI7XFxuLS1cXG5mcy9qZmZzMi9NYWtlZmlsZT0xND1qZmZzMi0kKENPTkZJR19KRkZTMl9GU19XUklURUJVRkZFUilcXHQrPSB3YnVmLm9cXG5mcy9qZmZzMi9NYWtlZmlsZToxNTpqZmZzMi0kKENPTkZJR19KRkZTMl9GU19YQVRUUilcXHRcXHQrPSB4YXR0ci5vIHhhdHRyX3RydXN0ZWQubyB4YXR0cl91c2VyLm9cXG5mcy9qZmZzMi9NYWtlZmlsZS0xNi1qZmZzMi0kKENPTkZJR19KRkZTMl9GU19TRUNVUklUWSlcXHQrPSBzZWN1cml0eS5vXFxuLS1cXG5mcy9qZmZzMi9lcmFzZS5jPTIwNj1zdGF0aWMgaW5saW5lIHZvaWQgamZmczJfcmVtb3ZlX25vZGVfcmVmc19mcm9tX2lub19saXN0KHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLFxcbi0tXFxuZnMvamZmczIvZXJhc2UuYy0yNzItXFx0c3dpdGNoIChpYy1cXHUwMDNlY2xhc3MpIHtcXG5mcy9qZmZzMi9lcmFzZS5jOjI3MzojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXFxuZnMvamZmczIvZXJhc2UuYy0yNzQtXFx0XFx0Y2FzZSBSQVdOT0RFX0NMQVNTX1hBVFRSX0RBVFVNOlxcbi0tXFxuZnMvamZmczIvZ2MuYz0xMjQ9aW50IGpmZnMyX2dhcmJhZ2VfY29sbGVjdF9wYXNzKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjKVxcbi0tXFxuZnMvamZmczIvZ2MuYy0zMjgtXFxuZnMvamZmczIvZ2MuYzozMjk6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL2djLmMtMzMwLVxcdC8qIFdoZW4gJ2ljJyByZWZlcnMgeGF0dHJfZGF0dW0veGF0dHJfcmVmLCB0aGlzIG5vZGUgaXMgR0NlZCBhcyB4YXR0ci5cXG4tLVxcbmZzL2pmZnMyL2pmZnMyX2ZzX3NiLmg9NDk9c3RydWN0IGpmZnMyX3NiX2luZm8ge1xcbi0tXFxuZnMvamZmczIvamZmczJfZnNfc2IuaC0xNDUtXFxuZnMvamZmczIvamZmczJfZnNfc2IuaDoxNDY6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL2pmZnMyX2ZzX3NiLmgtMTQ3LSNkZWZpbmUgWEFUVFJJTkRFWF9IQVNIU0laRVxcdCg1NylcXG4tLVxcbmZzL2pmZnMyL21hbGxvYy5jPTI4PXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqaW5vZGVfY2FjaGVfc2xhYjtcXG5mcy9qZmZzMi9tYWxsb2MuYzoyOTojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXFxuZnMvamZmczIvbWFsbG9jLmMtMzAtc3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICp4YXR0cl9kYXR1bV9jYWNoZTtcXG4tLVxcbmZzL2pmZnMyL21hbGxvYy5jPTM0PWludCBfX2luaXQgamZmczJfY3JlYXRlX3NsYWJfY2FjaGVzKHZvaWQpXFxuLS1cXG5mcy9qZmZzMi9tYWxsb2MuYy02NS1cXG5mcy9qZmZzMi9tYWxsb2MuYzo2NjojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXFxuZnMvamZmczIvbWFsbG9jLmMtNjctXFx0eGF0dHJfZGF0dW1fY2FjaGUgPSBLTUVNX0NBQ0hFKGpmZnMyX3hhdHRyX2RhdHVtLCAwKTtcXG4tLVxcbmZzL2pmZnMyL21hbGxvYy5jPTgyPXZvaWQgamZmczJfZGVzdHJveV9zbGFiX2NhY2hlcyh2b2lkKVxcbi0tXFxuZnMvamZmczIvbWFsbG9jLmMtOTAtXFx0a21lbV9jYWNoZV9kZXN0cm95KGlub2RlX2NhY2hlX3NsYWIpO1xcbmZzL2pmZnMyL21hbGxvYy5jOjkxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9tYWxsb2MuYy05Mi1cXHRrbWVtX2NhY2hlX2Rlc3Ryb3koeGF0dHJfZGF0dW1fY2FjaGUpO1xcbi0tXFxuZnMvamZmczIvbWFsbG9jLmM9MjU0PXZvaWQgamZmczJfZnJlZV9pbm9kZV9jYWNoZShzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKngpXFxuLS1cXG5mcy9qZmZzMi9tYWxsb2MuYy0yNTktXFxuZnMvamZmczIvbWFsbG9jLmM6MjYwOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9tYWxsb2MuYy0yNjEtc3RydWN0IGpmZnMyX3hhdHRyX2RhdHVtICpqZmZzMl9hbGxvY194YXR0cl9kYXR1bSh2b2lkKVxcbi0tXFxuZnMvamZmczIvbm9kZWxpc3QuYz00NTc9dm9pZCBqZmZzMl9kZWxfaW5vX2NhY2hlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKm9sZClcXG4tLVxcbmZzL2pmZnMyL25vZGVsaXN0LmMtNDYwLVxcbmZzL2pmZnMyL25vZGVsaXN0LmM6NDYxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9ub2RlbGlzdC5jLTQ2Mi1cXHRCVUdfT04ob2xkLVxcdTAwM2V4cmVmKTtcXG4tLVxcbmZzL2pmZnMyL25vZGVsaXN0Lmg9MTU4PXN0cnVjdCBqZmZzMl9pbm9kZV9jYWNoZSB7XFxuLS1cXG5mcy9qZmZzMi9ub2RlbGlzdC5oLTE3NS1cXHRzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKm5leHQ7XFxuZnMvamZmczIvbm9kZWxpc3QuaDoxNzY6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL25vZGVsaXN0LmgtMTc3LVxcdHN0cnVjdCBqZmZzMl94YXR0cl9yZWYgKnhyZWY7XFxuLS1cXG5mcy9qZmZzMi9ub2RlbGlzdC5oPTQ0MT12b2lkIGpmZnMyX2ZyZWVfaW5vZGVfY2FjaGUoc3RydWN0IGpmZnMyX2lub2RlX2NhY2hlICopO1xcbmZzL2pmZnMyL25vZGVsaXN0Lmg6NDQyOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9ub2RlbGlzdC5oLTQ0My1zdHJ1Y3QgamZmczJfeGF0dHJfZGF0dW0gKmpmZnMyX2FsbG9jX3hhdHRyX2RhdHVtKHZvaWQpO1xcbi0tXFxuZnMvamZmczIvbm9kZW1nbXQuYz01ODY9dm9pZCBqZmZzMl9tYXJrX25vZGVfb2Jzb2xldGUoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsIHN0cnVjdCBqZmZzMl9yYXdfbm9kZV9yZWYgKnJlZilcXG4tLVxcbmZzL2pmZnMyL25vZGVtZ210LmMtODIzLVxcdFxcdHN3aXRjaCAoaWMtXFx1MDAzZWNsYXNzKSB7XFxuZnMvamZmczIvbm9kZW1nbXQuYzo4MjQ6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL25vZGVtZ210LmMtODI1LVxcdFxcdFxcdGNhc2UgUkFXTk9ERV9DTEFTU19YQVRUUl9EQVRVTTpcXG4tLVxcbmZzL2pmZnMyL3NjYW4uYz0zMTI9aW50IGpmZnMyX3NjYW5fY2xhc3NpZnlfamViKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViKVxcbi0tXFxuZnMvamZmczIvc2Nhbi5jLTMzMC1cXG5mcy9qZmZzMi9zY2FuLmM6MzMxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9zY2FuLmMtMzMyLXN0YXRpYyBpbnQgamZmczJfc2Nhbl94YXR0cl9ub2RlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViLFxcbi0tXFxuZnMvamZmczIvc2Nhbi5jPTQ0Nz1zdGF0aWMgaW50IGpmZnMyX3NjYW5fZXJhc2VibG9jayAoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsIHN0cnVjdCBqZmZzMl9lcmFzZWJsb2NrICpqZWIsXFxuLS1cXG5mcy9qZmZzMi9zY2FuLmMtODM1LVxcbmZzL2pmZnMyL3NjYW4uYzo4MzY6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL3NjYW4uYy04MzctXFx0XFx0Y2FzZSBKRkZTMl9OT0RFVFlQRV9YQVRUUjpcXG4tLVxcbmZzL2pmZnMyL3NjYW4uYy04NzAtXFx0XFx0XFx0YnJlYWs7XFxuZnMvamZmczIvc2Nhbi5jOjg3MTojZW5kaWZcXHQvKiBDT05GSUdfSkZGUzJfRlNfWEFUVFIgKi9cXG5mcy9qZmZzMi9zY2FuLmMtODcyLVxcbi0tXFxuZnMvamZmczIvc3VtbWFyeS5jPTYzPXN0YXRpYyBpbnQgamZmczJfc3VtX2FkZF9tZW0oc3RydWN0IGpmZnMyX3N1bW1hcnkgKnMsIHVuaW9uIGpmZnMyX3N1bV9tZW0gKml0ZW0pXFxuLS1cXG5mcy9qZmZzMi9zdW1tYXJ5LmMtODMtXFx0XFx0XFx0YnJlYWs7XFxuZnMvamZmczIvc3VtbWFyeS5jOjg0OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9zdW1tYXJ5LmMtODUtXFx0XFx0Y2FzZSBKRkZTMl9OT0RFVFlQRV9YQVRUUjpcXG4tLVxcbmZzL2pmZnMyL3N1bW1hcnkuYz0xMzM9aW50IGpmZnMyX3N1bV9hZGRfZGlyZW50X21lbShzdHJ1Y3QgamZmczJfc3VtbWFyeSAqcywgc3RydWN0IGpmZnMyX3Jhd19kaXJlbnQgKnJkLFxcbi0tXFxuZnMvamZmczIvc3VtbWFyeS5jLTE1Ni1cXG5mcy9qZmZzMi9zdW1tYXJ5LmM6MTU3OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9zdW1tYXJ5LmMtMTU4LWludCBqZmZzMl9zdW1fYWRkX3hhdHRyX21lbShzdHJ1Y3QgamZmczJfc3VtbWFyeSAqcywgc3RydWN0IGpmZnMyX3Jhd194YXR0ciAqcngsIHVpbnQzMl90IG9mcylcXG4tLVxcbmZzL2pmZnMyL3N1bW1hcnkuYz0yNDg9aW50IGpmZnMyX3N1bV9hZGRfa3ZlYyhzdHJ1Y3QgamZmczJfc2JfaW5mbyAqYywgY29uc3Qgc3RydWN0IGt2ZWMgKmludmVjcyxcXG4tLVxcbmZzL2pmZnMyL3N1bW1hcnkuYy0zMTMtXFx0XFx0fVxcbmZzL2pmZnMyL3N1bW1hcnkuYzozMTQ6I2lmZGVmIENPTkZJR19KRkZTMl9GU19YQVRUUlxcbmZzL2pmZnMyL3N1bW1hcnkuYy0zMTUtXFx0XFx0Y2FzZSBKRkZTMl9OT0RFVFlQRV9YQVRUUjoge1xcbi0tXFxuZnMvamZmczIvc3VtbWFyeS5jPTM4Nj1zdGF0aWMgaW50IGpmZnMyX3N1bV9wcm9jZXNzX3N1bV9kYXRhKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViLFxcbi0tXFxuZnMvamZmczIvc3VtbWFyeS5jLTQ4OS1cXHRcXHRcXHR9XFxuZnMvamZmczIvc3VtbWFyeS5jOjQ5MDojaWZkZWYgQ09ORklHX0pGRlMyX0ZTX1hBVFRSXFxuZnMvamZmczIvc3VtbWFyeS5jLTQ5MS1cXHRcXHRcXHRjYXNlIEpGRlMyX05PREVUWVBFX1hBVFRSOiB7XFxuLS1cXG5mcy9qZmZzMi9zdW1tYXJ5LmM9Njc0PXN0YXRpYyBpbnQgamZmczJfc3VtX3dyaXRlX2RhdGEoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsIHN0cnVjdCBqZmZzMl9lcmFzZWJsb2NrICpqZWIsXFxuLS1cXG5mcy9qZmZzMi9zdW1tYXJ5LmMtNzU0LVxcdFxcdFxcdH1cXG5mcy9qZmZzMi9zdW1tYXJ5LmM6NzU1OiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi9zdW1tYXJ5LmMtNzU2LVxcdFxcdFxcdGNhc2UgSkZGUzJfTk9ERVRZUEVfWEFUVFI6IHtcXG4tLVxcbmZzL2pmZnMyL3hhdHRyLmg9NjY9c3RhdGljIGlubGluZSBpbnQgaXNfeGF0dHJfcmVmX2RlYWQoc3RydWN0IGpmZnMyX3hhdHRyX3JlZiAqcmVmKVxcbi0tXFxuZnMvamZmczIveGF0dHIuaC03MC1cXG5mcy9qZmZzMi94YXR0ci5oOjcxOiNpZmRlZiBDT05GSUdfSkZGUzJfRlNfWEFUVFJcXG5mcy9qZmZzMi94YXR0ci5oLTcyLVxcbi0tXFxuZnMvamZmczIveGF0dHIuaD0xMDE9ZXh0ZXJuIHNzaXplX3QgamZmczJfbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBzaXplX3QpO1xcbi0tXFxuZnMvamZmczIveGF0dHIuaC0xMTYtXFxuZnMvamZmczIveGF0dHIuaDoxMTc6I2VuZGlmIC8qIENPTkZJR19KRkZTMl9GU19YQVRUUiAqL1xcbmZzL2pmZnMyL3hhdHRyLmgtMTE4LVxcbi0tXFxuZnMvbmlsZnMyL25pbGZzLmg9NDA9c3RydWN0IG5pbGZzX2lub2RlX2luZm8ge1xcbi0tXFxuZnMvbmlsZnMyL25pbGZzLmgtNTEtXFxuZnMvbmlsZnMyL25pbGZzLmg6NTI6I2lmZGVmIENPTkZJR19OSUxGU19YQVRUUlxcbmZzL25pbGZzMi9uaWxmcy5oLTUzLVxcdC8qXFxuLS1cXG5mcy9uaWxmczIvc3VwZXIuYz0xMzE0PXN0YXRpYyB2b2lkIG5pbGZzX2lub2RlX2luaXRfb25jZSh2b2lkICpvYmopXFxuLS1cXG5mcy9uaWxmczIvc3VwZXIuYy0xMzE4LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZpaS1cXHUwMDNlaV9kaXJ0eSk7XFxuZnMvbmlsZnMyL3N1cGVyLmM6MTMxOTojaWZkZWYgQ09ORklHX05JTEZTX1hBVFRSXFxuZnMvbmlsZnMyL3N1cGVyLmMtMTMyMC1cXHRpbml0X3J3c2VtKFxcdTAwMjZpaS1cXHUwMDNleGF0dHJfc2VtKTtcXG4tLVxcbmZzL3NtYi9jbGllbnQvTWFrZWZpbGU9MTk9JChvYmopL2NpZnNfc3BuZWdvX25lZ3Rva2VuaW5pdC5hc24xLm86ICQob2JqKS9jaWZzX3NwbmVnb19uZWd0b2tlbmluaXQuYXNuMS5jICQob2JqKS9jaWZzX3NwbmVnb19uZWd0b2tlbmluaXQuYXNuMS5oXFxuZnMvc21iL2NsaWVudC9NYWtlZmlsZS0yMC1cXG5mcy9zbWIvY2xpZW50L01ha2VmaWxlOjIxOmNpZnMtJChDT05GSUdfQ0lGU19YQVRUUikgKz0geGF0dHIub1xcbmZzL3NtYi9jbGllbnQvTWFrZWZpbGUtMjItXFxuLS1cXG5mcy9zbWIvY2xpZW50L2NpZnNfZGVidWcuYz00Mzg9c3RhdGljIGludCBjaWZzX2RlYnVnX2RhdGFfcHJvY19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmZzL3NtYi9jbGllbnQvY2lmc19kZWJ1Zy5jLTQ4Mi0jZW5kaWZcXG5mcy9zbWIvY2xpZW50L2NpZnNfZGVidWcuYzo0ODM6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXFxuZnMvc21iL2NsaWVudC9jaWZzX2RlYnVnLmMtNDg0LVxcdHNlcV9wcmludGYobSwgXFxcIixYQVRUUlxcXCIpO1xcbi0tXFxuZnMvc21iL2NsaWVudC9jaWZzZnMuaD0xMzI9aW50IGNpZnNfc3ltbGluayhzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL3NtYi9jbGllbnQvY2lmc2ZzLmgtMTM0LVxcbmZzL3NtYi9jbGllbnQvY2lmc2ZzLmg6MTM1OiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxcbmZzL3NtYi9jbGllbnQvY2lmc2ZzLmgtMTM2LWV4dGVybiBjb25zdCBzdHJ1Y3QgeGF0dHJfaGFuZGxlciAqIGNvbnN0IGNpZnNfeGF0dHJfaGFuZGxlcnNbXTtcXG4tLVxcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jPTMwODU9c3RydWN0IGlub2RlICpjaWZzX2NyZWF0ZV9yZXBhcnNlX2lub2RlKHN0cnVjdCBjaWZzX29wZW5faW5mb19kYXRhICpkYXRhLFxcbi0tXFxuZnMvc21iL2NsaWVudC9jaWZzc21iLmMtMzExNS1cXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYzozMTE2OiNpZm5kZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy0zMTE3LVxcdGlmICh4YXR0cl9pb3YpXFxuLS1cXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy0zMTMxLVxcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jOjMxMzI6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXFxuZnMvc21iL2NsaWVudC9jaWZzc21iLmMtMzEzMy1cXHRpZiAoeGF0dHJfaW92KSB7XFxuLS1cXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYz02MDI3PUNJRlNTTUJVbml4U2V0UGF0aEluZm8oY29uc3QgdW5zaWduZWQgaW50IHhpZCwgc3RydWN0IGNpZnNfdGNvbiAqdGNvbixcXG4tLVxcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jLTYxMDEtXFxuZnMvc21iL2NsaWVudC9jaWZzc21iLmM6NjEwMjojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy02MTAzLS8qXFxuLS1cXG5mcy9zbWIvY2xpZW50L2lub2RlLmM9NzIxPXN0YXRpYyBpbnQgY2lmc19zZnVfbW9kZShzdHJ1Y3QgY2lmc19mYXR0ciAqZmF0dHIsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBhdGgsXFxuLS1cXG5mcy9zbWIvY2xpZW50L2lub2RlLmMtNzIzLXtcXG5mcy9zbWIvY2xpZW50L2lub2RlLmM6NzI0OiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxcbmZzL3NtYi9jbGllbnQvaW5vZGUuYy03MjUtXFx0c3NpemVfdCByYztcXG4tLVxcbmZzL3NtYi9jbGllbnQvc21iMW9wcy5jPTUzMj1zdGF0aWMgaW50IGNpZnNfcXVlcnlfcGF0aF9pbmZvKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsXFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYy02NDItXFxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmM6NjQzOiNpZmRlZiBDT05GSUdfQ0lGU19YQVRUUlxcbmZzL3NtYi9jbGllbnQvc21iMW9wcy5jLTY0NC1cXHQvKlxcbi0tXFxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmM9MTM5Mz1zdHJ1Y3Qgc21iX3ZlcnNpb25fb3BlcmF0aW9ucyBzbWIxX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYy0xNDY5LVxcdC5zZWxlY3Rfc2VjdHlwZSA9IGNpZnNfc2VsZWN0X3NlY3R5cGUsXFxuZnMvc21iL2NsaWVudC9zbWIxb3BzLmM6MTQ3MDojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L3NtYjFvcHMuYy0xNDcxLVxcdC5xdWVyeV9hbGxfRUFzID0gQ0lGU1NNQlFBbGxFQXMsXFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz0xMDMxPXN0YXRpYyBpbnQgc21iMl9xdWVyeV9maWxlX2luZm8oY29uc3QgdW5zaWduZWQgaW50IHhpZCwgc3RydWN0IGNpZnNfdGNvbiAqdGNvbixcXG4tLVxcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jLTEwNDQtXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6MTA0NTojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy0xMDQ2LXN0YXRpYyBzc2l6ZV90XFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01NTQyPXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjIwX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01NjI1LVxcdC5zZWxlY3Rfc2VjdHlwZSA9IHNtYjJfc2VsZWN0X3NlY3R5cGUsXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6NTYyNjojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01NjI3LVxcdC5xdWVyeV9hbGxfRUFzID0gc21iMl9xdWVyeV9lYXMsXFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01NjQ0PXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjIxX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01NzMwLVxcdC5zZWxlY3Rfc2VjdHlwZSA9IHNtYjJfc2VsZWN0X3NlY3R5cGUsXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6NTczMTojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01NzMyLVxcdC5xdWVyeV9hbGxfRUFzID0gc21iMl9xdWVyeV9lYXMsXFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01NzQ4PXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjMwX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01ODQ2LVxcdC5zZWxlY3Rfc2VjdHlwZSA9IHNtYjJfc2VsZWN0X3NlY3R5cGUsXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmM6NTg0NzojaWZkZWYgQ09ORklHX0NJRlNfWEFUVFJcXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYy01ODQ4LVxcdC5xdWVyeV9hbGxfRUFzID0gc21iMl9xdWVyeV9lYXMsXFxuLS1cXG5mcy9zbWIvY2xpZW50L3NtYjJvcHMuYz01ODY0PXN0cnVjdCBzbWJfdmVyc2lvbl9vcGVyYXRpb25zIHNtYjMxMV9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmMtNTk2Mi1cXHQuc2VsZWN0X3NlY3R5cGUgPSBzbWIyX3NlbGVjdF9zZWN0eXBlLFxcbmZzL3NtYi9jbGllbnQvc21iMm9wcy5jOjU5NjM6I2lmZGVmIENPTkZJR19DSUZTX1hBVFRSXFxuZnMvc21iL2NsaWVudC9zbWIyb3BzLmMtNTk2NC1cXHQucXVlcnlfYWxsX0VBcyA9IHNtYjJfcXVlcnlfZWFzLFxcbi0tXFxuZnMvc3F1YXNoZnMvTWFrZWZpbGU9MTM9c3F1YXNoZnMtJChDT05GSUdfU1FVQVNIRlNfREVDT01QX01VTFRJX1BFUkNQVSkgKz0gZGVjb21wcmVzc29yX211bHRpX3BlcmNwdS5vXFxuZnMvc3F1YXNoZnMvTWFrZWZpbGU6MTQ6c3F1YXNoZnMtJChDT05GSUdfU1FVQVNIRlNfWEFUVFIpICs9IHhhdHRyLm8geGF0dHJfaWQub1xcbmZzL3NxdWFzaGZzL01ha2VmaWxlLTE1LXNxdWFzaGZzLSQoQ09ORklHX1NRVUFTSEZTX0xaNCkgKz0gbHo0X3dyYXBwZXIub1xcbi0tXFxuZnMvc3F1YXNoZnMveGF0dHIuaC0xMC1cXG5mcy9zcXVhc2hmcy94YXR0ci5oOjExOiNpZmRlZiBDT05GSUdfU1FVQVNIRlNfWEFUVFJcXG5mcy9zcXVhc2hmcy94YXR0ci5oLTEyLWV4dGVybiBfX2xlNjQgKnNxdWFzaGZzX3JlYWRfeGF0dHJfaWRfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICosIHU2NCxcXG4tLVxcbmZzL3ViaWZzL01ha2VmaWxlPTk9dWJpZnMtJChDT05GSUdfRlNfRU5DUllQVElPTikgKz0gY3J5cHRvLm9cXG5mcy91Ymlmcy9NYWtlZmlsZToxMDp1Ymlmcy0kKENPTkZJR19VQklGU19GU19YQVRUUikgKz0geGF0dHIub1xcbmZzL3ViaWZzL01ha2VmaWxlLTExLXViaWZzLSQoQ09ORklHX1VCSUZTX0ZTX0FVVEhFTlRJQ0FUSU9OKSArPSBhdXRoLm9cXG4tLVxcbmZzL3ViaWZzL3ViaWZzLmg9MjAzND1zc2l6ZV90IHViaWZzX3hhdHRyX2dldChzdHJ1Y3QgaW5vZGUgKmhvc3QsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmJ1ZixcXG4tLVxcbmZzL3ViaWZzL3ViaWZzLmgtMjAzNi1cXG5mcy91Ymlmcy91Ymlmcy5oOjIwMzc6I2lmZGVmIENPTkZJR19VQklGU19GU19YQVRUUlxcbmZzL3ViaWZzL3ViaWZzLmgtMjAzOC1leHRlcm4gY29uc3Qgc3RydWN0IHhhdHRyX2hhbmRsZXIgKiBjb25zdCB1Ymlmc194YXR0cl9oYW5kbGVyc1tdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNjowNzo0Mi41NjE1NjQ4NjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc1NjY0ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklPX1VSSU5HIFhBVFRSIEZ1bmN0aW9uIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBwbGF5IGhlcmUgaXMgZGVmaW5pdGVseSBgSU9fVVJJTkdgLiBNeSBjdXJyZW50IHRhcmdldCBpcyB1bmRlcnN0YW5kaW5nIGhvdyBleHRlbmRlZCBhdHRyaWJ1dGVzICh4YXR0cnMpIGFyZSBoYW5kbGVkIHdpdGggdGhpcyBzcGVjaWZpYyBjb25maWd1cmF0aW9uLiBUaGUgZm9jdXMgc3ltYm9scyBnaXZlIG1lIGEgc3Ryb25nIHN0YXJ0aW5nIHBvaW50OiBgaW9fZnJlbW92ZXhhdHRyX3ByZXBgLCBgaW9fZnJlbW92ZXhhdHRyYCwgYGlvX2ZsaXN0eGF0dHJfcHJlcGAsIGBpb19mbGlzdHhhdHRyYCwgYGZpbGVfbGlzdHhhdHRyYCwgYW5kIGBmaWxlX3JlbW92ZXhhdHRyYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjZW50cmFsIHRvIHJlbW92aW5nIGFuZCBsaXN0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIGFuZCB0aGUgJ2lvXycgcHJlZml4IHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkncmUgcmVsYXRlZCB0byBhc3luY2hyb25vdXMgSS9PIHdpdGggaW9fdXJpbmcuXG5cbkJlZm9yZSBJIGp1bXAgaW4sIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gSnVzdCB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbC4gYENPTkZJR19JT19VUklOR2Agc2VlbXMgbGlrZSB0aGUgcHJpbWFyeSBkcml2ZXIsIGJ1dCBpdCdzIGFsd2F5cyBnb29kIHByYWN0aWNlIHRvIGVsaW1pbmF0ZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMuXG5cbk9uY2UgSSBoYXZlIGEgc29saWQgZ3Jhc3Agb24gdGhlc2Ugc3ltYm9scyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHVuZGVyIGBJT19VUklOR2AsIEknbGwgdXNlIGBzZXQtcmVzdWx0c2AgdG8gcHJvdmlkZSBhIGNsZWFyIGFuZCBjb25jaXNlIHN1bW1hcnkgb2YgbXkgZmluZGluZ3MuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc3RydWN0dXJlZCBhcHByb2FjaCBmb3IgZG9jdW1lbnRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGludGVyYWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxNTAsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA2OjA3OjQ3LjEzNzIzMTU1OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjUwODU2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19mcmVtb3ZleGF0dHJfcHJlcFwiLFxuICAgIFwiaW9fZnJlbW92ZXhhdHRyXCIsXG4gICAgXCJpb19mbGlzdHhhdHRyX3ByZXBcIixcbiAgICBcImlvX2ZsaXN0eGF0dHJcIixcbiAgICBcImZpbGVfbGlzdHhhdHRyXCIsXG4gICAgXCJmaWxlX3JlbW92ZXhhdHRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBJT1JJTkdfT1BfRlJFTU9WRVhBVFRSIGFuZCBJT1JJTkdfT1BfRkxJU1RYQVRUUiB0byBpb191cmluZy4gSXQgbW9kaWZpZXMgY29yZSBpb191cmluZyBhbmQgeGF0dHIgbG9naWMsIG1ha2luZyBpdCBoaWdobHkgZnVuY3Rpb25hbCBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX2ZyZW1vdmV4YXR0cl9wcmVwXCIsXG4gICAgXCJpb19mcmVtb3ZleGF0dHJcIixcbiAgICBcImlvX2ZsaXN0eGF0dHJfcHJlcFwiLFxuICAgIFwiaW9fZmxpc3R4YXR0clwiLFxuICAgIFwiZmlsZV9saXN0eGF0dHJcIixcbiAgICBcImZpbGVfcmVtb3ZleGF0dHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIElPUklOR19PUF9GUkVNT1ZFWEFUVFIgYW5kIElPUklOR19PUF9GTElTVFhBVFRSIHRvIGlvX3VyaW5nLiBJdCBtb2RpZmllcyBjb3JlIGlvX3VyaW5nIGFuZCB4YXR0ciBsb2dpYywgbWFraW5nIGl0IGhpZ2hseSBmdW5jdGlvbmFsIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowb4cdq[1] Phase: Succeeded StartedAt: 2026-07-22 06:07:59 +0000 UTC FinishedAt: 2026-07-22 06:07:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 06:07:59 +0000 UTC FinishedAt: 2026-07-22 06:07:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2] Phase: Succeeded StartedAt: 2026-07-22 06:07:59 +0000 UTC FinishedAt: 2026-07-22 10:50:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:07:59 +0000 UTC FinishedAt: 2026-07-22 10:50:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:07:59 +0000 UTC FinishedAt: 2026-07-22 06:08:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:07:59 +0000 UTC FinishedAt: 2026-07-22 06:08:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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-workflowb4cdq/series-workflowb4cdq-convert-artifact-2053417758/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:08:19 +0000 UTC FinishedAt: 2026-07-22 06:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:08:19 +0000 UTC FinishedAt: 2026-07-22 06:58:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5330c311-4a97-49b6-aebb-22ca644f3ea1,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-workflowb4cdq/series-workflowb4cdq-convert-artifact-2053417758/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": "fe42d2ed-0976-4d1e-be3d-225902c74d25", "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-workflowb4cdq/series-workflowb4cdq-build-action-2561830916/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:08:19 +0000 UTC FinishedAt: 2026-07-22 06:58:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5330c311-4a97-49b6-aebb-22ca644f3ea1,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-workflowb4cdq/series-workflowb4cdq-convert-artifact-2053417758/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": "fe42d2ed-0976-4d1e-be3d-225902c74d25", "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-workflowb4cdq/series-workflowb4cdq-build-action-2561830916/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:58:46 +0000 UTC FinishedAt: 2026-07-22 06:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:58:46 +0000 UTC FinishedAt: 2026-07-22 06:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:58:46 +0000 UTC FinishedAt: 2026-07-22 06:59:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:58:46 +0000 UTC FinishedAt: 2026-07-22 06:58:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-workflowb4cdq/series-workflowb4cdq-convert-artifact-4059881425/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:59:08 +0000 UTC FinishedAt: 2026-07-22 07:01:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 06:59:08 +0000 UTC FinishedAt: 2026-07-22 07:01:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fe42d2ed-0976-4d1e-be3d-225902c74d25,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-workflowb4cdq/series-workflowb4cdq-build-action-2561830916/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-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:01:41 +0000 UTC FinishedAt: 2026-07-22 07:01:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:01:41 +0000 UTC FinishedAt: 2026-07-22 07:01:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:01:41 +0000 UTC FinishedAt: 2026-07-22 07:45:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:01:41 +0000 UTC FinishedAt: 2026-07-22 07:45:32 +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:*5330c311-4a97-49b6-aebb-22ca644f3ea1,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-workflowb4cdq/series-workflowb4cdq-convert-artifact-4059881425/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": "94a90ba5-4801-4da5-904a-a477736e5b53", "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-workflowb4cdq/series-workflowb4cdq-build-action-117884317/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:01:41 +0000 UTC FinishedAt: 2026-07-22 07:45:22 +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:*5330c311-4a97-49b6-aebb-22ca644f3ea1,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-workflowb4cdq/series-workflowb4cdq-convert-artifact-4059881425/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": "94a90ba5-4801-4da5-904a-a477736e5b53", "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-workflowb4cdq/series-workflowb4cdq-build-action-117884317/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:45:32 +0000 UTC FinishedAt: 2026-07-22 07:45:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:45:32 +0000 UTC FinishedAt: 2026-07-22 07:45:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:45:32 +0000 UTC FinishedAt: 2026-07-22 07:47:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:45:32 +0000 UTC FinishedAt: 2026-07-22 07:47: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:*94a90ba5-4801-4da5-904a-a477736e5b53,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-workflowb4cdq/series-workflowb4cdq-build-action-117884317/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-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:47:27 +0000 UTC FinishedAt: 2026-07-22 10:50:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:47:27 +0000 UTC FinishedAt: 2026-07-22 10:50:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"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:*fe42d2ed-0976-4d1e-be3d-225902c74d25,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*94a90ba5-4801-4da5-904a-a477736e5b53,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-workflowb4cdq/series-workflowb4cdq-build-action-2561830916/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-workflowb4cdq/series-workflowb4cdq-build-action-117884317/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:47:27 +0000 UTC FinishedAt: 2026-07-22 07:47:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:47:27 +0000 UTC FinishedAt: 2026-07-22 07:47:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"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-workflowb4cdq/series-workflowb4cdq-convert-artifact-1570649862/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:47:27 +0000 UTC FinishedAt: 2026-07-22 07:47:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:47:27 +0000 UTC FinishedAt: 2026-07-22 07:47:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:47:27 +0000 UTC FinishedAt: 2026-07-22 07:47:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:47:37 +0000 UTC FinishedAt: 2026-07-22 10:50:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4cdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","io_uring"],"focus_symbols":["io_fremovexattr_prep","io_fremovexattr","io_flistxattr_prep","io_flistxattr","file_listxattr","file_removexattr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"248951ddc14de84de3910f9b13f51491a8cd91df","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"f990a3b7-63f8-49e9-9fab-cad4516acf8e","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-22 07:47:37 +0000 UTC FinishedAt: 2026-07-22 10:49:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fe42d2ed-0976-4d1e-be3d-225902c74d25,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*94a90ba5-4801-4da5-904a-a477736e5b53,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-workflowb4cdq/series-workflowb4cdq-build-action-2561830916/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-workflowb4cdq/series-workflowb4cdq-build-action-117884317/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-workflowb4cdq/series-workflowb4cdq-convert-artifact-1570649862/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,}