Name: series-workflowzdhcp Phase: Succeeded StartedAt: 2026-06-24 07:23:56 +0000 UTC FinishedAt: 2026-06-24 11:48:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[0] Phase: Succeeded StartedAt: 2026-06-24 07:23:56 +0000 UTC FinishedAt: 2026-06-24 07:35:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 07:23:56 +0000 UTC FinishedAt: 2026-06-24 07:35:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "FS_ENCRYPTION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "FS_ENCRYPTION" ], "series_id": "4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_bio_write_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7RlNfRU5DUllQVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfYmlvX3dyaXRlX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IHdyaXRlYmFjayBwYXRoIHRvIHplcm8gb3V0IG5vbi11cHRvZGF0ZSBidWZmZXJzIGZvciBlbmNyeXB0ZWQgZmlsZXMsIHByZXZlbnRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvIGVuZ2luZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTNiNGI3ODcxYTlmNDFhYTI3OGE1YTJmMTI2YzY5Mjc1NDE2YTFkOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDA3OjM0OjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvcGFnZS1pby5jIGIvZnMvZXh0NC9wYWdlLWlvLmNcbmluZGV4IGJjNjc0YWE0YTY1NjBjLi4yZDM4MGI1YTE1MDExNCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvcGFnZS1pby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L3BhZ2UtaW8uY1xuQEAgLTU1NSwxMiAmIzQzOzU1NSwyMiBAQCBpbnQgZXh0NF9iaW9fd3JpdGVfZm9saW8oc3RydWN0IGV4dDRfaW9fc3VibWl0ICppbywgc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdCAqIGJsb2NrIHdoaWNoIG1pZ2h0IGJlIG5lZWRlZC4gIFRoaXMgbWF5IGNhdXNlIHNvbWUgdW5uZWVkZWQgYmxvY2tzXG4gXHQgKiAoZS5nLiBob2xlcykgdG8gYmUgdW5uZWNlc3NhcmlseSBlbmNyeXB0ZWQsIGJ1dCB0aGlzIGlzIHJhcmUgYW5kXG4gXHQgKiBjYW4mIzM5O3QgaGFwcGVuIGluIHRoZSBjb21tb24gY2FzZSBvZiBibG9ja3NpemUgPT0gUEFHRV9TSVpFLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogWmVybyBvdXQgYW55IG5vbi11cHRvZGF0ZSBidWZmZXJzIHRoYXQgYXJlIG5vdCBiZWluZyB3cml0dGVuIG91dCxcbiYjNDM7XHQgKiB0byBwcmV2ZW50IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgZmVkIGludG8gdGhlIGNyeXB0b1xuJiM0MztcdCAqIGVuZ2luZS5cbiBcdCAqL1xuIFx0aWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKSB7XG4gXHRcdGdmcF90IGdmcF9mbGFncyA9IEdGUF9OT0ZTO1xuIFx0XHR1bnNpZ25lZCBpbnQgZW5jX2J5dGVzID0gcm91bmRfdXAobGVuLCBpX2Jsb2Nrc2l6ZShpbm9kZSkpO1xuIFx0XHRzdHJ1Y3QgcGFnZSAqYm91bmNlX3BhZ2U7XG4gXG4mIzQzO1x0XHRkbyB7XG4mIzQzO1x0XHRcdGlmICghYnVmZmVyX2FzeW5jX3dyaXRlKGJoKSBcdTAwMjZcdTAwMjYgIWJ1ZmZlcl91cHRvZGF0ZShiaCkpXG4mIzQzO1x0XHRcdFx0Zm9saW9femVyb19yYW5nZShmb2xpbywgYmhfb2Zmc2V0KGJoKSxcbiYjNDM7XHRcdFx0XHRcdFx0IGJoLVx1MDAzZWJfc2l6ZSk7XG4mIzQzO1x0XHR9IHdoaWxlICgoYmggPSBiaC1cdTAwM2ViX3RoaXNfcGFnZSkgIT0gaGVhZCk7XG4mIzQzO1xuIFx0XHQvKlxuIFx0XHQgKiBTaW5jZSBib3VuY2UgcGFnZSBhbGxvY2F0aW9uIHVzZXMgYSBtZW1wb29sLCB3ZSBjYW4gb25seSB1c2VcbiBcdFx0ICogYSB3YWl0aW5nIG1hc2sgKGkuZS4gcmVxdWVzdCBndWFyYW50ZWVkIGFsbG9jYXRpb24pIG9uIHRoZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7RlNfRU5DUllQVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfYmlvX3dyaXRlX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IHdyaXRlYmFjayBwYXRoIHRvIHplcm8gb3V0IG5vbi11cHRvZGF0ZSBidWZmZXJzIGZvciBlbmNyeXB0ZWQgZmlsZXMsIHByZXZlbnRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvIGVuZ2luZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1M2I0Yjc4NzFhOWY0MWFhMjc4YTVhMmYxMjZjNjkyNzU0MTZhMWQ4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMDc6MzQ6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9leHQ0L3BhZ2UtaW8uYyBiL2ZzL2V4dDQvcGFnZS1pby5jCmluZGV4IGJjNjc0YWE0YTY1NjBjLi4yZDM4MGI1YTE1MDExNCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9wYWdlLWlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9wYWdlLWlvLmMKQEAgLTU1NSwxMiAmIzQzOzU1NSwyMiBAQCBpbnQgZXh0NF9iaW9fd3JpdGVfZm9saW8oc3RydWN0IGV4dDRfaW9fc3VibWl0ICppbywgc3RydWN0IGZvbGlvICpmb2xpbywKIAkgKiBibG9jayB3aGljaCBtaWdodCBiZSBuZWVkZWQuICBUaGlzIG1heSBjYXVzZSBzb21lIHVubmVlZGVkIGJsb2NrcwogCSAqIChlLmcuIGhvbGVzKSB0byBiZSB1bm5lY2Vzc2FyaWx5IGVuY3J5cHRlZCwgYnV0IHRoaXMgaXMgcmFyZSBhbmQKIAkgKiBjYW4mIzM5O3QgaGFwcGVuIGluIHRoZSBjb21tb24gY2FzZSBvZiBibG9ja3NpemUgPT0gUEFHRV9TSVpFLgomIzQzOwkgKgomIzQzOwkgKiBaZXJvIG91dCBhbnkgbm9uLXVwdG9kYXRlIGJ1ZmZlcnMgdGhhdCBhcmUgbm90IGJlaW5nIHdyaXR0ZW4gb3V0LAomIzQzOwkgKiB0byBwcmV2ZW50IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgZmVkIGludG8gdGhlIGNyeXB0bwomIzQzOwkgKiBlbmdpbmUuCiAJICovCiAJaWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKSB7CiAJCWdmcF90IGdmcF9mbGFncyA9IEdGUF9OT0ZTOwogCQl1bnNpZ25lZCBpbnQgZW5jX2J5dGVzID0gcm91bmRfdXAobGVuLCBpX2Jsb2Nrc2l6ZShpbm9kZSkpOwogCQlzdHJ1Y3QgcGFnZSAqYm91bmNlX3BhZ2U7CiAKJiM0MzsJCWRvIHsKJiM0MzsJCQlpZiAoIWJ1ZmZlcl9hc3luY193cml0ZShiaCkgJmFtcDsmYW1wOyAhYnVmZmVyX3VwdG9kYXRlKGJoKSkKJiM0MzsJCQkJZm9saW9femVyb19yYW5nZShmb2xpbywgYmhfb2Zmc2V0KGJoKSwKJiM0MzsJCQkJCQkgYmgtJmd0O2Jfc2l6ZSk7CiYjNDM7CQl9IHdoaWxlICgoYmggPSBiaC0mZ3Q7Yl90aGlzX3BhZ2UpICE9IGhlYWQpOwomIzQzOwogCQkvKgogCQkgKiBTaW5jZSBib3VuY2UgcGFnZSBhbGxvY2F0aW9uIHVzZXMgYSBtZW1wb29sLCB3ZSBjYW4gb25seSB1c2UKIAkJICogYSB3YWl0aW5nIG1hc2sgKGkuZS4gcmVxdWVzdCBndWFyYW50ZWVkIGFsbG9jYXRpb24pIG9uIHRoZQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRXh0NCBDcnlwdG8gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYXBwbGllZCB0byBgZnMvZXh0NC9wYWdlLWlvLmNgLCBzcGVjaWZpY2FsbHkgaG93IGl0JiMzOTtzIGltcGFjdGluZyBgZXh0NF9iaW9fd3JpdGVfZm9saW9gLiBJdCBzZWVtcyB3ZSYjMzk7dmUgYWRkZWQgYSBjcnVjaWFsIGxvb3Agd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRoZSBjb3JlIG9mIHRoaXMgYWRkaXRpb24gaW52b2x2ZXMgemVyb2luZyBvdXQgYnVmZmVycyB0aGF0IGFyZW4mIzM5O3QgJiMzNDt1cHRvZGF0ZSYjMzQ7IGJlZm9yZSB0aGV5IHBvdGVudGlhbGx5IGdldCBwYXNzZWQgdG8gdGhlIGNyeXB0byBlbmdpbmUuIFRoZSBrZXkgY29uZGl0aW9uIGRyaXZpbmcgdGhpcyBpcyBjaGVja2luZyBpZiB0aGUgaW5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSB3cml0ZSBvcGVyYXRpb24gaXMgdXNpbmcgZmlsZXN5c3RlbS1sZXZlbCBlbmNyeXB0aW9uIHZpYSBgZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSlgLiBFc3NlbnRpYWxseSwgdGhlIGFpbSBpcyB0byBlbGltaW5hdGUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgbWFraW5nIGl0cyB3YXkgaW50byB0aGUgY3J5cHRvIHByb2Nlc3MuIFNvLCB0byByZWNhcCwgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBlbmNyeXB0ZWQgZmlsZXMgYW5kIHBhcnRzIG9mIHRoZSBidWZmZXIgaGF2ZW4mIzM5O3QgYmVlbiB3cml0dGVuIHlldCwgd2UmIzM5O3JlIHByb2FjdGl2ZWx5IHplcm9pbmcgdGhlbSB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgYW5kIHNlY3VyaXR5LiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBhbmQgcmVzcG9uc2libGUgYXBwcm9hY2ggdG8gYXZvaWQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gTGV0JiMzOTtzIGRlbHZlIGRlZXBlciBpbnRvIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AgaXRzZWxmIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbnRleHQgYW5kIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9iaW9fd3JpdGVfZm9saW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0L3BhZ2UtaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L3BhZ2UtaW8uYz00NTM9c3RhdGljIHZvaWQgaW9fc3VibWl0X2FkZF9iaChzdHJ1Y3QgZXh0NF9pb19zdWJtaXQgKmlvLFxuLS1cbmZzL2V4dDQvcGFnZS1pby5jLTQ3MC1cbmZzL2V4dDQvcGFnZS1pby5jOjQ3MTppbnQgZXh0NF9iaW9fd3JpdGVfZm9saW8oc3RydWN0IGV4dDRfaW9fc3VibWl0ICppbywgc3RydWN0IGZvbGlvICpmb2xpbyxcbmZzL2V4dDQvcGFnZS1pby5jLTQ3Mi1cdFx0c2l6ZV90IGxlbilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTczCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWUgYWJvdXQgYSBjb2RlIHBhdGNoOgoKKipBbmFseXppbmcgdGhlIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AgTW9kaWZpY2F0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBmb2N1cyBvZiB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgb24gYGV4dDRfYmlvX3dyaXRlX2ZvbGlvYC4gVGhhdCBmdW5jdGlvbiBpcyBjZW50cmFsIHRvIGhvdyB0aGUgZXh0NCBmaWxlc3lzdGVtIGhhbmRsZXMgd3JpdGluZyBkYXRhIHRvIGRpc2ssIHNwZWNpZmljYWxseSBhdCB0aGUgZm9saW8gbGV2ZWwsIHdoaWNoIGltcGxpZXMgYSBtb2Rlcm4sIG1vcmUgZWZmaWNpZW50IG1lbW9yeSBtYW5hZ2VtZW50IGFwcHJvYWNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpjaGFuZ2luZyogYWJvdXQgaXQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29udGV4dC4gSSBuZWVkIHRvIHNlZSB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIsIHRvIGZpZ3VyZSBvdXQgdGhlIHJhdGlvbmFsZS4gQXJlIHdlIG9wdGltaXppbmcgd3JpdGUgcGVyZm9ybWFuY2U/IEFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgYnVnIG9yIHJhY2UgY29uZGl0aW9uPyBJbXByb3ZpbmcgZXJyb3IgaGFuZGxpbmc/IE9yLCBwZXJoYXBzLCBlbmFibGluZyBzb21lIG5ldyBmZWF0dXJlIG9yIGludGVncmF0aW9uIHdpdGggYW5vdGhlciBwYXJ0IG9mIHRoZSBzeXN0ZW0/IFRoZSBmdW5jdGlvbiYjMzk7cyBuYW1lIGhpbnRzIGF0IGEgbG93LWxldmVsIG9wZXJhdGlvbiBpbnZvbHZpbmcgYmxvY2sgSS9PLCBzbyBhbnl0aGluZyByZWxhdGVkIHRvIGRhdGEgaW50ZWdyaXR5IGFuZCBlZmZpY2llbmN5IGlzIGNyaXRpY2FsIGhlcmUuIExldCYjMzk7cyBnZXQgdG8gdGhlIGRpZmYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leHQ0L3BhZ2UtaW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTUwOlx0XHRiaCA9IGhlYWQgPSBmb2xpb19idWZmZXJzKGZvbGlvKTtcbiA1NTE6XHRcbiA1NTI6XHRcdC8qXG4gNTUzOlx0XHQgKiBJZiBhbnkgYmxvY2tzIGFyZSBiZWluZyB3cml0dGVuIHRvIGFuIGVuY3J5cHRlZCBmaWxlLCBlbmNyeXB0IHRoZW1cbiA1NTQ6XHRcdCAqIGludG8gYSBib3VuY2UgcGFnZS4gIEZvciBzaW1wbGljaXR5LCBqdXN0IGVuY3J5cHQgdW50aWwgdGhlIGxhc3RcbiA1NTU6XHRcdCAqIGJsb2NrIHdoaWNoIG1pZ2h0IGJlIG5lZWRlZC4gIFRoaXMgbWF5IGNhdXNlIHNvbWUgdW5uZWVkZWQgYmxvY2tzXG4gNTU2Olx0XHQgKiAoZS5nLiBob2xlcykgdG8gYmUgdW5uZWNlc3NhcmlseSBlbmNyeXB0ZWQsIGJ1dCB0aGlzIGlzIHJhcmUgYW5kXG4gNTU3Olx0XHQgKiBjYW4mIzM5O3QgaGFwcGVuIGluIHRoZSBjb21tb24gY2FzZSBvZiBibG9ja3NpemUgPT0gUEFHRV9TSVpFLlxuIDU1ODpcdFx0ICpcbiA1NTk6XHRcdCAqIFplcm8gb3V0IGFueSBub24tdXB0b2RhdGUgYnVmZmVycyB0aGF0IGFyZSBub3QgYmVpbmcgd3JpdHRlbiBvdXQsXG4gNTYwOlx0XHQgKiB0byBwcmV2ZW50IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgZmVkIGludG8gdGhlIGNyeXB0b1xuIDU2MTpcdFx0ICogZW5naW5lLlxuIDU2MjpcdFx0ICovXG4gNTYzOlx0XHRpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpIHtcbiA1NjQ6XHRcdFx0Z2ZwX3QgZ2ZwX2ZsYWdzID0gR0ZQX05PRlM7XG4gNTY1Olx0XHRcdHVuc2lnbmVkIGludCBlbmNfYnl0ZXMgPSByb3VuZF91cChsZW4sIGlfYmxvY2tzaXplKGlub2RlKSk7XG4gNTY2Olx0XHRcdHN0cnVjdCBwYWdlICpib3VuY2VfcGFnZTtcbiA1Njc6XHRcbiA1Njg6XHRcdFx0ZG8ge1xuIDU2OTpcdFx0XHRcdGlmICghYnVmZmVyX2FzeW5jX3dyaXRlKGJoKSBcdTAwMjZcdTAwMjYgIWJ1ZmZlcl91cHRvZGF0ZShiaCkpXG4gNTcwOlx0XHRcdFx0XHRmb2xpb196ZXJvX3JhbmdlKGZvbGlvLCBiaF9vZmZzZXQoYmgpLFxuIDU3MTpcdFx0XHRcdFx0XHRcdCBiaC1cdTAwM2ViX3NpemUpO1xuIDU3MjpcdFx0XHR9IHdoaWxlICgoYmggPSBiaC1cdTAwM2ViX3RoaXNfcGFnZSkgIT0gaGVhZCk7XG4gNTczOlx0XG4gNTc0Olx0XHRcdC8qXG4gNTc1Olx0XHRcdCAqIFNpbmNlIGJvdW5jZSBwYWdlIGFsbG9jYXRpb24gdXNlcyBhIG1lbXBvb2wsIHdlIGNhbiBvbmx5IHVzZVxuIDU3NjpcdFx0XHQgKiBhIHdhaXRpbmcgbWFzayAoaS5lLiByZXF1ZXN0IGd1YXJhbnRlZWQgYWxsb2NhdGlvbikgb24gdGhlXG4gNTc3Olx0XHRcdCAqIGZpcnN0IHBhZ2Ugb2YgdGhlIGJpby4gIE90aGVyd2lzZSBpdCBjYW4gZGVhZGxvY2suXG4gNTc4Olx0XHRcdCAqL1xuIDU3OTpcdFx0XHRpZiAoaW8tXHUwMDNlaW9fYmlvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGEgcHJvbWlzaW5nIGFyZWEgZm9yIGZ1enppbmcgd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uIFRoZSBwYXRjaCBpbnRyb2R1Y2VkIGEgbG9vcCB3aXRoaW4gYGV4dDRfYmlvX3dyaXRlX2ZvbGlvYCB0aGF0IHNwZWNpZmljYWxseSB0YXJnZXRzIHplcm9pbmcgb3V0IGJ1ZmZlcnMgdGhhdCBhcmVuJiMzOTt0IHVwLXRvLWRhdGUuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIGEgcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBvdGhlciBidWZmZXItcmVsYXRlZCB2dWxuZXJhYmlsaXRpZXMuIEl0IHNlZW1zIGxpa2UgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbiB3aXRoIGEgc3BlY2lmaWMgcHVycG9zZSwgd2hpY2ggbWFrZXMgaXQgYW4gaWRlYWwgY2FuZGlkYXRlLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgRlNfRU5DUllQVElPTmAgaXMgYWN0dWFsbHkgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgc3VzcGVjdCBpdCBpcywgZ2l2ZW4gdGhhdCBidWZmZXIgemVyb2luZyBjb3VsZCBiZSByZWxhdGVkIHRvIGVuY3J5cHRpb24ga2V5IGhhbmRsaW5nIG9yIGRhdGEgcHJvdGVjdGlvbiwgYnV0IEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGUgY29kZSB0byBiZSBjZXJ0YWluLiBJZiBpdCBpcyB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiwgdGhlbiBJJiMzOTtsbCBuZWVkIHRvIHNldCB0aGUgRVhUNF9GUyBhbmQgRlNfRU5DUllQVElPTiBvcHRpb25zIHdoZW4gY29uZmlndXJpbmcgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBjb21iaW5hdGlvbiBvZiB0aGVzZSB0d28gY29uZmlncyB3aWxsIGFsbG93IHRlc3Rpbmcgb2YgdGhlIGxvZ2ljIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J1ZmZlci5jPTM4NT1zdGF0aWMgdm9pZCBiaF9lbmRfYXN5bmNfcmVhZChzdHJ1Y3QgYmlvICpiaW8pXG4tLVxuZnMvYnVmZmVyLmMtMzg5LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGJoLVx1MDAzZWJfZm9saW8tXHUwMDNlbWFwcGluZy1cdTAwM2Vob3N0O1xuZnMvYnVmZmVyLmM6MzkwOlx0Ym9vbCBkZWNyeXB0ID0gZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSk7XG5mcy9idWZmZXIuYy0zOTEtXHRzdHJ1Y3QgZnN2ZXJpdHlfaW5mbyAqdmkgPSBOVUxMO1xuLS1cbmZzL2V4dDQvaW5vZGUuYz0xMTcwPWludCBleHQ0X2Jsb2NrX3dyaXRlX2JlZ2luKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTEyNjQtXHRcdFx0Zm9saW9femVyb19uZXdfYnVmZmVycyhmb2xpbywgZnJvbSwgdG8pO1xuZnMvZXh0NC9pbm9kZS5jOjEyNjU6XHR9IGVsc2UgaWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKSB7XG5mcy9leHQ0L2lub2RlLmMtMTI2Ni1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfd2FpdDsgaSYjNDM7JiM0MzspIHtcbi0tXG5mcy9leHQ0L2lub2RlLmM9NDAzMT1zdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcbi0tXG5mcy9leHQ0L2lub2RlLmMtNDA4My1cdFx0XHRnb3RvIHVubG9jaztcbmZzL2V4dDQvaW5vZGUuYzo0MDg0Olx0XHRpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpIHtcbmZzL2V4dDQvaW5vZGUuYy00MDg1LVx0XHRcdC8qIFdlIGV4cGVjdCB0aGUga2V5IHRvIGJlIHNldC4gKi9cbi0tXG5mcy9leHQ0L3BhZ2UtaW8uYz00NzE9aW50IGV4dDRfYmlvX3dyaXRlX2ZvbGlvKHN0cnVjdCBleHQ0X2lvX3N1Ym1pdCAqaW8sIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxuZnMvZXh0NC9wYWdlLWlvLmMtNTYyLVx0ICovXG5mcy9leHQ0L3BhZ2UtaW8uYzo1NjM6XHRpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpIHtcbmZzL2V4dDQvcGFnZS1pby5jLTU2NC1cdFx0Z2ZwX3QgZ2ZwX2ZsYWdzID0gR0ZQX05PRlM7XG4tLVxuZnMvZXh0NC9yZWFkcGFnZS5jPTE3OD1zdGF0aWMgdm9pZCBleHQ0X3NldF9iaW9fcG9zdF9yZWFkX2N0eChzdHJ1Y3QgYmlvICpiaW8sXG4tLVxuZnMvZXh0NC9yZWFkcGFnZS5jLTE4My1cbmZzL2V4dDQvcmVhZHBhZ2UuYzoxODQ6XHRpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpXG5mcy9leHQ0L3JlYWRwYWdlLmMtMTg1LVx0XHRwb3N0X3JlYWRfc3RlcHMgfD0gMSBcdTAwM2NcdTAwM2MgU1RFUF9ERUNSWVBUO1xuLS1cbmZzL2YyZnMvY29tcHJlc3MuYz0xMjY3PXN0YXRpYyBpbnQgZjJmc193cml0ZV9jb21wcmVzc2VkX3BhZ2VzKHN0cnVjdCBjb21wcmVzc19jdHggKmNjLFxuLS1cbmZzL2YyZnMvY29tcHJlc3MuYy0xMjg2LVx0XHQuaW9fd2JjID0gd2JjLFxuZnMvZjJmcy9jb21wcmVzcy5jOjEyODc6XHRcdC5lbmNyeXB0ZWQgPSBmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGNjLVx1MDAzZWlub2RlKSA/XG5mcy9mMmZzL2NvbXByZXNzLmMtMTI4OC1cdFx0XHRcdFx0XHRcdFx0XHQxIDogMCxcbi0tXG5mcy9mMmZzL2RhdGEuYz0xMTAzPXN0YXRpYyBzdHJ1Y3QgYmlvICpmMmZzX2dyYWJfcmVhZF9iaW8oc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9mMmZzL2RhdGEuYy0xMTIxLVxuZnMvZjJmcy9kYXRhLmM6MTEyMjpcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSlcbmZzL2YyZnMvZGF0YS5jLTExMjMtXHRcdHBvc3RfcmVhZF9zdGVwcyB8PSBTVEVQX0RFQ1JZUFQ7XG4tLVxuZnMvZjJmcy9kYXRhLmM9Mjk0ND1pbnQgZjJmc19kb193cml0ZV9kYXRhX3BhZ2Uoc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKVxuLS1cbmZzL2YyZnMvZGF0YS5jLTMwMjMtXHRcdGlmIChlcnIpIHtcbmZzL2YyZnMvZGF0YS5jOjMwMjQ6XHRcdFx0aWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKVxuZnMvZjJmcy9kYXRhLmMtMzAyNS1cdFx0XHRcdGZzY3J5cHRfZmluYWxpemVfYm91bmNlX3BhZ2UoXHUwMDI2ZmlvLVx1MDAzZWVuY3J5cHRlZF9wYWdlKTtcbi0tXG5mcy9mMmZzL3NlZ21lbnQuYz0zOTcxPXN0YXRpYyB2b2lkIGRvX3dyaXRlX3BhZ2Uoc3RydWN0IGYyZnNfc3VtbWFyeSAqc3VtLCBzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pXG4tLVxuZnMvZjJmcy9zZWdtZW50LmMtMzk4OS1cdFx0XHRmaW8tXHUwMDNlb2xkX2Jsa2FkZHIsIGZpby1cdTAwM2VuZXdfYmxrYWRkciwgZXJyKTtcbmZzL2YyZnMvc2VnbWVudC5jOjM5OTA6XHRcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGZvbGlvLVx1MDAzZW1hcHBpbmctXHUwMDNlaG9zdCkpXG5mcy9mMmZzL3NlZ21lbnQuYy0zOTkxLVx0XHRcdGZzY3J5cHRfZmluYWxpemVfYm91bmNlX3BhZ2UoXHUwMDI2ZmlvLVx1MDAzZWVuY3J5cHRlZF9wYWdlKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaD05MTc9c3RhdGljIGlubGluZSBib29sIGZzY3J5cHRfaW5vZGVfdXNlc19pbmxpbmVfY3J5cHRvKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuaW5jbHVkZS9saW51eC9mc2NyeXB0LmgtOTIzLS8qKlxuaW5jbHVkZS9saW51eC9mc2NyeXB0Lmg6OTI0OiAqIGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oKSAtIHRlc3Qgd2hldGhlciBhbiBpbm9kZSB1c2VzIGZzLWxheWVyXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaC05MjUtICpcdFx0XHRcdFx0ICBlbmNyeXB0aW9uXG4tLVxuaW5jbHVkZS9saW51eC9mc2NyeXB0LmgtOTMxLSAqL1xuaW5jbHVkZS9saW51eC9mc2NyeXB0Lmg6OTMyOnN0YXRpYyBpbmxpbmUgYm9vbCBmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaC05MzMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBLY29uZmlnIFNjYW4gZm9yIEZpbGUgU3lzdGVtIEVuY3J5cHRpb24qKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGdvZXMgc29tZXRoaW5nIGxpa2UgdGhpcy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29yZSBpc3N1ZSBpcyBmaWxlIHN5c3RlbSBlbmNyeXB0aW9uLCByaWdodD8gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGhpdCB0aGUgYEtjb25maWdgIGZpbGVzLiBUaGF0JiMzOTtzIHRoZSBlc3RhYmxpc2hlZCB3YXkgdG8gdHJhY2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgdG8gbG9jYXRlIG9wdGlvbnMgcmVsYXRlZCB0byBgRlNfRU5DUllQVElPTmAuIFRoYXQmIzM5O2xsIGJlIHRoZSBuYW1lIHRvIGxvb2sgZm9yIGluaXRpYWxseS4gRnJvbSB0aGVyZSBJJiMzOTtsbCBzdGFydCB0cmFja2luZyByZWxldmFudCBjb25maWd1cmF0aW9uIGtub2JzLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBtZW50aW9ucyBvciBkZXBlbmRlbmNpZXMsIGFuZCBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmUgZm9yIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTX0VOQ1JZUFRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY3J5cHRvL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2NyeXB0by9LY29uZmlnOjI6Y29uZmlnIEZTX0VOQ1JZUFRJT05cbmZzL2NyeXB0by9LY29uZmlnLTMtXHRib29sIFwmIzM0O0ZTIEVuY3J5cHRpb24gKFBlci1maWxlIGVuY3J5cHRpb24pXCYjMzQ7XG4tLVxuZnMvY3J5cHRvL0tjb25maWctMjgtIyBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBlbmFibGUgb3B0aW1pemVkIGltcGxlbWVudGF0aW9ucyB0b28uXG5mcy9jcnlwdG8vS2NvbmZpZzoyOTpjb25maWcgRlNfRU5DUllQVElPTl9BTEdTXG5mcy9jcnlwdG8vS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG4tLVxuZnMvY3J5cHRvL0tjb25maWctMzUtXG5mcy9jcnlwdG8vS2NvbmZpZzozNjpjb25maWcgRlNfRU5DUllQVElPTl9JTkxJTkVfQ1JZUFRcbmZzL2NyeXB0by9LY29uZmlnLTM3LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnNjcnlwdCB0byB1c2UgaW5saW5lIGNyeXB0b1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDM4CgkJCQkJCQlvdXRwdXQ6IDEwNwoJCQkJCQkJdGhvdWdodHM6IDM0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZGRpbmcgZW5jcnlwdGlvbi1yZWxhdGVkIGxvZ2ljIHRvIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBgRlNfRU5DUllQVElPTmAgYW5kIG5hdHVyYWxseSBgRVhUNF9GU2AgYXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBoZXJlJiMzNDsuIFRoZSBmdW5jdGlvbiBpdHNlbGYgaXMgY2xlYXJseSBgZXh0NF9iaW9fd3JpdGVfZm9saW9gLCB0aGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuIEdvb2QsIHRoZSBwYXRjaCBsb29rcyBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuCgpJIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhlcmUgd2VyZW4mIzM5O3QgYW55IG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZCwgYnV0IGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyAqc29sZWx5KiB3aXRoaW4gYGV4dDRfYmlvX3dyaXRlX2ZvbGlvYC4gVGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHBhZ2Ugd3JpdHRlbiBiYWNrIGluIGV4dDQsIHdoaWNoIGNvdWxkIGJlIGEgaG90IHBhdGguIEFuZCB0aGUgY2hhbmdlIGlzIGlzb2xhdGVkIGluc2lkZSBhbiBgaWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKWAgYmxvY2suIFNvLCBzcGVjaWZpY2FsbHkgZnV6emluZyB0aGlzIGFyZWEgbG9va3MgcmVhc29uYWJsZS4KCkkmIzM5O20gaW5jbHVkaW5nIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AgaW4gdGhlIGBGb2N1c1N5bWJvbHNgLiBJJiMzOTtsbCBkb3VibGUgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLCBidXQgYEVYVDRfRlNgIGFuZCBgRlNfRU5DUllQVElPTmAgZmVlbCBzZWxmLWV2aWRlbnQuIE5vdyBJJiMzOTttIHJlYWR5IHRvIG1vdmUgb24gdG8gdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7RlNfRU5DUllQVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfYmlvX3dyaXRlX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IHdyaXRlYmFjayBwYXRoIHRvIHplcm8gb3V0IG5vbi11cHRvZGF0ZSBidWZmZXJzIGZvciBlbmNyeXB0ZWQgZmlsZXMsIHByZXZlbnRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvIGVuZ2luZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDssCiAgICAmIzM0O0ZTX0VOQ1JZUFRJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2Jpb193cml0ZV9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCB3cml0ZWJhY2sgcGF0aCB0byB6ZXJvIG91dCBub24tdXB0b2RhdGUgYnVmZmVycyBmb3IgZW5jcnlwdGVkIGZpbGVzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgZmVkIGludG8gdGhlIGNyeXB0byBlbmdpbmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBleHQ0IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM0OjQ2Ljg4NjAwMjY5NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzU3Njk5MTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIixcbiAgICBcIkZTX0VOQ1JZUFRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2Jpb193cml0ZV9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IHdyaXRlYmFjayBwYXRoIHRvIHplcm8gb3V0IG5vbi11cHRvZGF0ZSBidWZmZXJzIGZvciBlbmNyeXB0ZWQgZmlsZXMsIHByZXZlbnRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvIGVuZ2luZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzozNDo0Ni44ODYwMTI0MDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTYxNzQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUzYjRiNzg3MWE5ZjQxYWEyNzhhNWEyZjEyNmM2OTI3NTQxNmExZDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMDc6MzQ6NDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9wYWdlLWlvLmMgYi9mcy9leHQ0L3BhZ2UtaW8uY1xcbmluZGV4IGJjNjc0YWE0YTY1NjBjLi4yZDM4MGI1YTE1MDExNCAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L3BhZ2UtaW8uY1xcbisrKyBiL2ZzL2V4dDQvcGFnZS1pby5jXFxuQEAgLTU1NSwxMiArNTU1LDIyIEBAIGludCBleHQ0X2Jpb193cml0ZV9mb2xpbyhzdHJ1Y3QgZXh0NF9pb19zdWJtaXQgKmlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbiBcXHQgKiBibG9jayB3aGljaCBtaWdodCBiZSBuZWVkZWQuICBUaGlzIG1heSBjYXVzZSBzb21lIHVubmVlZGVkIGJsb2Nrc1xcbiBcXHQgKiAoZS5nLiBob2xlcykgdG8gYmUgdW5uZWNlc3NhcmlseSBlbmNyeXB0ZWQsIGJ1dCB0aGlzIGlzIHJhcmUgYW5kXFxuIFxcdCAqIGNhbid0IGhhcHBlbiBpbiB0aGUgY29tbW9uIGNhc2Ugb2YgYmxvY2tzaXplID09IFBBR0VfU0laRS5cXG4rXFx0ICpcXG4rXFx0ICogWmVybyBvdXQgYW55IG5vbi11cHRvZGF0ZSBidWZmZXJzIHRoYXQgYXJlIG5vdCBiZWluZyB3cml0dGVuIG91dCxcXG4rXFx0ICogdG8gcHJldmVudCB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIGZlZCBpbnRvIHRoZSBjcnlwdG9cXG4rXFx0ICogZW5naW5lLlxcbiBcXHQgKi9cXG4gXFx0aWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKSB7XFxuIFxcdFxcdGdmcF90IGdmcF9mbGFncyA9IEdGUF9OT0ZTO1xcbiBcXHRcXHR1bnNpZ25lZCBpbnQgZW5jX2J5dGVzID0gcm91bmRfdXAobGVuLCBpX2Jsb2Nrc2l6ZShpbm9kZSkpO1xcbiBcXHRcXHRzdHJ1Y3QgcGFnZSAqYm91bmNlX3BhZ2U7XFxuIFxcbitcXHRcXHRkbyB7XFxuK1xcdFxcdFxcdGlmICghYnVmZmVyX2FzeW5jX3dyaXRlKGJoKSBcXHUwMDI2XFx1MDAyNiAhYnVmZmVyX3VwdG9kYXRlKGJoKSlcXG4rXFx0XFx0XFx0XFx0Zm9saW9femVyb19yYW5nZShmb2xpbywgYmhfb2Zmc2V0KGJoKSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IGJoLVxcdTAwM2ViX3NpemUpO1xcbitcXHRcXHR9IHdoaWxlICgoYmggPSBiaC1cXHUwMDNlYl90aGlzX3BhZ2UpICE9IGhlYWQpO1xcbitcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogU2luY2UgYm91bmNlIHBhZ2UgYWxsb2NhdGlvbiB1c2VzIGEgbWVtcG9vbCwgd2UgY2FuIG9ubHkgdXNlXFxuIFxcdFxcdCAqIGEgd2FpdGluZyBtYXNrIChpLmUuIHJlcXVlc3QgZ3VhcmFudGVlZCBhbGxvY2F0aW9uKSBvbiB0aGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6MzQ6NDcuMzg2NjEzMDEyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDI1NzA3NTQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJGU19FTkNSWVBUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9iaW9fd3JpdGVfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCB3cml0ZWJhY2sgcGF0aCB0byB6ZXJvIG91dCBub24tdXB0b2RhdGUgYnVmZmVycyBmb3IgZW5jcnlwdGVkIGZpbGVzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgZmVkIGludG8gdGhlIGNyeXB0byBlbmdpbmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBleHQ0IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1M2I0Yjc4NzFhOWY0MWFhMjc4YTVhMmYxMjZjNjkyNzU0MTZhMWQ4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMDc6MzQ6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L3BhZ2UtaW8uYyBiL2ZzL2V4dDQvcGFnZS1pby5jXG5pbmRleCBiYzY3NGFhNGE2NTYwYy4uMmQzODBiNWExNTAxMTQgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L3BhZ2UtaW8uY1xuKysrIGIvZnMvZXh0NC9wYWdlLWlvLmNcbkBAIC01NTUsMTIgKzU1NSwyMiBAQCBpbnQgZXh0NF9iaW9fd3JpdGVfZm9saW8oc3RydWN0IGV4dDRfaW9fc3VibWl0ICppbywgc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdCAqIGJsb2NrIHdoaWNoIG1pZ2h0IGJlIG5lZWRlZC4gIFRoaXMgbWF5IGNhdXNlIHNvbWUgdW5uZWVkZWQgYmxvY2tzXG4gXHQgKiAoZS5nLiBob2xlcykgdG8gYmUgdW5uZWNlc3NhcmlseSBlbmNyeXB0ZWQsIGJ1dCB0aGlzIGlzIHJhcmUgYW5kXG4gXHQgKiBjYW4ndCBoYXBwZW4gaW4gdGhlIGNvbW1vbiBjYXNlIG9mIGJsb2Nrc2l6ZSA9PSBQQUdFX1NJWkUuXG4rXHQgKlxuK1x0ICogWmVybyBvdXQgYW55IG5vbi11cHRvZGF0ZSBidWZmZXJzIHRoYXQgYXJlIG5vdCBiZWluZyB3cml0dGVuIG91dCxcbitcdCAqIHRvIHByZXZlbnQgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvXG4rXHQgKiBlbmdpbmUuXG4gXHQgKi9cbiBcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSkge1xuIFx0XHRnZnBfdCBnZnBfZmxhZ3MgPSBHRlBfTk9GUztcbiBcdFx0dW5zaWduZWQgaW50IGVuY19ieXRlcyA9IHJvdW5kX3VwKGxlbiwgaV9ibG9ja3NpemUoaW5vZGUpKTtcbiBcdFx0c3RydWN0IHBhZ2UgKmJvdW5jZV9wYWdlO1xuIFxuK1x0XHRkbyB7XG4rXHRcdFx0aWYgKCFidWZmZXJfYXN5bmNfd3JpdGUoYmgpIFx1MDAyNlx1MDAyNiAhYnVmZmVyX3VwdG9kYXRlKGJoKSlcbitcdFx0XHRcdGZvbGlvX3plcm9fcmFuZ2UoZm9saW8sIGJoX29mZnNldChiaCksXG4rXHRcdFx0XHRcdFx0IGJoLVx1MDAzZWJfc2l6ZSk7XG4rXHRcdH0gd2hpbGUgKChiaCA9IGJoLVx1MDAzZWJfdGhpc19wYWdlKSAhPSBoZWFkKTtcbitcbiBcdFx0LypcbiBcdFx0ICogU2luY2UgYm91bmNlIHBhZ2UgYWxsb2NhdGlvbiB1c2VzIGEgbWVtcG9vbCwgd2UgY2FuIG9ubHkgdXNlXG4gXHRcdCAqIGEgd2FpdGluZyBtYXNrIChpLmUuIHJlcXVlc3QgZ3VhcmFudGVlZCBhbGxvY2F0aW9uKSBvbiB0aGVcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM0OjQ3LjM4NjYxNTc1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MTUxNzkyMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFeHQ0IENyeXB0byBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYXBwbGllZCB0byBgZnMvZXh0NC9wYWdlLWlvLmNgLCBzcGVjaWZpY2FsbHkgaG93IGl0J3MgaW1wYWN0aW5nIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AuIEl0IHNlZW1zIHdlJ3ZlIGFkZGVkIGEgY3J1Y2lhbCBsb29wIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGUgY29yZSBvZiB0aGlzIGFkZGl0aW9uIGludm9sdmVzIHplcm9pbmcgb3V0IGJ1ZmZlcnMgdGhhdCBhcmVuJ3QgXCJ1cHRvZGF0ZVwiIGJlZm9yZSB0aGV5IHBvdGVudGlhbGx5IGdldCBwYXNzZWQgdG8gdGhlIGNyeXB0byBlbmdpbmUuIFRoZSBrZXkgY29uZGl0aW9uIGRyaXZpbmcgdGhpcyBpcyBjaGVja2luZyBpZiB0aGUgaW5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSB3cml0ZSBvcGVyYXRpb24gaXMgdXNpbmcgZmlsZXN5c3RlbS1sZXZlbCBlbmNyeXB0aW9uIHZpYSBgZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSlgLiBFc3NlbnRpYWxseSwgdGhlIGFpbSBpcyB0byBlbGltaW5hdGUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgbWFraW5nIGl0cyB3YXkgaW50byB0aGUgY3J5cHRvIHByb2Nlc3MuIFNvLCB0byByZWNhcCwgaWYgd2UncmUgZGVhbGluZyB3aXRoIGVuY3J5cHRlZCBmaWxlcyBhbmQgcGFydHMgb2YgdGhlIGJ1ZmZlciBoYXZlbid0IGJlZW4gd3JpdHRlbiB5ZXQsIHdlJ3JlIHByb2FjdGl2ZWx5IHplcm9pbmcgdGhlbSB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgYW5kIHNlY3VyaXR5LiBUaGF0J3MgYSByZWFzb25hYmxlIGFuZCByZXNwb25zaWJsZSBhcHByb2FjaCB0byBhdm9pZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBMZXQncyBkZWx2ZSBkZWVwZXIgaW50byBgZXh0NF9iaW9fd3JpdGVfZm9saW9gIGl0c2VsZiB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb250ZXh0IGFuZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6MzQ6NTIuMjAxNzk5NTExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NzcyODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfYmlvX3dyaXRlX2ZvbGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvcGFnZS1pby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvcGFnZS1pby5jPTQ1Mz1zdGF0aWMgdm9pZCBpb19zdWJtaXRfYWRkX2JoKHN0cnVjdCBleHQ0X2lvX3N1Ym1pdCAqaW8sXFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYy00NzAtXFxuZnMvZXh0NC9wYWdlLWlvLmM6NDcxOmludCBleHQ0X2Jpb193cml0ZV9mb2xpbyhzdHJ1Y3QgZXh0NF9pb19zdWJtaXQgKmlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbmZzL2V4dDQvcGFnZS1pby5jLTQ3Mi1cXHRcXHRzaXplX3QgbGVuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzozNDo1Mi4yODc1ODEwNTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTkxMDE1NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZSBhYm91dCBhIGNvZGUgcGF0Y2g6XG5cbioqQW5hbHl6aW5nIHRoZSBgZXh0NF9iaW9fd3JpdGVfZm9saW9gIE1vZGlmaWNhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmb2N1cyBvZiB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgb24gYGV4dDRfYmlvX3dyaXRlX2ZvbGlvYC4gVGhhdCBmdW5jdGlvbiBpcyBjZW50cmFsIHRvIGhvdyB0aGUgZXh0NCBmaWxlc3lzdGVtIGhhbmRsZXMgd3JpdGluZyBkYXRhIHRvIGRpc2ssIHNwZWNpZmljYWxseSBhdCB0aGUgZm9saW8gbGV2ZWwsIHdoaWNoIGltcGxpZXMgYSBtb2Rlcm4sIG1vcmUgZWZmaWNpZW50IG1lbW9yeSBtYW5hZ2VtZW50IGFwcHJvYWNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKmNoYW5naW5nKiBhYm91dCBpdC4gTGV0J3MgZGlnIGludG8gdGhlIGNvbnRleHQuIEkgbmVlZCB0byBzZWUgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIHRoZSBiZWZvcmUgYW5kIGFmdGVyLCB0byBmaWd1cmUgb3V0IHRoZSByYXRpb25hbGUuIEFyZSB3ZSBvcHRpbWl6aW5nIHdyaXRlIHBlcmZvcm1hbmNlPyBBZGRyZXNzaW5nIGEgcG90ZW50aWFsIGJ1ZyBvciByYWNlIGNvbmRpdGlvbj8gSW1wcm92aW5nIGVycm9yIGhhbmRsaW5nPyBPciwgcGVyaGFwcywgZW5hYmxpbmcgc29tZSBuZXcgZmVhdHVyZSBvciBpbnRlZ3JhdGlvbiB3aXRoIGFub3RoZXIgcGFydCBvZiB0aGUgc3lzdGVtPyBUaGUgZnVuY3Rpb24ncyBuYW1lIGhpbnRzIGF0IGEgbG93LWxldmVsIG9wZXJhdGlvbiBpbnZvbHZpbmcgYmxvY2sgSS9PLCBzbyBhbnl0aGluZyByZWxhdGVkIHRvIGRhdGEgaW50ZWdyaXR5IGFuZCBlZmZpY2llbmN5IGlzIGNyaXRpY2FsIGhlcmUuIExldCdzIGdldCB0byB0aGUgZGlmZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU3MywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM1OjAwLjg3ODYwMDIzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leHQ0L3BhZ2UtaW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1NTA6XFx0XFx0YmggPSBoZWFkID0gZm9saW9fYnVmZmVycyhmb2xpbyk7XFxuIDU1MTpcXHRcXG4gNTUyOlxcdFxcdC8qXFxuIDU1MzpcXHRcXHQgKiBJZiBhbnkgYmxvY2tzIGFyZSBiZWluZyB3cml0dGVuIHRvIGFuIGVuY3J5cHRlZCBmaWxlLCBlbmNyeXB0IHRoZW1cXG4gNTU0OlxcdFxcdCAqIGludG8gYSBib3VuY2UgcGFnZS4gIEZvciBzaW1wbGljaXR5LCBqdXN0IGVuY3J5cHQgdW50aWwgdGhlIGxhc3RcXG4gNTU1OlxcdFxcdCAqIGJsb2NrIHdoaWNoIG1pZ2h0IGJlIG5lZWRlZC4gIFRoaXMgbWF5IGNhdXNlIHNvbWUgdW5uZWVkZWQgYmxvY2tzXFxuIDU1NjpcXHRcXHQgKiAoZS5nLiBob2xlcykgdG8gYmUgdW5uZWNlc3NhcmlseSBlbmNyeXB0ZWQsIGJ1dCB0aGlzIGlzIHJhcmUgYW5kXFxuIDU1NzpcXHRcXHQgKiBjYW4ndCBoYXBwZW4gaW4gdGhlIGNvbW1vbiBjYXNlIG9mIGJsb2Nrc2l6ZSA9PSBQQUdFX1NJWkUuXFxuIDU1ODpcXHRcXHQgKlxcbiA1NTk6XFx0XFx0ICogWmVybyBvdXQgYW55IG5vbi11cHRvZGF0ZSBidWZmZXJzIHRoYXQgYXJlIG5vdCBiZWluZyB3cml0dGVuIG91dCxcXG4gNTYwOlxcdFxcdCAqIHRvIHByZXZlbnQgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvXFxuIDU2MTpcXHRcXHQgKiBlbmdpbmUuXFxuIDU2MjpcXHRcXHQgKi9cXG4gNTYzOlxcdFxcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSkge1xcbiA1NjQ6XFx0XFx0XFx0Z2ZwX3QgZ2ZwX2ZsYWdzID0gR0ZQX05PRlM7XFxuIDU2NTpcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZW5jX2J5dGVzID0gcm91bmRfdXAobGVuLCBpX2Jsb2Nrc2l6ZShpbm9kZSkpO1xcbiA1NjY6XFx0XFx0XFx0c3RydWN0IHBhZ2UgKmJvdW5jZV9wYWdlO1xcbiA1Njc6XFx0XFxuIDU2ODpcXHRcXHRcXHRkbyB7XFxuIDU2OTpcXHRcXHRcXHRcXHRpZiAoIWJ1ZmZlcl9hc3luY193cml0ZShiaCkgXFx1MDAyNlxcdTAwMjYgIWJ1ZmZlcl91cHRvZGF0ZShiaCkpXFxuIDU3MDpcXHRcXHRcXHRcXHRcXHRmb2xpb196ZXJvX3JhbmdlKGZvbGlvLCBiaF9vZmZzZXQoYmgpLFxcbiA1NzE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IGJoLVxcdTAwM2ViX3NpemUpO1xcbiA1NzI6XFx0XFx0XFx0fSB3aGlsZSAoKGJoID0gYmgtXFx1MDAzZWJfdGhpc19wYWdlKSAhPSBoZWFkKTtcXG4gNTczOlxcdFxcbiA1NzQ6XFx0XFx0XFx0LypcXG4gNTc1OlxcdFxcdFxcdCAqIFNpbmNlIGJvdW5jZSBwYWdlIGFsbG9jYXRpb24gdXNlcyBhIG1lbXBvb2wsIHdlIGNhbiBvbmx5IHVzZVxcbiA1NzY6XFx0XFx0XFx0ICogYSB3YWl0aW5nIG1hc2sgKGkuZS4gcmVxdWVzdCBndWFyYW50ZWVkIGFsbG9jYXRpb24pIG9uIHRoZVxcbiA1Nzc6XFx0XFx0XFx0ICogZmlyc3QgcGFnZSBvZiB0aGUgYmlvLiAgT3RoZXJ3aXNlIGl0IGNhbiBkZWFkbG9jay5cXG4gNTc4OlxcdFxcdFxcdCAqL1xcbiA1Nzk6XFx0XFx0XFx0aWYgKGlvLVxcdTAwM2Vpb19iaW8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM1OjAwLjg3ODcwNzAxM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NzczMDE3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGlkZW50aWZpZWQgYSBwcm9taXNpbmcgYXJlYSBmb3IgZnV6emluZyB3aXRoaW4gdGhlIGV4dDQgZmlsZXN5c3RlbS4gVGhlIHBhdGNoIGludHJvZHVjZWQgYSBsb29wIHdpdGhpbiBgZXh0NF9iaW9fd3JpdGVfZm9saW9gIHRoYXQgc3BlY2lmaWNhbGx5IHRhcmdldHMgemVyb2luZyBvdXQgYnVmZmVycyB0aGF0IGFyZW4ndCB1cC10by1kYXRlLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIGEgcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBvdGhlciBidWZmZXItcmVsYXRlZCB2dWxuZXJhYmlsaXRpZXMuIEl0IHNlZW1zIGxpa2UgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbiB3aXRoIGEgc3BlY2lmaWMgcHVycG9zZSwgd2hpY2ggbWFrZXMgaXQgYW4gaWRlYWwgY2FuZGlkYXRlLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGF0IGBGU19FTkNSWVBUSU9OYCBpcyBhY3R1YWxseSB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBzdXNwZWN0IGl0IGlzLCBnaXZlbiB0aGF0IGJ1ZmZlciB6ZXJvaW5nIGNvdWxkIGJlIHJlbGF0ZWQgdG8gZW5jcnlwdGlvbiBrZXkgaGFuZGxpbmcgb3IgZGF0YSBwcm90ZWN0aW9uLCBidXQgSSdsbCBkb3VibGUtY2hlY2sgdGhlIGNvZGUgdG8gYmUgY2VydGFpbi4gSWYgaXQgaXMgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24sIHRoZW4gSSdsbCBuZWVkIHRvIHNldCB0aGUgRVhUNF9GUyBhbmQgRlNfRU5DUllQVElPTiBvcHRpb25zIHdoZW4gY29uZmlndXJpbmcgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBjb21iaW5hdGlvbiBvZiB0aGVzZSB0d28gY29uZmlncyB3aWxsIGFsbG93IHRlc3Rpbmcgb2YgdGhlIGxvZ2ljIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6MzU6MDQuNjU2MDEyMTU4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjY1MTU0NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnVmZmVyLmM9Mzg1PXN0YXRpYyB2b2lkIGJoX2VuZF9hc3luY19yZWFkKHN0cnVjdCBiaW8gKmJpbylcXG4tLVxcbmZzL2J1ZmZlci5jLTM4OS1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gYmgtXFx1MDAzZWJfZm9saW8tXFx1MDAzZW1hcHBpbmctXFx1MDAzZWhvc3Q7XFxuZnMvYnVmZmVyLmM6MzkwOlxcdGJvb2wgZGVjcnlwdCA9IGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpO1xcbmZzL2J1ZmZlci5jLTM5MS1cXHRzdHJ1Y3QgZnN2ZXJpdHlfaW5mbyAqdmkgPSBOVUxMO1xcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTExNzA9aW50IGV4dDRfYmxvY2tfd3JpdGVfYmVnaW4oaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy0xMjY0LVxcdFxcdFxcdGZvbGlvX3plcm9fbmV3X2J1ZmZlcnMoZm9saW8sIGZyb20sIHRvKTtcXG5mcy9leHQ0L2lub2RlLmM6MTI2NTpcXHR9IGVsc2UgaWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKSB7XFxuZnMvZXh0NC9pbm9kZS5jLTEyNjYtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3dhaXQ7IGkrKykge1xcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTQwMzE9c3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtNDA4My1cXHRcXHRcXHRnb3RvIHVubG9jaztcXG5mcy9leHQ0L2lub2RlLmM6NDA4NDpcXHRcXHRpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpIHtcXG5mcy9leHQ0L2lub2RlLmMtNDA4NS1cXHRcXHRcXHQvKiBXZSBleHBlY3QgdGhlIGtleSB0byBiZSBzZXQuICovXFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYz00NzE9aW50IGV4dDRfYmlvX3dyaXRlX2ZvbGlvKHN0cnVjdCBleHQ0X2lvX3N1Ym1pdCAqaW8sIHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYy01NjItXFx0ICovXFxuZnMvZXh0NC9wYWdlLWlvLmM6NTYzOlxcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSkge1xcbmZzL2V4dDQvcGFnZS1pby5jLTU2NC1cXHRcXHRnZnBfdCBnZnBfZmxhZ3MgPSBHRlBfTk9GUztcXG4tLVxcbmZzL2V4dDQvcmVhZHBhZ2UuYz0xNzg9c3RhdGljIHZvaWQgZXh0NF9zZXRfYmlvX3Bvc3RfcmVhZF9jdHgoc3RydWN0IGJpbyAqYmlvLFxcbi0tXFxuZnMvZXh0NC9yZWFkcGFnZS5jLTE4My1cXG5mcy9leHQ0L3JlYWRwYWdlLmM6MTg0OlxcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSlcXG5mcy9leHQ0L3JlYWRwYWdlLmMtMTg1LVxcdFxcdHBvc3RfcmVhZF9zdGVwcyB8PSAxIFxcdTAwM2NcXHUwMDNjIFNURVBfREVDUllQVDtcXG4tLVxcbmZzL2YyZnMvY29tcHJlc3MuYz0xMjY3PXN0YXRpYyBpbnQgZjJmc193cml0ZV9jb21wcmVzc2VkX3BhZ2VzKHN0cnVjdCBjb21wcmVzc19jdHggKmNjLFxcbi0tXFxuZnMvZjJmcy9jb21wcmVzcy5jLTEyODYtXFx0XFx0LmlvX3diYyA9IHdiYyxcXG5mcy9mMmZzL2NvbXByZXNzLmM6MTI4NzpcXHRcXHQuZW5jcnlwdGVkID0gZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhjYy1cXHUwMDNlaW5vZGUpID9cXG5mcy9mMmZzL2NvbXByZXNzLmMtMTI4OC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQxIDogMCxcXG4tLVxcbmZzL2YyZnMvZGF0YS5jPTExMDM9c3RhdGljIHN0cnVjdCBiaW8gKmYyZnNfZ3JhYl9yZWFkX2JpbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZjJmcy9kYXRhLmMtMTEyMS1cXG5mcy9mMmZzL2RhdGEuYzoxMTIyOlxcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSlcXG5mcy9mMmZzL2RhdGEuYy0xMTIzLVxcdFxcdHBvc3RfcmVhZF9zdGVwcyB8PSBTVEVQX0RFQ1JZUFQ7XFxuLS1cXG5mcy9mMmZzL2RhdGEuYz0yOTQ0PWludCBmMmZzX2RvX3dyaXRlX2RhdGFfcGFnZShzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pXFxuLS1cXG5mcy9mMmZzL2RhdGEuYy0zMDIzLVxcdFxcdGlmIChlcnIpIHtcXG5mcy9mMmZzL2RhdGEuYzozMDI0OlxcdFxcdFxcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSlcXG5mcy9mMmZzL2RhdGEuYy0zMDI1LVxcdFxcdFxcdFxcdGZzY3J5cHRfZmluYWxpemVfYm91bmNlX3BhZ2UoXFx1MDAyNmZpby1cXHUwMDNlZW5jcnlwdGVkX3BhZ2UpO1xcbi0tXFxuZnMvZjJmcy9zZWdtZW50LmM9Mzk3MT1zdGF0aWMgdm9pZCBkb193cml0ZV9wYWdlKHN0cnVjdCBmMmZzX3N1bW1hcnkgKnN1bSwgc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKVxcbi0tXFxuZnMvZjJmcy9zZWdtZW50LmMtMzk4OS1cXHRcXHRcXHRmaW8tXFx1MDAzZW9sZF9ibGthZGRyLCBmaW8tXFx1MDAzZW5ld19ibGthZGRyLCBlcnIpO1xcbmZzL2YyZnMvc2VnbWVudC5jOjM5OTA6XFx0XFx0aWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oZm9saW8tXFx1MDAzZW1hcHBpbmctXFx1MDAzZWhvc3QpKVxcbmZzL2YyZnMvc2VnbWVudC5jLTM5OTEtXFx0XFx0XFx0ZnNjcnlwdF9maW5hbGl6ZV9ib3VuY2VfcGFnZShcXHUwMDI2ZmlvLVxcdTAwM2VlbmNyeXB0ZWRfcGFnZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaD05MTc9c3RhdGljIGlubGluZSBib29sIGZzY3J5cHRfaW5vZGVfdXNlc19pbmxpbmVfY3J5cHRvKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaC05MjMtLyoqXFxuaW5jbHVkZS9saW51eC9mc2NyeXB0Lmg6OTI0OiAqIGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oKSAtIHRlc3Qgd2hldGhlciBhbiBpbm9kZSB1c2VzIGZzLWxheWVyXFxuaW5jbHVkZS9saW51eC9mc2NyeXB0LmgtOTI1LSAqXFx0XFx0XFx0XFx0XFx0ICBlbmNyeXB0aW9uXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaC05MzEtICovXFxuaW5jbHVkZS9saW51eC9mc2NyeXB0Lmg6OTMyOnN0YXRpYyBpbmxpbmUgYm9vbCBmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuaW5jbHVkZS9saW51eC9mc2NyeXB0LmgtOTMzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6MzU6MDcuMzIyNTQ1NTUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyODk5OTQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgS2NvbmZpZyBTY2FuIGZvciBGaWxlIFN5c3RlbSBFbmNyeXB0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGdvZXMgc29tZXRoaW5nIGxpa2UgdGhpcy4gTGV0J3Mgc2VlLi4uIHRoZSBjb3JlIGlzc3VlIGlzIGZpbGUgc3lzdGVtIGVuY3J5cHRpb24sIHJpZ2h0PyBUaW1lIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IG1vdmUgaXMgdG8gaGl0IHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQncyB0aGUgZXN0YWJsaXNoZWQgd2F5IHRvIHRyYWNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIFRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRvIGxvY2F0ZSBvcHRpb25zIHJlbGF0ZWQgdG8gYEZTX0VOQ1JZUFRJT05gLiBUaGF0J2xsIGJlIHRoZSBuYW1lIHRvIGxvb2sgZm9yIGluaXRpYWxseS4gRnJvbSB0aGVyZSBJJ2xsIHN0YXJ0IHRyYWNraW5nIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24ga25vYnMuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgbWVudGlvbnMgb3IgZGVwZW5kZW5jaWVzLCBhbmQgZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJlIGZvciBlbmFibGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNTAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzozNToxMS43NTE1NDk1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2MjkyMzg2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNfRU5DUllQVElPTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvY3J5cHRvL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9jcnlwdG8vS2NvbmZpZzoyOmNvbmZpZyBGU19FTkNSWVBUSU9OXFxuZnMvY3J5cHRvL0tjb25maWctMy1cXHRib29sIFxcXCJGUyBFbmNyeXB0aW9uIChQZXItZmlsZSBlbmNyeXB0aW9uKVxcXCJcXG4tLVxcbmZzL2NyeXB0by9LY29uZmlnLTI4LSMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZW5hYmxlIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbnMgdG9vLlxcbmZzL2NyeXB0by9LY29uZmlnOjI5OmNvbmZpZyBGU19FTkNSWVBUSU9OX0FMR1NcXG5mcy9jcnlwdG8vS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZVxcbi0tXFxuZnMvY3J5cHRvL0tjb25maWctMzUtXFxuZnMvY3J5cHRvL0tjb25maWc6MzY6Y29uZmlnIEZTX0VOQ1JZUFRJT05fSU5MSU5FX0NSWVBUXFxuZnMvY3J5cHRvL0tjb25maWctMzctXFx0Ym9vbCBcXFwiRW5hYmxlIGZzY3J5cHQgdG8gdXNlIGlubGluZSBjcnlwdG9cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM1OjE0LjUxNDQ4MTQ2MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDEyMTAwMjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFkZGluZyBlbmNyeXB0aW9uLXJlbGF0ZWQgbG9naWMgdG8gYGV4dDRfYmlvX3dyaXRlX2ZvbGlvYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIGBGU19FTkNSWVBUSU9OYCBhbmQgbmF0dXJhbGx5IGBFWFQ0X0ZTYCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGhlcmVcIi4gVGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBjbGVhcmx5IGBleHQ0X2Jpb193cml0ZV9mb2xpb2AsIHRoYXQncyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLiBHb29kLCB0aGUgcGF0Y2ggbG9va3MgZnVuY3Rpb25hbGx5IHNvdW5kIGFuZCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5JIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhlcmUgd2VyZW4ndCBhbnkgb3RoZXIgZnVuY3Rpb25zIGludm9sdmVkLCBidXQgaXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzICpzb2xlbHkqIHdpdGhpbiBgZXh0NF9iaW9fd3JpdGVfZm9saW9gLiBUaGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IgZXZlcnkgcGFnZSB3cml0dGVuIGJhY2sgaW4gZXh0NCwgd2hpY2ggY291bGQgYmUgYSBob3QgcGF0aC4gQW5kIHRoZSBjaGFuZ2UgaXMgaXNvbGF0ZWQgaW5zaWRlIGFuIGBpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpYCBibG9jay4gU28sIHNwZWNpZmljYWxseSBmdXp6aW5nIHRoaXMgYXJlYSBsb29rcyByZWFzb25hYmxlLlxuXG5JJ20gaW5jbHVkaW5nIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AgaW4gdGhlIGBGb2N1c1N5bWJvbHNgLiBJJ2xsIGRvdWJsZSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMsIGJ1dCBgRVhUNF9GU2AgYW5kIGBGU19FTkNSWVBUSU9OYCBmZWVsIHNlbGYtZXZpZGVudC4gTm93IEknbSByZWFkeSB0byBtb3ZlIG9uIHRvIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MzgsIk91dHB1dFRva2VucyI6MTA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM1OjIxLjUyNjU4NTU3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzA4OTA4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiLFxuICAgIFwiRlNfRU5DUllQVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfYmlvX3dyaXRlX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgd3JpdGViYWNrIHBhdGggdG8gemVybyBvdXQgbm9uLXVwdG9kYXRlIGJ1ZmZlcnMgZm9yIGVuY3J5cHRlZCBmaWxlcywgcHJldmVudGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIGZlZCBpbnRvIHRoZSBjcnlwdG8gZW5naW5lLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiLFxuICAgIFwiRlNfRU5DUllQVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfYmlvX3dyaXRlX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgd3JpdGViYWNrIHBhdGggdG8gemVybyBvdXQgbm9uLXVwdG9kYXRlIGJ1ZmZlcnMgZm9yIGVuY3J5cHRlZCBmaWxlcywgcHJldmVudGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIGZlZCBpbnRvIHRoZSBjcnlwdG8gZW5naW5lLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowzdhcp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 07:23:56 +0000 UTC FinishedAt: 2026-06-24 07:35:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "FS_ENCRYPTION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "FS_ENCRYPTION" ], "series_id": "4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_bio_write_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7RlNfRU5DUllQVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfYmlvX3dyaXRlX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IHdyaXRlYmFjayBwYXRoIHRvIHplcm8gb3V0IG5vbi11cHRvZGF0ZSBidWZmZXJzIGZvciBlbmNyeXB0ZWQgZmlsZXMsIHByZXZlbnRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvIGVuZ2luZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTNiNGI3ODcxYTlmNDFhYTI3OGE1YTJmMTI2YzY5Mjc1NDE2YTFkOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDA3OjM0OjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvcGFnZS1pby5jIGIvZnMvZXh0NC9wYWdlLWlvLmNcbmluZGV4IGJjNjc0YWE0YTY1NjBjLi4yZDM4MGI1YTE1MDExNCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvcGFnZS1pby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L3BhZ2UtaW8uY1xuQEAgLTU1NSwxMiAmIzQzOzU1NSwyMiBAQCBpbnQgZXh0NF9iaW9fd3JpdGVfZm9saW8oc3RydWN0IGV4dDRfaW9fc3VibWl0ICppbywgc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdCAqIGJsb2NrIHdoaWNoIG1pZ2h0IGJlIG5lZWRlZC4gIFRoaXMgbWF5IGNhdXNlIHNvbWUgdW5uZWVkZWQgYmxvY2tzXG4gXHQgKiAoZS5nLiBob2xlcykgdG8gYmUgdW5uZWNlc3NhcmlseSBlbmNyeXB0ZWQsIGJ1dCB0aGlzIGlzIHJhcmUgYW5kXG4gXHQgKiBjYW4mIzM5O3QgaGFwcGVuIGluIHRoZSBjb21tb24gY2FzZSBvZiBibG9ja3NpemUgPT0gUEFHRV9TSVpFLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogWmVybyBvdXQgYW55IG5vbi11cHRvZGF0ZSBidWZmZXJzIHRoYXQgYXJlIG5vdCBiZWluZyB3cml0dGVuIG91dCxcbiYjNDM7XHQgKiB0byBwcmV2ZW50IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgZmVkIGludG8gdGhlIGNyeXB0b1xuJiM0MztcdCAqIGVuZ2luZS5cbiBcdCAqL1xuIFx0aWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKSB7XG4gXHRcdGdmcF90IGdmcF9mbGFncyA9IEdGUF9OT0ZTO1xuIFx0XHR1bnNpZ25lZCBpbnQgZW5jX2J5dGVzID0gcm91bmRfdXAobGVuLCBpX2Jsb2Nrc2l6ZShpbm9kZSkpO1xuIFx0XHRzdHJ1Y3QgcGFnZSAqYm91bmNlX3BhZ2U7XG4gXG4mIzQzO1x0XHRkbyB7XG4mIzQzO1x0XHRcdGlmICghYnVmZmVyX2FzeW5jX3dyaXRlKGJoKSBcdTAwMjZcdTAwMjYgIWJ1ZmZlcl91cHRvZGF0ZShiaCkpXG4mIzQzO1x0XHRcdFx0Zm9saW9femVyb19yYW5nZShmb2xpbywgYmhfb2Zmc2V0KGJoKSxcbiYjNDM7XHRcdFx0XHRcdFx0IGJoLVx1MDAzZWJfc2l6ZSk7XG4mIzQzO1x0XHR9IHdoaWxlICgoYmggPSBiaC1cdTAwM2ViX3RoaXNfcGFnZSkgIT0gaGVhZCk7XG4mIzQzO1xuIFx0XHQvKlxuIFx0XHQgKiBTaW5jZSBib3VuY2UgcGFnZSBhbGxvY2F0aW9uIHVzZXMgYSBtZW1wb29sLCB3ZSBjYW4gb25seSB1c2VcbiBcdFx0ICogYSB3YWl0aW5nIG1hc2sgKGkuZS4gcmVxdWVzdCBndWFyYW50ZWVkIGFsbG9jYXRpb24pIG9uIHRoZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7RlNfRU5DUllQVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfYmlvX3dyaXRlX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IHdyaXRlYmFjayBwYXRoIHRvIHplcm8gb3V0IG5vbi11cHRvZGF0ZSBidWZmZXJzIGZvciBlbmNyeXB0ZWQgZmlsZXMsIHByZXZlbnRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvIGVuZ2luZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1M2I0Yjc4NzFhOWY0MWFhMjc4YTVhMmYxMjZjNjkyNzU0MTZhMWQ4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMDc6MzQ6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9leHQ0L3BhZ2UtaW8uYyBiL2ZzL2V4dDQvcGFnZS1pby5jCmluZGV4IGJjNjc0YWE0YTY1NjBjLi4yZDM4MGI1YTE1MDExNCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9wYWdlLWlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9wYWdlLWlvLmMKQEAgLTU1NSwxMiAmIzQzOzU1NSwyMiBAQCBpbnQgZXh0NF9iaW9fd3JpdGVfZm9saW8oc3RydWN0IGV4dDRfaW9fc3VibWl0ICppbywgc3RydWN0IGZvbGlvICpmb2xpbywKIAkgKiBibG9jayB3aGljaCBtaWdodCBiZSBuZWVkZWQuICBUaGlzIG1heSBjYXVzZSBzb21lIHVubmVlZGVkIGJsb2NrcwogCSAqIChlLmcuIGhvbGVzKSB0byBiZSB1bm5lY2Vzc2FyaWx5IGVuY3J5cHRlZCwgYnV0IHRoaXMgaXMgcmFyZSBhbmQKIAkgKiBjYW4mIzM5O3QgaGFwcGVuIGluIHRoZSBjb21tb24gY2FzZSBvZiBibG9ja3NpemUgPT0gUEFHRV9TSVpFLgomIzQzOwkgKgomIzQzOwkgKiBaZXJvIG91dCBhbnkgbm9uLXVwdG9kYXRlIGJ1ZmZlcnMgdGhhdCBhcmUgbm90IGJlaW5nIHdyaXR0ZW4gb3V0LAomIzQzOwkgKiB0byBwcmV2ZW50IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgZmVkIGludG8gdGhlIGNyeXB0bwomIzQzOwkgKiBlbmdpbmUuCiAJICovCiAJaWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKSB7CiAJCWdmcF90IGdmcF9mbGFncyA9IEdGUF9OT0ZTOwogCQl1bnNpZ25lZCBpbnQgZW5jX2J5dGVzID0gcm91bmRfdXAobGVuLCBpX2Jsb2Nrc2l6ZShpbm9kZSkpOwogCQlzdHJ1Y3QgcGFnZSAqYm91bmNlX3BhZ2U7CiAKJiM0MzsJCWRvIHsKJiM0MzsJCQlpZiAoIWJ1ZmZlcl9hc3luY193cml0ZShiaCkgJmFtcDsmYW1wOyAhYnVmZmVyX3VwdG9kYXRlKGJoKSkKJiM0MzsJCQkJZm9saW9femVyb19yYW5nZShmb2xpbywgYmhfb2Zmc2V0KGJoKSwKJiM0MzsJCQkJCQkgYmgtJmd0O2Jfc2l6ZSk7CiYjNDM7CQl9IHdoaWxlICgoYmggPSBiaC0mZ3Q7Yl90aGlzX3BhZ2UpICE9IGhlYWQpOwomIzQzOwogCQkvKgogCQkgKiBTaW5jZSBib3VuY2UgcGFnZSBhbGxvY2F0aW9uIHVzZXMgYSBtZW1wb29sLCB3ZSBjYW4gb25seSB1c2UKIAkJICogYSB3YWl0aW5nIG1hc2sgKGkuZS4gcmVxdWVzdCBndWFyYW50ZWVkIGFsbG9jYXRpb24pIG9uIHRoZQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRXh0NCBDcnlwdG8gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYXBwbGllZCB0byBgZnMvZXh0NC9wYWdlLWlvLmNgLCBzcGVjaWZpY2FsbHkgaG93IGl0JiMzOTtzIGltcGFjdGluZyBgZXh0NF9iaW9fd3JpdGVfZm9saW9gLiBJdCBzZWVtcyB3ZSYjMzk7dmUgYWRkZWQgYSBjcnVjaWFsIGxvb3Agd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRoZSBjb3JlIG9mIHRoaXMgYWRkaXRpb24gaW52b2x2ZXMgemVyb2luZyBvdXQgYnVmZmVycyB0aGF0IGFyZW4mIzM5O3QgJiMzNDt1cHRvZGF0ZSYjMzQ7IGJlZm9yZSB0aGV5IHBvdGVudGlhbGx5IGdldCBwYXNzZWQgdG8gdGhlIGNyeXB0byBlbmdpbmUuIFRoZSBrZXkgY29uZGl0aW9uIGRyaXZpbmcgdGhpcyBpcyBjaGVja2luZyBpZiB0aGUgaW5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSB3cml0ZSBvcGVyYXRpb24gaXMgdXNpbmcgZmlsZXN5c3RlbS1sZXZlbCBlbmNyeXB0aW9uIHZpYSBgZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSlgLiBFc3NlbnRpYWxseSwgdGhlIGFpbSBpcyB0byBlbGltaW5hdGUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgbWFraW5nIGl0cyB3YXkgaW50byB0aGUgY3J5cHRvIHByb2Nlc3MuIFNvLCB0byByZWNhcCwgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBlbmNyeXB0ZWQgZmlsZXMgYW5kIHBhcnRzIG9mIHRoZSBidWZmZXIgaGF2ZW4mIzM5O3QgYmVlbiB3cml0dGVuIHlldCwgd2UmIzM5O3JlIHByb2FjdGl2ZWx5IHplcm9pbmcgdGhlbSB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgYW5kIHNlY3VyaXR5LiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBhbmQgcmVzcG9uc2libGUgYXBwcm9hY2ggdG8gYXZvaWQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gTGV0JiMzOTtzIGRlbHZlIGRlZXBlciBpbnRvIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AgaXRzZWxmIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbnRleHQgYW5kIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9iaW9fd3JpdGVfZm9saW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0L3BhZ2UtaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L3BhZ2UtaW8uYz00NTM9c3RhdGljIHZvaWQgaW9fc3VibWl0X2FkZF9iaChzdHJ1Y3QgZXh0NF9pb19zdWJtaXQgKmlvLFxuLS1cbmZzL2V4dDQvcGFnZS1pby5jLTQ3MC1cbmZzL2V4dDQvcGFnZS1pby5jOjQ3MTppbnQgZXh0NF9iaW9fd3JpdGVfZm9saW8oc3RydWN0IGV4dDRfaW9fc3VibWl0ICppbywgc3RydWN0IGZvbGlvICpmb2xpbyxcbmZzL2V4dDQvcGFnZS1pby5jLTQ3Mi1cdFx0c2l6ZV90IGxlbilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTczCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWUgYWJvdXQgYSBjb2RlIHBhdGNoOgoKKipBbmFseXppbmcgdGhlIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AgTW9kaWZpY2F0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBmb2N1cyBvZiB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgb24gYGV4dDRfYmlvX3dyaXRlX2ZvbGlvYC4gVGhhdCBmdW5jdGlvbiBpcyBjZW50cmFsIHRvIGhvdyB0aGUgZXh0NCBmaWxlc3lzdGVtIGhhbmRsZXMgd3JpdGluZyBkYXRhIHRvIGRpc2ssIHNwZWNpZmljYWxseSBhdCB0aGUgZm9saW8gbGV2ZWwsIHdoaWNoIGltcGxpZXMgYSBtb2Rlcm4sIG1vcmUgZWZmaWNpZW50IG1lbW9yeSBtYW5hZ2VtZW50IGFwcHJvYWNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpjaGFuZ2luZyogYWJvdXQgaXQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29udGV4dC4gSSBuZWVkIHRvIHNlZSB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIsIHRvIGZpZ3VyZSBvdXQgdGhlIHJhdGlvbmFsZS4gQXJlIHdlIG9wdGltaXppbmcgd3JpdGUgcGVyZm9ybWFuY2U/IEFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgYnVnIG9yIHJhY2UgY29uZGl0aW9uPyBJbXByb3ZpbmcgZXJyb3IgaGFuZGxpbmc/IE9yLCBwZXJoYXBzLCBlbmFibGluZyBzb21lIG5ldyBmZWF0dXJlIG9yIGludGVncmF0aW9uIHdpdGggYW5vdGhlciBwYXJ0IG9mIHRoZSBzeXN0ZW0/IFRoZSBmdW5jdGlvbiYjMzk7cyBuYW1lIGhpbnRzIGF0IGEgbG93LWxldmVsIG9wZXJhdGlvbiBpbnZvbHZpbmcgYmxvY2sgSS9PLCBzbyBhbnl0aGluZyByZWxhdGVkIHRvIGRhdGEgaW50ZWdyaXR5IGFuZCBlZmZpY2llbmN5IGlzIGNyaXRpY2FsIGhlcmUuIExldCYjMzk7cyBnZXQgdG8gdGhlIGRpZmYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leHQ0L3BhZ2UtaW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTUwOlx0XHRiaCA9IGhlYWQgPSBmb2xpb19idWZmZXJzKGZvbGlvKTtcbiA1NTE6XHRcbiA1NTI6XHRcdC8qXG4gNTUzOlx0XHQgKiBJZiBhbnkgYmxvY2tzIGFyZSBiZWluZyB3cml0dGVuIHRvIGFuIGVuY3J5cHRlZCBmaWxlLCBlbmNyeXB0IHRoZW1cbiA1NTQ6XHRcdCAqIGludG8gYSBib3VuY2UgcGFnZS4gIEZvciBzaW1wbGljaXR5LCBqdXN0IGVuY3J5cHQgdW50aWwgdGhlIGxhc3RcbiA1NTU6XHRcdCAqIGJsb2NrIHdoaWNoIG1pZ2h0IGJlIG5lZWRlZC4gIFRoaXMgbWF5IGNhdXNlIHNvbWUgdW5uZWVkZWQgYmxvY2tzXG4gNTU2Olx0XHQgKiAoZS5nLiBob2xlcykgdG8gYmUgdW5uZWNlc3NhcmlseSBlbmNyeXB0ZWQsIGJ1dCB0aGlzIGlzIHJhcmUgYW5kXG4gNTU3Olx0XHQgKiBjYW4mIzM5O3QgaGFwcGVuIGluIHRoZSBjb21tb24gY2FzZSBvZiBibG9ja3NpemUgPT0gUEFHRV9TSVpFLlxuIDU1ODpcdFx0ICpcbiA1NTk6XHRcdCAqIFplcm8gb3V0IGFueSBub24tdXB0b2RhdGUgYnVmZmVycyB0aGF0IGFyZSBub3QgYmVpbmcgd3JpdHRlbiBvdXQsXG4gNTYwOlx0XHQgKiB0byBwcmV2ZW50IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgZmVkIGludG8gdGhlIGNyeXB0b1xuIDU2MTpcdFx0ICogZW5naW5lLlxuIDU2MjpcdFx0ICovXG4gNTYzOlx0XHRpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpIHtcbiA1NjQ6XHRcdFx0Z2ZwX3QgZ2ZwX2ZsYWdzID0gR0ZQX05PRlM7XG4gNTY1Olx0XHRcdHVuc2lnbmVkIGludCBlbmNfYnl0ZXMgPSByb3VuZF91cChsZW4sIGlfYmxvY2tzaXplKGlub2RlKSk7XG4gNTY2Olx0XHRcdHN0cnVjdCBwYWdlICpib3VuY2VfcGFnZTtcbiA1Njc6XHRcbiA1Njg6XHRcdFx0ZG8ge1xuIDU2OTpcdFx0XHRcdGlmICghYnVmZmVyX2FzeW5jX3dyaXRlKGJoKSBcdTAwMjZcdTAwMjYgIWJ1ZmZlcl91cHRvZGF0ZShiaCkpXG4gNTcwOlx0XHRcdFx0XHRmb2xpb196ZXJvX3JhbmdlKGZvbGlvLCBiaF9vZmZzZXQoYmgpLFxuIDU3MTpcdFx0XHRcdFx0XHRcdCBiaC1cdTAwM2ViX3NpemUpO1xuIDU3MjpcdFx0XHR9IHdoaWxlICgoYmggPSBiaC1cdTAwM2ViX3RoaXNfcGFnZSkgIT0gaGVhZCk7XG4gNTczOlx0XG4gNTc0Olx0XHRcdC8qXG4gNTc1Olx0XHRcdCAqIFNpbmNlIGJvdW5jZSBwYWdlIGFsbG9jYXRpb24gdXNlcyBhIG1lbXBvb2wsIHdlIGNhbiBvbmx5IHVzZVxuIDU3NjpcdFx0XHQgKiBhIHdhaXRpbmcgbWFzayAoaS5lLiByZXF1ZXN0IGd1YXJhbnRlZWQgYWxsb2NhdGlvbikgb24gdGhlXG4gNTc3Olx0XHRcdCAqIGZpcnN0IHBhZ2Ugb2YgdGhlIGJpby4gIE90aGVyd2lzZSBpdCBjYW4gZGVhZGxvY2suXG4gNTc4Olx0XHRcdCAqL1xuIDU3OTpcdFx0XHRpZiAoaW8tXHUwMDNlaW9fYmlvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGEgcHJvbWlzaW5nIGFyZWEgZm9yIGZ1enppbmcgd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uIFRoZSBwYXRjaCBpbnRyb2R1Y2VkIGEgbG9vcCB3aXRoaW4gYGV4dDRfYmlvX3dyaXRlX2ZvbGlvYCB0aGF0IHNwZWNpZmljYWxseSB0YXJnZXRzIHplcm9pbmcgb3V0IGJ1ZmZlcnMgdGhhdCBhcmVuJiMzOTt0IHVwLXRvLWRhdGUuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIGEgcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBvdGhlciBidWZmZXItcmVsYXRlZCB2dWxuZXJhYmlsaXRpZXMuIEl0IHNlZW1zIGxpa2UgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbiB3aXRoIGEgc3BlY2lmaWMgcHVycG9zZSwgd2hpY2ggbWFrZXMgaXQgYW4gaWRlYWwgY2FuZGlkYXRlLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgRlNfRU5DUllQVElPTmAgaXMgYWN0dWFsbHkgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgc3VzcGVjdCBpdCBpcywgZ2l2ZW4gdGhhdCBidWZmZXIgemVyb2luZyBjb3VsZCBiZSByZWxhdGVkIHRvIGVuY3J5cHRpb24ga2V5IGhhbmRsaW5nIG9yIGRhdGEgcHJvdGVjdGlvbiwgYnV0IEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGUgY29kZSB0byBiZSBjZXJ0YWluLiBJZiBpdCBpcyB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiwgdGhlbiBJJiMzOTtsbCBuZWVkIHRvIHNldCB0aGUgRVhUNF9GUyBhbmQgRlNfRU5DUllQVElPTiBvcHRpb25zIHdoZW4gY29uZmlndXJpbmcgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBjb21iaW5hdGlvbiBvZiB0aGVzZSB0d28gY29uZmlncyB3aWxsIGFsbG93IHRlc3Rpbmcgb2YgdGhlIGxvZ2ljIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J1ZmZlci5jPTM4NT1zdGF0aWMgdm9pZCBiaF9lbmRfYXN5bmNfcmVhZChzdHJ1Y3QgYmlvICpiaW8pXG4tLVxuZnMvYnVmZmVyLmMtMzg5LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGJoLVx1MDAzZWJfZm9saW8tXHUwMDNlbWFwcGluZy1cdTAwM2Vob3N0O1xuZnMvYnVmZmVyLmM6MzkwOlx0Ym9vbCBkZWNyeXB0ID0gZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSk7XG5mcy9idWZmZXIuYy0zOTEtXHRzdHJ1Y3QgZnN2ZXJpdHlfaW5mbyAqdmkgPSBOVUxMO1xuLS1cbmZzL2V4dDQvaW5vZGUuYz0xMTcwPWludCBleHQ0X2Jsb2NrX3dyaXRlX2JlZ2luKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTEyNjQtXHRcdFx0Zm9saW9femVyb19uZXdfYnVmZmVycyhmb2xpbywgZnJvbSwgdG8pO1xuZnMvZXh0NC9pbm9kZS5jOjEyNjU6XHR9IGVsc2UgaWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKSB7XG5mcy9leHQ0L2lub2RlLmMtMTI2Ni1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfd2FpdDsgaSYjNDM7JiM0MzspIHtcbi0tXG5mcy9leHQ0L2lub2RlLmM9NDAzMT1zdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcbi0tXG5mcy9leHQ0L2lub2RlLmMtNDA4My1cdFx0XHRnb3RvIHVubG9jaztcbmZzL2V4dDQvaW5vZGUuYzo0MDg0Olx0XHRpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpIHtcbmZzL2V4dDQvaW5vZGUuYy00MDg1LVx0XHRcdC8qIFdlIGV4cGVjdCB0aGUga2V5IHRvIGJlIHNldC4gKi9cbi0tXG5mcy9leHQ0L3BhZ2UtaW8uYz00NzE9aW50IGV4dDRfYmlvX3dyaXRlX2ZvbGlvKHN0cnVjdCBleHQ0X2lvX3N1Ym1pdCAqaW8sIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxuZnMvZXh0NC9wYWdlLWlvLmMtNTYyLVx0ICovXG5mcy9leHQ0L3BhZ2UtaW8uYzo1NjM6XHRpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpIHtcbmZzL2V4dDQvcGFnZS1pby5jLTU2NC1cdFx0Z2ZwX3QgZ2ZwX2ZsYWdzID0gR0ZQX05PRlM7XG4tLVxuZnMvZXh0NC9yZWFkcGFnZS5jPTE3OD1zdGF0aWMgdm9pZCBleHQ0X3NldF9iaW9fcG9zdF9yZWFkX2N0eChzdHJ1Y3QgYmlvICpiaW8sXG4tLVxuZnMvZXh0NC9yZWFkcGFnZS5jLTE4My1cbmZzL2V4dDQvcmVhZHBhZ2UuYzoxODQ6XHRpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpXG5mcy9leHQ0L3JlYWRwYWdlLmMtMTg1LVx0XHRwb3N0X3JlYWRfc3RlcHMgfD0gMSBcdTAwM2NcdTAwM2MgU1RFUF9ERUNSWVBUO1xuLS1cbmZzL2YyZnMvY29tcHJlc3MuYz0xMjY3PXN0YXRpYyBpbnQgZjJmc193cml0ZV9jb21wcmVzc2VkX3BhZ2VzKHN0cnVjdCBjb21wcmVzc19jdHggKmNjLFxuLS1cbmZzL2YyZnMvY29tcHJlc3MuYy0xMjg2LVx0XHQuaW9fd2JjID0gd2JjLFxuZnMvZjJmcy9jb21wcmVzcy5jOjEyODc6XHRcdC5lbmNyeXB0ZWQgPSBmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGNjLVx1MDAzZWlub2RlKSA/XG5mcy9mMmZzL2NvbXByZXNzLmMtMTI4OC1cdFx0XHRcdFx0XHRcdFx0XHQxIDogMCxcbi0tXG5mcy9mMmZzL2RhdGEuYz0xMTAzPXN0YXRpYyBzdHJ1Y3QgYmlvICpmMmZzX2dyYWJfcmVhZF9iaW8oc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9mMmZzL2RhdGEuYy0xMTIxLVxuZnMvZjJmcy9kYXRhLmM6MTEyMjpcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSlcbmZzL2YyZnMvZGF0YS5jLTExMjMtXHRcdHBvc3RfcmVhZF9zdGVwcyB8PSBTVEVQX0RFQ1JZUFQ7XG4tLVxuZnMvZjJmcy9kYXRhLmM9Mjk0ND1pbnQgZjJmc19kb193cml0ZV9kYXRhX3BhZ2Uoc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKVxuLS1cbmZzL2YyZnMvZGF0YS5jLTMwMjMtXHRcdGlmIChlcnIpIHtcbmZzL2YyZnMvZGF0YS5jOjMwMjQ6XHRcdFx0aWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKVxuZnMvZjJmcy9kYXRhLmMtMzAyNS1cdFx0XHRcdGZzY3J5cHRfZmluYWxpemVfYm91bmNlX3BhZ2UoXHUwMDI2ZmlvLVx1MDAzZWVuY3J5cHRlZF9wYWdlKTtcbi0tXG5mcy9mMmZzL3NlZ21lbnQuYz0zOTcxPXN0YXRpYyB2b2lkIGRvX3dyaXRlX3BhZ2Uoc3RydWN0IGYyZnNfc3VtbWFyeSAqc3VtLCBzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pXG4tLVxuZnMvZjJmcy9zZWdtZW50LmMtMzk4OS1cdFx0XHRmaW8tXHUwMDNlb2xkX2Jsa2FkZHIsIGZpby1cdTAwM2VuZXdfYmxrYWRkciwgZXJyKTtcbmZzL2YyZnMvc2VnbWVudC5jOjM5OTA6XHRcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGZvbGlvLVx1MDAzZW1hcHBpbmctXHUwMDNlaG9zdCkpXG5mcy9mMmZzL3NlZ21lbnQuYy0zOTkxLVx0XHRcdGZzY3J5cHRfZmluYWxpemVfYm91bmNlX3BhZ2UoXHUwMDI2ZmlvLVx1MDAzZWVuY3J5cHRlZF9wYWdlKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaD05MTc9c3RhdGljIGlubGluZSBib29sIGZzY3J5cHRfaW5vZGVfdXNlc19pbmxpbmVfY3J5cHRvKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuaW5jbHVkZS9saW51eC9mc2NyeXB0LmgtOTIzLS8qKlxuaW5jbHVkZS9saW51eC9mc2NyeXB0Lmg6OTI0OiAqIGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oKSAtIHRlc3Qgd2hldGhlciBhbiBpbm9kZSB1c2VzIGZzLWxheWVyXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaC05MjUtICpcdFx0XHRcdFx0ICBlbmNyeXB0aW9uXG4tLVxuaW5jbHVkZS9saW51eC9mc2NyeXB0LmgtOTMxLSAqL1xuaW5jbHVkZS9saW51eC9mc2NyeXB0Lmg6OTMyOnN0YXRpYyBpbmxpbmUgYm9vbCBmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaC05MzMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBLY29uZmlnIFNjYW4gZm9yIEZpbGUgU3lzdGVtIEVuY3J5cHRpb24qKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGdvZXMgc29tZXRoaW5nIGxpa2UgdGhpcy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29yZSBpc3N1ZSBpcyBmaWxlIHN5c3RlbSBlbmNyeXB0aW9uLCByaWdodD8gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGhpdCB0aGUgYEtjb25maWdgIGZpbGVzLiBUaGF0JiMzOTtzIHRoZSBlc3RhYmxpc2hlZCB3YXkgdG8gdHJhY2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgdG8gbG9jYXRlIG9wdGlvbnMgcmVsYXRlZCB0byBgRlNfRU5DUllQVElPTmAuIFRoYXQmIzM5O2xsIGJlIHRoZSBuYW1lIHRvIGxvb2sgZm9yIGluaXRpYWxseS4gRnJvbSB0aGVyZSBJJiMzOTtsbCBzdGFydCB0cmFja2luZyByZWxldmFudCBjb25maWd1cmF0aW9uIGtub2JzLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBtZW50aW9ucyBvciBkZXBlbmRlbmNpZXMsIGFuZCBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmUgZm9yIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTX0VOQ1JZUFRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY3J5cHRvL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2NyeXB0by9LY29uZmlnOjI6Y29uZmlnIEZTX0VOQ1JZUFRJT05cbmZzL2NyeXB0by9LY29uZmlnLTMtXHRib29sIFwmIzM0O0ZTIEVuY3J5cHRpb24gKFBlci1maWxlIGVuY3J5cHRpb24pXCYjMzQ7XG4tLVxuZnMvY3J5cHRvL0tjb25maWctMjgtIyBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBlbmFibGUgb3B0aW1pemVkIGltcGxlbWVudGF0aW9ucyB0b28uXG5mcy9jcnlwdG8vS2NvbmZpZzoyOTpjb25maWcgRlNfRU5DUllQVElPTl9BTEdTXG5mcy9jcnlwdG8vS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG4tLVxuZnMvY3J5cHRvL0tjb25maWctMzUtXG5mcy9jcnlwdG8vS2NvbmZpZzozNjpjb25maWcgRlNfRU5DUllQVElPTl9JTkxJTkVfQ1JZUFRcbmZzL2NyeXB0by9LY29uZmlnLTM3LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnNjcnlwdCB0byB1c2UgaW5saW5lIGNyeXB0b1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDM4CgkJCQkJCQlvdXRwdXQ6IDEwNwoJCQkJCQkJdGhvdWdodHM6IDM0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZGRpbmcgZW5jcnlwdGlvbi1yZWxhdGVkIGxvZ2ljIHRvIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBgRlNfRU5DUllQVElPTmAgYW5kIG5hdHVyYWxseSBgRVhUNF9GU2AgYXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBoZXJlJiMzNDsuIFRoZSBmdW5jdGlvbiBpdHNlbGYgaXMgY2xlYXJseSBgZXh0NF9iaW9fd3JpdGVfZm9saW9gLCB0aGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuIEdvb2QsIHRoZSBwYXRjaCBsb29rcyBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuCgpJIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhlcmUgd2VyZW4mIzM5O3QgYW55IG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZCwgYnV0IGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyAqc29sZWx5KiB3aXRoaW4gYGV4dDRfYmlvX3dyaXRlX2ZvbGlvYC4gVGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHBhZ2Ugd3JpdHRlbiBiYWNrIGluIGV4dDQsIHdoaWNoIGNvdWxkIGJlIGEgaG90IHBhdGguIEFuZCB0aGUgY2hhbmdlIGlzIGlzb2xhdGVkIGluc2lkZSBhbiBgaWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKWAgYmxvY2suIFNvLCBzcGVjaWZpY2FsbHkgZnV6emluZyB0aGlzIGFyZWEgbG9va3MgcmVhc29uYWJsZS4KCkkmIzM5O20gaW5jbHVkaW5nIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AgaW4gdGhlIGBGb2N1c1N5bWJvbHNgLiBJJiMzOTtsbCBkb3VibGUgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLCBidXQgYEVYVDRfRlNgIGFuZCBgRlNfRU5DUllQVElPTmAgZmVlbCBzZWxmLWV2aWRlbnQuIE5vdyBJJiMzOTttIHJlYWR5IHRvIG1vdmUgb24gdG8gdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7RlNfRU5DUllQVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfYmlvX3dyaXRlX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IHdyaXRlYmFjayBwYXRoIHRvIHplcm8gb3V0IG5vbi11cHRvZGF0ZSBidWZmZXJzIGZvciBlbmNyeXB0ZWQgZmlsZXMsIHByZXZlbnRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvIGVuZ2luZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDssCiAgICAmIzM0O0ZTX0VOQ1JZUFRJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2Jpb193cml0ZV9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCB3cml0ZWJhY2sgcGF0aCB0byB6ZXJvIG91dCBub24tdXB0b2RhdGUgYnVmZmVycyBmb3IgZW5jcnlwdGVkIGZpbGVzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgZmVkIGludG8gdGhlIGNyeXB0byBlbmdpbmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBleHQ0IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM0OjQ2Ljg4NjAwMjY5NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzU3Njk5MTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIixcbiAgICBcIkZTX0VOQ1JZUFRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2Jpb193cml0ZV9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IHdyaXRlYmFjayBwYXRoIHRvIHplcm8gb3V0IG5vbi11cHRvZGF0ZSBidWZmZXJzIGZvciBlbmNyeXB0ZWQgZmlsZXMsIHByZXZlbnRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvIGVuZ2luZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzozNDo0Ni44ODYwMTI0MDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTYxNzQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUzYjRiNzg3MWE5ZjQxYWEyNzhhNWEyZjEyNmM2OTI3NTQxNmExZDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMDc6MzQ6NDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9wYWdlLWlvLmMgYi9mcy9leHQ0L3BhZ2UtaW8uY1xcbmluZGV4IGJjNjc0YWE0YTY1NjBjLi4yZDM4MGI1YTE1MDExNCAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L3BhZ2UtaW8uY1xcbisrKyBiL2ZzL2V4dDQvcGFnZS1pby5jXFxuQEAgLTU1NSwxMiArNTU1LDIyIEBAIGludCBleHQ0X2Jpb193cml0ZV9mb2xpbyhzdHJ1Y3QgZXh0NF9pb19zdWJtaXQgKmlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbiBcXHQgKiBibG9jayB3aGljaCBtaWdodCBiZSBuZWVkZWQuICBUaGlzIG1heSBjYXVzZSBzb21lIHVubmVlZGVkIGJsb2Nrc1xcbiBcXHQgKiAoZS5nLiBob2xlcykgdG8gYmUgdW5uZWNlc3NhcmlseSBlbmNyeXB0ZWQsIGJ1dCB0aGlzIGlzIHJhcmUgYW5kXFxuIFxcdCAqIGNhbid0IGhhcHBlbiBpbiB0aGUgY29tbW9uIGNhc2Ugb2YgYmxvY2tzaXplID09IFBBR0VfU0laRS5cXG4rXFx0ICpcXG4rXFx0ICogWmVybyBvdXQgYW55IG5vbi11cHRvZGF0ZSBidWZmZXJzIHRoYXQgYXJlIG5vdCBiZWluZyB3cml0dGVuIG91dCxcXG4rXFx0ICogdG8gcHJldmVudCB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIGZlZCBpbnRvIHRoZSBjcnlwdG9cXG4rXFx0ICogZW5naW5lLlxcbiBcXHQgKi9cXG4gXFx0aWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKSB7XFxuIFxcdFxcdGdmcF90IGdmcF9mbGFncyA9IEdGUF9OT0ZTO1xcbiBcXHRcXHR1bnNpZ25lZCBpbnQgZW5jX2J5dGVzID0gcm91bmRfdXAobGVuLCBpX2Jsb2Nrc2l6ZShpbm9kZSkpO1xcbiBcXHRcXHRzdHJ1Y3QgcGFnZSAqYm91bmNlX3BhZ2U7XFxuIFxcbitcXHRcXHRkbyB7XFxuK1xcdFxcdFxcdGlmICghYnVmZmVyX2FzeW5jX3dyaXRlKGJoKSBcXHUwMDI2XFx1MDAyNiAhYnVmZmVyX3VwdG9kYXRlKGJoKSlcXG4rXFx0XFx0XFx0XFx0Zm9saW9femVyb19yYW5nZShmb2xpbywgYmhfb2Zmc2V0KGJoKSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IGJoLVxcdTAwM2ViX3NpemUpO1xcbitcXHRcXHR9IHdoaWxlICgoYmggPSBiaC1cXHUwMDNlYl90aGlzX3BhZ2UpICE9IGhlYWQpO1xcbitcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogU2luY2UgYm91bmNlIHBhZ2UgYWxsb2NhdGlvbiB1c2VzIGEgbWVtcG9vbCwgd2UgY2FuIG9ubHkgdXNlXFxuIFxcdFxcdCAqIGEgd2FpdGluZyBtYXNrIChpLmUuIHJlcXVlc3QgZ3VhcmFudGVlZCBhbGxvY2F0aW9uKSBvbiB0aGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6MzQ6NDcuMzg2NjEzMDEyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDI1NzA3NTQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJGU19FTkNSWVBUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9iaW9fd3JpdGVfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCB3cml0ZWJhY2sgcGF0aCB0byB6ZXJvIG91dCBub24tdXB0b2RhdGUgYnVmZmVycyBmb3IgZW5jcnlwdGVkIGZpbGVzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgZmVkIGludG8gdGhlIGNyeXB0byBlbmdpbmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBleHQ0IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1M2I0Yjc4NzFhOWY0MWFhMjc4YTVhMmYxMjZjNjkyNzU0MTZhMWQ4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMDc6MzQ6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L3BhZ2UtaW8uYyBiL2ZzL2V4dDQvcGFnZS1pby5jXG5pbmRleCBiYzY3NGFhNGE2NTYwYy4uMmQzODBiNWExNTAxMTQgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L3BhZ2UtaW8uY1xuKysrIGIvZnMvZXh0NC9wYWdlLWlvLmNcbkBAIC01NTUsMTIgKzU1NSwyMiBAQCBpbnQgZXh0NF9iaW9fd3JpdGVfZm9saW8oc3RydWN0IGV4dDRfaW9fc3VibWl0ICppbywgc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdCAqIGJsb2NrIHdoaWNoIG1pZ2h0IGJlIG5lZWRlZC4gIFRoaXMgbWF5IGNhdXNlIHNvbWUgdW5uZWVkZWQgYmxvY2tzXG4gXHQgKiAoZS5nLiBob2xlcykgdG8gYmUgdW5uZWNlc3NhcmlseSBlbmNyeXB0ZWQsIGJ1dCB0aGlzIGlzIHJhcmUgYW5kXG4gXHQgKiBjYW4ndCBoYXBwZW4gaW4gdGhlIGNvbW1vbiBjYXNlIG9mIGJsb2Nrc2l6ZSA9PSBQQUdFX1NJWkUuXG4rXHQgKlxuK1x0ICogWmVybyBvdXQgYW55IG5vbi11cHRvZGF0ZSBidWZmZXJzIHRoYXQgYXJlIG5vdCBiZWluZyB3cml0dGVuIG91dCxcbitcdCAqIHRvIHByZXZlbnQgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvXG4rXHQgKiBlbmdpbmUuXG4gXHQgKi9cbiBcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSkge1xuIFx0XHRnZnBfdCBnZnBfZmxhZ3MgPSBHRlBfTk9GUztcbiBcdFx0dW5zaWduZWQgaW50IGVuY19ieXRlcyA9IHJvdW5kX3VwKGxlbiwgaV9ibG9ja3NpemUoaW5vZGUpKTtcbiBcdFx0c3RydWN0IHBhZ2UgKmJvdW5jZV9wYWdlO1xuIFxuK1x0XHRkbyB7XG4rXHRcdFx0aWYgKCFidWZmZXJfYXN5bmNfd3JpdGUoYmgpIFx1MDAyNlx1MDAyNiAhYnVmZmVyX3VwdG9kYXRlKGJoKSlcbitcdFx0XHRcdGZvbGlvX3plcm9fcmFuZ2UoZm9saW8sIGJoX29mZnNldChiaCksXG4rXHRcdFx0XHRcdFx0IGJoLVx1MDAzZWJfc2l6ZSk7XG4rXHRcdH0gd2hpbGUgKChiaCA9IGJoLVx1MDAzZWJfdGhpc19wYWdlKSAhPSBoZWFkKTtcbitcbiBcdFx0LypcbiBcdFx0ICogU2luY2UgYm91bmNlIHBhZ2UgYWxsb2NhdGlvbiB1c2VzIGEgbWVtcG9vbCwgd2UgY2FuIG9ubHkgdXNlXG4gXHRcdCAqIGEgd2FpdGluZyBtYXNrIChpLmUuIHJlcXVlc3QgZ3VhcmFudGVlZCBhbGxvY2F0aW9uKSBvbiB0aGVcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM0OjQ3LjM4NjYxNTc1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MTUxNzkyMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFeHQ0IENyeXB0byBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYXBwbGllZCB0byBgZnMvZXh0NC9wYWdlLWlvLmNgLCBzcGVjaWZpY2FsbHkgaG93IGl0J3MgaW1wYWN0aW5nIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AuIEl0IHNlZW1zIHdlJ3ZlIGFkZGVkIGEgY3J1Y2lhbCBsb29wIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGUgY29yZSBvZiB0aGlzIGFkZGl0aW9uIGludm9sdmVzIHplcm9pbmcgb3V0IGJ1ZmZlcnMgdGhhdCBhcmVuJ3QgXCJ1cHRvZGF0ZVwiIGJlZm9yZSB0aGV5IHBvdGVudGlhbGx5IGdldCBwYXNzZWQgdG8gdGhlIGNyeXB0byBlbmdpbmUuIFRoZSBrZXkgY29uZGl0aW9uIGRyaXZpbmcgdGhpcyBpcyBjaGVja2luZyBpZiB0aGUgaW5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSB3cml0ZSBvcGVyYXRpb24gaXMgdXNpbmcgZmlsZXN5c3RlbS1sZXZlbCBlbmNyeXB0aW9uIHZpYSBgZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSlgLiBFc3NlbnRpYWxseSwgdGhlIGFpbSBpcyB0byBlbGltaW5hdGUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgbWFraW5nIGl0cyB3YXkgaW50byB0aGUgY3J5cHRvIHByb2Nlc3MuIFNvLCB0byByZWNhcCwgaWYgd2UncmUgZGVhbGluZyB3aXRoIGVuY3J5cHRlZCBmaWxlcyBhbmQgcGFydHMgb2YgdGhlIGJ1ZmZlciBoYXZlbid0IGJlZW4gd3JpdHRlbiB5ZXQsIHdlJ3JlIHByb2FjdGl2ZWx5IHplcm9pbmcgdGhlbSB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgYW5kIHNlY3VyaXR5LiBUaGF0J3MgYSByZWFzb25hYmxlIGFuZCByZXNwb25zaWJsZSBhcHByb2FjaCB0byBhdm9pZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBMZXQncyBkZWx2ZSBkZWVwZXIgaW50byBgZXh0NF9iaW9fd3JpdGVfZm9saW9gIGl0c2VsZiB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb250ZXh0IGFuZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6MzQ6NTIuMjAxNzk5NTExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NzcyODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfYmlvX3dyaXRlX2ZvbGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvcGFnZS1pby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvcGFnZS1pby5jPTQ1Mz1zdGF0aWMgdm9pZCBpb19zdWJtaXRfYWRkX2JoKHN0cnVjdCBleHQ0X2lvX3N1Ym1pdCAqaW8sXFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYy00NzAtXFxuZnMvZXh0NC9wYWdlLWlvLmM6NDcxOmludCBleHQ0X2Jpb193cml0ZV9mb2xpbyhzdHJ1Y3QgZXh0NF9pb19zdWJtaXQgKmlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbmZzL2V4dDQvcGFnZS1pby5jLTQ3Mi1cXHRcXHRzaXplX3QgbGVuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzozNDo1Mi4yODc1ODEwNTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTkxMDE1NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZSBhYm91dCBhIGNvZGUgcGF0Y2g6XG5cbioqQW5hbHl6aW5nIHRoZSBgZXh0NF9iaW9fd3JpdGVfZm9saW9gIE1vZGlmaWNhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmb2N1cyBvZiB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgb24gYGV4dDRfYmlvX3dyaXRlX2ZvbGlvYC4gVGhhdCBmdW5jdGlvbiBpcyBjZW50cmFsIHRvIGhvdyB0aGUgZXh0NCBmaWxlc3lzdGVtIGhhbmRsZXMgd3JpdGluZyBkYXRhIHRvIGRpc2ssIHNwZWNpZmljYWxseSBhdCB0aGUgZm9saW8gbGV2ZWwsIHdoaWNoIGltcGxpZXMgYSBtb2Rlcm4sIG1vcmUgZWZmaWNpZW50IG1lbW9yeSBtYW5hZ2VtZW50IGFwcHJvYWNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKmNoYW5naW5nKiBhYm91dCBpdC4gTGV0J3MgZGlnIGludG8gdGhlIGNvbnRleHQuIEkgbmVlZCB0byBzZWUgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIHRoZSBiZWZvcmUgYW5kIGFmdGVyLCB0byBmaWd1cmUgb3V0IHRoZSByYXRpb25hbGUuIEFyZSB3ZSBvcHRpbWl6aW5nIHdyaXRlIHBlcmZvcm1hbmNlPyBBZGRyZXNzaW5nIGEgcG90ZW50aWFsIGJ1ZyBvciByYWNlIGNvbmRpdGlvbj8gSW1wcm92aW5nIGVycm9yIGhhbmRsaW5nPyBPciwgcGVyaGFwcywgZW5hYmxpbmcgc29tZSBuZXcgZmVhdHVyZSBvciBpbnRlZ3JhdGlvbiB3aXRoIGFub3RoZXIgcGFydCBvZiB0aGUgc3lzdGVtPyBUaGUgZnVuY3Rpb24ncyBuYW1lIGhpbnRzIGF0IGEgbG93LWxldmVsIG9wZXJhdGlvbiBpbnZvbHZpbmcgYmxvY2sgSS9PLCBzbyBhbnl0aGluZyByZWxhdGVkIHRvIGRhdGEgaW50ZWdyaXR5IGFuZCBlZmZpY2llbmN5IGlzIGNyaXRpY2FsIGhlcmUuIExldCdzIGdldCB0byB0aGUgZGlmZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU3MywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM1OjAwLjg3ODYwMDIzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leHQ0L3BhZ2UtaW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1NTA6XFx0XFx0YmggPSBoZWFkID0gZm9saW9fYnVmZmVycyhmb2xpbyk7XFxuIDU1MTpcXHRcXG4gNTUyOlxcdFxcdC8qXFxuIDU1MzpcXHRcXHQgKiBJZiBhbnkgYmxvY2tzIGFyZSBiZWluZyB3cml0dGVuIHRvIGFuIGVuY3J5cHRlZCBmaWxlLCBlbmNyeXB0IHRoZW1cXG4gNTU0OlxcdFxcdCAqIGludG8gYSBib3VuY2UgcGFnZS4gIEZvciBzaW1wbGljaXR5LCBqdXN0IGVuY3J5cHQgdW50aWwgdGhlIGxhc3RcXG4gNTU1OlxcdFxcdCAqIGJsb2NrIHdoaWNoIG1pZ2h0IGJlIG5lZWRlZC4gIFRoaXMgbWF5IGNhdXNlIHNvbWUgdW5uZWVkZWQgYmxvY2tzXFxuIDU1NjpcXHRcXHQgKiAoZS5nLiBob2xlcykgdG8gYmUgdW5uZWNlc3NhcmlseSBlbmNyeXB0ZWQsIGJ1dCB0aGlzIGlzIHJhcmUgYW5kXFxuIDU1NzpcXHRcXHQgKiBjYW4ndCBoYXBwZW4gaW4gdGhlIGNvbW1vbiBjYXNlIG9mIGJsb2Nrc2l6ZSA9PSBQQUdFX1NJWkUuXFxuIDU1ODpcXHRcXHQgKlxcbiA1NTk6XFx0XFx0ICogWmVybyBvdXQgYW55IG5vbi11cHRvZGF0ZSBidWZmZXJzIHRoYXQgYXJlIG5vdCBiZWluZyB3cml0dGVuIG91dCxcXG4gNTYwOlxcdFxcdCAqIHRvIHByZXZlbnQgdW5pbml0aWFsaXplZCBtZW1vcnkgZnJvbSBiZWluZyBmZWQgaW50byB0aGUgY3J5cHRvXFxuIDU2MTpcXHRcXHQgKiBlbmdpbmUuXFxuIDU2MjpcXHRcXHQgKi9cXG4gNTYzOlxcdFxcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSkge1xcbiA1NjQ6XFx0XFx0XFx0Z2ZwX3QgZ2ZwX2ZsYWdzID0gR0ZQX05PRlM7XFxuIDU2NTpcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZW5jX2J5dGVzID0gcm91bmRfdXAobGVuLCBpX2Jsb2Nrc2l6ZShpbm9kZSkpO1xcbiA1NjY6XFx0XFx0XFx0c3RydWN0IHBhZ2UgKmJvdW5jZV9wYWdlO1xcbiA1Njc6XFx0XFxuIDU2ODpcXHRcXHRcXHRkbyB7XFxuIDU2OTpcXHRcXHRcXHRcXHRpZiAoIWJ1ZmZlcl9hc3luY193cml0ZShiaCkgXFx1MDAyNlxcdTAwMjYgIWJ1ZmZlcl91cHRvZGF0ZShiaCkpXFxuIDU3MDpcXHRcXHRcXHRcXHRcXHRmb2xpb196ZXJvX3JhbmdlKGZvbGlvLCBiaF9vZmZzZXQoYmgpLFxcbiA1NzE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IGJoLVxcdTAwM2ViX3NpemUpO1xcbiA1NzI6XFx0XFx0XFx0fSB3aGlsZSAoKGJoID0gYmgtXFx1MDAzZWJfdGhpc19wYWdlKSAhPSBoZWFkKTtcXG4gNTczOlxcdFxcbiA1NzQ6XFx0XFx0XFx0LypcXG4gNTc1OlxcdFxcdFxcdCAqIFNpbmNlIGJvdW5jZSBwYWdlIGFsbG9jYXRpb24gdXNlcyBhIG1lbXBvb2wsIHdlIGNhbiBvbmx5IHVzZVxcbiA1NzY6XFx0XFx0XFx0ICogYSB3YWl0aW5nIG1hc2sgKGkuZS4gcmVxdWVzdCBndWFyYW50ZWVkIGFsbG9jYXRpb24pIG9uIHRoZVxcbiA1Nzc6XFx0XFx0XFx0ICogZmlyc3QgcGFnZSBvZiB0aGUgYmlvLiAgT3RoZXJ3aXNlIGl0IGNhbiBkZWFkbG9jay5cXG4gNTc4OlxcdFxcdFxcdCAqL1xcbiA1Nzk6XFx0XFx0XFx0aWYgKGlvLVxcdTAwM2Vpb19iaW8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM1OjAwLjg3ODcwNzAxM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NzczMDE3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGlkZW50aWZpZWQgYSBwcm9taXNpbmcgYXJlYSBmb3IgZnV6emluZyB3aXRoaW4gdGhlIGV4dDQgZmlsZXN5c3RlbS4gVGhlIHBhdGNoIGludHJvZHVjZWQgYSBsb29wIHdpdGhpbiBgZXh0NF9iaW9fd3JpdGVfZm9saW9gIHRoYXQgc3BlY2lmaWNhbGx5IHRhcmdldHMgemVyb2luZyBvdXQgYnVmZmVycyB0aGF0IGFyZW4ndCB1cC10by1kYXRlLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIGEgcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBvdGhlciBidWZmZXItcmVsYXRlZCB2dWxuZXJhYmlsaXRpZXMuIEl0IHNlZW1zIGxpa2UgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbiB3aXRoIGEgc3BlY2lmaWMgcHVycG9zZSwgd2hpY2ggbWFrZXMgaXQgYW4gaWRlYWwgY2FuZGlkYXRlLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGF0IGBGU19FTkNSWVBUSU9OYCBpcyBhY3R1YWxseSB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBzdXNwZWN0IGl0IGlzLCBnaXZlbiB0aGF0IGJ1ZmZlciB6ZXJvaW5nIGNvdWxkIGJlIHJlbGF0ZWQgdG8gZW5jcnlwdGlvbiBrZXkgaGFuZGxpbmcgb3IgZGF0YSBwcm90ZWN0aW9uLCBidXQgSSdsbCBkb3VibGUtY2hlY2sgdGhlIGNvZGUgdG8gYmUgY2VydGFpbi4gSWYgaXQgaXMgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24sIHRoZW4gSSdsbCBuZWVkIHRvIHNldCB0aGUgRVhUNF9GUyBhbmQgRlNfRU5DUllQVElPTiBvcHRpb25zIHdoZW4gY29uZmlndXJpbmcgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBjb21iaW5hdGlvbiBvZiB0aGVzZSB0d28gY29uZmlncyB3aWxsIGFsbG93IHRlc3Rpbmcgb2YgdGhlIGxvZ2ljIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6MzU6MDQuNjU2MDEyMTU4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjY1MTU0NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnVmZmVyLmM9Mzg1PXN0YXRpYyB2b2lkIGJoX2VuZF9hc3luY19yZWFkKHN0cnVjdCBiaW8gKmJpbylcXG4tLVxcbmZzL2J1ZmZlci5jLTM4OS1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gYmgtXFx1MDAzZWJfZm9saW8tXFx1MDAzZW1hcHBpbmctXFx1MDAzZWhvc3Q7XFxuZnMvYnVmZmVyLmM6MzkwOlxcdGJvb2wgZGVjcnlwdCA9IGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpO1xcbmZzL2J1ZmZlci5jLTM5MS1cXHRzdHJ1Y3QgZnN2ZXJpdHlfaW5mbyAqdmkgPSBOVUxMO1xcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTExNzA9aW50IGV4dDRfYmxvY2tfd3JpdGVfYmVnaW4oaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy0xMjY0LVxcdFxcdFxcdGZvbGlvX3plcm9fbmV3X2J1ZmZlcnMoZm9saW8sIGZyb20sIHRvKTtcXG5mcy9leHQ0L2lub2RlLmM6MTI2NTpcXHR9IGVsc2UgaWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oaW5vZGUpKSB7XFxuZnMvZXh0NC9pbm9kZS5jLTEyNjYtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3dhaXQ7IGkrKykge1xcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTQwMzE9c3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtNDA4My1cXHRcXHRcXHRnb3RvIHVubG9jaztcXG5mcy9leHQ0L2lub2RlLmM6NDA4NDpcXHRcXHRpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpIHtcXG5mcy9leHQ0L2lub2RlLmMtNDA4NS1cXHRcXHRcXHQvKiBXZSBleHBlY3QgdGhlIGtleSB0byBiZSBzZXQuICovXFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYz00NzE9aW50IGV4dDRfYmlvX3dyaXRlX2ZvbGlvKHN0cnVjdCBleHQ0X2lvX3N1Ym1pdCAqaW8sIHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYy01NjItXFx0ICovXFxuZnMvZXh0NC9wYWdlLWlvLmM6NTYzOlxcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSkge1xcbmZzL2V4dDQvcGFnZS1pby5jLTU2NC1cXHRcXHRnZnBfdCBnZnBfZmxhZ3MgPSBHRlBfTk9GUztcXG4tLVxcbmZzL2V4dDQvcmVhZHBhZ2UuYz0xNzg9c3RhdGljIHZvaWQgZXh0NF9zZXRfYmlvX3Bvc3RfcmVhZF9jdHgoc3RydWN0IGJpbyAqYmlvLFxcbi0tXFxuZnMvZXh0NC9yZWFkcGFnZS5jLTE4My1cXG5mcy9leHQ0L3JlYWRwYWdlLmM6MTg0OlxcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSlcXG5mcy9leHQ0L3JlYWRwYWdlLmMtMTg1LVxcdFxcdHBvc3RfcmVhZF9zdGVwcyB8PSAxIFxcdTAwM2NcXHUwMDNjIFNURVBfREVDUllQVDtcXG4tLVxcbmZzL2YyZnMvY29tcHJlc3MuYz0xMjY3PXN0YXRpYyBpbnQgZjJmc193cml0ZV9jb21wcmVzc2VkX3BhZ2VzKHN0cnVjdCBjb21wcmVzc19jdHggKmNjLFxcbi0tXFxuZnMvZjJmcy9jb21wcmVzcy5jLTEyODYtXFx0XFx0LmlvX3diYyA9IHdiYyxcXG5mcy9mMmZzL2NvbXByZXNzLmM6MTI4NzpcXHRcXHQuZW5jcnlwdGVkID0gZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhjYy1cXHUwMDNlaW5vZGUpID9cXG5mcy9mMmZzL2NvbXByZXNzLmMtMTI4OC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQxIDogMCxcXG4tLVxcbmZzL2YyZnMvZGF0YS5jPTExMDM9c3RhdGljIHN0cnVjdCBiaW8gKmYyZnNfZ3JhYl9yZWFkX2JpbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZjJmcy9kYXRhLmMtMTEyMS1cXG5mcy9mMmZzL2RhdGEuYzoxMTIyOlxcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSlcXG5mcy9mMmZzL2RhdGEuYy0xMTIzLVxcdFxcdHBvc3RfcmVhZF9zdGVwcyB8PSBTVEVQX0RFQ1JZUFQ7XFxuLS1cXG5mcy9mMmZzL2RhdGEuYz0yOTQ0PWludCBmMmZzX2RvX3dyaXRlX2RhdGFfcGFnZShzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pXFxuLS1cXG5mcy9mMmZzL2RhdGEuYy0zMDIzLVxcdFxcdGlmIChlcnIpIHtcXG5mcy9mMmZzL2RhdGEuYzozMDI0OlxcdFxcdFxcdGlmIChmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGlub2RlKSlcXG5mcy9mMmZzL2RhdGEuYy0zMDI1LVxcdFxcdFxcdFxcdGZzY3J5cHRfZmluYWxpemVfYm91bmNlX3BhZ2UoXFx1MDAyNmZpby1cXHUwMDNlZW5jcnlwdGVkX3BhZ2UpO1xcbi0tXFxuZnMvZjJmcy9zZWdtZW50LmM9Mzk3MT1zdGF0aWMgdm9pZCBkb193cml0ZV9wYWdlKHN0cnVjdCBmMmZzX3N1bW1hcnkgKnN1bSwgc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKVxcbi0tXFxuZnMvZjJmcy9zZWdtZW50LmMtMzk4OS1cXHRcXHRcXHRmaW8tXFx1MDAzZW9sZF9ibGthZGRyLCBmaW8tXFx1MDAzZW5ld19ibGthZGRyLCBlcnIpO1xcbmZzL2YyZnMvc2VnbWVudC5jOjM5OTA6XFx0XFx0aWYgKGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oZm9saW8tXFx1MDAzZW1hcHBpbmctXFx1MDAzZWhvc3QpKVxcbmZzL2YyZnMvc2VnbWVudC5jLTM5OTEtXFx0XFx0XFx0ZnNjcnlwdF9maW5hbGl6ZV9ib3VuY2VfcGFnZShcXHUwMDI2ZmlvLVxcdTAwM2VlbmNyeXB0ZWRfcGFnZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaD05MTc9c3RhdGljIGlubGluZSBib29sIGZzY3J5cHRfaW5vZGVfdXNlc19pbmxpbmVfY3J5cHRvKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaC05MjMtLyoqXFxuaW5jbHVkZS9saW51eC9mc2NyeXB0Lmg6OTI0OiAqIGZzY3J5cHRfaW5vZGVfdXNlc19mc19sYXllcl9jcnlwdG8oKSAtIHRlc3Qgd2hldGhlciBhbiBpbm9kZSB1c2VzIGZzLWxheWVyXFxuaW5jbHVkZS9saW51eC9mc2NyeXB0LmgtOTI1LSAqXFx0XFx0XFx0XFx0XFx0ICBlbmNyeXB0aW9uXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzY3J5cHQuaC05MzEtICovXFxuaW5jbHVkZS9saW51eC9mc2NyeXB0Lmg6OTMyOnN0YXRpYyBpbmxpbmUgYm9vbCBmc2NyeXB0X2lub2RlX3VzZXNfZnNfbGF5ZXJfY3J5cHRvKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuaW5jbHVkZS9saW51eC9mc2NyeXB0LmgtOTMzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6MzU6MDcuMzIyNTQ1NTUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyODk5OTQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgS2NvbmZpZyBTY2FuIGZvciBGaWxlIFN5c3RlbSBFbmNyeXB0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGdvZXMgc29tZXRoaW5nIGxpa2UgdGhpcy4gTGV0J3Mgc2VlLi4uIHRoZSBjb3JlIGlzc3VlIGlzIGZpbGUgc3lzdGVtIGVuY3J5cHRpb24sIHJpZ2h0PyBUaW1lIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IG1vdmUgaXMgdG8gaGl0IHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQncyB0aGUgZXN0YWJsaXNoZWQgd2F5IHRvIHRyYWNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIFRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRvIGxvY2F0ZSBvcHRpb25zIHJlbGF0ZWQgdG8gYEZTX0VOQ1JZUFRJT05gLiBUaGF0J2xsIGJlIHRoZSBuYW1lIHRvIGxvb2sgZm9yIGluaXRpYWxseS4gRnJvbSB0aGVyZSBJJ2xsIHN0YXJ0IHRyYWNraW5nIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24ga25vYnMuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgbWVudGlvbnMgb3IgZGVwZW5kZW5jaWVzLCBhbmQgZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJlIGZvciBlbmFibGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNTAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzozNToxMS43NTE1NDk1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2MjkyMzg2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNfRU5DUllQVElPTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvY3J5cHRvL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9jcnlwdG8vS2NvbmZpZzoyOmNvbmZpZyBGU19FTkNSWVBUSU9OXFxuZnMvY3J5cHRvL0tjb25maWctMy1cXHRib29sIFxcXCJGUyBFbmNyeXB0aW9uIChQZXItZmlsZSBlbmNyeXB0aW9uKVxcXCJcXG4tLVxcbmZzL2NyeXB0by9LY29uZmlnLTI4LSMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZW5hYmxlIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbnMgdG9vLlxcbmZzL2NyeXB0by9LY29uZmlnOjI5OmNvbmZpZyBGU19FTkNSWVBUSU9OX0FMR1NcXG5mcy9jcnlwdG8vS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZVxcbi0tXFxuZnMvY3J5cHRvL0tjb25maWctMzUtXFxuZnMvY3J5cHRvL0tjb25maWc6MzY6Y29uZmlnIEZTX0VOQ1JZUFRJT05fSU5MSU5FX0NSWVBUXFxuZnMvY3J5cHRvL0tjb25maWctMzctXFx0Ym9vbCBcXFwiRW5hYmxlIGZzY3J5cHQgdG8gdXNlIGlubGluZSBjcnlwdG9cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM1OjE0LjUxNDQ4MTQ2MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDEyMTAwMjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFkZGluZyBlbmNyeXB0aW9uLXJlbGF0ZWQgbG9naWMgdG8gYGV4dDRfYmlvX3dyaXRlX2ZvbGlvYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIGBGU19FTkNSWVBUSU9OYCBhbmQgbmF0dXJhbGx5IGBFWFQ0X0ZTYCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGhlcmVcIi4gVGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBjbGVhcmx5IGBleHQ0X2Jpb193cml0ZV9mb2xpb2AsIHRoYXQncyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLiBHb29kLCB0aGUgcGF0Y2ggbG9va3MgZnVuY3Rpb25hbGx5IHNvdW5kIGFuZCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5JIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhlcmUgd2VyZW4ndCBhbnkgb3RoZXIgZnVuY3Rpb25zIGludm9sdmVkLCBidXQgaXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzICpzb2xlbHkqIHdpdGhpbiBgZXh0NF9iaW9fd3JpdGVfZm9saW9gLiBUaGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IgZXZlcnkgcGFnZSB3cml0dGVuIGJhY2sgaW4gZXh0NCwgd2hpY2ggY291bGQgYmUgYSBob3QgcGF0aC4gQW5kIHRoZSBjaGFuZ2UgaXMgaXNvbGF0ZWQgaW5zaWRlIGFuIGBpZiAoZnNjcnlwdF9pbm9kZV91c2VzX2ZzX2xheWVyX2NyeXB0byhpbm9kZSkpYCBibG9jay4gU28sIHNwZWNpZmljYWxseSBmdXp6aW5nIHRoaXMgYXJlYSBsb29rcyByZWFzb25hYmxlLlxuXG5JJ20gaW5jbHVkaW5nIGBleHQ0X2Jpb193cml0ZV9mb2xpb2AgaW4gdGhlIGBGb2N1c1N5bWJvbHNgLiBJJ2xsIGRvdWJsZSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMsIGJ1dCBgRVhUNF9GU2AgYW5kIGBGU19FTkNSWVBUSU9OYCBmZWVsIHNlbGYtZXZpZGVudC4gTm93IEknbSByZWFkeSB0byBtb3ZlIG9uIHRvIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MzgsIk91dHB1dFRva2VucyI6MTA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjM1OjIxLjUyNjU4NTU3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzA4OTA4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiLFxuICAgIFwiRlNfRU5DUllQVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfYmlvX3dyaXRlX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgd3JpdGViYWNrIHBhdGggdG8gemVybyBvdXQgbm9uLXVwdG9kYXRlIGJ1ZmZlcnMgZm9yIGVuY3J5cHRlZCBmaWxlcywgcHJldmVudGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIGZlZCBpbnRvIHRoZSBjcnlwdG8gZW5naW5lLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiLFxuICAgIFwiRlNfRU5DUllQVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfYmlvX3dyaXRlX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgd3JpdGViYWNrIHBhdGggdG8gemVybyBvdXQgbm9uLXVwdG9kYXRlIGJ1ZmZlcnMgZm9yIGVuY3J5cHRlZCBmaWxlcywgcHJldmVudGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIGZlZCBpbnRvIHRoZSBjcnlwdG8gZW5naW5lLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowzdhcp[1] Phase: Succeeded StartedAt: 2026-06-24 07:35:32 +0000 UTC FinishedAt: 2026-06-24 07:35:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-24 07:35:32 +0000 UTC FinishedAt: 2026-06-24 07:35:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2] Phase: Succeeded StartedAt: 2026-06-24 07:35:32 +0000 UTC FinishedAt: 2026-06-24 11:48:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-24 07:35:32 +0000 UTC FinishedAt: 2026-06-24 11:48:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-24 07:35:32 +0000 UTC FinishedAt: 2026-06-24 07:35:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-24 07:35:32 +0000 UTC FinishedAt: 2026-06-24 07:35:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzdhcp/series-workflowzdhcp-convert-artifact-987257117/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-24 07:35:42 +0000 UTC FinishedAt: 2026-06-24 08:01:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-24 07:35:42 +0000 UTC FinishedAt: 2026-06-24 08:01:07 +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:*aca9eae0-33a1-4043-8fbf-8e3444b360eb,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-workflowzdhcp/series-workflowzdhcp-convert-artifact-987257117/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": "2db2b127-b473-4161-ae05-9f523410f7ad", "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-workflowzdhcp/series-workflowzdhcp-build-action-999082579/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-24 07:35:42 +0000 UTC FinishedAt: 2026-06-24 08:00:20 +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:*aca9eae0-33a1-4043-8fbf-8e3444b360eb,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-workflowzdhcp/series-workflowzdhcp-convert-artifact-987257117/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": "2db2b127-b473-4161-ae05-9f523410f7ad", "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-workflowzdhcp/series-workflowzdhcp-build-action-999082579/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-24 08:01:07 +0000 UTC FinishedAt: 2026-06-24 08:01:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-24 08:01:07 +0000 UTC FinishedAt: 2026-06-24 08:01:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-24 08:01:07 +0000 UTC FinishedAt: 2026-06-24 08:01:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-24 08:01:07 +0000 UTC FinishedAt: 2026-06-24 08:01:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzdhcp/series-workflowzdhcp-convert-artifact-3814635256/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-24 08:01:39 +0000 UTC FinishedAt: 2026-06-24 08:03:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-24 08:01:39 +0000 UTC FinishedAt: 2026-06-24 08:03:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2db2b127-b473-4161-ae05-9f523410f7ad,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-workflowzdhcp/series-workflowzdhcp-build-action-999082579/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-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-24 08:03:19 +0000 UTC FinishedAt: 2026-06-24 08:03:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-24 08:03:19 +0000 UTC FinishedAt: 2026-06-24 08:03:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-24 08:03:19 +0000 UTC FinishedAt: 2026-06-24 08:41:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-24 08:03:19 +0000 UTC FinishedAt: 2026-06-24 08:41:34 +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:*aca9eae0-33a1-4043-8fbf-8e3444b360eb,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-workflowzdhcp/series-workflowzdhcp-convert-artifact-3814635256/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": "46d7069e-5fa3-4894-9daf-6594c6782730", "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-workflowzdhcp/series-workflowzdhcp-build-action-1829264356/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-24 08:03:19 +0000 UTC FinishedAt: 2026-06-24 08:41:24 +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:*aca9eae0-33a1-4043-8fbf-8e3444b360eb,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-workflowzdhcp/series-workflowzdhcp-convert-artifact-3814635256/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": "46d7069e-5fa3-4894-9daf-6594c6782730", "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-workflowzdhcp/series-workflowzdhcp-build-action-1829264356/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-24 08:41:34 +0000 UTC FinishedAt: 2026-06-24 08:41:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-24 08:41:34 +0000 UTC FinishedAt: 2026-06-24 08:41:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-24 08:41:34 +0000 UTC FinishedAt: 2026-06-24 08:43:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-24 08:41:34 +0000 UTC FinishedAt: 2026-06-24 08:43:01 +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:*46d7069e-5fa3-4894-9daf-6594c6782730,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-workflowzdhcp/series-workflowzdhcp-build-action-1829264356/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-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-24 08:43:11 +0000 UTC FinishedAt: 2026-06-24 11:48:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-24 08:43:11 +0000 UTC FinishedAt: 2026-06-24 11:48:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*2db2b127-b473-4161-ae05-9f523410f7ad,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*46d7069e-5fa3-4894-9daf-6594c6782730,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-workflowzdhcp/series-workflowzdhcp-build-action-999082579/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-workflowzdhcp/series-workflowzdhcp-build-action-1829264356/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-24 08:43:11 +0000 UTC FinishedAt: 2026-06-24 08:43:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-24 08:43:11 +0000 UTC FinishedAt: 2026-06-24 08:43:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzdhcp/series-workflowzdhcp-convert-artifact-199182673/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-24 08:43:11 +0000 UTC FinishedAt: 2026-06-24 08:43:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-24 08:43:11 +0000 UTC FinishedAt: 2026-06-24 08:43:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-24 08:43:11 +0000 UTC FinishedAt: 2026-06-24 08:43:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-24 08:43:21 +0000 UTC FinishedAt: 2026-06-24 11:48:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdhcp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_bio_write_folio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","FS_ENCRYPTION"],"series_id":"4e4e1f8a-fcb9-4def-bfef-5a0a819efa6a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-24 08:43:21 +0000 UTC FinishedAt: 2026-06-24 11:48:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2db2b127-b473-4161-ae05-9f523410f7ad,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*46d7069e-5fa3-4894-9daf-6594c6782730,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-workflowzdhcp/series-workflowzdhcp-build-action-999082579/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-workflowzdhcp/series-workflowzdhcp-build-action-1829264356/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-workflowzdhcp/series-workflowzdhcp-convert-artifact-199182673/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,}