Name: series-workflow76f57 Phase: Succeeded StartedAt: 2026-07-22 13:57:51 +0000 UTC FinishedAt: 2026-07-22 18:55:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[0] Phase: Succeeded StartedAt: 2026-07-22 13:57:51 +0000 UTC FinishedAt: 2026-07-22 14:20:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 13:57:51 +0000 UTC FinishedAt: 2026-07-22 14:20:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "8338c4c90746937c95ab5ea7953afbcdec29aec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SYSFS", "PCI", "MMU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "8338c4c90746937c95ab5ea7953afbcdec29aec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SYSFS", "PCI", "MMU" ], "series_id": "720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "kernfs_drain_open_files", "unmap_mapping_file" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NZU0ZTJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtNTVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyYjMzQ7LAogICAgJiMzNDt1bm1hcF9tYXBwaW5nX2ZpbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW4ga2VybmZzIHdoZXJlIGZpbGVzIHdpdGggc3dhcHBlZCBmX21hcHBpbmcgKGxpa2UgUENJIHN5c2ZzIGJpbmFyeSBhdHRyaWJ1dGVzKSB3ZXJlIG5vdCBwcm9wZXJseSB1bm1hcHBlZCBkdXJpbmcgZHJhaW5pbmcuIEl0IGludHJvZHVjZXMgYSBuZXcgY29yZSBtbSBmdW5jdGlvbiBgdW5tYXBfbWFwcGluZ19maWxlYCBhbmQgbW9kaWZpZXMgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBoYW5kbGVzIG1lbW9yeSBtYXBwaW5nIGFuZCBmaWxlIGxpZmVjeWNsZSwgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyB0byBjYXRjaCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IG1hbmFnZW1lbnQgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNDoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM4M2Q4NTJmN2Y1NDMzOTYzN2Q3ZGUzYWU4YTRiMDdiOGM3NTM0ZDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAxNDoxODo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9rZXJuZnMvZmlsZS5jIGIvZnMva2VybmZzL2ZpbGUuY1xuaW5kZXggOGUwZTkwYzkzMzcyMGIuLjhkMWU0YWNjNjcxNjIxIDEwMDY0NFxuLS0tIGEvZnMva2VybmZzL2ZpbGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMva2VybmZzL2ZpbGUuY1xuQEAgLTgxOCw3ICYjNDM7ODE4LDEwIEBAIHZvaWQga2VybmZzX2RyYWluX29wZW5fZmlsZXMoc3RydWN0IGtlcm5mc19ub2RlICprbilcbiBcdFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUob2YtXHUwMDNlZmlsZSk7XG4gXG4gXHRcdGlmIChvZi1cdTAwM2VtbWFwcGVkKSB7XG4tXHRcdFx0dW5tYXBfbWFwcGluZ19yYW5nZShpbm9kZS1cdTAwM2VpX21hcHBpbmcsIDAsIDAsIDEpO1xuJiM0MztcdFx0XHRpZiAob2YtXHUwMDNlZmlsZS1cdTAwM2VmX21hcHBpbmcgIT0gaW5vZGUtXHUwMDNlaV9tYXBwaW5nKVxuJiM0MztcdFx0XHRcdHVubWFwX21hcHBpbmdfZmlsZShvZi1cdTAwM2VmaWxlKTtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdHVubWFwX21hcHBpbmdfcmFuZ2UoaW5vZGUtXHUwMDNlaV9tYXBwaW5nLCAwLCAwLCAxKTtcbiBcdFx0XHRvZi1cdTAwM2VtbWFwcGVkID0gZmFsc2U7XG4gXHRcdFx0b24tXHUwMDNlbnJfbW1hcHBlZC0tO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXG5pbmRleCA0ODVkZjljMmRiZGRiMy4uZTg4MmEwM2VhZGRkZDkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW0uaFxuQEAgLTMxODMsNiAmIzQzOzMxODMsNyBAQCBleHRlcm4gaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4gXHRcdFx0ICAgIGJvb2wgKnVubG9ja2VkKTtcbiB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXHRcdHBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgbnIsIGJvb2wgZXZlbl9jb3dzKTtcbiYjNDM7dm9pZCB1bm1hcF9tYXBwaW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpO1xuIHZvaWQgdW5tYXBfbWFwcGluZ19yYW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdFx0bG9mZl90IGNvbnN0IGhvbGViZWdpbiwgbG9mZl90IGNvbnN0IGhvbGVsZW4sIGludCBldmVuX2Nvd3MpO1xuICNlbHNlXG5AQCAtMzIwMyw2ICYjNDM7MzIwNCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcbiB9XG4gc3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXHRcdHBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgbnIsIGJvb2wgZXZlbl9jb3dzKSB7IH1cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSkgeyB9XG4gc3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfcmFuZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXHRcdGxvZmZfdCBjb25zdCBob2xlYmVnaW4sIGxvZmZfdCBjb25zdCBob2xlbGVuLCBpbnQgZXZlbl9jb3dzKSB7IH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jXG5pbmRleCBmZjMzOGMyYWJlOTIzMS4uZjljZmI4OGFjNGY3MzAgMTAwNjQ0XG4tLS0gYS9tbS9tZW1vcnkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5LmNcbkBAIC00NDIzLDYgJiM0Mzs0NDIzLDMyIEBAIHZvaWQgdW5tYXBfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgcGdvZmZfdCBzdGFydCxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodW5tYXBfbWFwcGluZ19wYWdlcyk7XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiB1bm1hcF9tYXBwaW5nX2ZpbGUoKSAtIFVubWFwIGFsbCBtbWFwcyBvZiBhbiBvcGVuIGZpbGUuXG4mIzQzOyAqIEBmaWxlOiBUaGUgZmlsZSB0byB1bm1hcC5cbiYjNDM7ICpcbiYjNDM7ICogVW5tYXAgZXZlcnkgVk1BIHdpdGggdm1fZmlsZSBzZXQgdG8gQGZpbGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFkZHJlc3NcbiYjNDM7ICogc3BhY2UgaXQgaXMgYXR0YWNoZWQgdG8uICBUaGlzIGFsc28gY292ZXJzIGZpbGVzIHdpdGggZl9tYXBwaW5nXG4mIzQzOyAqIHN3YXBwZWQgdG8gYSBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZSBhdCBvcGVuIHRpbWUsIHNpbmNlIHN1Y2ggVk1Bc1xuJiM0MzsgKiBjYW5ub3QgYmUgZm91bmQgdGhyb3VnaCB0aGUgZmlsZSYjMzk7cyBvd24gaW5vZGUgbWFwcGluZy5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgdW5tYXBfbWFwcGluZ19maWxlKHN0cnVjdCBmaWxlICpmaWxlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlLVx1MDAzZWZfbWFwcGluZztcbiYjNDM7XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTtcbiYjNDM7XG4mIzQzO1x0aV9tbWFwX2xvY2tfcmVhZChtYXBwaW5nKTtcbiYjNDM7XHRpZiAodW5saWtlbHkobWFwcGluZ19tYXBwZWQobWFwcGluZykpKSB7XG4mIzQzO1x0XHR2bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoKHZtYSwgXHUwMDI2bWFwcGluZy1cdTAwM2VpX21tYXAsIDAsIFVMT05HX01BWCkge1xuJiM0MztcdFx0XHRpZiAodm1hLVx1MDAzZXZtX2ZpbGUgIT0gZmlsZSlcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdFx0emFwX3ZtYSh2bWEpO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XHRpX21tYXBfdW5sb2NrX3JlYWQobWFwcGluZyk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwodW5tYXBfbWFwcGluZ19maWxlKTtcbiYjNDM7XG4gLyoqXG4gICogdW5tYXBfbWFwcGluZ19yYW5nZSAtIHVubWFwIHRoZSBwb3J0aW9uIG9mIGFsbCBtbWFwcyBpbiB0aGUgc3BlY2lmaWVkXG4gICogYWRkcmVzc19zcGFjZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzcGVjaWZpZWQgYnl0ZSByYW5nZSBpbiB0aGUgdW5kZXJseWluZ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTWVNGUyYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7TU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2VybmZzX2RyYWluX29wZW5fZmlsZXMmIzM0OywKICAgICYjMzQ7dW5tYXBfbWFwcGluZ19maWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIGtlcm5mcyB3aGVyZSBmaWxlcyB3aXRoIHN3YXBwZWQgZl9tYXBwaW5nIChsaWtlIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcykgd2VyZSBub3QgcHJvcGVybHkgdW5tYXBwZWQgZHVyaW5nIGRyYWluaW5nLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgbW0gZnVuY3Rpb24gYHVubWFwX21hcHBpbmdfZmlsZWAgYW5kIG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaGFuZGxlcyBtZW1vcnkgbWFwcGluZyBhbmQgZmlsZSBsaWZlY3ljbGUsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM4M2Q4NTJmN2Y1NDMzOTYzN2Q3ZGUzYWU4YTRiMDdiOGM3NTM0ZDEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAxNDoxODo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2tlcm5mcy9maWxlLmMgYi9mcy9rZXJuZnMvZmlsZS5jCmluZGV4IDhlMGU5MGM5MzM3MjBiLi44ZDFlNGFjYzY3MTYyMSAxMDA2NDQKLS0tIGEvZnMva2VybmZzL2ZpbGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9rZXJuZnMvZmlsZS5jCkBAIC04MTgsNyAmIzQzOzgxOCwxMCBAQCB2b2lkIGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pCiAJCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKG9mLSZndDtmaWxlKTsKIAogCQlpZiAob2YtJmd0O21tYXBwZWQpIHsKLQkJCXVubWFwX21hcHBpbmdfcmFuZ2UoaW5vZGUtJmd0O2lfbWFwcGluZywgMCwgMCwgMSk7CiYjNDM7CQkJaWYgKG9mLSZndDtmaWxlLSZndDtmX21hcHBpbmcgIT0gaW5vZGUtJmd0O2lfbWFwcGluZykKJiM0MzsJCQkJdW5tYXBfbWFwcGluZ19maWxlKG9mLSZndDtmaWxlKTsKJiM0MzsJCQllbHNlCiYjNDM7CQkJCXVubWFwX21hcHBpbmdfcmFuZ2UoaW5vZGUtJmd0O2lfbWFwcGluZywgMCwgMCwgMSk7CiAJCQlvZi0mZ3Q7bW1hcHBlZCA9IGZhbHNlOwogCQkJb24tJmd0O25yX21tYXBwZWQtLTsKIAkJfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oCmluZGV4IDQ4NWRmOWMyZGJkZGIzLi5lODgyYTAzZWFkZGRkOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAtMzE4Myw2ICYjNDM7MzE4Myw3IEBAIGV4dGVybiBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAkJCSAgICBib29sICp1bmxvY2tlZCk7CiB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCXBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgbnIsIGJvb2wgZXZlbl9jb3dzKTsKJiM0Mzt2b2lkIHVubWFwX21hcHBpbmdfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSk7CiB2b2lkIHVubWFwX21hcHBpbmdfcmFuZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCWxvZmZfdCBjb25zdCBob2xlYmVnaW4sIGxvZmZfdCBjb25zdCBob2xlbGVuLCBpbnQgZXZlbl9jb3dzKTsKICNlbHNlCkBAIC0zMjAzLDYgJiM0MzszMjA0LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAogfQogc3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCXBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgbnIsIGJvb2wgZXZlbl9jb3dzKSB7IH0KJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgdW5tYXBfbWFwcGluZ19maWxlKHN0cnVjdCBmaWxlICpmaWxlKSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCB1bm1hcF9tYXBwaW5nX3JhbmdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQlsb2ZmX3QgY29uc3QgaG9sZWJlZ2luLCBsb2ZmX3QgY29uc3QgaG9sZWxlbiwgaW50IGV2ZW5fY293cykgeyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKaW5kZXggZmYzMzhjMmFiZTkyMzEuLmY5Y2ZiODhhYzRmNzMwIDEwMDY0NAotLS0gYS9tbS9tZW1vcnkuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1vcnkuYwpAQCAtNDQyMyw2ICYjNDM7NDQyMywzMiBAQCB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHBnb2ZmX3Qgc3RhcnQsCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh1bm1hcF9tYXBwaW5nX3BhZ2VzKTsKIAomIzQzOy8qKgomIzQzOyAqIHVubWFwX21hcHBpbmdfZmlsZSgpIC0gVW5tYXAgYWxsIG1tYXBzIG9mIGFuIG9wZW4gZmlsZS4KJiM0MzsgKiBAZmlsZTogVGhlIGZpbGUgdG8gdW5tYXAuCiYjNDM7ICoKJiM0MzsgKiBVbm1hcCBldmVyeSBWTUEgd2l0aCB2bV9maWxlIHNldCB0byBAZmlsZSwgcmVnYXJkbGVzcyBvZiB0aGUgYWRkcmVzcwomIzQzOyAqIHNwYWNlIGl0IGlzIGF0dGFjaGVkIHRvLiAgVGhpcyBhbHNvIGNvdmVycyBmaWxlcyB3aXRoIGZfbWFwcGluZwomIzQzOyAqIHN3YXBwZWQgdG8gYSBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZSBhdCBvcGVuIHRpbWUsIHNpbmNlIHN1Y2ggVk1BcwomIzQzOyAqIGNhbm5vdCBiZSBmb3VuZCB0aHJvdWdoIHRoZSBmaWxlJiMzOTtzIG93biBpbm9kZSBtYXBwaW5nLgomIzQzOyAqLwomIzQzO3ZvaWQgdW5tYXBfbWFwcGluZ19maWxlKHN0cnVjdCBmaWxlICpmaWxlKQomIzQzO3sKJiM0MzsJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlLSZndDtmX21hcHBpbmc7CiYjNDM7CXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwomIzQzOwomIzQzOwlpX21tYXBfbG9ja19yZWFkKG1hcHBpbmcpOwomIzQzOwlpZiAodW5saWtlbHkobWFwcGluZ19tYXBwZWQobWFwcGluZykpKSB7CiYjNDM7CQl2bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoKHZtYSwgJmFtcDttYXBwaW5nLSZndDtpX21tYXAsIDAsIFVMT05HX01BWCkgewomIzQzOwkJCWlmICh2bWEtJmd0O3ZtX2ZpbGUgIT0gZmlsZSkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CQkJemFwX3ZtYSh2bWEpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CWlfbW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwodW5tYXBfbWFwcGluZ19maWxlKTsKJiM0MzsKIC8qKgogICogdW5tYXBfbWFwcGluZ19yYW5nZSAtIHVubWFwIHRoZSBwb3J0aW9uIG9mIGFsbCBtbWFwcyBpbiB0aGUgc3BlY2lmaWVkCiAgKiBhZGRyZXNzX3NwYWNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBieXRlIHJhbmdlIGluIHRoZSB1bmRlcmx5aW5nCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgTWVtb3J5IE1hcHBpbmcgSXNzdWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgYWltZWQgYXQgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgbWFwcGluZyBpc3N1ZSB3aXRoaW4gdGhlIGtlcm5lbC4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIGluIGBmcy9rZXJuZnMvZmlsZS5jYCBhbmQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYHVubWFwX21hcHBpbmdfZmlsZWAsIGluIGBtbS9tZW1vcnkuY2AuIFRoZSBjb3JlIHByb2JsZW0gdGhpcyBwYXRjaCB0YWNrbGVzIGlzIHRoYXQgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCwgd2hlbiBjbG9zaW5nIGZpbGVzLCB3YXNuJiMzOTt0IHByb3Blcmx5IHVubWFwcGluZyBmaWxlJiMzOTtzIG1lbW9yeSBtYXBwaW5ncyBpZiB0aGUgZmlsZSYjMzk7cyBgZl9tYXBwaW5nYCB3YXMgc3dhcHBlZCB0byBhIGRpZmZlcmVudCBhZGRyZXNzIHNwYWNlIGF0IG9wZW4gdGltZS4gQSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uLCBsaWtlbHkuCgpUaGUgcHJvcG9zZWQgc29sdXRpb24sIGB1bm1hcF9tYXBwaW5nX2ZpbGVgLCBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGl0IGl0ZXJhdGVzIHRocm91Z2ggdGhlIGB2bWFfaW50ZXJ2YWxfdHJlZWAgYXNzb2NpYXRlZCB3aXRoIGBmaWxlLSZndDtmX21hcHBpbmdgIGFuZCB6YXBzIGFueSBWTUFzIHdoZXJlIHRoZSBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgVk1BIG1hdGNoZXMgdGhlIGZpbGUgYmVpbmcgY2xvc2VkLiBNYWtlcyBzZW5zZS4gVGhpcyBzaG91bGQgY292ZXIgdGhlIGNhc2VzIHRoYXQgd2VyZSBtaXNzZWQgYnkgdGhlIG9yaWdpbmFsIGRyYWluIGZ1bmN0aW9uLgoKTm93LCBsZXQmIzM5O3MgYXNzZXNzIHRoZSByZWFjaCBvZiB0aGlzIGNvZGUuIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXMgcGFydCBvZiBrZXJuZnMsIHdoaWNoIGlzIGEgZnVuZGFtZW50YWwgY29tcG9uZW50IGZvciBib3RoIHN5c2ZzIGFuZCBjZ3JvdXBmcy4gVGhlc2UgYXJlICp1YmlxdWl0b3VzKiBpbiBMaW51eCwgc28gaXQmIzM5O3MgcHJhY3RpY2FsbHkgZ3VhcmFudGVlZCB0aGF0IGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXMgZnJlcXVlbnRseSBjYWxsZWQuIEkmIzM5O2QgYWRkIGJvdGggYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBhbmQgdGhlIG5ldyBgdW5tYXBfbWFwcGluZ19maWxlYCB0byBteSBGb2N1c1N5bWJvbHMuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cy4gYGZzL2tlcm5mcy9maWxlLmNgIGlzIGNvbXBpbGVkIGNvbmRpdGlvbmFsbHksIGRlcGVuZGluZyBvbiBgQ09ORklHX0tFUk5GU2AuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY29uZGl0aW9uYWwuIGBDT05GSUdfS0VSTkZTYCBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgc2VsZWN0aW5nIGBTWVNGU2Agb3IgYENHUk9VUFNgLCBzbyB3ZSBjYW4gZXhwZWN0IHRoZSBjb2RlIHRvIGJlIGNvbXBpbGVkLiBOb3csIHRoZSBgbW0vbWVtb3J5LmNgIGZpbGUgaXRzZWxmIGlzIGFsd2F5cyBjb21waWxlZCwgYnV0IGB1bm1hcF9tYXBwaW5nX2ZpbGVgIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgdW5kZXIgYENPTkZJR19NTVVgLCB3aGljaCBpcyBhbHNvIHR5cGljYWwuIEkgY2hlY2tlZCBgaW5jbHVkZS9saW51eC9tbS5oYCB0byBjb25maXJtIHRoZSBNTVUgZGVwZW5kZW5jeS4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHNlYXJjaCB0aGUgY29kZSBiYXNlIGZvciBvdGhlciB1c2FnZXMgb2YgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIGF3YXJlIG9mIHdoZXJlIGl0IGlzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2VybmZzX2RyYWluX29wZW5fZmlsZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMva2VybmZzL2Rpci5jPTUwOD1zdGF0aWMgdm9pZCBrZXJuZnNfZHJhaW4oc3RydWN0IGtlcm5mc19ub2RlICprbiwgYm9vbCBkcm9wX3N1cGVycylcbi0tXG5mcy9rZXJuZnMvZGlyLmMtNTQ1LVx0aWYgKGtlcm5mc19zaG91bGRfZHJhaW5fb3Blbl9maWxlcyhrbikpXG5mcy9rZXJuZnMvZGlyLmM6NTQ2Olx0XHRrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyhrbik7XG5mcy9rZXJuZnMvZGlyLmMtNTQ3LVxuLS1cbmZzL2tlcm5mcy9maWxlLmM9Nzg0PWJvb2wga2VybmZzX3Nob3VsZF9kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pXG4tLVxuZnMva2VybmZzL2ZpbGUuYy04MDMtXG5mcy9rZXJuZnMvZmlsZS5jOjgwNDp2b2lkIGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pXG5mcy9rZXJuZnMvZmlsZS5jLTgwNS17XG4tLVxuZnMva2VybmZzL2tlcm5mcy1pbnRlcm5hbC5oPTIwND1ib29sIGtlcm5mc19zaG91bGRfZHJhaW5fb3Blbl9maWxlcyhzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTtcbmZzL2tlcm5mcy9rZXJuZnMtaW50ZXJuYWwuaDoyMDU6dm9pZCBrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyhzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTtcbmZzL2tlcm5mcy9rZXJuZnMtaW50ZXJuYWwuaC0yMDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3NwoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmZzIERyYWluIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXMgY2FsbGVkIHNwZWNpZmljYWxseSBmcm9tIGBrZXJuZnNfZHJhaW5gLiBUaGF0IG1ha2VzIHNlbnNlLiBBbmQgYGtlcm5mc19kcmFpbmAgaXRzZWxmIGdldHMgdHJpZ2dlcmVkIHdoZW4gYSBrZXJuZnMgbm9kZSBpcyByZW1vdmVkIG9yIGRlYWN0aXZhdGVkLiBSaWdodCwgcmlnaHQuIENvbnNpZGVyaW5nIGhvdyBoZWF2aWx5IGBrZXJuZnNgIGlzIHVzZWQgaW4gYm90aCBzeXNmcyBhbmQgY2dyb3VwZnMsIHRoaXMgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgYW5kIHByb2JhYmx5IHByZXR0eSBpbXBvcnRhbnQgZm9yIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgY2xlYW5zIHVwIGNvcnJlY3RseSBkdXJpbmcgdGhvc2UgdW5tb3VudCBvcGVyYXRpb25zIG9yIHdoZW4gbm9kZXMgZ2V0IGRlbGV0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyByb2xlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyBvciBidWlsZCBvcHRpb25zIHJlbGF0ZWQgdG8ga2VybmZzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGhvdyBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIGJlaGF2ZXMuIEFueXRoaW5nIHRoYXQgY291bGQgYWZmZWN0IGl0cyBiZWhhdmlvciBiYXNlZCBvbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtFUk5GUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9rZXJuZnMvS2NvbmZpZy01LVxuZnMva2VybmZzL0tjb25maWc6Njpjb25maWcgS0VSTkZTXG5mcy9rZXJuZnMvS2NvbmZpZy03LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0OTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZnMgQ29uZmlndXJhdGlvbiBmb3IgUGF0Y2ggSW5jbHVzaW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gS0VSTkZTIGlzIGEgaGlkZGVuIGJvb2xlYW4sIGFjdGl2YXRlZCB0aHJvdWdoIFNZU0ZTIGFuZCBDR1JPVVBTIOKAkyBpdCYjMzk7cyBwcmFjdGljYWxseSBhbHdheXMgb24gaW4gYSBub3JtYWwgc2V0dXAsIHNvIGV4cGxpY2l0bHkgc3RhdGluZyBLRVJORlMgaXRzZWxmIGlzIHJlZHVuZGFudC4gU1lTRlMgYW5kIENHUk9VUFMgYXJlIGdlbmVyaWMsIGJ1dCBJJiMzOTtsbCBhZGQgdGhlbSBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBub3QgYXNzdW1lIGFueXRoaW5nLgoKTm93LCBsZXQmIzM5O3Mgc2VlIHdoYXQgdGhpcyBwYXRjaCBhY3R1YWxseSB0b3VjaGVzLiBJdCBtb2RpZmllcyBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIGFuZCBgdW5tYXBfbWFwcGluZ19maWxlYC4gQWgsIGB1bm1hcF9tYXBwaW5nX2ZpbGVgIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgd2l0aCBgQ09ORklHX01NVWAuIFRoYXQgbWFrZXMgc2Vuc2UuIEFsdGhvdWdoIGl0JiMzOTtzIHByZXR0eSB1YmlxdWl0b3VzLCBJJiMzOTtsbCBhZGQgYE1NVWAgdG8gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSYjMzk7cmUgY292ZXJpbmcgYWxsIGJhc2VzLiBJdCYjMzk7cyBiZXR0ZXIgdG8gYmUgZXhwbGljaXQsIGV2ZW4gaWYgaXQgc2VlbXMgb2J2aW91cy4KCkZpbmFsbHksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIG1lY2hhbmlzbSBpbiBLRVJORlMgd2hlcmUgYGZfbWFwcGluZ2AgZ2V0cyBzd2FwcGVkLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGZzL2tlcm5mcy9maWxlLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBrZXJuZnNfZm9wX21tYXBgLiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nIGluIHRoZXJlIG1pZ2h0IGJlIHRoZSBjdWxwcml0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZfbWFwcGluZy4qPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2tlcm5mcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMva2VybmZzL2ZpbGUuYz04MDQ9dm9pZCBrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyhzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKVxuLS1cbmZzL2tlcm5mcy9maWxlLmMtODIwLVx0XHRpZiAob2YtXHUwMDNlbW1hcHBlZCkge1xuZnMva2VybmZzL2ZpbGUuYzo4MjE6XHRcdFx0aWYgKG9mLVx1MDAzZWZpbGUtXHUwMDNlZl9tYXBwaW5nICE9IGlub2RlLVx1MDAzZWlfbWFwcGluZylcbmZzL2tlcm5mcy9maWxlLmMtODIyLVx0XHRcdFx0dW5tYXBfbWFwcGluZ19maWxlKG9mLVx1MDAzZWZpbGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDEKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgYSBTdXNwZWN0IFZhcmlhYmxlIEFzc2lnbm1lbnQqKgoKT2theSwgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIGFzc2lnbm1lbnQgb2YgYGZfbWFwcGluZ2AuIFNvbWV0aGluZyBmZWVscyBvZmYsIGFuZCBJIGNhbiYjMzk7dCBpbW1lZGlhdGVseSByZWNhbGwgd2hlcmUgdGhlIHN3YXAgaGFwcGVucy4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSB3aXRoaW4gdGhlIHJlYWxtIG9mIGVpdGhlciBgc3lzZnNgIG9yIGBjZ3JvdXBgIOKAkyB0aG9zZSBhcmUgb2Z0ZW4gdGhlIGN1bHByaXRzIHdoZW4gSSBzZWUgdGhpcyBraW5kIG9mIGJlaGF2aW91ci4gVGltZSB0byBiZSBtZXRob2RpY2FsLiBJIG5lZWQgdG8gYmUgc3VyZS4gSSYjMzk7bSBnb2luZyB0byBsYXVuY2ggYSBmdWxsLXNjYWxlIHNlYXJjaCBhY3Jvc3MgdGhlIGVudGlyZSBjb2RlYmFzZS4gTGV0JiMzOTtzIGxvb2sgZm9yIGV2ZXJ5IGluc3RhbmNlIG9mIGBmX21hcHBpbmcgPWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGl0cyBhc3NpZ25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmX21hcHBpbmcgPSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9iZGV2LmM9OTI5PWludCBiZGV2X29wZW4oc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLCB2b2lkICpob2xkZXIsXG4tLVxuYmxvY2svYmRldi5jLTk5MS1cdFx0YmRldl9maWxlLVx1MDAzZWZfbW9kZSB8PSBGTU9ERV9XUklURV9SRVNUUklDVEVEO1xuYmxvY2svYmRldi5jOjk5MjpcdGJkZXZfZmlsZS1cdTAwM2VmX21hcHBpbmcgPSBiZGV2LVx1MDAzZWJkX21hcHBpbmc7XG5ibG9jay9iZGV2LmMtOTkzLVx0YmRldl9maWxlLVx1MDAzZWZfd2JfZXJyID0gZmlsZW1hcF9zYW1wbGVfd2JfZXJyKGJkZXZfZmlsZS1cdTAwM2VmX21hcHBpbmcpO1xuLS1cbmRyaXZlcnMvYWNjZWwvZHJtX2FjY2VsLmM9MTE3PWludCBhY2NlbF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmRyaXZlcnMvYWNjZWwvZHJtX2FjY2VsLmMtMTMxLVx0Lyogc2hhcmUgYWRkcmVzc19zcGFjZSBhY3Jvc3MgYWxsIGNoYXItZGV2cyBvZiBhIHNpbmdsZSBkZXZpY2UgKi9cbmRyaXZlcnMvYWNjZWwvZHJtX2FjY2VsLmM6MTMyOlx0ZmlscC1cdTAwM2VmX21hcHBpbmcgPSBkZXYtXHUwMDNlYW5vbl9pbm9kZS1cdTAwM2VpX21hcHBpbmc7XG5kcml2ZXJzL2FjY2VsL2RybV9hY2NlbC5jLTEzMy1cbi0tXG5kcml2ZXJzL2NoYXIvbWVtLmM9NjAzPXN0YXRpYyBpbnQgb3Blbl9wb3J0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmRyaXZlcnMvY2hhci9tZW0uYy02MjEtXHQgKi9cbmRyaXZlcnMvY2hhci9tZW0uYzo2MjI6XHRmaWxwLVx1MDAzZWZfbWFwcGluZyA9IGlvbWVtX2dldF9tYXBwaW5nKCk7XG5kcml2ZXJzL2NoYXIvbWVtLmMtNjIzLVxuLS1cbmRyaXZlcnMvZGF4L2RldmljZS5jPTMzMz1zdGF0aWMgaW50IGRheF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmRyaXZlcnMvZGF4L2RldmljZS5jLTM0Mi1cdGlub2RlLVx1MDAzZWlfbWFwcGluZy1cdTAwM2VhX29wcyA9IFx1MDAyNmRldl9kYXhfYW9wcztcbmRyaXZlcnMvZGF4L2RldmljZS5jOjM0MzpcdGZpbHAtXHUwMDNlZl9tYXBwaW5nID0gaW5vZGUtXHUwMDNlaV9tYXBwaW5nO1xuZHJpdmVycy9kYXgvZGV2aWNlLmMtMzQ0LVx0ZmlscC1cdTAwM2VmX3diX2VyciA9IGZpbGVtYXBfc2FtcGxlX3diX2VycihmaWxwLVx1MDAzZWZfbWFwcGluZyk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM9MzY5PWludCBkcm1fb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0zODUtXHQvKiBzaGFyZSBhZGRyZXNzX3NwYWNlIGFjcm9zcyBhbGwgY2hhci1kZXZzIG9mIGEgc2luZ2xlIGRldmljZSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM6Mzg2Olx0ZmlscC1cdTAwM2VmX21hcHBpbmcgPSBkZXYtXHUwMDNlYW5vbl9pbm9kZS1cdTAwM2VpX21hcHBpbmc7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0zODctXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM9MTA1Nz1zdHJ1Y3QgZmlsZSAqbW9ja19kcm1fZ2V0ZmlsZShzdHJ1Y3QgZHJtX21pbm9yICptaW5vciwgdW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTEwNzMtXHQvKiBFdmVyeW9uZSBzaGFyZXMgYSBzaW5nbGUgZ2xvYmFsIGFkZHJlc3Mgc3BhY2UgKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jOjEwNzQ6XHRmaWxlLVx1MDAzZWZfbWFwcGluZyA9IGRldi1cdTAwM2Vhbm9uX2lub2RlLVx1MDAzZWlfbWFwcGluZztcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTEwNzUtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jPTIzOT1zdHJ1Y3QgZG1hX2J1ZiAqZHJtX2dlbV9kbWFidWZfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jLTI1MC1cdGRybV9nZW1fb2JqZWN0X2dldChvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jOjI1MTpcdGRtYV9idWYtXHUwMDNlZmlsZS1cdTAwM2VmX21hcHBpbmcgPSBvYmotXHUwMDNlZGV2LVx1MDAzZWFub25faW5vZGUtXHUwMDNlaV9tYXBwaW5nO1xuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jLTI1Mi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jPTk2OD1zdGF0aWMgc3RydWN0IGZpbGUgKm1tYXBfc2luZ2xldG9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtOTgwLVx0LyogRXZlcnlvbmUgc2hhcmVzIGEgc2luZ2xlIGdsb2JhbCBhZGRyZXNzIHNwYWNlICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjk4MTpcdGZpbGUtXHUwMDNlZl9tYXBwaW5nID0gaTkxNS1cdTAwM2Vkcm0uYW5vbl9pbm9kZS1cdTAwM2VpX21hcHBpbmc7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jLTk4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L21haW4uYz0xODk3PXN0YXRpYyBpbnQgbWFwX2JmX2FyZWEoc3RydWN0IG1seDRfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tYWluLmMtMTkxMC1cdFx0XHQoZGV2LVx1MDAzZWNhcHMubnVtX3VhcnMgXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tYWluLmM6MTkxMTpcdHByaXYtXHUwMDNlYmZfbWFwcGluZyA9IGlvX21hcHBpbmdfY3JlYXRlX3djKGJmX3N0YXJ0LCBiZl9sZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tYWluLmMtMTkxMi1cdGlmICghcHJpdi1cdTAwM2ViZl9tYXBwaW5nKVxuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEwMTc9c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlIHBjaV9sZWdhY3lfaW9fYXR0ciA9IHtcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMDIzLVx0Lmxsc2VlayA9IHBjaV9sbHNlZWtfcmVzb3VyY2VfbGVnYWN5LFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTAyNDpcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwMjUtfTtcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMDI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBwY2lfbGVnYWN5X2lvX3NwYXJzZV9hdHRyID0ge1xuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwMzMtXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZV9sZWdhY3ksXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYzoxMDM0Olx0LmZfbWFwcGluZyA9IGlvbWVtX2dldF9tYXBwaW5nLFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTAzNS19O1xuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEwMzc9c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlIHBjaV9sZWdhY3lfbWVtX2F0dHIgPSB7XG4tLVxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTA0MS1cdC5sbHNlZWsgPSBwY2lfbGxzZWVrX3Jlc291cmNlX2xlZ2FjeSxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEwNDI6XHQuZl9tYXBwaW5nID0gaW9tZW1fZ2V0X21hcHBpbmcsXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMDQzLX07XG4tLVxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTA0NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGNpX2xlZ2FjeV9tZW1fc3BhcnNlX2F0dHIgPSB7XG4tLVxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTA0OS1cdC5sbHNlZWsgPSBwY2lfbGxzZWVrX3Jlc291cmNlX2xlZ2FjeSxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEwNTA6XHQuZl9tYXBwaW5nID0gaW9tZW1fZ2V0X21hcHBpbmcsXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMDUxLX07XG4tLVxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTIyND1zdGF0aWMgbG9mZl90IHBjaV9sbHNlZWtfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZpbGVwLFxuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNDItIyBkZWZpbmUgX19QQ0lfUkVTT1VSQ0VfSU9fTU1BUF9BVFRSU1x0XHRcXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTI0MzpcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcdFx0XFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNDQtXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZSxcdFx0XFxcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMjYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBkZXZfcmVzb3VyY2UjI19iYXIjI191Y19hdHRyID0ge1x0XFxcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjYyLVx0LnByaXZhdGUgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKShfYmFyKSxcdFx0XHRcXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTI2MzpcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcdFx0XHRcdFx0XFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNjQtXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZSxcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMjY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBkZXZfcmVzb3VyY2UjI19iYXIjI193Y19hdHRyID0ge1x0ICAgICAgXFxcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjcxLVx0LnByaXZhdGUgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKShfYmFyKSxcdFx0XHQgICAgICBcXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTI3MjpcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcdFx0XHRcdFx0ICAgICAgXFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNzMtXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZSxcdFx0XHRcdFx0ICAgICAgXFxcbi0tXG5kcml2ZXJzL3BjaS9wcm9jLmM9Mjk5PXN0YXRpYyBpbnQgcHJvY19idXNfcGNpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZHJpdmVycy9wY2kvcHJvYy5jLTMwOS1cdGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhID0gZnByaXY7XG5kcml2ZXJzL3BjaS9wcm9jLmM6MzEwOlx0ZmlsZS1cdTAwM2VmX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZygpO1xuZHJpdmVycy9wY2kvcHJvYy5jLTMxMS1cbi0tXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYz0yMz1pbnQgdmZpb19kZXZpY2VfZm9wc19jZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGVwKVxuLS1cbmRyaXZlcnMvdmZpby9kZXZpY2VfY2Rldi5jLTQ2LVx0ICovXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYzo0NzpcdGZpbGVwLVx1MDAzZWZfbWFwcGluZyA9IGRldmljZS1cdTAwM2Vpbm9kZS1cdTAwM2VpX21hcHBpbmc7XG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy00OC1cbi0tXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYz0yNTU9c3RhdGljIHN0cnVjdCBmaWxlICp2ZmlvX2RldmljZV9vcGVuX2ZpbGUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UpXG4tLVxuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjgzLVx0ICovXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYzoyODQ6XHRmaWxlcC1cdTAwM2VmX21hcHBpbmcgPSBkZXZpY2UtXHUwMDNlaW5vZGUtXHUwMDNlaV9tYXBwaW5nO1xuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjg1LVxuLS1cbmZzL2Fub25faW5vZGVzLmM9MTMyPXN0YXRpYyBzdHJ1Y3QgZmlsZSAqX19hbm9uX2lub2RlX2dldGZpbGUoY29uc3QgY2hhciAqbmFtZSxcbi0tXG5mcy9hbm9uX2lub2Rlcy5jLTE2OC1cbmZzL2Fub25faW5vZGVzLmM6MTY5Olx0ZmlsZS1cdTAwM2VmX21hcHBpbmcgPSBpbm9kZS1cdTAwM2VpX21hcHBpbmc7XG5mcy9hbm9uX2lub2Rlcy5jLTE3MC1cbi0tXG5mcy9jb2RhL2ZpbGUuYz0xNTE9Y29kYV9maWxlX21tYXAoc3RydWN0IGZpbGUgKmNvZGFfZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZnMvY29kYS9maWxlLmMtMTgzLVx0c3Bpbl9sb2NrKFx1MDAyNmNpaS1cdTAwM2VjX2xvY2spO1xuZnMvY29kYS9maWxlLmM6MTg0Olx0Y29kYV9maWxlLVx1MDAzZWZfbWFwcGluZyA9IGhvc3RfZmlsZS1cdTAwM2VmX21hcHBpbmc7XG5mcy9jb2RhL2ZpbGUuYy0xODUtXHRpZiAoY29kYV9pbm9kZS1cdTAwM2VpX21hcHBpbmcgPT0gXHUwMDI2Y29kYV9pbm9kZS1cdTAwM2VpX2RhdGEpXG4tLVxuZnMvZXJvZnMvaXNoYXJlLmM9OTA9c3RhdGljIGludCBlcm9mc19pc2hhcmVfZmlsZV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2Vyb2ZzL2lzaGFyZS5jLTEwMy1cdHJlYWxmaWxlLVx1MDAzZWZfaW5vZGUgPSBzaGFyZWRpbm9kZTtcbmZzL2Vyb2ZzL2lzaGFyZS5jOjEwNDpcdHJlYWxmaWxlLVx1MDAzZWZfbWFwcGluZyA9IHNoYXJlZGlub2RlLVx1MDAzZWlfbWFwcGluZztcbmZzL2Vyb2ZzL2lzaGFyZS5jLTEwNS1cdHBhdGhfZ2V0KFx1MDAyNmZpbGUtXHUwMDNlZl9wYXRoKTtcbi0tXG5mcy9maWxlX3RhYmxlLmM9MzYxPXN0YXRpYyB2b2lkIGZpbGVfaW5pdF9wYXRoKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCxcbi0tXG5mcy9maWxlX3RhYmxlLmMtMzY1LVx0ZmlsZS1cdTAwM2VmX2lub2RlID0gcGF0aC1cdTAwM2VkZW50cnktXHUwMDNlZF9pbm9kZTtcbmZzL2ZpbGVfdGFibGUuYzozNjY6XHRmaWxlLVx1MDAzZWZfbWFwcGluZyA9IHBhdGgtXHUwMDNlZGVudHJ5LVx1MDAzZWRfaW5vZGUtXHUwMDNlaV9tYXBwaW5nO1xuZnMvZmlsZV90YWJsZS5jLTM2Ny1cdGZpbGUtXHUwMDNlZl93Yl9lcnIgPSBmaWxlbWFwX3NhbXBsZV93Yl9lcnIoZmlsZS1cdTAwM2VmX21hcHBpbmcpO1xuLS1cbmZzL2ZpbGVfdGFibGUuYz00NzE9c3RydWN0IGZpbGUgKmFsbG9jX2ZpbGVfY2xvbmUoc3RydWN0IGZpbGUgKmJhc2UsIGludCBmbGFncyxcbi0tXG5mcy9maWxlX3RhYmxlLmMtNDc4LVx0XHRwYXRoX2dldChcdTAwMjZmLVx1MDAzZWZfcGF0aCk7XG5mcy9maWxlX3RhYmxlLmM6NDc5Olx0XHRmLVx1MDAzZWZfbWFwcGluZyA9IGJhc2UtXHUwMDNlZl9tYXBwaW5nO1xuZnMvZmlsZV90YWJsZS5jLTQ4MC1cdH1cbi0tXG5mcy9vcGVuLmM9ODg1PXN0YXRpYyBpbnQgZG9fZGVudHJ5X29wZW4oc3RydWN0IGZpbGUgKmYsXG4tLVxuZnMvb3Blbi5jLTg5My1cdGYtXHUwMDNlZl9pbm9kZSA9IGlub2RlO1xuZnMvb3Blbi5jOjg5NDpcdGYtXHUwMDNlZl9tYXBwaW5nID0gaW5vZGUtXHUwMDNlaV9tYXBwaW5nO1xuZnMvb3Blbi5jLTg5NS1cdGYtXHUwMDNlZl93Yl9lcnIgPSBmaWxlbWFwX3NhbXBsZV93Yl9lcnIoZi1cdTAwM2VmX21hcHBpbmcpO1xuLS1cbmZzL3N5c2ZzL2ZpbGUuYz0xOTE9c3RhdGljIGludCBzeXNmc19rZl9iaW5fb3BlbihzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YpXG4tLVxuZnMvc3lzZnMvZmlsZS5jLTE5NS1cdGlmIChiYXR0ci1cdTAwM2VmX21hcHBpbmcpXG5mcy9zeXNmcy9maWxlLmM6MTk2Olx0XHRvZi1cdTAwM2VmaWxlLVx1MDAzZWZfbWFwcGluZyA9IGJhdHRyLVx1MDAzZWZfbWFwcGluZygpO1xuZnMvc3lzZnMvZmlsZS5jLTE5Ny1cbi0tXG5tbS9zd2FwZmlsZS5jPTMwNjM9U1lTQ0FMTF9ERUZJTkUxKHN3YXBvZmYsIGNvbnN0IGNoYXIgX191c2VyICosIHNwZWNpYWxmaWxlKVxuLS1cbm1tL3N3YXBmaWxlLmMtMzA4Ni1cdFx0aWYgKHAtXHUwMDNlZmxhZ3MgXHUwMDI2IFNXUF9XUklURU9LKSB7XG5tbS9zd2FwZmlsZS5jOjMwODc6XHRcdFx0aWYgKHAtXHUwMDNlc3dhcF9maWxlLVx1MDAzZWZfbWFwcGluZyA9PSBtYXBwaW5nKSB7XG5tbS9zd2FwZmlsZS5jLTMwODgtXHRcdFx0XHRmb3VuZCA9IDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2ODYKCQkJCQkJCW91dHB1dDogMTU1CgkJCQkJCQl0aG91Z2h0czogNzAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHN5c2ZzIEZpbGUgTWFwcGluZyBhbmQgVW5tYXBwaW5nKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgaW1tZWRpYXRlbHkganVtcHMgb3V0IGF0IG1lOiBgZnMvc3lzZnMvZmlsZS5jOjE5NmAgaXMgd2hlcmUgdGhlIGBmX21hcHBpbmdgIHN3YXAgaGFwcGVucyBpbiBzeXNmcywgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgYHN5c2ZzX2tmX2Jpbl9vcGVuYCBjYWxsLiBUaGF0IGNhbGxzIGBiYXR0ci0mZ3Q7Zl9tYXBwaW5nKClgLiBBbmQgbG9va2luZyBhdCB0aGUgY29kZSwgcGFydGljdWxhcmx5IHdpdGggYHBjaV9zeXNmc2AsIHdlJiMzOTtyZSB1c2luZyBgaW9tZW1fZ2V0X21hcHBpbmdgIGZvciBgZl9tYXBwaW5nYC4gVGhpcyBkaXJlY3RseSBhZmZlY3RzIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcy4KClRoaXMgbWVhbnMgdGhhdCB3aGVuIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgZ2V0cyBjYWxsZWQgb24gdGhpcyB0eXBlIG9mIGZpbGUsIGl0IHNob3VsZCBub3cgY29ycmVjdGx5IHVubWFwIGV2ZXJ5dGhpbmcuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGBmcy9zeXNmcy9maWxlLmNgLiBZZXAsIGBDT05GSUdfU1lTRlNgIGlzIHRoZSByZWxldmFudCBjb25maWcuIFNpbmNlIFBDSSBpcyB1c2VkIHZpYSB0aGUgbmV3IG1hcHBpbmcgZnVuY3Rpb24sIGFuZCB0aGVyZSBpcyBtZW1vcnkgdW5tYXBwaW5nIGludm9sdmVkLCB3ZSBhbHNvIHNob3VsZCBhZGQgYFBDSWAgYW5kIGBNTVVgIHRvIHRoZSBsaXN0LgoKVGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgYW5kIGB1bm1hcF9tYXBwaW5nX2ZpbGVgLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgYHVubWFwX21hcHBpbmdfZmlsZWAgaW4gYG1tL21lbW9yeS5jYC4gWWVwLCBpdCYjMzk7cyBpdGVyYXRpbmcgdGhyb3VnaCBgdm1hX2ludGVydmFsX3RyZWVfZm9yZWFjaGAsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJiMzOTt2ZSBnb3Qgc29tZXRoaW5nIHRoYXQmIzM5O3MgcmlwZSBmb3IgZnV6emluZy4KCkdpdmVuIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gc2V0OgoKKiAgIGBXb3J0aEZ1enppbmdgOiBgdHJ1ZWAKKiAgIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7a2VybmZzX2RyYWluX29wZW5fZmlsZXMmIzM0OywgJiMzNDt1bm1hcF9tYXBwaW5nX2ZpbGUmIzM0O11gCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbJiMzNDtTWVNGUyYjMzQ7LCAmIzM0O1BDSSYjMzQ7LCAmIzM0O01NVSYjMzQ7XWAKKiAgIGBSZWFzb25pbmdgOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyB0byBwcm9wZXJseSB1bm1hcCBmaWxlcyB3aG9zZSBmX21hcHBpbmcgd2FzIHN3YXBwZWQgYXQgb3BlbiB0aW1lIChlLmcuLCBQQ0kgc3lzZnMgYmluYXJ5IGF0dHJpYnV0ZXMpLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIHVubWFwX21hcHBpbmdfZmlsZSBpbiBtbS9tZW1vcnkuYyB0byBhY2hpZXZlIHRoaXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwvc3lzZnMgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgZmlsZSB1bm1hcHBpbmcuJiMzNDsKCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhhdCBgdW5tYXBfbWFwcGluZ19maWxlYCBpcyBleHBvcnRlZC4gT2theSwgZ29vZCwgaXQgaXMuIGBFWFBPUlRfU1lNQk9MX0dQTCh1bm1hcF9tYXBwaW5nX2ZpbGUpYC4KCmBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXNuJiMzOTt0IGV4cG9ydGVkLCBidXQgdGhhdCYjMzk7cyBub3QgYSBjb25jZXJuIGFzIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBrZXJuZnNfZHJhaW5gLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBga2VybmZzX3JlbW92ZWAgYW5kIG90aGVycy4KCk9rYXksIGJhY2sgdG8gYGZzL3N5c2ZzL2ZpbGUuY2AuIGBzeXNmc19rZl9iaW5fb3BlbmAgaXMgY2FsbGVkIHdoZW4gYSBzeXNmcyBiaW5hcnkgZmlsZSBpcyBvcGVuZWQuIEl0IHNldHMgYG9mLSZndDttbWFwcGVkYCB3aGVuIGl0JiMzOTtzIG1tYXBwZWQuIFRoZW4gd2hlbiB0aGUgZmlsZSBpcyByZW1vdmVkLCBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIHdpbGwgYmUgY2FsbGVkLgoKVGhpcyBzZWVtcyBsaWtlIGEgc29saWQsIHdlbGwtZGVmaW5lZCBjaGFuZ2UuIEkmIzM5O20gc2F0aXNmaWVkIHdpdGggdGhpcyBhbmFseXNpcy4gTGV0JiMzOTtzIGNhbGwgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTWVNGUyYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7TU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2VybmZzX2RyYWluX29wZW5fZmlsZXMmIzM0OywKICAgICYjMzQ7dW5tYXBfbWFwcGluZ19maWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIGtlcm5mcyB3aGVyZSBmaWxlcyB3aXRoIHN3YXBwZWQgZl9tYXBwaW5nIChsaWtlIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcykgd2VyZSBub3QgcHJvcGVybHkgdW5tYXBwZWQgZHVyaW5nIGRyYWluaW5nLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgbW0gZnVuY3Rpb24gYHVubWFwX21hcHBpbmdfZmlsZWAgYW5kIG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaGFuZGxlcyBtZW1vcnkgbWFwcGluZyBhbmQgZmlsZSBsaWZlY3ljbGUsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NZU0ZTJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtNTVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyYjMzQ7LAogICAgJiMzNDt1bm1hcF9tYXBwaW5nX2ZpbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW4ga2VybmZzIHdoZXJlIGZpbGVzIHdpdGggc3dhcHBlZCBmX21hcHBpbmcgKGxpa2UgUENJIHN5c2ZzIGJpbmFyeSBhdHRyaWJ1dGVzKSB3ZXJlIG5vdCBwcm9wZXJseSB1bm1hcHBlZCBkdXJpbmcgZHJhaW5pbmcuIEl0IGludHJvZHVjZXMgYSBuZXcgY29yZSBtbSBmdW5jdGlvbiBgdW5tYXBfbWFwcGluZ19maWxlYCBhbmQgbW9kaWZpZXMgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBoYW5kbGVzIG1lbW9yeSBtYXBwaW5nIGFuZCBmaWxlIGxpZmVjeWNsZSwgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyB0byBjYXRjaCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IG1hbmFnZW1lbnQgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE4OjUyLjQ0MDM2MDAwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzkxNTUzNzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNZU0ZTXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIk1NVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzXCIsXG4gICAgXCJ1bm1hcF9tYXBwaW5nX2ZpbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbiBrZXJuZnMgd2hlcmUgZmlsZXMgd2l0aCBzd2FwcGVkIGZfbWFwcGluZyAobGlrZSBQQ0kgc3lzZnMgYmluYXJ5IGF0dHJpYnV0ZXMpIHdlcmUgbm90IHByb3Blcmx5IHVubWFwcGVkIGR1cmluZyBkcmFpbmluZy4gSXQgaW50cm9kdWNlcyBhIG5ldyBjb3JlIG1tIGZ1bmN0aW9uIGB1bm1hcF9tYXBwaW5nX2ZpbGVgIGFuZCBtb2RpZmllcyBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGhhbmRsZXMgbWVtb3J5IG1hcHBpbmcgYW5kIGZpbGUgbGlmZWN5Y2xlLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nIHRvIGNhdGNoIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbWFuYWdlbWVudCBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNDoxODo1Mi40NDAzNjYxMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMTY4MDIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM4M2Q4NTJmN2Y1NDMzOTYzN2Q3ZGUzYWU4YTRiMDdiOGM3NTM0ZDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTQ6MTg6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMva2VybmZzL2ZpbGUuYyBiL2ZzL2tlcm5mcy9maWxlLmNcXG5pbmRleCA4ZTBlOTBjOTMzNzIwYi4uOGQxZTRhY2M2NzE2MjEgMTAwNjQ0XFxuLS0tIGEvZnMva2VybmZzL2ZpbGUuY1xcbisrKyBiL2ZzL2tlcm5mcy9maWxlLmNcXG5AQCAtODE4LDcgKzgxOCwxMCBAQCB2b2lkIGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pXFxuIFxcdFxcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKG9mLVxcdTAwM2VmaWxlKTtcXG4gXFxuIFxcdFxcdGlmIChvZi1cXHUwMDNlbW1hcHBlZCkge1xcbi1cXHRcXHRcXHR1bm1hcF9tYXBwaW5nX3JhbmdlKGlub2RlLVxcdTAwM2VpX21hcHBpbmcsIDAsIDAsIDEpO1xcbitcXHRcXHRcXHRpZiAob2YtXFx1MDAzZWZpbGUtXFx1MDAzZWZfbWFwcGluZyAhPSBpbm9kZS1cXHUwMDNlaV9tYXBwaW5nKVxcbitcXHRcXHRcXHRcXHR1bm1hcF9tYXBwaW5nX2ZpbGUob2YtXFx1MDAzZWZpbGUpO1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdHVubWFwX21hcHBpbmdfcmFuZ2UoaW5vZGUtXFx1MDAzZWlfbWFwcGluZywgMCwgMCwgMSk7XFxuIFxcdFxcdFxcdG9mLVxcdTAwM2VtbWFwcGVkID0gZmFsc2U7XFxuIFxcdFxcdFxcdG9uLVxcdTAwM2Vucl9tbWFwcGVkLS07XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXFxuaW5kZXggNDg1ZGY5YzJkYmRkYjMuLmU4ODJhMDNlYWRkZGQ5IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbW0uaFxcbkBAIC0zMTgzLDYgKzMxODMsNyBAQCBleHRlcm4gaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuIFxcdFxcdFxcdCAgICBib29sICp1bmxvY2tlZCk7XFxuIHZvaWQgdW5tYXBfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4gXFx0XFx0cGdvZmZfdCBzdGFydCwgcGdvZmZfdCBuciwgYm9vbCBldmVuX2Nvd3MpO1xcbit2b2lkIHVubWFwX21hcHBpbmdfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSk7XFxuIHZvaWQgdW5tYXBfbWFwcGluZ19yYW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4gXFx0XFx0bG9mZl90IGNvbnN0IGhvbGViZWdpbiwgbG9mZl90IGNvbnN0IGhvbGVsZW4sIGludCBldmVuX2Nvd3MpO1xcbiAjZWxzZVxcbkBAIC0zMjAzLDYgKzMyMDQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsXFxuIH1cXG4gc3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuIFxcdFxcdHBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgbnIsIGJvb2wgZXZlbl9jb3dzKSB7IH1cXG4rc3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSkgeyB9XFxuIHN0YXRpYyBpbmxpbmUgdm9pZCB1bm1hcF9tYXBwaW5nX3JhbmdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbiBcXHRcXHRsb2ZmX3QgY29uc3QgaG9sZWJlZ2luLCBsb2ZmX3QgY29uc3QgaG9sZWxlbiwgaW50IGV2ZW5fY293cykgeyB9XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jXFxuaW5kZXggZmYzMzhjMmFiZTkyMzEuLmY5Y2ZiODhhYzRmNzMwIDEwMDY0NFxcbi0tLSBhL21tL21lbW9yeS5jXFxuKysrIGIvbW0vbWVtb3J5LmNcXG5AQCAtNDQyMyw2ICs0NDIzLDMyIEBAIHZvaWQgdW5tYXBfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgcGdvZmZfdCBzdGFydCxcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh1bm1hcF9tYXBwaW5nX3BhZ2VzKTtcXG4gXFxuKy8qKlxcbisgKiB1bm1hcF9tYXBwaW5nX2ZpbGUoKSAtIFVubWFwIGFsbCBtbWFwcyBvZiBhbiBvcGVuIGZpbGUuXFxuKyAqIEBmaWxlOiBUaGUgZmlsZSB0byB1bm1hcC5cXG4rICpcXG4rICogVW5tYXAgZXZlcnkgVk1BIHdpdGggdm1fZmlsZSBzZXQgdG8gQGZpbGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFkZHJlc3NcXG4rICogc3BhY2UgaXQgaXMgYXR0YWNoZWQgdG8uICBUaGlzIGFsc28gY292ZXJzIGZpbGVzIHdpdGggZl9tYXBwaW5nXFxuKyAqIHN3YXBwZWQgdG8gYSBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZSBhdCBvcGVuIHRpbWUsIHNpbmNlIHN1Y2ggVk1Bc1xcbisgKiBjYW5ub3QgYmUgZm91bmQgdGhyb3VnaCB0aGUgZmlsZSdzIG93biBpbm9kZSBtYXBwaW5nLlxcbisgKi9cXG4rdm9pZCB1bm1hcF9tYXBwaW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXFxuK3tcXG4rXFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlLVxcdTAwM2VmX21hcHBpbmc7XFxuK1xcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xcbitcXG4rXFx0aV9tbWFwX2xvY2tfcmVhZChtYXBwaW5nKTtcXG4rXFx0aWYgKHVubGlrZWx5KG1hcHBpbmdfbWFwcGVkKG1hcHBpbmcpKSkge1xcbitcXHRcXHR2bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoKHZtYSwgXFx1MDAyNm1hcHBpbmctXFx1MDAzZWlfbW1hcCwgMCwgVUxPTkdfTUFYKSB7XFxuK1xcdFxcdFxcdGlmICh2bWEtXFx1MDAzZXZtX2ZpbGUgIT0gZmlsZSlcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdFxcdHphcF92bWEodm1hKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcdGlfbW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTCh1bm1hcF9tYXBwaW5nX2ZpbGUpO1xcbitcXG4gLyoqXFxuICAqIHVubWFwX21hcHBpbmdfcmFuZ2UgLSB1bm1hcCB0aGUgcG9ydGlvbiBvZiBhbGwgbW1hcHMgaW4gdGhlIHNwZWNpZmllZFxcbiAgKiBhZGRyZXNzX3NwYWNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBieXRlIHJhbmdlIGluIHRoZSB1bmRlcmx5aW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE4OjUzLjE0MjY4MTg1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDMwODkyMTgxNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1lTRlNcIixcbiAgICBcIlBDSVwiLFxuICAgIFwiTU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2VybmZzX2RyYWluX29wZW5fZmlsZXNcIixcbiAgICBcInVubWFwX21hcHBpbmdfZmlsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIGtlcm5mcyB3aGVyZSBmaWxlcyB3aXRoIHN3YXBwZWQgZl9tYXBwaW5nIChsaWtlIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcykgd2VyZSBub3QgcHJvcGVybHkgdW5tYXBwZWQgZHVyaW5nIGRyYWluaW5nLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgbW0gZnVuY3Rpb24gYHVubWFwX21hcHBpbmdfZmlsZWAgYW5kIG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaGFuZGxlcyBtZW1vcnkgbWFwcGluZyBhbmQgZmlsZSBsaWZlY3ljbGUsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzgzZDg1MmY3ZjU0MzM5NjM3ZDdkZTNhZThhNGIwN2I4Yzc1MzRkMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDE0OjE4OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMva2VybmZzL2ZpbGUuYyBiL2ZzL2tlcm5mcy9maWxlLmNcbmluZGV4IDhlMGU5MGM5MzM3MjBiLi44ZDFlNGFjYzY3MTYyMSAxMDA2NDRcbi0tLSBhL2ZzL2tlcm5mcy9maWxlLmNcbisrKyBiL2ZzL2tlcm5mcy9maWxlLmNcbkBAIC04MTgsNyArODE4LDEwIEBAIHZvaWQga2VybmZzX2RyYWluX29wZW5fZmlsZXMoc3RydWN0IGtlcm5mc19ub2RlICprbilcbiBcdFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUob2YtXHUwMDNlZmlsZSk7XG4gXG4gXHRcdGlmIChvZi1cdTAwM2VtbWFwcGVkKSB7XG4tXHRcdFx0dW5tYXBfbWFwcGluZ19yYW5nZShpbm9kZS1cdTAwM2VpX21hcHBpbmcsIDAsIDAsIDEpO1xuK1x0XHRcdGlmIChvZi1cdTAwM2VmaWxlLVx1MDAzZWZfbWFwcGluZyAhPSBpbm9kZS1cdTAwM2VpX21hcHBpbmcpXG4rXHRcdFx0XHR1bm1hcF9tYXBwaW5nX2ZpbGUob2YtXHUwMDNlZmlsZSk7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0dW5tYXBfbWFwcGluZ19yYW5nZShpbm9kZS1cdTAwM2VpX21hcHBpbmcsIDAsIDAsIDEpO1xuIFx0XHRcdG9mLVx1MDAzZW1tYXBwZWQgPSBmYWxzZTtcbiBcdFx0XHRvbi1cdTAwM2Vucl9tbWFwcGVkLS07XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmhcbmluZGV4IDQ4NWRmOWMyZGJkZGIzLi5lODgyYTAzZWFkZGRkOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxuKysrIGIvaW5jbHVkZS9saW51eC9tbS5oXG5AQCAtMzE4Myw2ICszMTgzLDcgQEAgZXh0ZXJuIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHRcdCAgICBib29sICp1bmxvY2tlZCk7XG4gdm9pZCB1bm1hcF9tYXBwaW5nX3BhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuIFx0XHRwZ29mZl90IHN0YXJ0LCBwZ29mZl90IG5yLCBib29sIGV2ZW5fY293cyk7XG4rdm9pZCB1bm1hcF9tYXBwaW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpO1xuIHZvaWQgdW5tYXBfbWFwcGluZ19yYW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdFx0bG9mZl90IGNvbnN0IGhvbGViZWdpbiwgbG9mZl90IGNvbnN0IGhvbGVsZW4sIGludCBldmVuX2Nvd3MpO1xuICNlbHNlXG5AQCAtMzIwMyw2ICszMjA0LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLFxuIH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgdW5tYXBfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdFx0cGdvZmZfdCBzdGFydCwgcGdvZmZfdCBuciwgYm9vbCBldmVuX2Nvd3MpIHsgfVxuK3N0YXRpYyBpbmxpbmUgdm9pZCB1bm1hcF9tYXBwaW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpIHsgfVxuIHN0YXRpYyBpbmxpbmUgdm9pZCB1bm1hcF9tYXBwaW5nX3JhbmdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuIFx0XHRsb2ZmX3QgY29uc3QgaG9sZWJlZ2luLCBsb2ZmX3QgY29uc3QgaG9sZWxlbiwgaW50IGV2ZW5fY293cykgeyB9XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5LmMgYi9tbS9tZW1vcnkuY1xuaW5kZXggZmYzMzhjMmFiZTkyMzEuLmY5Y2ZiODhhYzRmNzMwIDEwMDY0NFxuLS0tIGEvbW0vbWVtb3J5LmNcbisrKyBiL21tL21lbW9yeS5jXG5AQCAtNDQyMyw2ICs0NDIzLDMyIEBAIHZvaWQgdW5tYXBfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgcGdvZmZfdCBzdGFydCxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodW5tYXBfbWFwcGluZ19wYWdlcyk7XG4gXG4rLyoqXG4rICogdW5tYXBfbWFwcGluZ19maWxlKCkgLSBVbm1hcCBhbGwgbW1hcHMgb2YgYW4gb3BlbiBmaWxlLlxuKyAqIEBmaWxlOiBUaGUgZmlsZSB0byB1bm1hcC5cbisgKlxuKyAqIFVubWFwIGV2ZXJ5IFZNQSB3aXRoIHZtX2ZpbGUgc2V0IHRvIEBmaWxlLCByZWdhcmRsZXNzIG9mIHRoZSBhZGRyZXNzXG4rICogc3BhY2UgaXQgaXMgYXR0YWNoZWQgdG8uICBUaGlzIGFsc28gY292ZXJzIGZpbGVzIHdpdGggZl9tYXBwaW5nXG4rICogc3dhcHBlZCB0byBhIGRpZmZlcmVudCBhZGRyZXNzIHNwYWNlIGF0IG9wZW4gdGltZSwgc2luY2Ugc3VjaCBWTUFzXG4rICogY2Fubm90IGJlIGZvdW5kIHRocm91Z2ggdGhlIGZpbGUncyBvd24gaW5vZGUgbWFwcGluZy5cbisgKi9cbit2b2lkIHVubWFwX21hcHBpbmdfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSlcbit7XG4rXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGZpbGUtXHUwMDNlZl9tYXBwaW5nO1xuK1x0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7XG4rXG4rXHRpX21tYXBfbG9ja19yZWFkKG1hcHBpbmcpO1xuK1x0aWYgKHVubGlrZWx5KG1hcHBpbmdfbWFwcGVkKG1hcHBpbmcpKSkge1xuK1x0XHR2bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoKHZtYSwgXHUwMDI2bWFwcGluZy1cdTAwM2VpX21tYXAsIDAsIFVMT05HX01BWCkge1xuK1x0XHRcdGlmICh2bWEtXHUwMDNldm1fZmlsZSAhPSBmaWxlKVxuK1x0XHRcdFx0Y29udGludWU7XG4rXHRcdFx0emFwX3ZtYSh2bWEpO1xuK1x0XHR9XG4rXHR9XG4rXHRpX21tYXBfdW5sb2NrX3JlYWQobWFwcGluZyk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHVubWFwX21hcHBpbmdfZmlsZSk7XG4rXG4gLyoqXG4gICogdW5tYXBfbWFwcGluZ19yYW5nZSAtIHVubWFwIHRoZSBwb3J0aW9uIG9mIGFsbCBtbWFwcyBpbiB0aGUgc3BlY2lmaWVkXG4gICogYWRkcmVzc19zcGFjZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzcGVjaWZpZWQgYnl0ZSByYW5nZSBpbiB0aGUgdW5kZXJseWluZ1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTQ6MTg6NTMuMTQyNjgzNDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Mjg2Mjk0ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIE1lbW9yeSBNYXBwaW5nIElzc3VlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIGFpbWVkIGF0IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IG1hcHBpbmcgaXNzdWUgd2l0aGluIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBpbiBgZnMva2VybmZzL2ZpbGUuY2AgYW5kIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGB1bm1hcF9tYXBwaW5nX2ZpbGVgLCBpbiBgbW0vbWVtb3J5LmNgLiBUaGUgY29yZSBwcm9ibGVtIHRoaXMgcGF0Y2ggdGFja2xlcyBpcyB0aGF0IGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AsIHdoZW4gY2xvc2luZyBmaWxlcywgd2Fzbid0IHByb3Blcmx5IHVubWFwcGluZyBmaWxlJ3MgbWVtb3J5IG1hcHBpbmdzIGlmIHRoZSBmaWxlJ3MgYGZfbWFwcGluZ2Agd2FzIHN3YXBwZWQgdG8gYSBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZSBhdCBvcGVuIHRpbWUuIEEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiwgbGlrZWx5LlxuXG5UaGUgcHJvcG9zZWQgc29sdXRpb24sIGB1bm1hcF9tYXBwaW5nX2ZpbGVgLCBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGl0IGl0ZXJhdGVzIHRocm91Z2ggdGhlIGB2bWFfaW50ZXJ2YWxfdHJlZWAgYXNzb2NpYXRlZCB3aXRoIGBmaWxlLVx1MDAzZWZfbWFwcGluZ2AgYW5kIHphcHMgYW55IFZNQXMgd2hlcmUgdGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBWTUEgbWF0Y2hlcyB0aGUgZmlsZSBiZWluZyBjbG9zZWQuIE1ha2VzIHNlbnNlLiBUaGlzIHNob3VsZCBjb3ZlciB0aGUgY2FzZXMgdGhhdCB3ZXJlIG1pc3NlZCBieSB0aGUgb3JpZ2luYWwgZHJhaW4gZnVuY3Rpb24uXG5cbk5vdywgbGV0J3MgYXNzZXNzIHRoZSByZWFjaCBvZiB0aGlzIGNvZGUuIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXMgcGFydCBvZiBrZXJuZnMsIHdoaWNoIGlzIGEgZnVuZGFtZW50YWwgY29tcG9uZW50IGZvciBib3RoIHN5c2ZzIGFuZCBjZ3JvdXBmcy4gVGhlc2UgYXJlICp1YmlxdWl0b3VzKiBpbiBMaW51eCwgc28gaXQncyBwcmFjdGljYWxseSBndWFyYW50ZWVkIHRoYXQgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBpcyBmcmVxdWVudGx5IGNhbGxlZC4gSSdkIGFkZCBib3RoIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgYW5kIHRoZSBuZXcgYHVubWFwX21hcHBpbmdfZmlsZWAgdG8gbXkgRm9jdXNTeW1ib2xzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cy4gYGZzL2tlcm5mcy9maWxlLmNgIGlzIGNvbXBpbGVkIGNvbmRpdGlvbmFsbHksIGRlcGVuZGluZyBvbiBgQ09ORklHX0tFUk5GU2AuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY29uZGl0aW9uYWwuIGBDT05GSUdfS0VSTkZTYCBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgc2VsZWN0aW5nIGBTWVNGU2Agb3IgYENHUk9VUFNgLCBzbyB3ZSBjYW4gZXhwZWN0IHRoZSBjb2RlIHRvIGJlIGNvbXBpbGVkLiBOb3csIHRoZSBgbW0vbWVtb3J5LmNgIGZpbGUgaXRzZWxmIGlzIGFsd2F5cyBjb21waWxlZCwgYnV0IGB1bm1hcF9tYXBwaW5nX2ZpbGVgIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgdW5kZXIgYENPTkZJR19NTVVgLCB3aGljaCBpcyBhbHNvIHR5cGljYWwuIEkgY2hlY2tlZCBgaW5jbHVkZS9saW51eC9tbS5oYCB0byBjb25maXJtIHRoZSBNTVUgZGVwZW5kZW5jeS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgc2VhcmNoIHRoZSBjb2RlIGJhc2UgZm9yIG90aGVyIHVzYWdlcyBvZiBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgYW0gYXdhcmUgb2Ygd2hlcmUgaXQgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE5OjAxLjQyODk4MDEzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMTExMDY2ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2VybmZzX2RyYWluX29wZW5fZmlsZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMva2VybmZzL2Rpci5jPTUwOD1zdGF0aWMgdm9pZCBrZXJuZnNfZHJhaW4oc3RydWN0IGtlcm5mc19ub2RlICprbiwgYm9vbCBkcm9wX3N1cGVycylcXG4tLVxcbmZzL2tlcm5mcy9kaXIuYy01NDUtXFx0aWYgKGtlcm5mc19zaG91bGRfZHJhaW5fb3Blbl9maWxlcyhrbikpXFxuZnMva2VybmZzL2Rpci5jOjU0NjpcXHRcXHRrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyhrbik7XFxuZnMva2VybmZzL2Rpci5jLTU0Ny1cXG4tLVxcbmZzL2tlcm5mcy9maWxlLmM9Nzg0PWJvb2wga2VybmZzX3Nob3VsZF9kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pXFxuLS1cXG5mcy9rZXJuZnMvZmlsZS5jLTgwMy1cXG5mcy9rZXJuZnMvZmlsZS5jOjgwNDp2b2lkIGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pXFxuZnMva2VybmZzL2ZpbGUuYy04MDUte1xcbi0tXFxuZnMva2VybmZzL2tlcm5mcy1pbnRlcm5hbC5oPTIwND1ib29sIGtlcm5mc19zaG91bGRfZHJhaW5fb3Blbl9maWxlcyhzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTtcXG5mcy9rZXJuZnMva2VybmZzLWludGVybmFsLmg6MjA1OnZvaWQga2VybmZzX2RyYWluX29wZW5fZmlsZXMoc3RydWN0IGtlcm5mc19ub2RlICprbik7XFxuZnMva2VybmZzL2tlcm5mcy1pbnRlcm5hbC5oLTIwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTQ6MTk6MDUuNjQwMDkxMjU0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5OTI0NTE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5mcyBEcmFpbiBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXMgY2FsbGVkIHNwZWNpZmljYWxseSBmcm9tIGBrZXJuZnNfZHJhaW5gLiBUaGF0IG1ha2VzIHNlbnNlLiBBbmQgYGtlcm5mc19kcmFpbmAgaXRzZWxmIGdldHMgdHJpZ2dlcmVkIHdoZW4gYSBrZXJuZnMgbm9kZSBpcyByZW1vdmVkIG9yIGRlYWN0aXZhdGVkLiBSaWdodCwgcmlnaHQuIENvbnNpZGVyaW5nIGhvdyBoZWF2aWx5IGBrZXJuZnNgIGlzIHVzZWQgaW4gYm90aCBzeXNmcyBhbmQgY2dyb3VwZnMsIHRoaXMgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgYW5kIHByb2JhYmx5IHByZXR0eSBpbXBvcnRhbnQgZm9yIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgY2xlYW5zIHVwIGNvcnJlY3RseSBkdXJpbmcgdGhvc2UgdW5tb3VudCBvcGVyYXRpb25zIG9yIHdoZW4gbm9kZXMgZ2V0IGRlbGV0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyByb2xlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIG9yIGJ1aWxkIG9wdGlvbnMgcmVsYXRlZCB0byBrZXJuZnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgaG93IGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgYmVoYXZlcy4gQW55dGhpbmcgdGhhdCBjb3VsZCBhZmZlY3QgaXRzIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE3NywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE5OjA5LjYzOTMzODc1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI0MDc1OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLRVJORlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMva2VybmZzL0tjb25maWctNS1cXG5mcy9rZXJuZnMvS2NvbmZpZzo2OmNvbmZpZyBLRVJORlNcXG5mcy9rZXJuZnMvS2NvbmZpZy03LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTQ6MTk6MTEuODYzNDIxMjk5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwNDQ3NDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5mcyBDb25maWd1cmF0aW9uIGZvciBQYXRjaCBJbmNsdXNpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gS0VSTkZTIGlzIGEgaGlkZGVuIGJvb2xlYW4sIGFjdGl2YXRlZCB0aHJvdWdoIFNZU0ZTIGFuZCBDR1JPVVBTIOKAkyBpdCdzIHByYWN0aWNhbGx5IGFsd2F5cyBvbiBpbiBhIG5vcm1hbCBzZXR1cCwgc28gZXhwbGljaXRseSBzdGF0aW5nIEtFUk5GUyBpdHNlbGYgaXMgcmVkdW5kYW50LiBTWVNGUyBhbmQgQ0dST1VQUyBhcmUgZ2VuZXJpYywgYnV0IEknbGwgYWRkIHRoZW0ganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbm90IGFzc3VtZSBhbnl0aGluZy5cblxuTm93LCBsZXQncyBzZWUgd2hhdCB0aGlzIHBhdGNoIGFjdHVhbGx5IHRvdWNoZXMuIEl0IG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgYW5kIGB1bm1hcF9tYXBwaW5nX2ZpbGVgLiBBaCwgYHVubWFwX21hcHBpbmdfZmlsZWAgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCB3aXRoIGBDT05GSUdfTU1VYC4gVGhhdCBtYWtlcyBzZW5zZS4gQWx0aG91Z2ggaXQncyBwcmV0dHkgdWJpcXVpdG91cywgSSdsbCBhZGQgYE1NVWAgdG8gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSdyZSBjb3ZlcmluZyBhbGwgYmFzZXMuIEl0J3MgYmV0dGVyIHRvIGJlIGV4cGxpY2l0LCBldmVuIGlmIGl0IHNlZW1zIG9idmlvdXMuXG5cbkZpbmFsbHksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSdzIGEgc3BlY2lmaWMgbWVjaGFuaXNtIGluIEtFUk5GUyB3aGVyZSBgZl9tYXBwaW5nYCBnZXRzIHN3YXBwZWQuIEknbGwgbmVlZCB0byBsb29rIGF0IGBmcy9rZXJuZnMvZmlsZS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBga2VybmZzX2ZvcF9tbWFwYC4gTXkgZ3V0IHRlbGxzIG1lIHNvbWV0aGluZyBpbiB0aGVyZSBtaWdodCBiZSB0aGUgY3VscHJpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNDoxOToxNi4yNjc4OTgzNDhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ3MDc4OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZl9tYXBwaW5nLio9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2tlcm5mcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMva2VybmZzL2ZpbGUuYz04MDQ9dm9pZCBrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyhzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKVxcbi0tXFxuZnMva2VybmZzL2ZpbGUuYy04MjAtXFx0XFx0aWYgKG9mLVxcdTAwM2VtbWFwcGVkKSB7XFxuZnMva2VybmZzL2ZpbGUuYzo4MjE6XFx0XFx0XFx0aWYgKG9mLVxcdTAwM2VmaWxlLVxcdTAwM2VmX21hcHBpbmcgIT0gaW5vZGUtXFx1MDAzZWlfbWFwcGluZylcXG5mcy9rZXJuZnMvZmlsZS5jLTgyMi1cXHRcXHRcXHRcXHR1bm1hcF9tYXBwaW5nX2ZpbGUob2YtXFx1MDAzZWZpbGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNDoxOToxNi4zNTI2MTA0ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjc4NTA0MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFN1c3BlY3QgVmFyaWFibGUgQXNzaWdubWVudCoqXG5cbk9rYXksIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIGFzc2lnbm1lbnQgb2YgYGZfbWFwcGluZ2AuIFNvbWV0aGluZyBmZWVscyBvZmYsIGFuZCBJIGNhbid0IGltbWVkaWF0ZWx5IHJlY2FsbCB3aGVyZSB0aGUgc3dhcCBoYXBwZW5zLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgaXQncyBsaWtlbHkgd2l0aGluIHRoZSByZWFsbSBvZiBlaXRoZXIgYHN5c2ZzYCBvciBgY2dyb3VwYCDigJMgdGhvc2UgYXJlIG9mdGVuIHRoZSBjdWxwcml0cyB3aGVuIEkgc2VlIHRoaXMga2luZCBvZiBiZWhhdmlvdXIuIFRpbWUgdG8gYmUgbWV0aG9kaWNhbC4gSSBuZWVkIHRvIGJlIHN1cmUuIEknbSBnb2luZyB0byBsYXVuY2ggYSBmdWxsLXNjYWxlIHNlYXJjaCBhY3Jvc3MgdGhlIGVudGlyZSBjb2RlYmFzZS4gTGV0J3MgbG9vayBmb3IgZXZlcnkgaW5zdGFuY2Ugb2YgYGZfbWFwcGluZyA9YCBpbiBvcmRlciB0byBkZXRlcm1pbmUgaXRzIGFzc2lnbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMDEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNDoxOToyMS42MzExMTgxNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2ODQ4NTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmX21hcHBpbmcgPVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9iZGV2LmM9OTI5PWludCBiZGV2X29wZW4oc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLCB2b2lkICpob2xkZXIsXFxuLS1cXG5ibG9jay9iZGV2LmMtOTkxLVxcdFxcdGJkZXZfZmlsZS1cXHUwMDNlZl9tb2RlIHw9IEZNT0RFX1dSSVRFX1JFU1RSSUNURUQ7XFxuYmxvY2svYmRldi5jOjk5MjpcXHRiZGV2X2ZpbGUtXFx1MDAzZWZfbWFwcGluZyA9IGJkZXYtXFx1MDAzZWJkX21hcHBpbmc7XFxuYmxvY2svYmRldi5jLTk5My1cXHRiZGV2X2ZpbGUtXFx1MDAzZWZfd2JfZXJyID0gZmlsZW1hcF9zYW1wbGVfd2JfZXJyKGJkZXZfZmlsZS1cXHUwMDNlZl9tYXBwaW5nKTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvZHJtX2FjY2VsLmM9MTE3PWludCBhY2NlbF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9kcm1fYWNjZWwuYy0xMzEtXFx0Lyogc2hhcmUgYWRkcmVzc19zcGFjZSBhY3Jvc3MgYWxsIGNoYXItZGV2cyBvZiBhIHNpbmdsZSBkZXZpY2UgKi9cXG5kcml2ZXJzL2FjY2VsL2RybV9hY2NlbC5jOjEzMjpcXHRmaWxwLVxcdTAwM2VmX21hcHBpbmcgPSBkZXYtXFx1MDAzZWFub25faW5vZGUtXFx1MDAzZWlfbWFwcGluZztcXG5kcml2ZXJzL2FjY2VsL2RybV9hY2NlbC5jLTEzMy1cXG4tLVxcbmRyaXZlcnMvY2hhci9tZW0uYz02MDM9c3RhdGljIGludCBvcGVuX3BvcnQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApXFxuLS1cXG5kcml2ZXJzL2NoYXIvbWVtLmMtNjIxLVxcdCAqL1xcbmRyaXZlcnMvY2hhci9tZW0uYzo2MjI6XFx0ZmlscC1cXHUwMDNlZl9tYXBwaW5nID0gaW9tZW1fZ2V0X21hcHBpbmcoKTtcXG5kcml2ZXJzL2NoYXIvbWVtLmMtNjIzLVxcbi0tXFxuZHJpdmVycy9kYXgvZGV2aWNlLmM9MzMzPXN0YXRpYyBpbnQgZGF4X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApXFxuLS1cXG5kcml2ZXJzL2RheC9kZXZpY2UuYy0zNDItXFx0aW5vZGUtXFx1MDAzZWlfbWFwcGluZy1cXHUwMDNlYV9vcHMgPSBcXHUwMDI2ZGV2X2RheF9hb3BzO1xcbmRyaXZlcnMvZGF4L2RldmljZS5jOjM0MzpcXHRmaWxwLVxcdTAwM2VmX21hcHBpbmcgPSBpbm9kZS1cXHUwMDNlaV9tYXBwaW5nO1xcbmRyaXZlcnMvZGF4L2RldmljZS5jLTM0NC1cXHRmaWxwLVxcdTAwM2VmX3diX2VyciA9IGZpbGVtYXBfc2FtcGxlX3diX2VycihmaWxwLVxcdTAwM2VmX21hcHBpbmcpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM9MzY5PWludCBkcm1fb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTM4NS1cXHQvKiBzaGFyZSBhZGRyZXNzX3NwYWNlIGFjcm9zcyBhbGwgY2hhci1kZXZzIG9mIGEgc2luZ2xlIGRldmljZSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jOjM4NjpcXHRmaWxwLVxcdTAwM2VmX21hcHBpbmcgPSBkZXYtXFx1MDAzZWFub25faW5vZGUtXFx1MDAzZWlfbWFwcGluZztcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0zODctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYz0xMDU3PXN0cnVjdCBmaWxlICptb2NrX2RybV9nZXRmaWxlKHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yLCB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0xMDczLVxcdC8qIEV2ZXJ5b25lIHNoYXJlcyBhIHNpbmdsZSBnbG9iYWwgYWRkcmVzcyBzcGFjZSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jOjEwNzQ6XFx0ZmlsZS1cXHUwMDNlZl9tYXBwaW5nID0gZGV2LVxcdTAwM2Vhbm9uX2lub2RlLVxcdTAwM2VpX21hcHBpbmc7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMtMTA3NS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYz0yMzk9c3RydWN0IGRtYV9idWYgKmRybV9nZW1fZG1hYnVmX2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jLTI1MC1cXHRkcm1fZ2VtX29iamVjdF9nZXQob2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmM6MjUxOlxcdGRtYV9idWYtXFx1MDAzZWZpbGUtXFx1MDAzZWZfbWFwcGluZyA9IG9iai1cXHUwMDNlZGV2LVxcdTAwM2Vhbm9uX2lub2RlLVxcdTAwM2VpX21hcHBpbmc7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jLTI1Mi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmM9OTY4PXN0YXRpYyBzdHJ1Y3QgZmlsZSAqbW1hcF9zaW5nbGV0b24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jLTk4MC1cXHQvKiBFdmVyeW9uZSBzaGFyZXMgYSBzaW5nbGUgZ2xvYmFsIGFkZHJlc3Mgc3BhY2UgKi9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjk4MTpcXHRmaWxlLVxcdTAwM2VmX21hcHBpbmcgPSBpOTE1LVxcdTAwM2Vkcm0uYW5vbl9pbm9kZS1cXHUwMDNlaV9tYXBwaW5nO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtOTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tYWluLmM9MTg5Nz1zdGF0aWMgaW50IG1hcF9iZl9hcmVhKHN0cnVjdCBtbHg0X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tYWluLmMtMTkxMC1cXHRcXHRcXHQoZGV2LVxcdTAwM2VjYXBzLm51bV91YXJzIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvbWFpbi5jOjE5MTE6XFx0cHJpdi1cXHUwMDNlYmZfbWFwcGluZyA9IGlvX21hcHBpbmdfY3JlYXRlX3djKGJmX3N0YXJ0LCBiZl9sZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvbWFpbi5jLTE5MTItXFx0aWYgKCFwcml2LVxcdTAwM2ViZl9tYXBwaW5nKVxcbi0tXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTAxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGNpX2xlZ2FjeV9pb19hdHRyID0ge1xcbi0tXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTAyMy1cXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZV9sZWdhY3ksXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTAyNDpcXHQuZl9tYXBwaW5nID0gaW9tZW1fZ2V0X21hcHBpbmcsXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTAyNS19O1xcbi0tXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTAyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGNpX2xlZ2FjeV9pb19zcGFyc2VfYXR0ciA9IHtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwMzMtXFx0Lmxsc2VlayA9IHBjaV9sbHNlZWtfcmVzb3VyY2VfbGVnYWN5LFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEwMzQ6XFx0LmZfbWFwcGluZyA9IGlvbWVtX2dldF9tYXBwaW5nLFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwMzUtfTtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEwMzc9c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlIHBjaV9sZWdhY3lfbWVtX2F0dHIgPSB7XFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMDQxLVxcdC5sbHNlZWsgPSBwY2lfbGxzZWVrX3Jlc291cmNlX2xlZ2FjeSxcXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYzoxMDQyOlxcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMDQzLX07XFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMDQ1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBwY2lfbGVnYWN5X21lbV9zcGFyc2VfYXR0ciA9IHtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwNDktXFx0Lmxsc2VlayA9IHBjaV9sbHNlZWtfcmVzb3VyY2VfbGVnYWN5LFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEwNTA6XFx0LmZfbWFwcGluZyA9IGlvbWVtX2dldF9tYXBwaW5nLFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwNTEtfTtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEyMjQ9c3RhdGljIGxvZmZfdCBwY2lfbGxzZWVrX3Jlc291cmNlKHN0cnVjdCBmaWxlICpmaWxlcCxcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNDItIyBkZWZpbmUgX19QQ0lfUkVTT1VSQ0VfSU9fTU1BUF9BVFRSU1xcdFxcdFxcXFxcXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYzoxMjQzOlxcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcXHRcXHRcXFxcXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTI0NC1cXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZSxcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMjYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBkZXZfcmVzb3VyY2UjI19iYXIjI191Y19hdHRyID0ge1xcdFxcXFxcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNjItXFx0LnByaXZhdGUgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKShfYmFyKSxcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTI2MzpcXHQuZl9tYXBwaW5nID0gaW9tZW1fZ2V0X21hcHBpbmcsXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNjQtXFx0Lmxsc2VlayA9IHBjaV9sbHNlZWtfcmVzb3VyY2UsXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTI2OT1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgZGV2X3Jlc291cmNlIyNfYmFyIyNfd2NfYXR0ciA9IHtcXHQgICAgICBcXFxcXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjcxLVxcdC5wcml2YXRlID0gKHZvaWQgKikodW5zaWduZWQgbG9uZykoX2JhciksXFx0XFx0XFx0ICAgICAgXFxcXFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEyNzI6XFx0LmZfbWFwcGluZyA9IGlvbWVtX2dldF9tYXBwaW5nLFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXFxcXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjczLVxcdC5sbHNlZWsgPSBwY2lfbGxzZWVrX3Jlc291cmNlLFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXFxcXG4tLVxcbmRyaXZlcnMvcGNpL3Byb2MuYz0yOTk9c3RhdGljIGludCBwcm9jX2J1c19wY2lfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmRyaXZlcnMvcGNpL3Byb2MuYy0zMDktXFx0ZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhID0gZnByaXY7XFxuZHJpdmVycy9wY2kvcHJvYy5jOjMxMDpcXHRmaWxlLVxcdTAwM2VmX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZygpO1xcbmRyaXZlcnMvcGNpL3Byb2MuYy0zMTEtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYz0yMz1pbnQgdmZpb19kZXZpY2VfZm9wc19jZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGVwKVxcbi0tXFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmMtNDYtXFx0ICovXFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmM6NDc6XFx0ZmlsZXAtXFx1MDAzZWZfbWFwcGluZyA9IGRldmljZS1cXHUwMDNlaW5vZGUtXFx1MDAzZWlfbWFwcGluZztcXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy00OC1cXG4tLVxcbmRyaXZlcnMvdmZpby9ncm91cC5jPTI1NT1zdGF0aWMgc3RydWN0IGZpbGUgKnZmaW9fZGV2aWNlX29wZW5fZmlsZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvdmZpby9ncm91cC5jLTI4My1cXHQgKi9cXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYzoyODQ6XFx0ZmlsZXAtXFx1MDAzZWZfbWFwcGluZyA9IGRldmljZS1cXHUwMDNlaW5vZGUtXFx1MDAzZWlfbWFwcGluZztcXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yODUtXFxuLS1cXG5mcy9hbm9uX2lub2Rlcy5jPTEzMj1zdGF0aWMgc3RydWN0IGZpbGUgKl9fYW5vbl9pbm9kZV9nZXRmaWxlKGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG5mcy9hbm9uX2lub2Rlcy5jLTE2OC1cXG5mcy9hbm9uX2lub2Rlcy5jOjE2OTpcXHRmaWxlLVxcdTAwM2VmX21hcHBpbmcgPSBpbm9kZS1cXHUwMDNlaV9tYXBwaW5nO1xcbmZzL2Fub25faW5vZGVzLmMtMTcwLVxcbi0tXFxuZnMvY29kYS9maWxlLmM9MTUxPWNvZGFfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICpjb2RhX2ZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZnMvY29kYS9maWxlLmMtMTgzLVxcdHNwaW5fbG9jayhcXHUwMDI2Y2lpLVxcdTAwM2VjX2xvY2spO1xcbmZzL2NvZGEvZmlsZS5jOjE4NDpcXHRjb2RhX2ZpbGUtXFx1MDAzZWZfbWFwcGluZyA9IGhvc3RfZmlsZS1cXHUwMDNlZl9tYXBwaW5nO1xcbmZzL2NvZGEvZmlsZS5jLTE4NS1cXHRpZiAoY29kYV9pbm9kZS1cXHUwMDNlaV9tYXBwaW5nID09IFxcdTAwMjZjb2RhX2lub2RlLVxcdTAwM2VpX2RhdGEpXFxuLS1cXG5mcy9lcm9mcy9pc2hhcmUuYz05MD1zdGF0aWMgaW50IGVyb2ZzX2lzaGFyZV9maWxlX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9lcm9mcy9pc2hhcmUuYy0xMDMtXFx0cmVhbGZpbGUtXFx1MDAzZWZfaW5vZGUgPSBzaGFyZWRpbm9kZTtcXG5mcy9lcm9mcy9pc2hhcmUuYzoxMDQ6XFx0cmVhbGZpbGUtXFx1MDAzZWZfbWFwcGluZyA9IHNoYXJlZGlub2RlLVxcdTAwM2VpX21hcHBpbmc7XFxuZnMvZXJvZnMvaXNoYXJlLmMtMTA1LVxcdHBhdGhfZ2V0KFxcdTAwMjZmaWxlLVxcdTAwM2VmX3BhdGgpO1xcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTM2MT1zdGF0aWMgdm9pZCBmaWxlX2luaXRfcGF0aChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsXFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtMzY1LVxcdGZpbGUtXFx1MDAzZWZfaW5vZGUgPSBwYXRoLVxcdTAwM2VkZW50cnktXFx1MDAzZWRfaW5vZGU7XFxuZnMvZmlsZV90YWJsZS5jOjM2NjpcXHRmaWxlLVxcdTAwM2VmX21hcHBpbmcgPSBwYXRoLVxcdTAwM2VkZW50cnktXFx1MDAzZWRfaW5vZGUtXFx1MDAzZWlfbWFwcGluZztcXG5mcy9maWxlX3RhYmxlLmMtMzY3LVxcdGZpbGUtXFx1MDAzZWZfd2JfZXJyID0gZmlsZW1hcF9zYW1wbGVfd2JfZXJyKGZpbGUtXFx1MDAzZWZfbWFwcGluZyk7XFxuLS1cXG5mcy9maWxlX3RhYmxlLmM9NDcxPXN0cnVjdCBmaWxlICphbGxvY19maWxlX2Nsb25lKHN0cnVjdCBmaWxlICpiYXNlLCBpbnQgZmxhZ3MsXFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNDc4LVxcdFxcdHBhdGhfZ2V0KFxcdTAwMjZmLVxcdTAwM2VmX3BhdGgpO1xcbmZzL2ZpbGVfdGFibGUuYzo0Nzk6XFx0XFx0Zi1cXHUwMDNlZl9tYXBwaW5nID0gYmFzZS1cXHUwMDNlZl9tYXBwaW5nO1xcbmZzL2ZpbGVfdGFibGUuYy00ODAtXFx0fVxcbi0tXFxuZnMvb3Blbi5jPTg4NT1zdGF0aWMgaW50IGRvX2RlbnRyeV9vcGVuKHN0cnVjdCBmaWxlICpmLFxcbi0tXFxuZnMvb3Blbi5jLTg5My1cXHRmLVxcdTAwM2VmX2lub2RlID0gaW5vZGU7XFxuZnMvb3Blbi5jOjg5NDpcXHRmLVxcdTAwM2VmX21hcHBpbmcgPSBpbm9kZS1cXHUwMDNlaV9tYXBwaW5nO1xcbmZzL29wZW4uYy04OTUtXFx0Zi1cXHUwMDNlZl93Yl9lcnIgPSBmaWxlbWFwX3NhbXBsZV93Yl9lcnIoZi1cXHUwMDNlZl9tYXBwaW5nKTtcXG4tLVxcbmZzL3N5c2ZzL2ZpbGUuYz0xOTE9c3RhdGljIGludCBzeXNmc19rZl9iaW5fb3BlbihzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YpXFxuLS1cXG5mcy9zeXNmcy9maWxlLmMtMTk1LVxcdGlmIChiYXR0ci1cXHUwMDNlZl9tYXBwaW5nKVxcbmZzL3N5c2ZzL2ZpbGUuYzoxOTY6XFx0XFx0b2YtXFx1MDAzZWZpbGUtXFx1MDAzZWZfbWFwcGluZyA9IGJhdHRyLVxcdTAwM2VmX21hcHBpbmcoKTtcXG5mcy9zeXNmcy9maWxlLmMtMTk3LVxcbi0tXFxubW0vc3dhcGZpbGUuYz0zMDYzPVNZU0NBTExfREVGSU5FMShzd2Fwb2ZmLCBjb25zdCBjaGFyIF9fdXNlciAqLCBzcGVjaWFsZmlsZSlcXG4tLVxcbm1tL3N3YXBmaWxlLmMtMzA4Ni1cXHRcXHRpZiAocC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBTV1BfV1JJVEVPSykge1xcbm1tL3N3YXBmaWxlLmM6MzA4NzpcXHRcXHRcXHRpZiAocC1cXHUwMDNlc3dhcF9maWxlLVxcdTAwM2VmX21hcHBpbmcgPT0gbWFwcGluZykge1xcbm1tL3N3YXBmaWxlLmMtMzA4OC1cXHRcXHRcXHRcXHRmb3VuZCA9IDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE5OjIzLjg5OTYxNDYxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMTczNjc5OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHN5c2ZzIEZpbGUgTWFwcGluZyBhbmQgVW5tYXBwaW5nKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXQgbWU6IGBmcy9zeXNmcy9maWxlLmM6MTk2YCBpcyB3aGVyZSB0aGUgYGZfbWFwcGluZ2Agc3dhcCBoYXBwZW5zIGluIHN5c2ZzLCBzcGVjaWZpY2FsbHkgZHVyaW5nIHRoZSBgc3lzZnNfa2ZfYmluX29wZW5gIGNhbGwuIFRoYXQgY2FsbHMgYGJhdHRyLVx1MDAzZWZfbWFwcGluZygpYC4gQW5kIGxvb2tpbmcgYXQgdGhlIGNvZGUsIHBhcnRpY3VsYXJseSB3aXRoIGBwY2lfc3lzZnNgLCB3ZSdyZSB1c2luZyBgaW9tZW1fZ2V0X21hcHBpbmdgIGZvciBgZl9tYXBwaW5nYC4gVGhpcyBkaXJlY3RseSBhZmZlY3RzIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcy5cblxuVGhpcyBtZWFucyB0aGF0IHdoZW4gYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBnZXRzIGNhbGxlZCBvbiB0aGlzIHR5cGUgb2YgZmlsZSwgaXQgc2hvdWxkIG5vdyBjb3JyZWN0bHkgdW5tYXAgZXZlcnl0aGluZy4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgYGZzL3N5c2ZzL2ZpbGUuY2AuIFllcCwgYENPTkZJR19TWVNGU2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZy4gU2luY2UgUENJIGlzIHVzZWQgdmlhIHRoZSBuZXcgbWFwcGluZyBmdW5jdGlvbiwgYW5kIHRoZXJlIGlzIG1lbW9yeSB1bm1hcHBpbmcgaW52b2x2ZWQsIHdlIGFsc28gc2hvdWxkIGFkZCBgUENJYCBhbmQgYE1NVWAgdG8gdGhlIGxpc3QuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIGFuZCBgdW5tYXBfbWFwcGluZ19maWxlYC4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgYHVubWFwX21hcHBpbmdfZmlsZWAgaW4gYG1tL21lbW9yeS5jYC4gWWVwLCBpdCdzIGl0ZXJhdGluZyB0aHJvdWdoIGB2bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoYCwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgd2UndmUgZ290IHNvbWV0aGluZyB0aGF0J3MgcmlwZSBmb3IgZnV6emluZy5cblxuR2l2ZW4gdGhhdCwgSSdtIGdvaW5nIHRvIHNldDpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBgdHJ1ZWBcbiogICBgRm9jdXNTeW1ib2xzYDogYFtcImtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzXCIsIFwidW5tYXBfbWFwcGluZ19maWxlXCJdYFxuKiAgIGBFbmFibGVDb25maWdzYDogYFtcIlNZU0ZTXCIsIFwiUENJXCIsIFwiTU1VXCJdYFxuKiAgIGBSZWFzb25pbmdgOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyB0byBwcm9wZXJseSB1bm1hcCBmaWxlcyB3aG9zZSBmX21hcHBpbmcgd2FzIHN3YXBwZWQgYXQgb3BlbiB0aW1lIChlLmcuLCBQQ0kgc3lzZnMgYmluYXJ5IGF0dHJpYnV0ZXMpLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIHVubWFwX21hcHBpbmdfZmlsZSBpbiBtbS9tZW1vcnkuYyB0byBhY2hpZXZlIHRoaXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwvc3lzZnMgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgZmlsZSB1bm1hcHBpbmcuXCJcblxuTGV0J3MgZG91YmxlLWNoZWNrIHRoYXQgYHVubWFwX21hcHBpbmdfZmlsZWAgaXMgZXhwb3J0ZWQuIE9rYXksIGdvb2QsIGl0IGlzLiBgRVhQT1JUX1NZTUJPTF9HUEwodW5tYXBfbWFwcGluZ19maWxlKWAuXG5cbmBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXNuJ3QgZXhwb3J0ZWQsIGJ1dCB0aGF0J3Mgbm90IGEgY29uY2VybiBhcyBpdCdzIGNhbGxlZCBmcm9tIGBrZXJuZnNfZHJhaW5gLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBga2VybmZzX3JlbW92ZWAgYW5kIG90aGVycy5cblxuT2theSwgYmFjayB0byBgZnMvc3lzZnMvZmlsZS5jYC4gYHN5c2ZzX2tmX2Jpbl9vcGVuYCBpcyBjYWxsZWQgd2hlbiBhIHN5c2ZzIGJpbmFyeSBmaWxlIGlzIG9wZW5lZC4gSXQgc2V0cyBgb2YtXHUwMDNlbW1hcHBlZGAgd2hlbiBpdCdzIG1tYXBwZWQuIFRoZW4gd2hlbiB0aGUgZmlsZSBpcyByZW1vdmVkLCBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIHdpbGwgYmUgY2FsbGVkLlxuXG5UaGlzIHNlZW1zIGxpa2UgYSBzb2xpZCwgd2VsbC1kZWZpbmVkIGNoYW5nZS4gSSdtIHNhdGlzZmllZCB3aXRoIHRoaXMgYW5hbHlzaXMuIExldCdzIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2ODYsIk91dHB1dFRva2VucyI6MTU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE5OjM2LjA3MzI5NzgwN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODU5ODI3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1lTRlNcIixcbiAgICBcIlBDSVwiLFxuICAgIFwiTU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2VybmZzX2RyYWluX29wZW5fZmlsZXNcIixcbiAgICBcInVubWFwX21hcHBpbmdfZmlsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIGtlcm5mcyB3aGVyZSBmaWxlcyB3aXRoIHN3YXBwZWQgZl9tYXBwaW5nIChsaWtlIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcykgd2VyZSBub3QgcHJvcGVybHkgdW5tYXBwZWQgZHVyaW5nIGRyYWluaW5nLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgbW0gZnVuY3Rpb24gYHVubWFwX21hcHBpbmdfZmlsZWAgYW5kIG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaGFuZGxlcyBtZW1vcnkgbWFwcGluZyBhbmQgZmlsZSBsaWZlY3ljbGUsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1lTRlNcIixcbiAgICBcIlBDSVwiLFxuICAgIFwiTU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2VybmZzX2RyYWluX29wZW5fZmlsZXNcIixcbiAgICBcInVubWFwX21hcHBpbmdfZmlsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIGtlcm5mcyB3aGVyZSBmaWxlcyB3aXRoIHN3YXBwZWQgZl9tYXBwaW5nIChsaWtlIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcykgd2VyZSBub3QgcHJvcGVybHkgdW5tYXBwZWQgZHVyaW5nIGRyYWluaW5nLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgbW0gZnVuY3Rpb24gYHVubWFwX21hcHBpbmdfZmlsZWAgYW5kIG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaGFuZGxlcyBtZW1vcnkgbWFwcGluZyBhbmQgZmlsZSBsaWZlY3ljbGUsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow76f57[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 13:57:51 +0000 UTC FinishedAt: 2026-07-22 14:19:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "8338c4c90746937c95ab5ea7953afbcdec29aec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SYSFS", "PCI", "MMU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "8338c4c90746937c95ab5ea7953afbcdec29aec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SYSFS", "PCI", "MMU" ], "series_id": "720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "kernfs_drain_open_files", "unmap_mapping_file" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NZU0ZTJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtNTVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyYjMzQ7LAogICAgJiMzNDt1bm1hcF9tYXBwaW5nX2ZpbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW4ga2VybmZzIHdoZXJlIGZpbGVzIHdpdGggc3dhcHBlZCBmX21hcHBpbmcgKGxpa2UgUENJIHN5c2ZzIGJpbmFyeSBhdHRyaWJ1dGVzKSB3ZXJlIG5vdCBwcm9wZXJseSB1bm1hcHBlZCBkdXJpbmcgZHJhaW5pbmcuIEl0IGludHJvZHVjZXMgYSBuZXcgY29yZSBtbSBmdW5jdGlvbiBgdW5tYXBfbWFwcGluZ19maWxlYCBhbmQgbW9kaWZpZXMgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBoYW5kbGVzIG1lbW9yeSBtYXBwaW5nIGFuZCBmaWxlIGxpZmVjeWNsZSwgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyB0byBjYXRjaCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IG1hbmFnZW1lbnQgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNDoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM4M2Q4NTJmN2Y1NDMzOTYzN2Q3ZGUzYWU4YTRiMDdiOGM3NTM0ZDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAxNDoxODo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9rZXJuZnMvZmlsZS5jIGIvZnMva2VybmZzL2ZpbGUuY1xuaW5kZXggOGUwZTkwYzkzMzcyMGIuLjhkMWU0YWNjNjcxNjIxIDEwMDY0NFxuLS0tIGEvZnMva2VybmZzL2ZpbGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMva2VybmZzL2ZpbGUuY1xuQEAgLTgxOCw3ICYjNDM7ODE4LDEwIEBAIHZvaWQga2VybmZzX2RyYWluX29wZW5fZmlsZXMoc3RydWN0IGtlcm5mc19ub2RlICprbilcbiBcdFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUob2YtXHUwMDNlZmlsZSk7XG4gXG4gXHRcdGlmIChvZi1cdTAwM2VtbWFwcGVkKSB7XG4tXHRcdFx0dW5tYXBfbWFwcGluZ19yYW5nZShpbm9kZS1cdTAwM2VpX21hcHBpbmcsIDAsIDAsIDEpO1xuJiM0MztcdFx0XHRpZiAob2YtXHUwMDNlZmlsZS1cdTAwM2VmX21hcHBpbmcgIT0gaW5vZGUtXHUwMDNlaV9tYXBwaW5nKVxuJiM0MztcdFx0XHRcdHVubWFwX21hcHBpbmdfZmlsZShvZi1cdTAwM2VmaWxlKTtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdHVubWFwX21hcHBpbmdfcmFuZ2UoaW5vZGUtXHUwMDNlaV9tYXBwaW5nLCAwLCAwLCAxKTtcbiBcdFx0XHRvZi1cdTAwM2VtbWFwcGVkID0gZmFsc2U7XG4gXHRcdFx0b24tXHUwMDNlbnJfbW1hcHBlZC0tO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXG5pbmRleCA0ODVkZjljMmRiZGRiMy4uZTg4MmEwM2VhZGRkZDkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW0uaFxuQEAgLTMxODMsNiAmIzQzOzMxODMsNyBAQCBleHRlcm4gaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4gXHRcdFx0ICAgIGJvb2wgKnVubG9ja2VkKTtcbiB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXHRcdHBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgbnIsIGJvb2wgZXZlbl9jb3dzKTtcbiYjNDM7dm9pZCB1bm1hcF9tYXBwaW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpO1xuIHZvaWQgdW5tYXBfbWFwcGluZ19yYW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdFx0bG9mZl90IGNvbnN0IGhvbGViZWdpbiwgbG9mZl90IGNvbnN0IGhvbGVsZW4sIGludCBldmVuX2Nvd3MpO1xuICNlbHNlXG5AQCAtMzIwMyw2ICYjNDM7MzIwNCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcbiB9XG4gc3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXHRcdHBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgbnIsIGJvb2wgZXZlbl9jb3dzKSB7IH1cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSkgeyB9XG4gc3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfcmFuZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXHRcdGxvZmZfdCBjb25zdCBob2xlYmVnaW4sIGxvZmZfdCBjb25zdCBob2xlbGVuLCBpbnQgZXZlbl9jb3dzKSB7IH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jXG5pbmRleCBmZjMzOGMyYWJlOTIzMS4uZjljZmI4OGFjNGY3MzAgMTAwNjQ0XG4tLS0gYS9tbS9tZW1vcnkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5LmNcbkBAIC00NDIzLDYgJiM0Mzs0NDIzLDMyIEBAIHZvaWQgdW5tYXBfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgcGdvZmZfdCBzdGFydCxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodW5tYXBfbWFwcGluZ19wYWdlcyk7XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiB1bm1hcF9tYXBwaW5nX2ZpbGUoKSAtIFVubWFwIGFsbCBtbWFwcyBvZiBhbiBvcGVuIGZpbGUuXG4mIzQzOyAqIEBmaWxlOiBUaGUgZmlsZSB0byB1bm1hcC5cbiYjNDM7ICpcbiYjNDM7ICogVW5tYXAgZXZlcnkgVk1BIHdpdGggdm1fZmlsZSBzZXQgdG8gQGZpbGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFkZHJlc3NcbiYjNDM7ICogc3BhY2UgaXQgaXMgYXR0YWNoZWQgdG8uICBUaGlzIGFsc28gY292ZXJzIGZpbGVzIHdpdGggZl9tYXBwaW5nXG4mIzQzOyAqIHN3YXBwZWQgdG8gYSBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZSBhdCBvcGVuIHRpbWUsIHNpbmNlIHN1Y2ggVk1Bc1xuJiM0MzsgKiBjYW5ub3QgYmUgZm91bmQgdGhyb3VnaCB0aGUgZmlsZSYjMzk7cyBvd24gaW5vZGUgbWFwcGluZy5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgdW5tYXBfbWFwcGluZ19maWxlKHN0cnVjdCBmaWxlICpmaWxlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlLVx1MDAzZWZfbWFwcGluZztcbiYjNDM7XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTtcbiYjNDM7XG4mIzQzO1x0aV9tbWFwX2xvY2tfcmVhZChtYXBwaW5nKTtcbiYjNDM7XHRpZiAodW5saWtlbHkobWFwcGluZ19tYXBwZWQobWFwcGluZykpKSB7XG4mIzQzO1x0XHR2bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoKHZtYSwgXHUwMDI2bWFwcGluZy1cdTAwM2VpX21tYXAsIDAsIFVMT05HX01BWCkge1xuJiM0MztcdFx0XHRpZiAodm1hLVx1MDAzZXZtX2ZpbGUgIT0gZmlsZSlcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdFx0emFwX3ZtYSh2bWEpO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XHRpX21tYXBfdW5sb2NrX3JlYWQobWFwcGluZyk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwodW5tYXBfbWFwcGluZ19maWxlKTtcbiYjNDM7XG4gLyoqXG4gICogdW5tYXBfbWFwcGluZ19yYW5nZSAtIHVubWFwIHRoZSBwb3J0aW9uIG9mIGFsbCBtbWFwcyBpbiB0aGUgc3BlY2lmaWVkXG4gICogYWRkcmVzc19zcGFjZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzcGVjaWZpZWQgYnl0ZSByYW5nZSBpbiB0aGUgdW5kZXJseWluZ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTWVNGUyYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7TU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2VybmZzX2RyYWluX29wZW5fZmlsZXMmIzM0OywKICAgICYjMzQ7dW5tYXBfbWFwcGluZ19maWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIGtlcm5mcyB3aGVyZSBmaWxlcyB3aXRoIHN3YXBwZWQgZl9tYXBwaW5nIChsaWtlIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcykgd2VyZSBub3QgcHJvcGVybHkgdW5tYXBwZWQgZHVyaW5nIGRyYWluaW5nLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgbW0gZnVuY3Rpb24gYHVubWFwX21hcHBpbmdfZmlsZWAgYW5kIG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaGFuZGxlcyBtZW1vcnkgbWFwcGluZyBhbmQgZmlsZSBsaWZlY3ljbGUsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM4M2Q4NTJmN2Y1NDMzOTYzN2Q3ZGUzYWU4YTRiMDdiOGM3NTM0ZDEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAxNDoxODo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2tlcm5mcy9maWxlLmMgYi9mcy9rZXJuZnMvZmlsZS5jCmluZGV4IDhlMGU5MGM5MzM3MjBiLi44ZDFlNGFjYzY3MTYyMSAxMDA2NDQKLS0tIGEvZnMva2VybmZzL2ZpbGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9rZXJuZnMvZmlsZS5jCkBAIC04MTgsNyAmIzQzOzgxOCwxMCBAQCB2b2lkIGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pCiAJCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKG9mLSZndDtmaWxlKTsKIAogCQlpZiAob2YtJmd0O21tYXBwZWQpIHsKLQkJCXVubWFwX21hcHBpbmdfcmFuZ2UoaW5vZGUtJmd0O2lfbWFwcGluZywgMCwgMCwgMSk7CiYjNDM7CQkJaWYgKG9mLSZndDtmaWxlLSZndDtmX21hcHBpbmcgIT0gaW5vZGUtJmd0O2lfbWFwcGluZykKJiM0MzsJCQkJdW5tYXBfbWFwcGluZ19maWxlKG9mLSZndDtmaWxlKTsKJiM0MzsJCQllbHNlCiYjNDM7CQkJCXVubWFwX21hcHBpbmdfcmFuZ2UoaW5vZGUtJmd0O2lfbWFwcGluZywgMCwgMCwgMSk7CiAJCQlvZi0mZ3Q7bW1hcHBlZCA9IGZhbHNlOwogCQkJb24tJmd0O25yX21tYXBwZWQtLTsKIAkJfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oCmluZGV4IDQ4NWRmOWMyZGJkZGIzLi5lODgyYTAzZWFkZGRkOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAtMzE4Myw2ICYjNDM7MzE4Myw3IEBAIGV4dGVybiBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAkJCSAgICBib29sICp1bmxvY2tlZCk7CiB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCXBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgbnIsIGJvb2wgZXZlbl9jb3dzKTsKJiM0Mzt2b2lkIHVubWFwX21hcHBpbmdfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSk7CiB2b2lkIHVubWFwX21hcHBpbmdfcmFuZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCWxvZmZfdCBjb25zdCBob2xlYmVnaW4sIGxvZmZfdCBjb25zdCBob2xlbGVuLCBpbnQgZXZlbl9jb3dzKTsKICNlbHNlCkBAIC0zMjAzLDYgJiM0MzszMjA0LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAogfQogc3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCXBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgbnIsIGJvb2wgZXZlbl9jb3dzKSB7IH0KJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgdW5tYXBfbWFwcGluZ19maWxlKHN0cnVjdCBmaWxlICpmaWxlKSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCB1bm1hcF9tYXBwaW5nX3JhbmdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQlsb2ZmX3QgY29uc3QgaG9sZWJlZ2luLCBsb2ZmX3QgY29uc3QgaG9sZWxlbiwgaW50IGV2ZW5fY293cykgeyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKaW5kZXggZmYzMzhjMmFiZTkyMzEuLmY5Y2ZiODhhYzRmNzMwIDEwMDY0NAotLS0gYS9tbS9tZW1vcnkuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1vcnkuYwpAQCAtNDQyMyw2ICYjNDM7NDQyMywzMiBAQCB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHBnb2ZmX3Qgc3RhcnQsCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh1bm1hcF9tYXBwaW5nX3BhZ2VzKTsKIAomIzQzOy8qKgomIzQzOyAqIHVubWFwX21hcHBpbmdfZmlsZSgpIC0gVW5tYXAgYWxsIG1tYXBzIG9mIGFuIG9wZW4gZmlsZS4KJiM0MzsgKiBAZmlsZTogVGhlIGZpbGUgdG8gdW5tYXAuCiYjNDM7ICoKJiM0MzsgKiBVbm1hcCBldmVyeSBWTUEgd2l0aCB2bV9maWxlIHNldCB0byBAZmlsZSwgcmVnYXJkbGVzcyBvZiB0aGUgYWRkcmVzcwomIzQzOyAqIHNwYWNlIGl0IGlzIGF0dGFjaGVkIHRvLiAgVGhpcyBhbHNvIGNvdmVycyBmaWxlcyB3aXRoIGZfbWFwcGluZwomIzQzOyAqIHN3YXBwZWQgdG8gYSBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZSBhdCBvcGVuIHRpbWUsIHNpbmNlIHN1Y2ggVk1BcwomIzQzOyAqIGNhbm5vdCBiZSBmb3VuZCB0aHJvdWdoIHRoZSBmaWxlJiMzOTtzIG93biBpbm9kZSBtYXBwaW5nLgomIzQzOyAqLwomIzQzO3ZvaWQgdW5tYXBfbWFwcGluZ19maWxlKHN0cnVjdCBmaWxlICpmaWxlKQomIzQzO3sKJiM0MzsJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlLSZndDtmX21hcHBpbmc7CiYjNDM7CXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwomIzQzOwomIzQzOwlpX21tYXBfbG9ja19yZWFkKG1hcHBpbmcpOwomIzQzOwlpZiAodW5saWtlbHkobWFwcGluZ19tYXBwZWQobWFwcGluZykpKSB7CiYjNDM7CQl2bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoKHZtYSwgJmFtcDttYXBwaW5nLSZndDtpX21tYXAsIDAsIFVMT05HX01BWCkgewomIzQzOwkJCWlmICh2bWEtJmd0O3ZtX2ZpbGUgIT0gZmlsZSkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CQkJemFwX3ZtYSh2bWEpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CWlfbW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwodW5tYXBfbWFwcGluZ19maWxlKTsKJiM0MzsKIC8qKgogICogdW5tYXBfbWFwcGluZ19yYW5nZSAtIHVubWFwIHRoZSBwb3J0aW9uIG9mIGFsbCBtbWFwcyBpbiB0aGUgc3BlY2lmaWVkCiAgKiBhZGRyZXNzX3NwYWNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBieXRlIHJhbmdlIGluIHRoZSB1bmRlcmx5aW5nCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgTWVtb3J5IE1hcHBpbmcgSXNzdWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgYWltZWQgYXQgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgbWFwcGluZyBpc3N1ZSB3aXRoaW4gdGhlIGtlcm5lbC4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIGluIGBmcy9rZXJuZnMvZmlsZS5jYCBhbmQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYHVubWFwX21hcHBpbmdfZmlsZWAsIGluIGBtbS9tZW1vcnkuY2AuIFRoZSBjb3JlIHByb2JsZW0gdGhpcyBwYXRjaCB0YWNrbGVzIGlzIHRoYXQgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCwgd2hlbiBjbG9zaW5nIGZpbGVzLCB3YXNuJiMzOTt0IHByb3Blcmx5IHVubWFwcGluZyBmaWxlJiMzOTtzIG1lbW9yeSBtYXBwaW5ncyBpZiB0aGUgZmlsZSYjMzk7cyBgZl9tYXBwaW5nYCB3YXMgc3dhcHBlZCB0byBhIGRpZmZlcmVudCBhZGRyZXNzIHNwYWNlIGF0IG9wZW4gdGltZS4gQSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uLCBsaWtlbHkuCgpUaGUgcHJvcG9zZWQgc29sdXRpb24sIGB1bm1hcF9tYXBwaW5nX2ZpbGVgLCBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGl0IGl0ZXJhdGVzIHRocm91Z2ggdGhlIGB2bWFfaW50ZXJ2YWxfdHJlZWAgYXNzb2NpYXRlZCB3aXRoIGBmaWxlLSZndDtmX21hcHBpbmdgIGFuZCB6YXBzIGFueSBWTUFzIHdoZXJlIHRoZSBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgVk1BIG1hdGNoZXMgdGhlIGZpbGUgYmVpbmcgY2xvc2VkLiBNYWtlcyBzZW5zZS4gVGhpcyBzaG91bGQgY292ZXIgdGhlIGNhc2VzIHRoYXQgd2VyZSBtaXNzZWQgYnkgdGhlIG9yaWdpbmFsIGRyYWluIGZ1bmN0aW9uLgoKTm93LCBsZXQmIzM5O3MgYXNzZXNzIHRoZSByZWFjaCBvZiB0aGlzIGNvZGUuIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXMgcGFydCBvZiBrZXJuZnMsIHdoaWNoIGlzIGEgZnVuZGFtZW50YWwgY29tcG9uZW50IGZvciBib3RoIHN5c2ZzIGFuZCBjZ3JvdXBmcy4gVGhlc2UgYXJlICp1YmlxdWl0b3VzKiBpbiBMaW51eCwgc28gaXQmIzM5O3MgcHJhY3RpY2FsbHkgZ3VhcmFudGVlZCB0aGF0IGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXMgZnJlcXVlbnRseSBjYWxsZWQuIEkmIzM5O2QgYWRkIGJvdGggYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBhbmQgdGhlIG5ldyBgdW5tYXBfbWFwcGluZ19maWxlYCB0byBteSBGb2N1c1N5bWJvbHMuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cy4gYGZzL2tlcm5mcy9maWxlLmNgIGlzIGNvbXBpbGVkIGNvbmRpdGlvbmFsbHksIGRlcGVuZGluZyBvbiBgQ09ORklHX0tFUk5GU2AuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY29uZGl0aW9uYWwuIGBDT05GSUdfS0VSTkZTYCBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgc2VsZWN0aW5nIGBTWVNGU2Agb3IgYENHUk9VUFNgLCBzbyB3ZSBjYW4gZXhwZWN0IHRoZSBjb2RlIHRvIGJlIGNvbXBpbGVkLiBOb3csIHRoZSBgbW0vbWVtb3J5LmNgIGZpbGUgaXRzZWxmIGlzIGFsd2F5cyBjb21waWxlZCwgYnV0IGB1bm1hcF9tYXBwaW5nX2ZpbGVgIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgdW5kZXIgYENPTkZJR19NTVVgLCB3aGljaCBpcyBhbHNvIHR5cGljYWwuIEkgY2hlY2tlZCBgaW5jbHVkZS9saW51eC9tbS5oYCB0byBjb25maXJtIHRoZSBNTVUgZGVwZW5kZW5jeS4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHNlYXJjaCB0aGUgY29kZSBiYXNlIGZvciBvdGhlciB1c2FnZXMgb2YgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIGF3YXJlIG9mIHdoZXJlIGl0IGlzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2VybmZzX2RyYWluX29wZW5fZmlsZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMva2VybmZzL2Rpci5jPTUwOD1zdGF0aWMgdm9pZCBrZXJuZnNfZHJhaW4oc3RydWN0IGtlcm5mc19ub2RlICprbiwgYm9vbCBkcm9wX3N1cGVycylcbi0tXG5mcy9rZXJuZnMvZGlyLmMtNTQ1LVx0aWYgKGtlcm5mc19zaG91bGRfZHJhaW5fb3Blbl9maWxlcyhrbikpXG5mcy9rZXJuZnMvZGlyLmM6NTQ2Olx0XHRrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyhrbik7XG5mcy9rZXJuZnMvZGlyLmMtNTQ3LVxuLS1cbmZzL2tlcm5mcy9maWxlLmM9Nzg0PWJvb2wga2VybmZzX3Nob3VsZF9kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pXG4tLVxuZnMva2VybmZzL2ZpbGUuYy04MDMtXG5mcy9rZXJuZnMvZmlsZS5jOjgwNDp2b2lkIGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pXG5mcy9rZXJuZnMvZmlsZS5jLTgwNS17XG4tLVxuZnMva2VybmZzL2tlcm5mcy1pbnRlcm5hbC5oPTIwND1ib29sIGtlcm5mc19zaG91bGRfZHJhaW5fb3Blbl9maWxlcyhzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTtcbmZzL2tlcm5mcy9rZXJuZnMtaW50ZXJuYWwuaDoyMDU6dm9pZCBrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyhzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTtcbmZzL2tlcm5mcy9rZXJuZnMtaW50ZXJuYWwuaC0yMDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3NwoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmZzIERyYWluIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXMgY2FsbGVkIHNwZWNpZmljYWxseSBmcm9tIGBrZXJuZnNfZHJhaW5gLiBUaGF0IG1ha2VzIHNlbnNlLiBBbmQgYGtlcm5mc19kcmFpbmAgaXRzZWxmIGdldHMgdHJpZ2dlcmVkIHdoZW4gYSBrZXJuZnMgbm9kZSBpcyByZW1vdmVkIG9yIGRlYWN0aXZhdGVkLiBSaWdodCwgcmlnaHQuIENvbnNpZGVyaW5nIGhvdyBoZWF2aWx5IGBrZXJuZnNgIGlzIHVzZWQgaW4gYm90aCBzeXNmcyBhbmQgY2dyb3VwZnMsIHRoaXMgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgYW5kIHByb2JhYmx5IHByZXR0eSBpbXBvcnRhbnQgZm9yIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgY2xlYW5zIHVwIGNvcnJlY3RseSBkdXJpbmcgdGhvc2UgdW5tb3VudCBvcGVyYXRpb25zIG9yIHdoZW4gbm9kZXMgZ2V0IGRlbGV0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyByb2xlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyBvciBidWlsZCBvcHRpb25zIHJlbGF0ZWQgdG8ga2VybmZzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGhvdyBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIGJlaGF2ZXMuIEFueXRoaW5nIHRoYXQgY291bGQgYWZmZWN0IGl0cyBiZWhhdmlvciBiYXNlZCBvbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtFUk5GUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9rZXJuZnMvS2NvbmZpZy01LVxuZnMva2VybmZzL0tjb25maWc6Njpjb25maWcgS0VSTkZTXG5mcy9rZXJuZnMvS2NvbmZpZy03LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0OTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZnMgQ29uZmlndXJhdGlvbiBmb3IgUGF0Y2ggSW5jbHVzaW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gS0VSTkZTIGlzIGEgaGlkZGVuIGJvb2xlYW4sIGFjdGl2YXRlZCB0aHJvdWdoIFNZU0ZTIGFuZCBDR1JPVVBTIOKAkyBpdCYjMzk7cyBwcmFjdGljYWxseSBhbHdheXMgb24gaW4gYSBub3JtYWwgc2V0dXAsIHNvIGV4cGxpY2l0bHkgc3RhdGluZyBLRVJORlMgaXRzZWxmIGlzIHJlZHVuZGFudC4gU1lTRlMgYW5kIENHUk9VUFMgYXJlIGdlbmVyaWMsIGJ1dCBJJiMzOTtsbCBhZGQgdGhlbSBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBub3QgYXNzdW1lIGFueXRoaW5nLgoKTm93LCBsZXQmIzM5O3Mgc2VlIHdoYXQgdGhpcyBwYXRjaCBhY3R1YWxseSB0b3VjaGVzLiBJdCBtb2RpZmllcyBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIGFuZCBgdW5tYXBfbWFwcGluZ19maWxlYC4gQWgsIGB1bm1hcF9tYXBwaW5nX2ZpbGVgIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgd2l0aCBgQ09ORklHX01NVWAuIFRoYXQgbWFrZXMgc2Vuc2UuIEFsdGhvdWdoIGl0JiMzOTtzIHByZXR0eSB1YmlxdWl0b3VzLCBJJiMzOTtsbCBhZGQgYE1NVWAgdG8gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSYjMzk7cmUgY292ZXJpbmcgYWxsIGJhc2VzLiBJdCYjMzk7cyBiZXR0ZXIgdG8gYmUgZXhwbGljaXQsIGV2ZW4gaWYgaXQgc2VlbXMgb2J2aW91cy4KCkZpbmFsbHksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIG1lY2hhbmlzbSBpbiBLRVJORlMgd2hlcmUgYGZfbWFwcGluZ2AgZ2V0cyBzd2FwcGVkLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGZzL2tlcm5mcy9maWxlLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBrZXJuZnNfZm9wX21tYXBgLiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nIGluIHRoZXJlIG1pZ2h0IGJlIHRoZSBjdWxwcml0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZfbWFwcGluZy4qPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2tlcm5mcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMva2VybmZzL2ZpbGUuYz04MDQ9dm9pZCBrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyhzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKVxuLS1cbmZzL2tlcm5mcy9maWxlLmMtODIwLVx0XHRpZiAob2YtXHUwMDNlbW1hcHBlZCkge1xuZnMva2VybmZzL2ZpbGUuYzo4MjE6XHRcdFx0aWYgKG9mLVx1MDAzZWZpbGUtXHUwMDNlZl9tYXBwaW5nICE9IGlub2RlLVx1MDAzZWlfbWFwcGluZylcbmZzL2tlcm5mcy9maWxlLmMtODIyLVx0XHRcdFx0dW5tYXBfbWFwcGluZ19maWxlKG9mLVx1MDAzZWZpbGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDEKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgYSBTdXNwZWN0IFZhcmlhYmxlIEFzc2lnbm1lbnQqKgoKT2theSwgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIGFzc2lnbm1lbnQgb2YgYGZfbWFwcGluZ2AuIFNvbWV0aGluZyBmZWVscyBvZmYsIGFuZCBJIGNhbiYjMzk7dCBpbW1lZGlhdGVseSByZWNhbGwgd2hlcmUgdGhlIHN3YXAgaGFwcGVucy4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSB3aXRoaW4gdGhlIHJlYWxtIG9mIGVpdGhlciBgc3lzZnNgIG9yIGBjZ3JvdXBgIOKAkyB0aG9zZSBhcmUgb2Z0ZW4gdGhlIGN1bHByaXRzIHdoZW4gSSBzZWUgdGhpcyBraW5kIG9mIGJlaGF2aW91ci4gVGltZSB0byBiZSBtZXRob2RpY2FsLiBJIG5lZWQgdG8gYmUgc3VyZS4gSSYjMzk7bSBnb2luZyB0byBsYXVuY2ggYSBmdWxsLXNjYWxlIHNlYXJjaCBhY3Jvc3MgdGhlIGVudGlyZSBjb2RlYmFzZS4gTGV0JiMzOTtzIGxvb2sgZm9yIGV2ZXJ5IGluc3RhbmNlIG9mIGBmX21hcHBpbmcgPWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGl0cyBhc3NpZ25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmX21hcHBpbmcgPSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9iZGV2LmM9OTI5PWludCBiZGV2X29wZW4oc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLCB2b2lkICpob2xkZXIsXG4tLVxuYmxvY2svYmRldi5jLTk5MS1cdFx0YmRldl9maWxlLVx1MDAzZWZfbW9kZSB8PSBGTU9ERV9XUklURV9SRVNUUklDVEVEO1xuYmxvY2svYmRldi5jOjk5MjpcdGJkZXZfZmlsZS1cdTAwM2VmX21hcHBpbmcgPSBiZGV2LVx1MDAzZWJkX21hcHBpbmc7XG5ibG9jay9iZGV2LmMtOTkzLVx0YmRldl9maWxlLVx1MDAzZWZfd2JfZXJyID0gZmlsZW1hcF9zYW1wbGVfd2JfZXJyKGJkZXZfZmlsZS1cdTAwM2VmX21hcHBpbmcpO1xuLS1cbmRyaXZlcnMvYWNjZWwvZHJtX2FjY2VsLmM9MTE3PWludCBhY2NlbF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmRyaXZlcnMvYWNjZWwvZHJtX2FjY2VsLmMtMTMxLVx0Lyogc2hhcmUgYWRkcmVzc19zcGFjZSBhY3Jvc3MgYWxsIGNoYXItZGV2cyBvZiBhIHNpbmdsZSBkZXZpY2UgKi9cbmRyaXZlcnMvYWNjZWwvZHJtX2FjY2VsLmM6MTMyOlx0ZmlscC1cdTAwM2VmX21hcHBpbmcgPSBkZXYtXHUwMDNlYW5vbl9pbm9kZS1cdTAwM2VpX21hcHBpbmc7XG5kcml2ZXJzL2FjY2VsL2RybV9hY2NlbC5jLTEzMy1cbi0tXG5kcml2ZXJzL2NoYXIvbWVtLmM9NjAzPXN0YXRpYyBpbnQgb3Blbl9wb3J0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmRyaXZlcnMvY2hhci9tZW0uYy02MjEtXHQgKi9cbmRyaXZlcnMvY2hhci9tZW0uYzo2MjI6XHRmaWxwLVx1MDAzZWZfbWFwcGluZyA9IGlvbWVtX2dldF9tYXBwaW5nKCk7XG5kcml2ZXJzL2NoYXIvbWVtLmMtNjIzLVxuLS1cbmRyaXZlcnMvZGF4L2RldmljZS5jPTMzMz1zdGF0aWMgaW50IGRheF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmRyaXZlcnMvZGF4L2RldmljZS5jLTM0Mi1cdGlub2RlLVx1MDAzZWlfbWFwcGluZy1cdTAwM2VhX29wcyA9IFx1MDAyNmRldl9kYXhfYW9wcztcbmRyaXZlcnMvZGF4L2RldmljZS5jOjM0MzpcdGZpbHAtXHUwMDNlZl9tYXBwaW5nID0gaW5vZGUtXHUwMDNlaV9tYXBwaW5nO1xuZHJpdmVycy9kYXgvZGV2aWNlLmMtMzQ0LVx0ZmlscC1cdTAwM2VmX3diX2VyciA9IGZpbGVtYXBfc2FtcGxlX3diX2VycihmaWxwLVx1MDAzZWZfbWFwcGluZyk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM9MzY5PWludCBkcm1fb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0zODUtXHQvKiBzaGFyZSBhZGRyZXNzX3NwYWNlIGFjcm9zcyBhbGwgY2hhci1kZXZzIG9mIGEgc2luZ2xlIGRldmljZSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM6Mzg2Olx0ZmlscC1cdTAwM2VmX21hcHBpbmcgPSBkZXYtXHUwMDNlYW5vbl9pbm9kZS1cdTAwM2VpX21hcHBpbmc7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0zODctXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM9MTA1Nz1zdHJ1Y3QgZmlsZSAqbW9ja19kcm1fZ2V0ZmlsZShzdHJ1Y3QgZHJtX21pbm9yICptaW5vciwgdW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTEwNzMtXHQvKiBFdmVyeW9uZSBzaGFyZXMgYSBzaW5nbGUgZ2xvYmFsIGFkZHJlc3Mgc3BhY2UgKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jOjEwNzQ6XHRmaWxlLVx1MDAzZWZfbWFwcGluZyA9IGRldi1cdTAwM2Vhbm9uX2lub2RlLVx1MDAzZWlfbWFwcGluZztcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTEwNzUtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jPTIzOT1zdHJ1Y3QgZG1hX2J1ZiAqZHJtX2dlbV9kbWFidWZfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jLTI1MC1cdGRybV9nZW1fb2JqZWN0X2dldChvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jOjI1MTpcdGRtYV9idWYtXHUwMDNlZmlsZS1cdTAwM2VmX21hcHBpbmcgPSBvYmotXHUwMDNlZGV2LVx1MDAzZWFub25faW5vZGUtXHUwMDNlaV9tYXBwaW5nO1xuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jLTI1Mi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jPTk2OD1zdGF0aWMgc3RydWN0IGZpbGUgKm1tYXBfc2luZ2xldG9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtOTgwLVx0LyogRXZlcnlvbmUgc2hhcmVzIGEgc2luZ2xlIGdsb2JhbCBhZGRyZXNzIHNwYWNlICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjk4MTpcdGZpbGUtXHUwMDNlZl9tYXBwaW5nID0gaTkxNS1cdTAwM2Vkcm0uYW5vbl9pbm9kZS1cdTAwM2VpX21hcHBpbmc7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jLTk4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L21haW4uYz0xODk3PXN0YXRpYyBpbnQgbWFwX2JmX2FyZWEoc3RydWN0IG1seDRfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tYWluLmMtMTkxMC1cdFx0XHQoZGV2LVx1MDAzZWNhcHMubnVtX3VhcnMgXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tYWluLmM6MTkxMTpcdHByaXYtXHUwMDNlYmZfbWFwcGluZyA9IGlvX21hcHBpbmdfY3JlYXRlX3djKGJmX3N0YXJ0LCBiZl9sZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tYWluLmMtMTkxMi1cdGlmICghcHJpdi1cdTAwM2ViZl9tYXBwaW5nKVxuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEwMTc9c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlIHBjaV9sZWdhY3lfaW9fYXR0ciA9IHtcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMDIzLVx0Lmxsc2VlayA9IHBjaV9sbHNlZWtfcmVzb3VyY2VfbGVnYWN5LFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTAyNDpcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwMjUtfTtcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMDI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBwY2lfbGVnYWN5X2lvX3NwYXJzZV9hdHRyID0ge1xuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwMzMtXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZV9sZWdhY3ksXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYzoxMDM0Olx0LmZfbWFwcGluZyA9IGlvbWVtX2dldF9tYXBwaW5nLFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTAzNS19O1xuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEwMzc9c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlIHBjaV9sZWdhY3lfbWVtX2F0dHIgPSB7XG4tLVxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTA0MS1cdC5sbHNlZWsgPSBwY2lfbGxzZWVrX3Jlc291cmNlX2xlZ2FjeSxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEwNDI6XHQuZl9tYXBwaW5nID0gaW9tZW1fZ2V0X21hcHBpbmcsXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMDQzLX07XG4tLVxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTA0NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGNpX2xlZ2FjeV9tZW1fc3BhcnNlX2F0dHIgPSB7XG4tLVxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTA0OS1cdC5sbHNlZWsgPSBwY2lfbGxzZWVrX3Jlc291cmNlX2xlZ2FjeSxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEwNTA6XHQuZl9tYXBwaW5nID0gaW9tZW1fZ2V0X21hcHBpbmcsXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMDUxLX07XG4tLVxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTIyND1zdGF0aWMgbG9mZl90IHBjaV9sbHNlZWtfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZpbGVwLFxuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNDItIyBkZWZpbmUgX19QQ0lfUkVTT1VSQ0VfSU9fTU1BUF9BVFRSU1x0XHRcXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTI0MzpcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcdFx0XFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNDQtXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZSxcdFx0XFxcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMjYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBkZXZfcmVzb3VyY2UjI19iYXIjI191Y19hdHRyID0ge1x0XFxcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjYyLVx0LnByaXZhdGUgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKShfYmFyKSxcdFx0XHRcXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTI2MzpcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcdFx0XHRcdFx0XFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNjQtXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZSxcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMjY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBkZXZfcmVzb3VyY2UjI19iYXIjI193Y19hdHRyID0ge1x0ICAgICAgXFxcbi0tXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjcxLVx0LnByaXZhdGUgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKShfYmFyKSxcdFx0XHQgICAgICBcXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTI3MjpcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcdFx0XHRcdFx0ICAgICAgXFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNzMtXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZSxcdFx0XHRcdFx0ICAgICAgXFxcbi0tXG5kcml2ZXJzL3BjaS9wcm9jLmM9Mjk5PXN0YXRpYyBpbnQgcHJvY19idXNfcGNpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZHJpdmVycy9wY2kvcHJvYy5jLTMwOS1cdGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhID0gZnByaXY7XG5kcml2ZXJzL3BjaS9wcm9jLmM6MzEwOlx0ZmlsZS1cdTAwM2VmX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZygpO1xuZHJpdmVycy9wY2kvcHJvYy5jLTMxMS1cbi0tXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYz0yMz1pbnQgdmZpb19kZXZpY2VfZm9wc19jZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGVwKVxuLS1cbmRyaXZlcnMvdmZpby9kZXZpY2VfY2Rldi5jLTQ2LVx0ICovXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYzo0NzpcdGZpbGVwLVx1MDAzZWZfbWFwcGluZyA9IGRldmljZS1cdTAwM2Vpbm9kZS1cdTAwM2VpX21hcHBpbmc7XG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy00OC1cbi0tXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYz0yNTU9c3RhdGljIHN0cnVjdCBmaWxlICp2ZmlvX2RldmljZV9vcGVuX2ZpbGUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UpXG4tLVxuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjgzLVx0ICovXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYzoyODQ6XHRmaWxlcC1cdTAwM2VmX21hcHBpbmcgPSBkZXZpY2UtXHUwMDNlaW5vZGUtXHUwMDNlaV9tYXBwaW5nO1xuZHJpdmVycy92ZmlvL2dyb3VwLmMtMjg1LVxuLS1cbmZzL2Fub25faW5vZGVzLmM9MTMyPXN0YXRpYyBzdHJ1Y3QgZmlsZSAqX19hbm9uX2lub2RlX2dldGZpbGUoY29uc3QgY2hhciAqbmFtZSxcbi0tXG5mcy9hbm9uX2lub2Rlcy5jLTE2OC1cbmZzL2Fub25faW5vZGVzLmM6MTY5Olx0ZmlsZS1cdTAwM2VmX21hcHBpbmcgPSBpbm9kZS1cdTAwM2VpX21hcHBpbmc7XG5mcy9hbm9uX2lub2Rlcy5jLTE3MC1cbi0tXG5mcy9jb2RhL2ZpbGUuYz0xNTE9Y29kYV9maWxlX21tYXAoc3RydWN0IGZpbGUgKmNvZGFfZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZnMvY29kYS9maWxlLmMtMTgzLVx0c3Bpbl9sb2NrKFx1MDAyNmNpaS1cdTAwM2VjX2xvY2spO1xuZnMvY29kYS9maWxlLmM6MTg0Olx0Y29kYV9maWxlLVx1MDAzZWZfbWFwcGluZyA9IGhvc3RfZmlsZS1cdTAwM2VmX21hcHBpbmc7XG5mcy9jb2RhL2ZpbGUuYy0xODUtXHRpZiAoY29kYV9pbm9kZS1cdTAwM2VpX21hcHBpbmcgPT0gXHUwMDI2Y29kYV9pbm9kZS1cdTAwM2VpX2RhdGEpXG4tLVxuZnMvZXJvZnMvaXNoYXJlLmM9OTA9c3RhdGljIGludCBlcm9mc19pc2hhcmVfZmlsZV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2Vyb2ZzL2lzaGFyZS5jLTEwMy1cdHJlYWxmaWxlLVx1MDAzZWZfaW5vZGUgPSBzaGFyZWRpbm9kZTtcbmZzL2Vyb2ZzL2lzaGFyZS5jOjEwNDpcdHJlYWxmaWxlLVx1MDAzZWZfbWFwcGluZyA9IHNoYXJlZGlub2RlLVx1MDAzZWlfbWFwcGluZztcbmZzL2Vyb2ZzL2lzaGFyZS5jLTEwNS1cdHBhdGhfZ2V0KFx1MDAyNmZpbGUtXHUwMDNlZl9wYXRoKTtcbi0tXG5mcy9maWxlX3RhYmxlLmM9MzYxPXN0YXRpYyB2b2lkIGZpbGVfaW5pdF9wYXRoKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCxcbi0tXG5mcy9maWxlX3RhYmxlLmMtMzY1LVx0ZmlsZS1cdTAwM2VmX2lub2RlID0gcGF0aC1cdTAwM2VkZW50cnktXHUwMDNlZF9pbm9kZTtcbmZzL2ZpbGVfdGFibGUuYzozNjY6XHRmaWxlLVx1MDAzZWZfbWFwcGluZyA9IHBhdGgtXHUwMDNlZGVudHJ5LVx1MDAzZWRfaW5vZGUtXHUwMDNlaV9tYXBwaW5nO1xuZnMvZmlsZV90YWJsZS5jLTM2Ny1cdGZpbGUtXHUwMDNlZl93Yl9lcnIgPSBmaWxlbWFwX3NhbXBsZV93Yl9lcnIoZmlsZS1cdTAwM2VmX21hcHBpbmcpO1xuLS1cbmZzL2ZpbGVfdGFibGUuYz00NzE9c3RydWN0IGZpbGUgKmFsbG9jX2ZpbGVfY2xvbmUoc3RydWN0IGZpbGUgKmJhc2UsIGludCBmbGFncyxcbi0tXG5mcy9maWxlX3RhYmxlLmMtNDc4LVx0XHRwYXRoX2dldChcdTAwMjZmLVx1MDAzZWZfcGF0aCk7XG5mcy9maWxlX3RhYmxlLmM6NDc5Olx0XHRmLVx1MDAzZWZfbWFwcGluZyA9IGJhc2UtXHUwMDNlZl9tYXBwaW5nO1xuZnMvZmlsZV90YWJsZS5jLTQ4MC1cdH1cbi0tXG5mcy9vcGVuLmM9ODg1PXN0YXRpYyBpbnQgZG9fZGVudHJ5X29wZW4oc3RydWN0IGZpbGUgKmYsXG4tLVxuZnMvb3Blbi5jLTg5My1cdGYtXHUwMDNlZl9pbm9kZSA9IGlub2RlO1xuZnMvb3Blbi5jOjg5NDpcdGYtXHUwMDNlZl9tYXBwaW5nID0gaW5vZGUtXHUwMDNlaV9tYXBwaW5nO1xuZnMvb3Blbi5jLTg5NS1cdGYtXHUwMDNlZl93Yl9lcnIgPSBmaWxlbWFwX3NhbXBsZV93Yl9lcnIoZi1cdTAwM2VmX21hcHBpbmcpO1xuLS1cbmZzL3N5c2ZzL2ZpbGUuYz0xOTE9c3RhdGljIGludCBzeXNmc19rZl9iaW5fb3BlbihzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YpXG4tLVxuZnMvc3lzZnMvZmlsZS5jLTE5NS1cdGlmIChiYXR0ci1cdTAwM2VmX21hcHBpbmcpXG5mcy9zeXNmcy9maWxlLmM6MTk2Olx0XHRvZi1cdTAwM2VmaWxlLVx1MDAzZWZfbWFwcGluZyA9IGJhdHRyLVx1MDAzZWZfbWFwcGluZygpO1xuZnMvc3lzZnMvZmlsZS5jLTE5Ny1cbi0tXG5tbS9zd2FwZmlsZS5jPTMwNjM9U1lTQ0FMTF9ERUZJTkUxKHN3YXBvZmYsIGNvbnN0IGNoYXIgX191c2VyICosIHNwZWNpYWxmaWxlKVxuLS1cbm1tL3N3YXBmaWxlLmMtMzA4Ni1cdFx0aWYgKHAtXHUwMDNlZmxhZ3MgXHUwMDI2IFNXUF9XUklURU9LKSB7XG5tbS9zd2FwZmlsZS5jOjMwODc6XHRcdFx0aWYgKHAtXHUwMDNlc3dhcF9maWxlLVx1MDAzZWZfbWFwcGluZyA9PSBtYXBwaW5nKSB7XG5tbS9zd2FwZmlsZS5jLTMwODgtXHRcdFx0XHRmb3VuZCA9IDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2ODYKCQkJCQkJCW91dHB1dDogMTU1CgkJCQkJCQl0aG91Z2h0czogNzAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHN5c2ZzIEZpbGUgTWFwcGluZyBhbmQgVW5tYXBwaW5nKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgaW1tZWRpYXRlbHkganVtcHMgb3V0IGF0IG1lOiBgZnMvc3lzZnMvZmlsZS5jOjE5NmAgaXMgd2hlcmUgdGhlIGBmX21hcHBpbmdgIHN3YXAgaGFwcGVucyBpbiBzeXNmcywgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgYHN5c2ZzX2tmX2Jpbl9vcGVuYCBjYWxsLiBUaGF0IGNhbGxzIGBiYXR0ci0mZ3Q7Zl9tYXBwaW5nKClgLiBBbmQgbG9va2luZyBhdCB0aGUgY29kZSwgcGFydGljdWxhcmx5IHdpdGggYHBjaV9zeXNmc2AsIHdlJiMzOTtyZSB1c2luZyBgaW9tZW1fZ2V0X21hcHBpbmdgIGZvciBgZl9tYXBwaW5nYC4gVGhpcyBkaXJlY3RseSBhZmZlY3RzIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcy4KClRoaXMgbWVhbnMgdGhhdCB3aGVuIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgZ2V0cyBjYWxsZWQgb24gdGhpcyB0eXBlIG9mIGZpbGUsIGl0IHNob3VsZCBub3cgY29ycmVjdGx5IHVubWFwIGV2ZXJ5dGhpbmcuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGBmcy9zeXNmcy9maWxlLmNgLiBZZXAsIGBDT05GSUdfU1lTRlNgIGlzIHRoZSByZWxldmFudCBjb25maWcuIFNpbmNlIFBDSSBpcyB1c2VkIHZpYSB0aGUgbmV3IG1hcHBpbmcgZnVuY3Rpb24sIGFuZCB0aGVyZSBpcyBtZW1vcnkgdW5tYXBwaW5nIGludm9sdmVkLCB3ZSBhbHNvIHNob3VsZCBhZGQgYFBDSWAgYW5kIGBNTVVgIHRvIHRoZSBsaXN0LgoKVGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgYW5kIGB1bm1hcF9tYXBwaW5nX2ZpbGVgLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgYHVubWFwX21hcHBpbmdfZmlsZWAgaW4gYG1tL21lbW9yeS5jYC4gWWVwLCBpdCYjMzk7cyBpdGVyYXRpbmcgdGhyb3VnaCBgdm1hX2ludGVydmFsX3RyZWVfZm9yZWFjaGAsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJiMzOTt2ZSBnb3Qgc29tZXRoaW5nIHRoYXQmIzM5O3MgcmlwZSBmb3IgZnV6emluZy4KCkdpdmVuIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gc2V0OgoKKiAgIGBXb3J0aEZ1enppbmdgOiBgdHJ1ZWAKKiAgIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7a2VybmZzX2RyYWluX29wZW5fZmlsZXMmIzM0OywgJiMzNDt1bm1hcF9tYXBwaW5nX2ZpbGUmIzM0O11gCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbJiMzNDtTWVNGUyYjMzQ7LCAmIzM0O1BDSSYjMzQ7LCAmIzM0O01NVSYjMzQ7XWAKKiAgIGBSZWFzb25pbmdgOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyB0byBwcm9wZXJseSB1bm1hcCBmaWxlcyB3aG9zZSBmX21hcHBpbmcgd2FzIHN3YXBwZWQgYXQgb3BlbiB0aW1lIChlLmcuLCBQQ0kgc3lzZnMgYmluYXJ5IGF0dHJpYnV0ZXMpLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIHVubWFwX21hcHBpbmdfZmlsZSBpbiBtbS9tZW1vcnkuYyB0byBhY2hpZXZlIHRoaXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwvc3lzZnMgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgZmlsZSB1bm1hcHBpbmcuJiMzNDsKCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhhdCBgdW5tYXBfbWFwcGluZ19maWxlYCBpcyBleHBvcnRlZC4gT2theSwgZ29vZCwgaXQgaXMuIGBFWFBPUlRfU1lNQk9MX0dQTCh1bm1hcF9tYXBwaW5nX2ZpbGUpYC4KCmBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXNuJiMzOTt0IGV4cG9ydGVkLCBidXQgdGhhdCYjMzk7cyBub3QgYSBjb25jZXJuIGFzIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBrZXJuZnNfZHJhaW5gLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBga2VybmZzX3JlbW92ZWAgYW5kIG90aGVycy4KCk9rYXksIGJhY2sgdG8gYGZzL3N5c2ZzL2ZpbGUuY2AuIGBzeXNmc19rZl9iaW5fb3BlbmAgaXMgY2FsbGVkIHdoZW4gYSBzeXNmcyBiaW5hcnkgZmlsZSBpcyBvcGVuZWQuIEl0IHNldHMgYG9mLSZndDttbWFwcGVkYCB3aGVuIGl0JiMzOTtzIG1tYXBwZWQuIFRoZW4gd2hlbiB0aGUgZmlsZSBpcyByZW1vdmVkLCBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIHdpbGwgYmUgY2FsbGVkLgoKVGhpcyBzZWVtcyBsaWtlIGEgc29saWQsIHdlbGwtZGVmaW5lZCBjaGFuZ2UuIEkmIzM5O20gc2F0aXNmaWVkIHdpdGggdGhpcyBhbmFseXNpcy4gTGV0JiMzOTtzIGNhbGwgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTWVNGUyYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7TU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2VybmZzX2RyYWluX29wZW5fZmlsZXMmIzM0OywKICAgICYjMzQ7dW5tYXBfbWFwcGluZ19maWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIGtlcm5mcyB3aGVyZSBmaWxlcyB3aXRoIHN3YXBwZWQgZl9tYXBwaW5nIChsaWtlIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcykgd2VyZSBub3QgcHJvcGVybHkgdW5tYXBwZWQgZHVyaW5nIGRyYWluaW5nLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgbW0gZnVuY3Rpb24gYHVubWFwX21hcHBpbmdfZmlsZWAgYW5kIG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaGFuZGxlcyBtZW1vcnkgbWFwcGluZyBhbmQgZmlsZSBsaWZlY3ljbGUsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NZU0ZTJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtNTVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyYjMzQ7LAogICAgJiMzNDt1bm1hcF9tYXBwaW5nX2ZpbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW4ga2VybmZzIHdoZXJlIGZpbGVzIHdpdGggc3dhcHBlZCBmX21hcHBpbmcgKGxpa2UgUENJIHN5c2ZzIGJpbmFyeSBhdHRyaWJ1dGVzKSB3ZXJlIG5vdCBwcm9wZXJseSB1bm1hcHBlZCBkdXJpbmcgZHJhaW5pbmcuIEl0IGludHJvZHVjZXMgYSBuZXcgY29yZSBtbSBmdW5jdGlvbiBgdW5tYXBfbWFwcGluZ19maWxlYCBhbmQgbW9kaWZpZXMgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBoYW5kbGVzIG1lbW9yeSBtYXBwaW5nIGFuZCBmaWxlIGxpZmVjeWNsZSwgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyB0byBjYXRjaCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IG1hbmFnZW1lbnQgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE4OjUyLjQ0MDM2MDAwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzkxNTUzNzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNZU0ZTXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIk1NVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzXCIsXG4gICAgXCJ1bm1hcF9tYXBwaW5nX2ZpbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbiBrZXJuZnMgd2hlcmUgZmlsZXMgd2l0aCBzd2FwcGVkIGZfbWFwcGluZyAobGlrZSBQQ0kgc3lzZnMgYmluYXJ5IGF0dHJpYnV0ZXMpIHdlcmUgbm90IHByb3Blcmx5IHVubWFwcGVkIGR1cmluZyBkcmFpbmluZy4gSXQgaW50cm9kdWNlcyBhIG5ldyBjb3JlIG1tIGZ1bmN0aW9uIGB1bm1hcF9tYXBwaW5nX2ZpbGVgIGFuZCBtb2RpZmllcyBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGhhbmRsZXMgbWVtb3J5IG1hcHBpbmcgYW5kIGZpbGUgbGlmZWN5Y2xlLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nIHRvIGNhdGNoIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbWFuYWdlbWVudCBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNDoxODo1Mi40NDAzNjYxMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMTY4MDIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM4M2Q4NTJmN2Y1NDMzOTYzN2Q3ZGUzYWU4YTRiMDdiOGM3NTM0ZDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTQ6MTg6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMva2VybmZzL2ZpbGUuYyBiL2ZzL2tlcm5mcy9maWxlLmNcXG5pbmRleCA4ZTBlOTBjOTMzNzIwYi4uOGQxZTRhY2M2NzE2MjEgMTAwNjQ0XFxuLS0tIGEvZnMva2VybmZzL2ZpbGUuY1xcbisrKyBiL2ZzL2tlcm5mcy9maWxlLmNcXG5AQCAtODE4LDcgKzgxOCwxMCBAQCB2b2lkIGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pXFxuIFxcdFxcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKG9mLVxcdTAwM2VmaWxlKTtcXG4gXFxuIFxcdFxcdGlmIChvZi1cXHUwMDNlbW1hcHBlZCkge1xcbi1cXHRcXHRcXHR1bm1hcF9tYXBwaW5nX3JhbmdlKGlub2RlLVxcdTAwM2VpX21hcHBpbmcsIDAsIDAsIDEpO1xcbitcXHRcXHRcXHRpZiAob2YtXFx1MDAzZWZpbGUtXFx1MDAzZWZfbWFwcGluZyAhPSBpbm9kZS1cXHUwMDNlaV9tYXBwaW5nKVxcbitcXHRcXHRcXHRcXHR1bm1hcF9tYXBwaW5nX2ZpbGUob2YtXFx1MDAzZWZpbGUpO1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdHVubWFwX21hcHBpbmdfcmFuZ2UoaW5vZGUtXFx1MDAzZWlfbWFwcGluZywgMCwgMCwgMSk7XFxuIFxcdFxcdFxcdG9mLVxcdTAwM2VtbWFwcGVkID0gZmFsc2U7XFxuIFxcdFxcdFxcdG9uLVxcdTAwM2Vucl9tbWFwcGVkLS07XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXFxuaW5kZXggNDg1ZGY5YzJkYmRkYjMuLmU4ODJhMDNlYWRkZGQ5IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbW0uaFxcbkBAIC0zMTgzLDYgKzMxODMsNyBAQCBleHRlcm4gaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuIFxcdFxcdFxcdCAgICBib29sICp1bmxvY2tlZCk7XFxuIHZvaWQgdW5tYXBfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4gXFx0XFx0cGdvZmZfdCBzdGFydCwgcGdvZmZfdCBuciwgYm9vbCBldmVuX2Nvd3MpO1xcbit2b2lkIHVubWFwX21hcHBpbmdfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSk7XFxuIHZvaWQgdW5tYXBfbWFwcGluZ19yYW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4gXFx0XFx0bG9mZl90IGNvbnN0IGhvbGViZWdpbiwgbG9mZl90IGNvbnN0IGhvbGVsZW4sIGludCBldmVuX2Nvd3MpO1xcbiAjZWxzZVxcbkBAIC0zMjAzLDYgKzMyMDQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsXFxuIH1cXG4gc3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuIFxcdFxcdHBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgbnIsIGJvb2wgZXZlbl9jb3dzKSB7IH1cXG4rc3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSkgeyB9XFxuIHN0YXRpYyBpbmxpbmUgdm9pZCB1bm1hcF9tYXBwaW5nX3JhbmdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbiBcXHRcXHRsb2ZmX3QgY29uc3QgaG9sZWJlZ2luLCBsb2ZmX3QgY29uc3QgaG9sZWxlbiwgaW50IGV2ZW5fY293cykgeyB9XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jXFxuaW5kZXggZmYzMzhjMmFiZTkyMzEuLmY5Y2ZiODhhYzRmNzMwIDEwMDY0NFxcbi0tLSBhL21tL21lbW9yeS5jXFxuKysrIGIvbW0vbWVtb3J5LmNcXG5AQCAtNDQyMyw2ICs0NDIzLDMyIEBAIHZvaWQgdW5tYXBfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgcGdvZmZfdCBzdGFydCxcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh1bm1hcF9tYXBwaW5nX3BhZ2VzKTtcXG4gXFxuKy8qKlxcbisgKiB1bm1hcF9tYXBwaW5nX2ZpbGUoKSAtIFVubWFwIGFsbCBtbWFwcyBvZiBhbiBvcGVuIGZpbGUuXFxuKyAqIEBmaWxlOiBUaGUgZmlsZSB0byB1bm1hcC5cXG4rICpcXG4rICogVW5tYXAgZXZlcnkgVk1BIHdpdGggdm1fZmlsZSBzZXQgdG8gQGZpbGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFkZHJlc3NcXG4rICogc3BhY2UgaXQgaXMgYXR0YWNoZWQgdG8uICBUaGlzIGFsc28gY292ZXJzIGZpbGVzIHdpdGggZl9tYXBwaW5nXFxuKyAqIHN3YXBwZWQgdG8gYSBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZSBhdCBvcGVuIHRpbWUsIHNpbmNlIHN1Y2ggVk1Bc1xcbisgKiBjYW5ub3QgYmUgZm91bmQgdGhyb3VnaCB0aGUgZmlsZSdzIG93biBpbm9kZSBtYXBwaW5nLlxcbisgKi9cXG4rdm9pZCB1bm1hcF9tYXBwaW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXFxuK3tcXG4rXFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlLVxcdTAwM2VmX21hcHBpbmc7XFxuK1xcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xcbitcXG4rXFx0aV9tbWFwX2xvY2tfcmVhZChtYXBwaW5nKTtcXG4rXFx0aWYgKHVubGlrZWx5KG1hcHBpbmdfbWFwcGVkKG1hcHBpbmcpKSkge1xcbitcXHRcXHR2bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoKHZtYSwgXFx1MDAyNm1hcHBpbmctXFx1MDAzZWlfbW1hcCwgMCwgVUxPTkdfTUFYKSB7XFxuK1xcdFxcdFxcdGlmICh2bWEtXFx1MDAzZXZtX2ZpbGUgIT0gZmlsZSlcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdFxcdHphcF92bWEodm1hKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcdGlfbW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTCh1bm1hcF9tYXBwaW5nX2ZpbGUpO1xcbitcXG4gLyoqXFxuICAqIHVubWFwX21hcHBpbmdfcmFuZ2UgLSB1bm1hcCB0aGUgcG9ydGlvbiBvZiBhbGwgbW1hcHMgaW4gdGhlIHNwZWNpZmllZFxcbiAgKiBhZGRyZXNzX3NwYWNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBieXRlIHJhbmdlIGluIHRoZSB1bmRlcmx5aW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE4OjUzLjE0MjY4MTg1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDMwODkyMTgxNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1lTRlNcIixcbiAgICBcIlBDSVwiLFxuICAgIFwiTU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2VybmZzX2RyYWluX29wZW5fZmlsZXNcIixcbiAgICBcInVubWFwX21hcHBpbmdfZmlsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIGtlcm5mcyB3aGVyZSBmaWxlcyB3aXRoIHN3YXBwZWQgZl9tYXBwaW5nIChsaWtlIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcykgd2VyZSBub3QgcHJvcGVybHkgdW5tYXBwZWQgZHVyaW5nIGRyYWluaW5nLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgbW0gZnVuY3Rpb24gYHVubWFwX21hcHBpbmdfZmlsZWAgYW5kIG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaGFuZGxlcyBtZW1vcnkgbWFwcGluZyBhbmQgZmlsZSBsaWZlY3ljbGUsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzgzZDg1MmY3ZjU0MzM5NjM3ZDdkZTNhZThhNGIwN2I4Yzc1MzRkMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDE0OjE4OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMva2VybmZzL2ZpbGUuYyBiL2ZzL2tlcm5mcy9maWxlLmNcbmluZGV4IDhlMGU5MGM5MzM3MjBiLi44ZDFlNGFjYzY3MTYyMSAxMDA2NDRcbi0tLSBhL2ZzL2tlcm5mcy9maWxlLmNcbisrKyBiL2ZzL2tlcm5mcy9maWxlLmNcbkBAIC04MTgsNyArODE4LDEwIEBAIHZvaWQga2VybmZzX2RyYWluX29wZW5fZmlsZXMoc3RydWN0IGtlcm5mc19ub2RlICprbilcbiBcdFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUob2YtXHUwMDNlZmlsZSk7XG4gXG4gXHRcdGlmIChvZi1cdTAwM2VtbWFwcGVkKSB7XG4tXHRcdFx0dW5tYXBfbWFwcGluZ19yYW5nZShpbm9kZS1cdTAwM2VpX21hcHBpbmcsIDAsIDAsIDEpO1xuK1x0XHRcdGlmIChvZi1cdTAwM2VmaWxlLVx1MDAzZWZfbWFwcGluZyAhPSBpbm9kZS1cdTAwM2VpX21hcHBpbmcpXG4rXHRcdFx0XHR1bm1hcF9tYXBwaW5nX2ZpbGUob2YtXHUwMDNlZmlsZSk7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0dW5tYXBfbWFwcGluZ19yYW5nZShpbm9kZS1cdTAwM2VpX21hcHBpbmcsIDAsIDAsIDEpO1xuIFx0XHRcdG9mLVx1MDAzZW1tYXBwZWQgPSBmYWxzZTtcbiBcdFx0XHRvbi1cdTAwM2Vucl9tbWFwcGVkLS07XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmhcbmluZGV4IDQ4NWRmOWMyZGJkZGIzLi5lODgyYTAzZWFkZGRkOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxuKysrIGIvaW5jbHVkZS9saW51eC9tbS5oXG5AQCAtMzE4Myw2ICszMTgzLDcgQEAgZXh0ZXJuIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHRcdCAgICBib29sICp1bmxvY2tlZCk7XG4gdm9pZCB1bm1hcF9tYXBwaW5nX3BhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuIFx0XHRwZ29mZl90IHN0YXJ0LCBwZ29mZl90IG5yLCBib29sIGV2ZW5fY293cyk7XG4rdm9pZCB1bm1hcF9tYXBwaW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpO1xuIHZvaWQgdW5tYXBfbWFwcGluZ19yYW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdFx0bG9mZl90IGNvbnN0IGhvbGViZWdpbiwgbG9mZl90IGNvbnN0IGhvbGVsZW4sIGludCBldmVuX2Nvd3MpO1xuICNlbHNlXG5AQCAtMzIwMyw2ICszMjA0LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLFxuIH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgdW5tYXBfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdFx0cGdvZmZfdCBzdGFydCwgcGdvZmZfdCBuciwgYm9vbCBldmVuX2Nvd3MpIHsgfVxuK3N0YXRpYyBpbmxpbmUgdm9pZCB1bm1hcF9tYXBwaW5nX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpIHsgfVxuIHN0YXRpYyBpbmxpbmUgdm9pZCB1bm1hcF9tYXBwaW5nX3JhbmdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuIFx0XHRsb2ZmX3QgY29uc3QgaG9sZWJlZ2luLCBsb2ZmX3QgY29uc3QgaG9sZWxlbiwgaW50IGV2ZW5fY293cykgeyB9XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5LmMgYi9tbS9tZW1vcnkuY1xuaW5kZXggZmYzMzhjMmFiZTkyMzEuLmY5Y2ZiODhhYzRmNzMwIDEwMDY0NFxuLS0tIGEvbW0vbWVtb3J5LmNcbisrKyBiL21tL21lbW9yeS5jXG5AQCAtNDQyMyw2ICs0NDIzLDMyIEBAIHZvaWQgdW5tYXBfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgcGdvZmZfdCBzdGFydCxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodW5tYXBfbWFwcGluZ19wYWdlcyk7XG4gXG4rLyoqXG4rICogdW5tYXBfbWFwcGluZ19maWxlKCkgLSBVbm1hcCBhbGwgbW1hcHMgb2YgYW4gb3BlbiBmaWxlLlxuKyAqIEBmaWxlOiBUaGUgZmlsZSB0byB1bm1hcC5cbisgKlxuKyAqIFVubWFwIGV2ZXJ5IFZNQSB3aXRoIHZtX2ZpbGUgc2V0IHRvIEBmaWxlLCByZWdhcmRsZXNzIG9mIHRoZSBhZGRyZXNzXG4rICogc3BhY2UgaXQgaXMgYXR0YWNoZWQgdG8uICBUaGlzIGFsc28gY292ZXJzIGZpbGVzIHdpdGggZl9tYXBwaW5nXG4rICogc3dhcHBlZCB0byBhIGRpZmZlcmVudCBhZGRyZXNzIHNwYWNlIGF0IG9wZW4gdGltZSwgc2luY2Ugc3VjaCBWTUFzXG4rICogY2Fubm90IGJlIGZvdW5kIHRocm91Z2ggdGhlIGZpbGUncyBvd24gaW5vZGUgbWFwcGluZy5cbisgKi9cbit2b2lkIHVubWFwX21hcHBpbmdfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSlcbit7XG4rXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGZpbGUtXHUwMDNlZl9tYXBwaW5nO1xuK1x0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7XG4rXG4rXHRpX21tYXBfbG9ja19yZWFkKG1hcHBpbmcpO1xuK1x0aWYgKHVubGlrZWx5KG1hcHBpbmdfbWFwcGVkKG1hcHBpbmcpKSkge1xuK1x0XHR2bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoKHZtYSwgXHUwMDI2bWFwcGluZy1cdTAwM2VpX21tYXAsIDAsIFVMT05HX01BWCkge1xuK1x0XHRcdGlmICh2bWEtXHUwMDNldm1fZmlsZSAhPSBmaWxlKVxuK1x0XHRcdFx0Y29udGludWU7XG4rXHRcdFx0emFwX3ZtYSh2bWEpO1xuK1x0XHR9XG4rXHR9XG4rXHRpX21tYXBfdW5sb2NrX3JlYWQobWFwcGluZyk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHVubWFwX21hcHBpbmdfZmlsZSk7XG4rXG4gLyoqXG4gICogdW5tYXBfbWFwcGluZ19yYW5nZSAtIHVubWFwIHRoZSBwb3J0aW9uIG9mIGFsbCBtbWFwcyBpbiB0aGUgc3BlY2lmaWVkXG4gICogYWRkcmVzc19zcGFjZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzcGVjaWZpZWQgYnl0ZSByYW5nZSBpbiB0aGUgdW5kZXJseWluZ1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTQ6MTg6NTMuMTQyNjgzNDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Mjg2Mjk0ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIE1lbW9yeSBNYXBwaW5nIElzc3VlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIGFpbWVkIGF0IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IG1hcHBpbmcgaXNzdWUgd2l0aGluIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBpbiBgZnMva2VybmZzL2ZpbGUuY2AgYW5kIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGB1bm1hcF9tYXBwaW5nX2ZpbGVgLCBpbiBgbW0vbWVtb3J5LmNgLiBUaGUgY29yZSBwcm9ibGVtIHRoaXMgcGF0Y2ggdGFja2xlcyBpcyB0aGF0IGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AsIHdoZW4gY2xvc2luZyBmaWxlcywgd2Fzbid0IHByb3Blcmx5IHVubWFwcGluZyBmaWxlJ3MgbWVtb3J5IG1hcHBpbmdzIGlmIHRoZSBmaWxlJ3MgYGZfbWFwcGluZ2Agd2FzIHN3YXBwZWQgdG8gYSBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZSBhdCBvcGVuIHRpbWUuIEEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiwgbGlrZWx5LlxuXG5UaGUgcHJvcG9zZWQgc29sdXRpb24sIGB1bm1hcF9tYXBwaW5nX2ZpbGVgLCBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGl0IGl0ZXJhdGVzIHRocm91Z2ggdGhlIGB2bWFfaW50ZXJ2YWxfdHJlZWAgYXNzb2NpYXRlZCB3aXRoIGBmaWxlLVx1MDAzZWZfbWFwcGluZ2AgYW5kIHphcHMgYW55IFZNQXMgd2hlcmUgdGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBWTUEgbWF0Y2hlcyB0aGUgZmlsZSBiZWluZyBjbG9zZWQuIE1ha2VzIHNlbnNlLiBUaGlzIHNob3VsZCBjb3ZlciB0aGUgY2FzZXMgdGhhdCB3ZXJlIG1pc3NlZCBieSB0aGUgb3JpZ2luYWwgZHJhaW4gZnVuY3Rpb24uXG5cbk5vdywgbGV0J3MgYXNzZXNzIHRoZSByZWFjaCBvZiB0aGlzIGNvZGUuIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXMgcGFydCBvZiBrZXJuZnMsIHdoaWNoIGlzIGEgZnVuZGFtZW50YWwgY29tcG9uZW50IGZvciBib3RoIHN5c2ZzIGFuZCBjZ3JvdXBmcy4gVGhlc2UgYXJlICp1YmlxdWl0b3VzKiBpbiBMaW51eCwgc28gaXQncyBwcmFjdGljYWxseSBndWFyYW50ZWVkIHRoYXQgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBpcyBmcmVxdWVudGx5IGNhbGxlZC4gSSdkIGFkZCBib3RoIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgYW5kIHRoZSBuZXcgYHVubWFwX21hcHBpbmdfZmlsZWAgdG8gbXkgRm9jdXNTeW1ib2xzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cy4gYGZzL2tlcm5mcy9maWxlLmNgIGlzIGNvbXBpbGVkIGNvbmRpdGlvbmFsbHksIGRlcGVuZGluZyBvbiBgQ09ORklHX0tFUk5GU2AuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY29uZGl0aW9uYWwuIGBDT05GSUdfS0VSTkZTYCBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgc2VsZWN0aW5nIGBTWVNGU2Agb3IgYENHUk9VUFNgLCBzbyB3ZSBjYW4gZXhwZWN0IHRoZSBjb2RlIHRvIGJlIGNvbXBpbGVkLiBOb3csIHRoZSBgbW0vbWVtb3J5LmNgIGZpbGUgaXRzZWxmIGlzIGFsd2F5cyBjb21waWxlZCwgYnV0IGB1bm1hcF9tYXBwaW5nX2ZpbGVgIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgdW5kZXIgYENPTkZJR19NTVVgLCB3aGljaCBpcyBhbHNvIHR5cGljYWwuIEkgY2hlY2tlZCBgaW5jbHVkZS9saW51eC9tbS5oYCB0byBjb25maXJtIHRoZSBNTVUgZGVwZW5kZW5jeS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgc2VhcmNoIHRoZSBjb2RlIGJhc2UgZm9yIG90aGVyIHVzYWdlcyBvZiBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgYW0gYXdhcmUgb2Ygd2hlcmUgaXQgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE5OjAxLjQyODk4MDEzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMTExMDY2ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2VybmZzX2RyYWluX29wZW5fZmlsZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMva2VybmZzL2Rpci5jPTUwOD1zdGF0aWMgdm9pZCBrZXJuZnNfZHJhaW4oc3RydWN0IGtlcm5mc19ub2RlICprbiwgYm9vbCBkcm9wX3N1cGVycylcXG4tLVxcbmZzL2tlcm5mcy9kaXIuYy01NDUtXFx0aWYgKGtlcm5mc19zaG91bGRfZHJhaW5fb3Blbl9maWxlcyhrbikpXFxuZnMva2VybmZzL2Rpci5jOjU0NjpcXHRcXHRrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyhrbik7XFxuZnMva2VybmZzL2Rpci5jLTU0Ny1cXG4tLVxcbmZzL2tlcm5mcy9maWxlLmM9Nzg0PWJvb2wga2VybmZzX3Nob3VsZF9kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pXFxuLS1cXG5mcy9rZXJuZnMvZmlsZS5jLTgwMy1cXG5mcy9rZXJuZnMvZmlsZS5jOjgwNDp2b2lkIGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pXFxuZnMva2VybmZzL2ZpbGUuYy04MDUte1xcbi0tXFxuZnMva2VybmZzL2tlcm5mcy1pbnRlcm5hbC5oPTIwND1ib29sIGtlcm5mc19zaG91bGRfZHJhaW5fb3Blbl9maWxlcyhzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTtcXG5mcy9rZXJuZnMva2VybmZzLWludGVybmFsLmg6MjA1OnZvaWQga2VybmZzX2RyYWluX29wZW5fZmlsZXMoc3RydWN0IGtlcm5mc19ub2RlICprbik7XFxuZnMva2VybmZzL2tlcm5mcy1pbnRlcm5hbC5oLTIwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTQ6MTk6MDUuNjQwMDkxMjU0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5OTI0NTE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5mcyBEcmFpbiBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXMgY2FsbGVkIHNwZWNpZmljYWxseSBmcm9tIGBrZXJuZnNfZHJhaW5gLiBUaGF0IG1ha2VzIHNlbnNlLiBBbmQgYGtlcm5mc19kcmFpbmAgaXRzZWxmIGdldHMgdHJpZ2dlcmVkIHdoZW4gYSBrZXJuZnMgbm9kZSBpcyByZW1vdmVkIG9yIGRlYWN0aXZhdGVkLiBSaWdodCwgcmlnaHQuIENvbnNpZGVyaW5nIGhvdyBoZWF2aWx5IGBrZXJuZnNgIGlzIHVzZWQgaW4gYm90aCBzeXNmcyBhbmQgY2dyb3VwZnMsIHRoaXMgYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgYW5kIHByb2JhYmx5IHByZXR0eSBpbXBvcnRhbnQgZm9yIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgY2xlYW5zIHVwIGNvcnJlY3RseSBkdXJpbmcgdGhvc2UgdW5tb3VudCBvcGVyYXRpb25zIG9yIHdoZW4gbm9kZXMgZ2V0IGRlbGV0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyByb2xlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIG9yIGJ1aWxkIG9wdGlvbnMgcmVsYXRlZCB0byBrZXJuZnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgaG93IGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgYmVoYXZlcy4gQW55dGhpbmcgdGhhdCBjb3VsZCBhZmZlY3QgaXRzIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE3NywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE5OjA5LjYzOTMzODc1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI0MDc1OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLRVJORlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMva2VybmZzL0tjb25maWctNS1cXG5mcy9rZXJuZnMvS2NvbmZpZzo2OmNvbmZpZyBLRVJORlNcXG5mcy9rZXJuZnMvS2NvbmZpZy03LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTQ6MTk6MTEuODYzNDIxMjk5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwNDQ3NDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5mcyBDb25maWd1cmF0aW9uIGZvciBQYXRjaCBJbmNsdXNpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gS0VSTkZTIGlzIGEgaGlkZGVuIGJvb2xlYW4sIGFjdGl2YXRlZCB0aHJvdWdoIFNZU0ZTIGFuZCBDR1JPVVBTIOKAkyBpdCdzIHByYWN0aWNhbGx5IGFsd2F5cyBvbiBpbiBhIG5vcm1hbCBzZXR1cCwgc28gZXhwbGljaXRseSBzdGF0aW5nIEtFUk5GUyBpdHNlbGYgaXMgcmVkdW5kYW50LiBTWVNGUyBhbmQgQ0dST1VQUyBhcmUgZ2VuZXJpYywgYnV0IEknbGwgYWRkIHRoZW0ganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbm90IGFzc3VtZSBhbnl0aGluZy5cblxuTm93LCBsZXQncyBzZWUgd2hhdCB0aGlzIHBhdGNoIGFjdHVhbGx5IHRvdWNoZXMuIEl0IG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgYW5kIGB1bm1hcF9tYXBwaW5nX2ZpbGVgLiBBaCwgYHVubWFwX21hcHBpbmdfZmlsZWAgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCB3aXRoIGBDT05GSUdfTU1VYC4gVGhhdCBtYWtlcyBzZW5zZS4gQWx0aG91Z2ggaXQncyBwcmV0dHkgdWJpcXVpdG91cywgSSdsbCBhZGQgYE1NVWAgdG8gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSdyZSBjb3ZlcmluZyBhbGwgYmFzZXMuIEl0J3MgYmV0dGVyIHRvIGJlIGV4cGxpY2l0LCBldmVuIGlmIGl0IHNlZW1zIG9idmlvdXMuXG5cbkZpbmFsbHksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSdzIGEgc3BlY2lmaWMgbWVjaGFuaXNtIGluIEtFUk5GUyB3aGVyZSBgZl9tYXBwaW5nYCBnZXRzIHN3YXBwZWQuIEknbGwgbmVlZCB0byBsb29rIGF0IGBmcy9rZXJuZnMvZmlsZS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBga2VybmZzX2ZvcF9tbWFwYC4gTXkgZ3V0IHRlbGxzIG1lIHNvbWV0aGluZyBpbiB0aGVyZSBtaWdodCBiZSB0aGUgY3VscHJpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNDoxOToxNi4yNjc4OTgzNDhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ3MDc4OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZl9tYXBwaW5nLio9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2tlcm5mcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMva2VybmZzL2ZpbGUuYz04MDQ9dm9pZCBrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyhzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKVxcbi0tXFxuZnMva2VybmZzL2ZpbGUuYy04MjAtXFx0XFx0aWYgKG9mLVxcdTAwM2VtbWFwcGVkKSB7XFxuZnMva2VybmZzL2ZpbGUuYzo4MjE6XFx0XFx0XFx0aWYgKG9mLVxcdTAwM2VmaWxlLVxcdTAwM2VmX21hcHBpbmcgIT0gaW5vZGUtXFx1MDAzZWlfbWFwcGluZylcXG5mcy9rZXJuZnMvZmlsZS5jLTgyMi1cXHRcXHRcXHRcXHR1bm1hcF9tYXBwaW5nX2ZpbGUob2YtXFx1MDAzZWZpbGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNDoxOToxNi4zNTI2MTA0ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjc4NTA0MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFN1c3BlY3QgVmFyaWFibGUgQXNzaWdubWVudCoqXG5cbk9rYXksIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIGFzc2lnbm1lbnQgb2YgYGZfbWFwcGluZ2AuIFNvbWV0aGluZyBmZWVscyBvZmYsIGFuZCBJIGNhbid0IGltbWVkaWF0ZWx5IHJlY2FsbCB3aGVyZSB0aGUgc3dhcCBoYXBwZW5zLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgaXQncyBsaWtlbHkgd2l0aGluIHRoZSByZWFsbSBvZiBlaXRoZXIgYHN5c2ZzYCBvciBgY2dyb3VwYCDigJMgdGhvc2UgYXJlIG9mdGVuIHRoZSBjdWxwcml0cyB3aGVuIEkgc2VlIHRoaXMga2luZCBvZiBiZWhhdmlvdXIuIFRpbWUgdG8gYmUgbWV0aG9kaWNhbC4gSSBuZWVkIHRvIGJlIHN1cmUuIEknbSBnb2luZyB0byBsYXVuY2ggYSBmdWxsLXNjYWxlIHNlYXJjaCBhY3Jvc3MgdGhlIGVudGlyZSBjb2RlYmFzZS4gTGV0J3MgbG9vayBmb3IgZXZlcnkgaW5zdGFuY2Ugb2YgYGZfbWFwcGluZyA9YCBpbiBvcmRlciB0byBkZXRlcm1pbmUgaXRzIGFzc2lnbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMDEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNDoxOToyMS42MzExMTgxNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2ODQ4NTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmX21hcHBpbmcgPVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9iZGV2LmM9OTI5PWludCBiZGV2X29wZW4oc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLCB2b2lkICpob2xkZXIsXFxuLS1cXG5ibG9jay9iZGV2LmMtOTkxLVxcdFxcdGJkZXZfZmlsZS1cXHUwMDNlZl9tb2RlIHw9IEZNT0RFX1dSSVRFX1JFU1RSSUNURUQ7XFxuYmxvY2svYmRldi5jOjk5MjpcXHRiZGV2X2ZpbGUtXFx1MDAzZWZfbWFwcGluZyA9IGJkZXYtXFx1MDAzZWJkX21hcHBpbmc7XFxuYmxvY2svYmRldi5jLTk5My1cXHRiZGV2X2ZpbGUtXFx1MDAzZWZfd2JfZXJyID0gZmlsZW1hcF9zYW1wbGVfd2JfZXJyKGJkZXZfZmlsZS1cXHUwMDNlZl9tYXBwaW5nKTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvZHJtX2FjY2VsLmM9MTE3PWludCBhY2NlbF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9kcm1fYWNjZWwuYy0xMzEtXFx0Lyogc2hhcmUgYWRkcmVzc19zcGFjZSBhY3Jvc3MgYWxsIGNoYXItZGV2cyBvZiBhIHNpbmdsZSBkZXZpY2UgKi9cXG5kcml2ZXJzL2FjY2VsL2RybV9hY2NlbC5jOjEzMjpcXHRmaWxwLVxcdTAwM2VmX21hcHBpbmcgPSBkZXYtXFx1MDAzZWFub25faW5vZGUtXFx1MDAzZWlfbWFwcGluZztcXG5kcml2ZXJzL2FjY2VsL2RybV9hY2NlbC5jLTEzMy1cXG4tLVxcbmRyaXZlcnMvY2hhci9tZW0uYz02MDM9c3RhdGljIGludCBvcGVuX3BvcnQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApXFxuLS1cXG5kcml2ZXJzL2NoYXIvbWVtLmMtNjIxLVxcdCAqL1xcbmRyaXZlcnMvY2hhci9tZW0uYzo2MjI6XFx0ZmlscC1cXHUwMDNlZl9tYXBwaW5nID0gaW9tZW1fZ2V0X21hcHBpbmcoKTtcXG5kcml2ZXJzL2NoYXIvbWVtLmMtNjIzLVxcbi0tXFxuZHJpdmVycy9kYXgvZGV2aWNlLmM9MzMzPXN0YXRpYyBpbnQgZGF4X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApXFxuLS1cXG5kcml2ZXJzL2RheC9kZXZpY2UuYy0zNDItXFx0aW5vZGUtXFx1MDAzZWlfbWFwcGluZy1cXHUwMDNlYV9vcHMgPSBcXHUwMDI2ZGV2X2RheF9hb3BzO1xcbmRyaXZlcnMvZGF4L2RldmljZS5jOjM0MzpcXHRmaWxwLVxcdTAwM2VmX21hcHBpbmcgPSBpbm9kZS1cXHUwMDNlaV9tYXBwaW5nO1xcbmRyaXZlcnMvZGF4L2RldmljZS5jLTM0NC1cXHRmaWxwLVxcdTAwM2VmX3diX2VyciA9IGZpbGVtYXBfc2FtcGxlX3diX2VycihmaWxwLVxcdTAwM2VmX21hcHBpbmcpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM9MzY5PWludCBkcm1fb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTM4NS1cXHQvKiBzaGFyZSBhZGRyZXNzX3NwYWNlIGFjcm9zcyBhbGwgY2hhci1kZXZzIG9mIGEgc2luZ2xlIGRldmljZSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jOjM4NjpcXHRmaWxwLVxcdTAwM2VmX21hcHBpbmcgPSBkZXYtXFx1MDAzZWFub25faW5vZGUtXFx1MDAzZWlfbWFwcGluZztcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0zODctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYz0xMDU3PXN0cnVjdCBmaWxlICptb2NrX2RybV9nZXRmaWxlKHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yLCB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0xMDczLVxcdC8qIEV2ZXJ5b25lIHNoYXJlcyBhIHNpbmdsZSBnbG9iYWwgYWRkcmVzcyBzcGFjZSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jOjEwNzQ6XFx0ZmlsZS1cXHUwMDNlZl9tYXBwaW5nID0gZGV2LVxcdTAwM2Vhbm9uX2lub2RlLVxcdTAwM2VpX21hcHBpbmc7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMtMTA3NS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYz0yMzk9c3RydWN0IGRtYV9idWYgKmRybV9nZW1fZG1hYnVmX2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jLTI1MC1cXHRkcm1fZ2VtX29iamVjdF9nZXQob2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmM6MjUxOlxcdGRtYV9idWYtXFx1MDAzZWZpbGUtXFx1MDAzZWZfbWFwcGluZyA9IG9iai1cXHUwMDNlZGV2LVxcdTAwM2Vhbm9uX2lub2RlLVxcdTAwM2VpX21hcHBpbmc7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jLTI1Mi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmM9OTY4PXN0YXRpYyBzdHJ1Y3QgZmlsZSAqbW1hcF9zaW5nbGV0b24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jLTk4MC1cXHQvKiBFdmVyeW9uZSBzaGFyZXMgYSBzaW5nbGUgZ2xvYmFsIGFkZHJlc3Mgc3BhY2UgKi9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjk4MTpcXHRmaWxlLVxcdTAwM2VmX21hcHBpbmcgPSBpOTE1LVxcdTAwM2Vkcm0uYW5vbl9pbm9kZS1cXHUwMDNlaV9tYXBwaW5nO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtOTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tYWluLmM9MTg5Nz1zdGF0aWMgaW50IG1hcF9iZl9hcmVhKHN0cnVjdCBtbHg0X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tYWluLmMtMTkxMC1cXHRcXHRcXHQoZGV2LVxcdTAwM2VjYXBzLm51bV91YXJzIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvbWFpbi5jOjE5MTE6XFx0cHJpdi1cXHUwMDNlYmZfbWFwcGluZyA9IGlvX21hcHBpbmdfY3JlYXRlX3djKGJmX3N0YXJ0LCBiZl9sZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvbWFpbi5jLTE5MTItXFx0aWYgKCFwcml2LVxcdTAwM2ViZl9tYXBwaW5nKVxcbi0tXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTAxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGNpX2xlZ2FjeV9pb19hdHRyID0ge1xcbi0tXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTAyMy1cXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZV9sZWdhY3ksXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTAyNDpcXHQuZl9tYXBwaW5nID0gaW9tZW1fZ2V0X21hcHBpbmcsXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTAyNS19O1xcbi0tXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTAyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGNpX2xlZ2FjeV9pb19zcGFyc2VfYXR0ciA9IHtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwMzMtXFx0Lmxsc2VlayA9IHBjaV9sbHNlZWtfcmVzb3VyY2VfbGVnYWN5LFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEwMzQ6XFx0LmZfbWFwcGluZyA9IGlvbWVtX2dldF9tYXBwaW5nLFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwMzUtfTtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEwMzc9c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlIHBjaV9sZWdhY3lfbWVtX2F0dHIgPSB7XFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMDQxLVxcdC5sbHNlZWsgPSBwY2lfbGxzZWVrX3Jlc291cmNlX2xlZ2FjeSxcXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYzoxMDQyOlxcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMDQzLX07XFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMDQ1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBwY2lfbGVnYWN5X21lbV9zcGFyc2VfYXR0ciA9IHtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwNDktXFx0Lmxsc2VlayA9IHBjaV9sbHNlZWtfcmVzb3VyY2VfbGVnYWN5LFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEwNTA6XFx0LmZfbWFwcGluZyA9IGlvbWVtX2dldF9tYXBwaW5nLFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEwNTEtfTtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEyMjQ9c3RhdGljIGxvZmZfdCBwY2lfbGxzZWVrX3Jlc291cmNlKHN0cnVjdCBmaWxlICpmaWxlcCxcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNDItIyBkZWZpbmUgX19QQ0lfUkVTT1VSQ0VfSU9fTU1BUF9BVFRSU1xcdFxcdFxcXFxcXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYzoxMjQzOlxcdC5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZyxcXHRcXHRcXFxcXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTI0NC1cXHQubGxzZWVrID0gcGNpX2xsc2Vla19yZXNvdXJjZSxcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMjYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBkZXZfcmVzb3VyY2UjI19iYXIjI191Y19hdHRyID0ge1xcdFxcXFxcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNjItXFx0LnByaXZhdGUgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKShfYmFyKSxcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTI2MzpcXHQuZl9tYXBwaW5nID0gaW9tZW1fZ2V0X21hcHBpbmcsXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyNjQtXFx0Lmxsc2VlayA9IHBjaV9sbHNlZWtfcmVzb3VyY2UsXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTI2OT1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgZGV2X3Jlc291cmNlIyNfYmFyIyNfd2NfYXR0ciA9IHtcXHQgICAgICBcXFxcXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjcxLVxcdC5wcml2YXRlID0gKHZvaWQgKikodW5zaWduZWQgbG9uZykoX2JhciksXFx0XFx0XFx0ICAgICAgXFxcXFxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEyNzI6XFx0LmZfbWFwcGluZyA9IGlvbWVtX2dldF9tYXBwaW5nLFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXFxcXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjczLVxcdC5sbHNlZWsgPSBwY2lfbGxzZWVrX3Jlc291cmNlLFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXFxcXG4tLVxcbmRyaXZlcnMvcGNpL3Byb2MuYz0yOTk9c3RhdGljIGludCBwcm9jX2J1c19wY2lfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmRyaXZlcnMvcGNpL3Byb2MuYy0zMDktXFx0ZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhID0gZnByaXY7XFxuZHJpdmVycy9wY2kvcHJvYy5jOjMxMDpcXHRmaWxlLVxcdTAwM2VmX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZygpO1xcbmRyaXZlcnMvcGNpL3Byb2MuYy0zMTEtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYz0yMz1pbnQgdmZpb19kZXZpY2VfZm9wc19jZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGVwKVxcbi0tXFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmMtNDYtXFx0ICovXFxuZHJpdmVycy92ZmlvL2RldmljZV9jZGV2LmM6NDc6XFx0ZmlsZXAtXFx1MDAzZWZfbWFwcGluZyA9IGRldmljZS1cXHUwMDNlaW5vZGUtXFx1MDAzZWlfbWFwcGluZztcXG5kcml2ZXJzL3ZmaW8vZGV2aWNlX2NkZXYuYy00OC1cXG4tLVxcbmRyaXZlcnMvdmZpby9ncm91cC5jPTI1NT1zdGF0aWMgc3RydWN0IGZpbGUgKnZmaW9fZGV2aWNlX29wZW5fZmlsZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvdmZpby9ncm91cC5jLTI4My1cXHQgKi9cXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYzoyODQ6XFx0ZmlsZXAtXFx1MDAzZWZfbWFwcGluZyA9IGRldmljZS1cXHUwMDNlaW5vZGUtXFx1MDAzZWlfbWFwcGluZztcXG5kcml2ZXJzL3ZmaW8vZ3JvdXAuYy0yODUtXFxuLS1cXG5mcy9hbm9uX2lub2Rlcy5jPTEzMj1zdGF0aWMgc3RydWN0IGZpbGUgKl9fYW5vbl9pbm9kZV9nZXRmaWxlKGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG5mcy9hbm9uX2lub2Rlcy5jLTE2OC1cXG5mcy9hbm9uX2lub2Rlcy5jOjE2OTpcXHRmaWxlLVxcdTAwM2VmX21hcHBpbmcgPSBpbm9kZS1cXHUwMDNlaV9tYXBwaW5nO1xcbmZzL2Fub25faW5vZGVzLmMtMTcwLVxcbi0tXFxuZnMvY29kYS9maWxlLmM9MTUxPWNvZGFfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICpjb2RhX2ZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZnMvY29kYS9maWxlLmMtMTgzLVxcdHNwaW5fbG9jayhcXHUwMDI2Y2lpLVxcdTAwM2VjX2xvY2spO1xcbmZzL2NvZGEvZmlsZS5jOjE4NDpcXHRjb2RhX2ZpbGUtXFx1MDAzZWZfbWFwcGluZyA9IGhvc3RfZmlsZS1cXHUwMDNlZl9tYXBwaW5nO1xcbmZzL2NvZGEvZmlsZS5jLTE4NS1cXHRpZiAoY29kYV9pbm9kZS1cXHUwMDNlaV9tYXBwaW5nID09IFxcdTAwMjZjb2RhX2lub2RlLVxcdTAwM2VpX2RhdGEpXFxuLS1cXG5mcy9lcm9mcy9pc2hhcmUuYz05MD1zdGF0aWMgaW50IGVyb2ZzX2lzaGFyZV9maWxlX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9lcm9mcy9pc2hhcmUuYy0xMDMtXFx0cmVhbGZpbGUtXFx1MDAzZWZfaW5vZGUgPSBzaGFyZWRpbm9kZTtcXG5mcy9lcm9mcy9pc2hhcmUuYzoxMDQ6XFx0cmVhbGZpbGUtXFx1MDAzZWZfbWFwcGluZyA9IHNoYXJlZGlub2RlLVxcdTAwM2VpX21hcHBpbmc7XFxuZnMvZXJvZnMvaXNoYXJlLmMtMTA1LVxcdHBhdGhfZ2V0KFxcdTAwMjZmaWxlLVxcdTAwM2VmX3BhdGgpO1xcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTM2MT1zdGF0aWMgdm9pZCBmaWxlX2luaXRfcGF0aChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsXFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtMzY1LVxcdGZpbGUtXFx1MDAzZWZfaW5vZGUgPSBwYXRoLVxcdTAwM2VkZW50cnktXFx1MDAzZWRfaW5vZGU7XFxuZnMvZmlsZV90YWJsZS5jOjM2NjpcXHRmaWxlLVxcdTAwM2VmX21hcHBpbmcgPSBwYXRoLVxcdTAwM2VkZW50cnktXFx1MDAzZWRfaW5vZGUtXFx1MDAzZWlfbWFwcGluZztcXG5mcy9maWxlX3RhYmxlLmMtMzY3LVxcdGZpbGUtXFx1MDAzZWZfd2JfZXJyID0gZmlsZW1hcF9zYW1wbGVfd2JfZXJyKGZpbGUtXFx1MDAzZWZfbWFwcGluZyk7XFxuLS1cXG5mcy9maWxlX3RhYmxlLmM9NDcxPXN0cnVjdCBmaWxlICphbGxvY19maWxlX2Nsb25lKHN0cnVjdCBmaWxlICpiYXNlLCBpbnQgZmxhZ3MsXFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNDc4LVxcdFxcdHBhdGhfZ2V0KFxcdTAwMjZmLVxcdTAwM2VmX3BhdGgpO1xcbmZzL2ZpbGVfdGFibGUuYzo0Nzk6XFx0XFx0Zi1cXHUwMDNlZl9tYXBwaW5nID0gYmFzZS1cXHUwMDNlZl9tYXBwaW5nO1xcbmZzL2ZpbGVfdGFibGUuYy00ODAtXFx0fVxcbi0tXFxuZnMvb3Blbi5jPTg4NT1zdGF0aWMgaW50IGRvX2RlbnRyeV9vcGVuKHN0cnVjdCBmaWxlICpmLFxcbi0tXFxuZnMvb3Blbi5jLTg5My1cXHRmLVxcdTAwM2VmX2lub2RlID0gaW5vZGU7XFxuZnMvb3Blbi5jOjg5NDpcXHRmLVxcdTAwM2VmX21hcHBpbmcgPSBpbm9kZS1cXHUwMDNlaV9tYXBwaW5nO1xcbmZzL29wZW4uYy04OTUtXFx0Zi1cXHUwMDNlZl93Yl9lcnIgPSBmaWxlbWFwX3NhbXBsZV93Yl9lcnIoZi1cXHUwMDNlZl9tYXBwaW5nKTtcXG4tLVxcbmZzL3N5c2ZzL2ZpbGUuYz0xOTE9c3RhdGljIGludCBzeXNmc19rZl9iaW5fb3BlbihzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YpXFxuLS1cXG5mcy9zeXNmcy9maWxlLmMtMTk1LVxcdGlmIChiYXR0ci1cXHUwMDNlZl9tYXBwaW5nKVxcbmZzL3N5c2ZzL2ZpbGUuYzoxOTY6XFx0XFx0b2YtXFx1MDAzZWZpbGUtXFx1MDAzZWZfbWFwcGluZyA9IGJhdHRyLVxcdTAwM2VmX21hcHBpbmcoKTtcXG5mcy9zeXNmcy9maWxlLmMtMTk3LVxcbi0tXFxubW0vc3dhcGZpbGUuYz0zMDYzPVNZU0NBTExfREVGSU5FMShzd2Fwb2ZmLCBjb25zdCBjaGFyIF9fdXNlciAqLCBzcGVjaWFsZmlsZSlcXG4tLVxcbm1tL3N3YXBmaWxlLmMtMzA4Ni1cXHRcXHRpZiAocC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBTV1BfV1JJVEVPSykge1xcbm1tL3N3YXBmaWxlLmM6MzA4NzpcXHRcXHRcXHRpZiAocC1cXHUwMDNlc3dhcF9maWxlLVxcdTAwM2VmX21hcHBpbmcgPT0gbWFwcGluZykge1xcbm1tL3N3YXBmaWxlLmMtMzA4OC1cXHRcXHRcXHRcXHRmb3VuZCA9IDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE5OjIzLjg5OTYxNDYxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMTczNjc5OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHN5c2ZzIEZpbGUgTWFwcGluZyBhbmQgVW5tYXBwaW5nKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXQgbWU6IGBmcy9zeXNmcy9maWxlLmM6MTk2YCBpcyB3aGVyZSB0aGUgYGZfbWFwcGluZ2Agc3dhcCBoYXBwZW5zIGluIHN5c2ZzLCBzcGVjaWZpY2FsbHkgZHVyaW5nIHRoZSBgc3lzZnNfa2ZfYmluX29wZW5gIGNhbGwuIFRoYXQgY2FsbHMgYGJhdHRyLVx1MDAzZWZfbWFwcGluZygpYC4gQW5kIGxvb2tpbmcgYXQgdGhlIGNvZGUsIHBhcnRpY3VsYXJseSB3aXRoIGBwY2lfc3lzZnNgLCB3ZSdyZSB1c2luZyBgaW9tZW1fZ2V0X21hcHBpbmdgIGZvciBgZl9tYXBwaW5nYC4gVGhpcyBkaXJlY3RseSBhZmZlY3RzIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcy5cblxuVGhpcyBtZWFucyB0aGF0IHdoZW4gYGtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzYCBnZXRzIGNhbGxlZCBvbiB0aGlzIHR5cGUgb2YgZmlsZSwgaXQgc2hvdWxkIG5vdyBjb3JyZWN0bHkgdW5tYXAgZXZlcnl0aGluZy4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgYGZzL3N5c2ZzL2ZpbGUuY2AuIFllcCwgYENPTkZJR19TWVNGU2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZy4gU2luY2UgUENJIGlzIHVzZWQgdmlhIHRoZSBuZXcgbWFwcGluZyBmdW5jdGlvbiwgYW5kIHRoZXJlIGlzIG1lbW9yeSB1bm1hcHBpbmcgaW52b2x2ZWQsIHdlIGFsc28gc2hvdWxkIGFkZCBgUENJYCBhbmQgYE1NVWAgdG8gdGhlIGxpc3QuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIGFuZCBgdW5tYXBfbWFwcGluZ19maWxlYC4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgYHVubWFwX21hcHBpbmdfZmlsZWAgaW4gYG1tL21lbW9yeS5jYC4gWWVwLCBpdCdzIGl0ZXJhdGluZyB0aHJvdWdoIGB2bWFfaW50ZXJ2YWxfdHJlZV9mb3JlYWNoYCwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgd2UndmUgZ290IHNvbWV0aGluZyB0aGF0J3MgcmlwZSBmb3IgZnV6emluZy5cblxuR2l2ZW4gdGhhdCwgSSdtIGdvaW5nIHRvIHNldDpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBgdHJ1ZWBcbiogICBgRm9jdXNTeW1ib2xzYDogYFtcImtlcm5mc19kcmFpbl9vcGVuX2ZpbGVzXCIsIFwidW5tYXBfbWFwcGluZ19maWxlXCJdYFxuKiAgIGBFbmFibGVDb25maWdzYDogYFtcIlNZU0ZTXCIsIFwiUENJXCIsIFwiTU1VXCJdYFxuKiAgIGBSZWFzb25pbmdgOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBrZXJuZnNfZHJhaW5fb3Blbl9maWxlcyB0byBwcm9wZXJseSB1bm1hcCBmaWxlcyB3aG9zZSBmX21hcHBpbmcgd2FzIHN3YXBwZWQgYXQgb3BlbiB0aW1lIChlLmcuLCBQQ0kgc3lzZnMgYmluYXJ5IGF0dHJpYnV0ZXMpLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIHVubWFwX21hcHBpbmdfZmlsZSBpbiBtbS9tZW1vcnkuYyB0byBhY2hpZXZlIHRoaXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwvc3lzZnMgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgZmlsZSB1bm1hcHBpbmcuXCJcblxuTGV0J3MgZG91YmxlLWNoZWNrIHRoYXQgYHVubWFwX21hcHBpbmdfZmlsZWAgaXMgZXhwb3J0ZWQuIE9rYXksIGdvb2QsIGl0IGlzLiBgRVhQT1JUX1NZTUJPTF9HUEwodW5tYXBfbWFwcGluZ19maWxlKWAuXG5cbmBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AgaXNuJ3QgZXhwb3J0ZWQsIGJ1dCB0aGF0J3Mgbm90IGEgY29uY2VybiBhcyBpdCdzIGNhbGxlZCBmcm9tIGBrZXJuZnNfZHJhaW5gLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBga2VybmZzX3JlbW92ZWAgYW5kIG90aGVycy5cblxuT2theSwgYmFjayB0byBgZnMvc3lzZnMvZmlsZS5jYC4gYHN5c2ZzX2tmX2Jpbl9vcGVuYCBpcyBjYWxsZWQgd2hlbiBhIHN5c2ZzIGJpbmFyeSBmaWxlIGlzIG9wZW5lZC4gSXQgc2V0cyBgb2YtXHUwMDNlbW1hcHBlZGAgd2hlbiBpdCdzIG1tYXBwZWQuIFRoZW4gd2hlbiB0aGUgZmlsZSBpcyByZW1vdmVkLCBga2VybmZzX2RyYWluX29wZW5fZmlsZXNgIHdpbGwgYmUgY2FsbGVkLlxuXG5UaGlzIHNlZW1zIGxpa2UgYSBzb2xpZCwgd2VsbC1kZWZpbmVkIGNoYW5nZS4gSSdtIHNhdGlzZmllZCB3aXRoIHRoaXMgYW5hbHlzaXMuIExldCdzIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2ODYsIk91dHB1dFRva2VucyI6MTU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE0OjE5OjM2LjA3MzI5NzgwN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODU5ODI3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1lTRlNcIixcbiAgICBcIlBDSVwiLFxuICAgIFwiTU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2VybmZzX2RyYWluX29wZW5fZmlsZXNcIixcbiAgICBcInVubWFwX21hcHBpbmdfZmlsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIGtlcm5mcyB3aGVyZSBmaWxlcyB3aXRoIHN3YXBwZWQgZl9tYXBwaW5nIChsaWtlIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcykgd2VyZSBub3QgcHJvcGVybHkgdW5tYXBwZWQgZHVyaW5nIGRyYWluaW5nLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgbW0gZnVuY3Rpb24gYHVubWFwX21hcHBpbmdfZmlsZWAgYW5kIG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaGFuZGxlcyBtZW1vcnkgbWFwcGluZyBhbmQgZmlsZSBsaWZlY3ljbGUsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1lTRlNcIixcbiAgICBcIlBDSVwiLFxuICAgIFwiTU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2VybmZzX2RyYWluX29wZW5fZmlsZXNcIixcbiAgICBcInVubWFwX21hcHBpbmdfZmlsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIGtlcm5mcyB3aGVyZSBmaWxlcyB3aXRoIHN3YXBwZWQgZl9tYXBwaW5nIChsaWtlIFBDSSBzeXNmcyBiaW5hcnkgYXR0cmlidXRlcykgd2VyZSBub3QgcHJvcGVybHkgdW5tYXBwZWQgZHVyaW5nIGRyYWluaW5nLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgbW0gZnVuY3Rpb24gYHVubWFwX21hcHBpbmdfZmlsZWAgYW5kIG1vZGlmaWVzIGBrZXJuZnNfZHJhaW5fb3Blbl9maWxlc2AuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaGFuZGxlcyBtZW1vcnkgbWFwcGluZyBhbmQgZmlsZSBsaWZlY3ljbGUsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow76f57[1] Phase: Succeeded StartedAt: 2026-07-22 14:20:19 +0000 UTC FinishedAt: 2026-07-22 14:20:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 14:20:19 +0000 UTC FinishedAt: 2026-07-22 14:20:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2] Phase: Succeeded StartedAt: 2026-07-22 14:20:19 +0000 UTC FinishedAt: 2026-07-22 18:55:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 14:20:19 +0000 UTC FinishedAt: 2026-07-22 18:55:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 14:20:19 +0000 UTC FinishedAt: 2026-07-22 14:20:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 14:20:19 +0000 UTC FinishedAt: 2026-07-22 14:20:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow76f57/series-workflow76f57-convert-artifact-2599282492/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 14:20:29 +0000 UTC FinishedAt: 2026-07-22 15:03:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 14:20:29 +0000 UTC FinishedAt: 2026-07-22 15:03:57 +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:*adc2546f-cd25-44e5-9173-6bc3c30c3cbe,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-workflow76f57/series-workflow76f57-convert-artifact-2599282492/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": "5b7fd287-0c61-423c-b171-3d23883c67b3", "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-workflow76f57/series-workflow76f57-build-action-649230442/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 14:20:29 +0000 UTC FinishedAt: 2026-07-22 15:03:37 +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:*adc2546f-cd25-44e5-9173-6bc3c30c3cbe,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-workflow76f57/series-workflow76f57-convert-artifact-2599282492/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": "5b7fd287-0c61-423c-b171-3d23883c67b3", "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-workflow76f57/series-workflow76f57-build-action-649230442/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 15:03:57 +0000 UTC FinishedAt: 2026-07-22 15:03:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 15:03:57 +0000 UTC FinishedAt: 2026-07-22 15:03:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 15:03:57 +0000 UTC FinishedAt: 2026-07-22 15:04:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 15:03:57 +0000 UTC FinishedAt: 2026-07-22 15:04:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow76f57/series-workflow76f57-convert-artifact-3973742459/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 15:04:07 +0000 UTC FinishedAt: 2026-07-22 15:06:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 15:04:07 +0000 UTC FinishedAt: 2026-07-22 15:05:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5b7fd287-0c61-423c-b171-3d23883c67b3,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-workflow76f57/series-workflow76f57-build-action-649230442/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-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 15:06:04 +0000 UTC FinishedAt: 2026-07-22 15:06:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 15:06:04 +0000 UTC FinishedAt: 2026-07-22 15:06:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 15:06:04 +0000 UTC FinishedAt: 2026-07-22 15:50:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 15:06:04 +0000 UTC FinishedAt: 2026-07-22 15:50:43 +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:*adc2546f-cd25-44e5-9173-6bc3c30c3cbe,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-workflow76f57/series-workflow76f57-convert-artifact-3973742459/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": "ca0d28f5-b355-4576-9e89-206386094586", "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-workflow76f57/series-workflow76f57-build-action-1461253023/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 15:06:04 +0000 UTC FinishedAt: 2026-07-22 15:50:31 +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:*adc2546f-cd25-44e5-9173-6bc3c30c3cbe,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-workflow76f57/series-workflow76f57-convert-artifact-3973742459/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": "ca0d28f5-b355-4576-9e89-206386094586", "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-workflow76f57/series-workflow76f57-build-action-1461253023/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 15:50:43 +0000 UTC FinishedAt: 2026-07-22 15:50:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 15:50:43 +0000 UTC FinishedAt: 2026-07-22 15:50:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 15:50:43 +0000 UTC FinishedAt: 2026-07-22 15:52:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 15:50:43 +0000 UTC FinishedAt: 2026-07-22 15:52:30 +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:*ca0d28f5-b355-4576-9e89-206386094586,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-workflow76f57/series-workflow76f57-build-action-1461253023/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-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 15:52:41 +0000 UTC FinishedAt: 2026-07-22 18:55:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 15:52:41 +0000 UTC FinishedAt: 2026-07-22 18:55:37 +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"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},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:*5b7fd287-0c61-423c-b171-3d23883c67b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ca0d28f5-b355-4576-9e89-206386094586,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-workflow76f57/series-workflow76f57-build-action-649230442/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-workflow76f57/series-workflow76f57-build-action-1461253023/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 15:52:41 +0000 UTC FinishedAt: 2026-07-22 15:52:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 15:52:41 +0000 UTC FinishedAt: 2026-07-22 15:52:48 +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"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},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-workflow76f57/series-workflow76f57-convert-artifact-1958851444/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 15:52:41 +0000 UTC FinishedAt: 2026-07-22 15:52:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 15:52:41 +0000 UTC FinishedAt: 2026-07-22 15:52:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 15:52:41 +0000 UTC FinishedAt: 2026-07-22 15:52:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 15:52:54 +0000 UTC FinishedAt: 2026-07-22 18:55:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76f57[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kernfs_drain_open_files","unmap_mapping_file"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8338c4c90746937c95ab5ea7953afbcdec29aec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSFS","PCI","MMU"],"series_id":"720e6c73-0cd5-4cdd-8ec9-e0c163d4be0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 15:52:54 +0000 UTC FinishedAt: 2026-07-22 18:55:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5b7fd287-0c61-423c-b171-3d23883c67b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ca0d28f5-b355-4576-9e89-206386094586,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-workflow76f57/series-workflow76f57-build-action-649230442/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-workflow76f57/series-workflow76f57-build-action-1461253023/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-workflow76f57/series-workflow76f57-convert-artifact-1958851444/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,}