Name: series-workflowch4rc Phase: Succeeded StartedAt: 2026-07-01 22:13:06 +0000 UTC FinishedAt: 2026-07-02 02:41:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[0] Phase: Succeeded StartedAt: 2026-07-01 22:13:06 +0000 UTC FinishedAt: 2026-07-01 22:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 22:13:06 +0000 UTC FinishedAt: 2026-07-01 22:25:54 +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": "d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "cf24068b-11eb-4bf8-a1fd-e86533ae31c9" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_zero_range", "ext4_zero_partial_blocks", "ext4_punch_hole", "ext4_fallocate" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X3plcm9fcmFuZ2UmIzM0OywKICAgICYjMzQ7ZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzJiMzNDssCiAgICAmIzM0O2V4dDRfcHVuY2hfaG9sZSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZhbGxvY2F0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHplcm9pbmcgcGFydGlhbCBibG9ja3MgaW4gZXh0NCwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyBgRkFMTE9DX0ZMX1pFUk9fUkFOR0VgIGFuZCBgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FU2AgbW9kZXMgaW4gYGV4dDRfZmFsbG9jYXRlYC4gVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gZmlsZSBhbGxvY2F0aW9uIGFuZCB6ZXJvaW5nIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjM0MWU0NDdjMDc3MWQxZjI2ZTc5MjM4OTc2ZDJjMDEyMWViYTY4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMjI6MjU6MTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaFxuaW5kZXggOTQyODNhOTkxZTVjNGYuLmIyZTU1ODc2ZDBlMzUyIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oXG5AQCAtMzA5OSw4ICYjNDM7MzA5OSwxMSBAQCBleHRlcm4gaW50IGV4dDRfY2h1bmtfdHJhbnNfZXh0ZW50KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2Nrcyk7XG4gZXh0ZXJuIGludCBleHQ0X21ldGFfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBsYmxvY2tzLFxuIFx0XHRcdFx0ICBpbnQgcGV4dGVudHMpO1xuIGV4dGVybiBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZCk7XG4mIzQzO1xuJiM0MzsjZGVmaW5lIEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUXHQweDFcbiYjNDM7I2RlZmluZSBFWFQ0X1BBUlRJQUxfWkVST19FTkRcdDB4MlxuIGV4dGVybiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsXG4tXHRcdFx0XHQgICAgbG9mZl90IGxlbmd0aCwgYm9vbCAqZGlkX3plcm8pO1xuJiM0MztcdFx0XHRcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcbiBleHRlcm4gdm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7XG4gZXh0ZXJuIHFzaXplX3QgKmV4dDRfZ2V0X3Jlc2VydmVkX3NwYWNlKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dGVudHMuYyBiL2ZzL2V4dDQvZXh0ZW50cy5jXG5pbmRleCAxMjVmNjI4ZTczOGFiMS4uMzg3NTNjMmVmOTEwYjEgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9leHRlbnRzLmNcbkBAIC00NzE1LDcgJiM0Mzs0NzE1LDcgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0bG9mZl90IGFsaWduX3N0YXJ0LCBhbGlnbl9lbmQsIG5ld19zaXplID0gMDtcbiBcdGxvZmZfdCBlbmQgPSBvZmZzZXQgJiM0MzsgbGVuO1xuIFx0dW5zaWduZWQgaW50IGJsb2Nrc2l6ZSA9IGlfYmxvY2tzaXplKGlub2RlKTtcbi1cdGJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgcGFydGlhbF96ZXJvZWQgPSAwO1xuIFx0aW50IHJldCwgZmxhZ3M7XG4gXG4gXHR0cmFjZV9leHQ0X3plcm9fcmFuZ2UoaW5vZGUsIG9mZnNldCwgbGVuLCBtb2RlKTtcbkBAIC00NzM0LDE3ICYjNDM7NDczNCwyNSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHR9XG4gXG4gXHRmbGFncyA9IEVYVDRfR0VUX0JMT0NLU19DUkVBVEVfVU5XUklUX0VYVDtcbi1cdC8qIFByZWFsbG9jYXRlIHRoZSByYW5nZSBpbmNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqL1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzLCBhbmQgemVyb1xuJiM0MztcdCAqIG91dCBwYXJ0aWFsIGJsb2NrcyBpZiB0aGV5IGFscmVhZHkgY29udGFpbiBkYXRhLlxuJiM0MztcdCAqL1xuIFx0aWYgKCFJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSkge1xuIFx0XHRyZXQgPSBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKGZpbGUsIG9mZnNldCwgbGVuLCBuZXdfc2l6ZSxcbiBcdFx0XHRcdFx0ICAgICBmbGFncyk7XG4mIzQzO1x0XHRpZiAoIXJldClcbiYjNDM7XHRcdFx0cmV0ID0gZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKGlub2RlLCBvZmZzZXQsIGxlbixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnBhcnRpYWxfemVyb2VkKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuLVx0cmV0ID0gZXh0NF91cGRhdGVfZGlza3NpemVfYmVmb3JlX3B1bmNoKGlub2RlLCBvZmZzZXQsIGxlbik7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdGlmIChtb2RlIFx1MDAyNiBGQUxMT0NfRkxfWkVST19SQU5HRSkge1xuJiM0MztcdFx0cmV0ID0gZXh0NF91cGRhdGVfZGlza3NpemVfYmVmb3JlX3B1bmNoKGlub2RlLCBvZmZzZXQsIGxlbik7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiBcbiBcdC8qIE5vdyByZWxlYXNlIHRoZSBwYWdlcyBhbmQgemVybyBibG9jayBhbGlnbmVkIHBhcnQgb2YgcGFnZXMgKi9cbiBcdHJldCA9IGV4dDRfdHJ1bmNhdGVfcGFnZV9jYWNoZV9ibG9ja19yYW5nZShpbm9kZSwgb2Zmc2V0LCBlbmQpO1xuQEAgLTQ3NTQsNiAmIzQzOzQ3NjIsMjEgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0LyogWmVybyByYW5nZSBleGNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqL1xuIFx0YWxpZ25fc3RhcnQgPSByb3VuZF91cChvZmZzZXQsIGJsb2Nrc2l6ZSk7XG4gXHRhbGlnbl9lbmQgPSByb3VuZF9kb3duKGVuZCwgYmxvY2tzaXplKTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBJbiBXUklURV9aRVJPRVMgbW9kZSwgZWRnZXMgdGhhdCB3ZXJlIG5vdCBwYXJ0aWFsLXplcm9lZCAoY2xlYW5cbiYjNDM7XHQgKiB1bndyaXR0ZW4gb3IgaG9sZSkgbXVzdCBiZSBhbGxvY2F0ZWQgYW5kIHplcm9lZCBhcyB3aG9sZSBibG9ja3MuXG4mIzQzO1x0ICogRXhwYW5kIHRoZSBhbGlnbmVkIHJhbmdlIG91dHdhcmQgdG8gY292ZXIgdGhlbS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykge1xuJiM0MztcdFx0aWYgKCFJU19BTElHTkVEKG9mZnNldCwgYmxvY2tzaXplKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhKHBhcnRpYWxfemVyb2VkIFx1MDAyNiBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCkpXG4mIzQzO1x0XHRcdGFsaWduX3N0YXJ0ID0gcm91bmRfZG93bihvZmZzZXQsIGJsb2Nrc2l6ZSk7XG4mIzQzO1x0XHRpZiAoIUlTX0FMSUdORUQoZW5kLCBibG9ja3NpemUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICEocGFydGlhbF96ZXJvZWQgXHUwMDI2IEVYVDRfUEFSVElBTF9aRVJPX0VORCkpXG4mIzQzO1x0XHRcdGFsaWduX2VuZCA9IHJvdW5kX3VwKGVuZCwgYmxvY2tzaXplKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKGFsaWduX2VuZCBcdTAwM2UgYWxpZ25fc3RhcnQpIHtcbiBcdFx0aWYgKG1vZGUgXHUwMDI2IEZBTExPQ19GTF9XUklURV9aRVJPRVMpXG4gXHRcdFx0ZmxhZ3MgPSBFWFQ0X0dFVF9CTE9DS1NfQ1JFQVRFX1pFUk8gfCBFWFQ0X0VYX05PQ0FDSEU7XG5AQCAtNDc3MCwxMSAmIzQzOzQ3OTMsMTUgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0aWYgKElTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0LyogWmVybyBvdXQgcGFydGlhbCBibG9jayBhdCB0aGUgZWRnZXMgb2YgdGhlIHJhbmdlICovXG4tXHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLCBcdTAwMjZwYXJ0aWFsX3plcm9lZCk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVx0aWYgKCgoZmlsZS1cdTAwM2VmX2ZsYWdzIFx1MDAyNiBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSBcdTAwMjZcdTAwMjYgcGFydGlhbF96ZXJvZWQpIHtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEluIEZBTExPQ19GTF9XUklURV9aRVJPRVMgbW9kZSwgZWRnZXMgdGhhdCBoYXZlIGJlZW4gcGFydGlhbGx5XG4mIzQzO1x0ICogemVyb2VkIG11c3QgYmUgd3JpdHRlbiBiYWNrIHRvIGVuc3VyZSB0aGUgZW50aXJlIHplcm9lZCByYW5nZVxuJiM0MztcdCAqIGlzIGNvbnZlcnRlZCB0byB0aGUgd3JpdHRlbiBzdGF0ZS4gSW4gU1lOQyBtb2RlLCB3cml0ZWJhY2sgaXNcbiYjNDM7XHQgKiBhbHNvIHJlcXVpcmVkIHRvIHBlcnNpc3QgdGhlIHplcm9lZCBkYXRhIHRvIGRpc2suXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHBhcnRpYWxfemVyb2VkIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAoKG1vZGUgXHUwMDI2IEZBTExPQ19GTF9XUklURV9aRVJPRVMpIHx8XG4mIzQzO1x0ICAgICAoZmlsZS1cdTAwM2VmX2ZsYWdzIFx1MDAyNiBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSkge1xuIFx0XHRyZXQgPSBmaWxlbWFwX3dyaXRlX2FuZF93YWl0X3JhbmdlKGlub2RlLVx1MDAzZWlfbWFwcGluZywgb2Zmc2V0LFxuIFx0XHRcdFx0XHRcdCAgIGVuZCAtIDEpO1xuIFx0XHRpZiAocmV0KVxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuY1xuaW5kZXggYzJjMmQ2YWM3ZjNkMTMuLmQ2OGY3YmU0ZmYwMmE2IDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9pbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2lub2RlLmNcbkBAIC00MDI2LDYgJiM0Mzs0MDI2LDEwIEBAIHZvaWQgZXh0NF9zZXRfYW9wcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuICAqIGJlY2F1c2UgaXQgbWlnaHQgaGF2ZSBkYXRhIGluIHBhZ2VjYWNoZSAoZWcsIGlmIGNhbGxlZCBmcm9tIGV4dDRfemVyb19yYW5nZSxcbiAgKiBleHQ0X3B1bmNoX2hvbGUsIGV0Yykgd2hpY2ggbmVlZHMgdG8gYmUgcHJvcGVybHkgemVyb2VkIG91dC4gT3RoZXJ3aXNlIGFcbiAgKiByYWNpbmcgd3JpdGViYWNrIGNhbiBjb21lIGxhdGVyIGFuZCBmbHVzaCB0aGUgc3RhbGUgcGFnZWNhY2hlIHRvIGRpc2suXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybiB0aGUgbG9hZGVkIGJoIGlmIGl0IGFjdHVhbGx5IG5lZWRzIHplcm9pbmcgLSBpbiB3cml0dGVuLCBkaXJ0eVxuJiM0MzsgKiB1bndyaXR0ZW4sIG9yIGRlbGFsbG9jIHN0YXRlLiBSZXR1cm4gTlVMTCBpZiBpdCYjMzk7cyBjbGVhbiAoaS5lLiwgYSBob2xlIG9yXG4mIzQzOyAqIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrKS5cbiAgKi9cbiBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcbiB7XG5AQCAtNDA2NSw3ICYjNDM7NDA2OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxuIFx0aWYgKCFidWZmZXJfbWFwcGVkKGJoKSkge1xuIFx0XHRCVUZGRVJfVFJBQ0UoYmgsIFwmIzM0O3VubWFwcGVkXCYjMzQ7KTtcbiBcdFx0ZXh0NF9nZXRfYmxvY2soaW5vZGUsIGlibG9jaywgYmgsIDApO1xuLVx0XHQvKiB1bm1hcHBlZD8gSXQmIzM5O3MgYSBob2xlIC0gbm90aGluZyB0byBkbyAqL1xuJiM0MztcdFx0LyogSXQmIzM5O3MgYSBob2xlIG9yIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrIC0gbm90aGluZyB0byBkbyAqL1xuIFx0XHRpZiAoIWJ1ZmZlcl9tYXBwZWQoYmgpKSB7XG4gXHRcdFx0QlVGRkVSX1RSQUNFKGJoLCBcJiMzNDtzdGlsbCB1bm1hcHBlZFwmIzM0Oyk7XG4gXHRcdFx0Z290byB1bmxvY2s7XG5AQCAtNDI1MiwxMyAmIzQzOzQyNTYsMjYgQEAgaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFplcm8gb3V0IHRoZSB1bmFsaWduZWQgaGVhZCBhbmQgdGFpbCBvZiB0aGUgW2xzdGFydCwgbHN0YXJ0JiM0MztsZW5ndGgpXG4mIzQzOyAqIHJhbmdlLlxuJiM0MzsgKlxuJiM0MzsgKiBPbiByZXR1cm4sIEBwYXJ0aWFsX3plcm9lZCByZWNvcmRzIHdoaWNoIGVkZ2VzIGFjdHVhbGx5IGdvdFxuJiM0MzsgKiBwYXJ0aWFsLXplcm9lZC4gIFNldCBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVC9FWFQ0X1BBUlRJQUxfWkVST19FTkQgaWZcbiYjNDM7ICogdGhlIGhlYWQvdGFpbCBibG9jayBnb3QgYWN0dWFsbHkgcGFydGlhbGx5IHplcm9lZCAoaW4gd3JpdHRlbiwgZGlydHlcbiYjNDM7ICogdW53cml0dGVuIG9yIGRlbGFsbG9jIHN0YXRlKS4gIENsZWFyZWQgaWYgdGhlIGhlYWQvdGFpbCBibG9jayBpcyBhXG4mIzQzOyAqIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2ssIGluIHdoaWNoIGNhc2UgdGhlcmUgaXMgbm90aGluZyBuZWVkc1xuJiM0MzsgKiB0byB6ZXJvLiAgV2hlbiB0aGUgaGVhZCBhbmQgdGFpbCBsYW5kIGluIHRoZSBzYW1lIGJsb2NrLCBib3RoIGJpdHNcbiYjNDM7ICogYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyby5cbiYjNDM7ICovXG4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZ3RoLFxuLVx0XHRcdCAgICAgYm9vbCAqZGlkX3plcm8pXG4mIzQzO1x0XHRcdCAgICAgdW5zaWduZWQgaW50ICpwYXJ0aWFsX3plcm9lZClcbiB7XG4gXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXHUwMDNlaV9zYjtcbiBcdHVuc2lnbmVkIHBhcnRpYWxfc3RhcnQsIHBhcnRpYWxfZW5kO1xuIFx0ZXh0NF9mc2Jsa190IHN0YXJ0LCBlbmQ7XG4gXHRsb2ZmX3QgYnl0ZV9lbmQgPSAobHN0YXJ0ICYjNDM7IGxlbmd0aCAtIDEpO1xuJiM0MztcdGJvb2wgZGlkX3plcm8gPSBmYWxzZTtcbiBcdGludCBlcnIgPSAwO1xuIFxuIFx0cGFydGlhbF9zdGFydCA9IGxzdGFydCBcdTAwMjYgKHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSk7XG5AQCAtNDI3MCwyMSAmIzQzOzQyODcsMzIgQEAgaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZ3RoLFxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyB3aXRoaW4gdGhlIHNpbmdsZSBibG9jayAqL1xuIFx0aWYgKHN0YXJ0ID09IGVuZCBcdTAwMjZcdTAwMjZcbiBcdCAgICAocGFydGlhbF9zdGFydCB8fCAocGFydGlhbF9lbmQgIT0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKSkpIHtcbi1cdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgZGlkX3plcm8sXG4mIzQzO1x0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBcdTAwMjZkaWRfemVybyxcbiBcdFx0XHRcdFx0ICAgIE5VTEwpO1xuJiM0MztcdFx0aWYgKGRpZF96ZXJvKVxuJiM0MztcdFx0XHQqcGFydGlhbF96ZXJvZWQgfD0gKEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUIHxcbiYjNDM7XHRcdFx0XHRcdCAgICBFWFQ0X1BBUlRJQUxfWkVST19FTkQpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqL1xuIFx0aWYgKHBhcnRpYWxfc3RhcnQpIHtcbiBcdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIHNiLVx1MDAzZXNfYmxvY2tzaXplLFxuLVx0XHRcdFx0XHQgICAgZGlkX3plcm8sIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0ICAgIFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0aWYgKGRpZF96ZXJvKVxuJiM0MztcdFx0XHQqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQ7XG4gXHR9XG4gXHQvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIG91dCBvbiB0aGUgZW5kIG9mIHRoZSByYW5nZSAqL1xuLVx0aWYgKHBhcnRpYWxfZW5kICE9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSlcbiYjNDM7XHRpZiAocGFydGlhbF9lbmQgIT0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKSB7XG4mIzQzO1x0XHRkaWRfemVybyA9IGZhbHNlO1xuIFx0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGJ5dGVfZW5kIC0gcGFydGlhbF9lbmQsXG4tXHRcdFx0XHRcdCAgICBwYXJ0aWFsX2VuZCAmIzQzOyAxLCBkaWRfemVybywgTlVMTCk7XG4mIzQzO1x0XHRcdFx0XHQgICAgcGFydGlhbF9lbmQgJiM0MzsgMSwgXHUwMDI2ZGlkX3plcm8sIE5VTEwpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdGlmIChkaWRfemVybylcbiYjNDM7XHRcdFx0KnBhcnRpYWxfemVyb2VkIHw9IEVYVDRfUEFSVElBTF9aRVJPX0VORDtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbkBAIC00NDMzLDcgJiM0Mzs0NDYxLDcgQEAgaW50IGV4dDRfcHVuY2hfaG9sZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aClcbiBcdGxvZmZfdCBlbmQgPSBvZmZzZXQgJiM0MzsgbGVuZ3RoO1xuIFx0aGFuZGxlX3QgKmhhbmRsZTtcbiBcdHVuc2lnbmVkIGludCBjcmVkaXRzO1xuLVx0Ym9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlO1xuJiM0MztcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XG4gXHRpbnQgcmV0O1xuIFxuIFx0dHJhY2VfZXh0NF9wdW5jaF9ob2xlKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfemVyb19yYW5nZSYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MmIzM0OywKICAgICYjMzQ7ZXh0NF9wdW5jaF9ob2xlJiMzNDssCiAgICAmIzM0O2V4dDRfZmFsbG9jYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgemVyb2luZyBwYXJ0aWFsIGJsb2NrcyBpbiBleHQ0LCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIGBGQUxMT0NfRkxfWkVST19SQU5HRWAgYW5kIGBGQUxMT0NfRkxfV1JJVEVfWkVST0VTYCBtb2RlcyBpbiBgZXh0NF9mYWxsb2NhdGVgLiBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsIGNoYW5nZSB0byBmaWxlIGFsbG9jYXRpb24gYW5kIHplcm9pbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBmYWxsb2NhdGVgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGIzNDFlNDQ3YzA3NzFkMWYyNmU3OTIzODk3NmQyYzAxMjFlYmE2OGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDIyOjI1OjEwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaAppbmRleCA5NDI4M2E5OTFlNWM0Zi4uYjJlNTU4NzZkMGUzNTIgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvZXh0NC5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oCkBAIC0zMDk5LDggJiM0MzszMDk5LDExIEBAIGV4dGVybiBpbnQgZXh0NF9jaHVua190cmFuc19leHRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5yYmxvY2tzKTsKIGV4dGVybiBpbnQgZXh0NF9tZXRhX3RyYW5zX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbGJsb2NrcywKIAkJCQkgIGludCBwZXh0ZW50cyk7CiBleHRlcm4gaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpOwomIzQzOwomIzQzOyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQJMHgxCiYjNDM7I2RlZmluZSBFWFQ0X1BBUlRJQUxfWkVST19FTkQJMHgyCiBleHRlcm4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LAotCQkJCSAgICBsb2ZmX3QgbGVuZ3RoLCBib29sICpkaWRfemVybyk7CiYjNDM7CQkJCSAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTsKIGV4dGVybiB2bV9mYXVsdF90IGV4dDRfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKTsKIGV4dGVybiBxc2l6ZV90ICpleHQ0X2dldF9yZXNlcnZlZF9zcGFjZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0ZW50cy5jIGIvZnMvZXh0NC9leHRlbnRzLmMKaW5kZXggMTI1ZjYyOGU3MzhhYjEuLjM4NzUzYzJlZjkxMGIxIDEwMDY0NAotLS0gYS9mcy9leHQ0L2V4dGVudHMuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2V4dGVudHMuYwpAQCAtNDcxNSw3ICYjNDM7NDcxNSw3IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwKIAlsb2ZmX3QgYWxpZ25fc3RhcnQsIGFsaWduX2VuZCwgbmV3X3NpemUgPSAwOwogCWxvZmZfdCBlbmQgPSBvZmZzZXQgJiM0MzsgbGVuOwogCXVuc2lnbmVkIGludCBibG9ja3NpemUgPSBpX2Jsb2Nrc2l6ZShpbm9kZSk7Ci0JYm9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlOwomIzQzOwl1bnNpZ25lZCBpbnQgcGFydGlhbF96ZXJvZWQgPSAwOwogCWludCByZXQsIGZsYWdzOwogCiAJdHJhY2VfZXh0NF96ZXJvX3JhbmdlKGlub2RlLCBvZmZzZXQsIGxlbiwgbW9kZSk7CkBAIC00NzM0LDE3ICYjNDM7NDczNCwyNSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsCiAJfQogCiAJZmxhZ3MgPSBFWFQ0X0dFVF9CTE9DS1NfQ1JFQVRFX1VOV1JJVF9FWFQ7Ci0JLyogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovCiYjNDM7CS8qCiYjNDM7CSAqIFByZWFsbG9jYXRlIHRoZSByYW5nZSBpbmNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcywgYW5kIHplcm8KJiM0MzsJICogb3V0IHBhcnRpYWwgYmxvY2tzIGlmIHRoZXkgYWxyZWFkeSBjb250YWluIGRhdGEuCiYjNDM7CSAqLwogCWlmICghSVNfQUxJR05FRChvZmZzZXQgfCBlbmQsIGJsb2Nrc2l6ZSkpIHsKIAkJcmV0ID0gZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhmaWxlLCBvZmZzZXQsIGxlbiwgbmV3X3NpemUsCiAJCQkJCSAgICAgZmxhZ3MpOwomIzQzOwkJaWYgKCFyZXQpCiYjNDM7CQkJcmV0ID0gZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKGlub2RlLCBvZmZzZXQsIGxlbiwKJiM0MzsJCQkJCQkgICAgICAgJmFtcDtwYXJ0aWFsX3plcm9lZCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KIAotCXJldCA9IGV4dDRfdXBkYXRlX2Rpc2tzaXplX2JlZm9yZV9wdW5jaChpbm9kZSwgb2Zmc2V0LCBsZW4pOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiYjNDM7CWlmIChtb2RlICZhbXA7IEZBTExPQ19GTF9aRVJPX1JBTkdFKSB7CiYjNDM7CQlyZXQgPSBleHQ0X3VwZGF0ZV9kaXNrc2l6ZV9iZWZvcmVfcHVuY2goaW5vZGUsIG9mZnNldCwgbGVuKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJcmV0dXJuIHJldDsKJiM0MzsJfQogCiAJLyogTm93IHJlbGVhc2UgdGhlIHBhZ2VzIGFuZCB6ZXJvIGJsb2NrIGFsaWduZWQgcGFydCBvZiBwYWdlcyAqLwogCXJldCA9IGV4dDRfdHJ1bmNhdGVfcGFnZV9jYWNoZV9ibG9ja19yYW5nZShpbm9kZSwgb2Zmc2V0LCBlbmQpOwpAQCAtNDc1NCw2ICYjNDM7NDc2MiwyMSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsCiAJLyogWmVybyByYW5nZSBleGNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqLwogCWFsaWduX3N0YXJ0ID0gcm91bmRfdXAob2Zmc2V0LCBibG9ja3NpemUpOwogCWFsaWduX2VuZCA9IHJvdW5kX2Rvd24oZW5kLCBibG9ja3NpemUpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBJbiBXUklURV9aRVJPRVMgbW9kZSwgZWRnZXMgdGhhdCB3ZXJlIG5vdCBwYXJ0aWFsLXplcm9lZCAoY2xlYW4KJiM0MzsJICogdW53cml0dGVuIG9yIGhvbGUpIG11c3QgYmUgYWxsb2NhdGVkIGFuZCB6ZXJvZWQgYXMgd2hvbGUgYmxvY2tzLgomIzQzOwkgKiBFeHBhbmQgdGhlIGFsaWduZWQgcmFuZ2Ugb3V0d2FyZCB0byBjb3ZlciB0aGVtLgomIzQzOwkgKi8KJiM0MzsJaWYgKG1vZGUgJmFtcDsgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykgewomIzQzOwkJaWYgKCFJU19BTElHTkVEKG9mZnNldCwgYmxvY2tzaXplKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIShwYXJ0aWFsX3plcm9lZCAmYW1wOyBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCkpCiYjNDM7CQkJYWxpZ25fc3RhcnQgPSByb3VuZF9kb3duKG9mZnNldCwgYmxvY2tzaXplKTsKJiM0MzsJCWlmICghSVNfQUxJR05FRChlbmQsIGJsb2Nrc2l6ZSkgJmFtcDsmYW1wOwomIzQzOwkJICAgICEocGFydGlhbF96ZXJvZWQgJmFtcDsgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKSkKJiM0MzsJCQlhbGlnbl9lbmQgPSByb3VuZF91cChlbmQsIGJsb2Nrc2l6ZSk7CiYjNDM7CX0KJiM0MzsKIAlpZiAoYWxpZ25fZW5kICZndDsgYWxpZ25fc3RhcnQpIHsKIAkJaWYgKG1vZGUgJmFtcDsgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykKIAkJCWZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9aRVJPIHwgRVhUNF9FWF9OT0NBQ0hFOwpAQCAtNDc3MCwxMSAmIzQzOzQ3OTMsMTUgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LAogCWlmIChJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSkKIAkJcmV0dXJuIHJldDsKIAotCS8qIFplcm8gb3V0IHBhcnRpYWwgYmxvY2sgYXQgdGhlIGVkZ2VzIG9mIHRoZSByYW5nZSAqLwotCXJldCA9IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrcyhpbm9kZSwgb2Zmc2V0LCBsZW4sICZhbXA7cGFydGlhbF96ZXJvZWQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0JaWYgKCgoZmlsZS0mZ3Q7Zl9mbGFncyAmYW1wOyBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSAmYW1wOyZhbXA7IHBhcnRpYWxfemVyb2VkKSB7CiYjNDM7CS8qCiYjNDM7CSAqIEluIEZBTExPQ19GTF9XUklURV9aRVJPRVMgbW9kZSwgZWRnZXMgdGhhdCBoYXZlIGJlZW4gcGFydGlhbGx5CiYjNDM7CSAqIHplcm9lZCBtdXN0IGJlIHdyaXR0ZW4gYmFjayB0byBlbnN1cmUgdGhlIGVudGlyZSB6ZXJvZWQgcmFuZ2UKJiM0MzsJICogaXMgY29udmVydGVkIHRvIHRoZSB3cml0dGVuIHN0YXRlLiBJbiBTWU5DIG1vZGUsIHdyaXRlYmFjayBpcwomIzQzOwkgKiBhbHNvIHJlcXVpcmVkIHRvIHBlcnNpc3QgdGhlIHplcm9lZCBkYXRhIHRvIGRpc2suCiYjNDM7CSAqLwomIzQzOwlpZiAocGFydGlhbF96ZXJvZWQgJmFtcDsmYW1wOwomIzQzOwkgICAgKChtb2RlICZhbXA7IEZBTExPQ19GTF9XUklURV9aRVJPRVMpIHx8CiYjNDM7CSAgICAgKGZpbGUtJmd0O2ZfZmxhZ3MgJmFtcDsgT19TWU5DKSB8fCBJU19TWU5DKGlub2RlKSkpIHsKIAkJcmV0ID0gZmlsZW1hcF93cml0ZV9hbmRfd2FpdF9yYW5nZShpbm9kZS0mZ3Q7aV9tYXBwaW5nLCBvZmZzZXQsCiAJCQkJCQkgICBlbmQgLSAxKTsKIAkJaWYgKHJldCkKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuYwppbmRleCBjMmMyZDZhYzdmM2QxMy4uZDY4ZjdiZTRmZjAyYTYgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2lub2RlLmMKQEAgLTQwMjYsNiAmIzQzOzQwMjYsMTAgQEAgdm9pZCBleHQ0X3NldF9hb3BzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiAgKiBiZWNhdXNlIGl0IG1pZ2h0IGhhdmUgZGF0YSBpbiBwYWdlY2FjaGUgKGVnLCBpZiBjYWxsZWQgZnJvbSBleHQ0X3plcm9fcmFuZ2UsCiAgKiBleHQ0X3B1bmNoX2hvbGUsIGV0Yykgd2hpY2ggbmVlZHMgdG8gYmUgcHJvcGVybHkgemVyb2VkIG91dC4gT3RoZXJ3aXNlIGEKICAqIHJhY2luZyB3cml0ZWJhY2sgY2FuIGNvbWUgbGF0ZXIgYW5kIGZsdXNoIHRoZSBzdGFsZSBwYWdlY2FjaGUgdG8gZGlzay4KJiM0MzsgKgomIzQzOyAqIFJldHVybiB0aGUgbG9hZGVkIGJoIGlmIGl0IGFjdHVhbGx5IG5lZWRzIHplcm9pbmcgLSBpbiB3cml0dGVuLCBkaXJ0eQomIzQzOyAqIHVud3JpdHRlbiwgb3IgZGVsYWxsb2Mgc3RhdGUuIFJldHVybiBOVUxMIGlmIGl0JiMzOTtzIGNsZWFuIChpLmUuLCBhIGhvbGUgb3IKJiM0MzsgKiBhIGNsZWFuIHVud3JpdHRlbiBibG9jaykuCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKQogewpAQCAtNDA2NSw3ICYjNDM7NDA2OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKQogCWlmICghYnVmZmVyX21hcHBlZChiaCkpIHsKIAkJQlVGRkVSX1RSQUNFKGJoLCAmIzM0O3VubWFwcGVkJiMzNDspOwogCQlleHQ0X2dldF9ibG9jayhpbm9kZSwgaWJsb2NrLCBiaCwgMCk7Ci0JCS8qIHVubWFwcGVkPyBJdCYjMzk7cyBhIGhvbGUgLSBub3RoaW5nIHRvIGRvICovCiYjNDM7CQkvKiBJdCYjMzk7cyBhIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2sgLSBub3RoaW5nIHRvIGRvICovCiAJCWlmICghYnVmZmVyX21hcHBlZChiaCkpIHsKIAkJCUJVRkZFUl9UUkFDRShiaCwgJiMzNDtzdGlsbCB1bm1hcHBlZCYjMzQ7KTsKIAkJCWdvdG8gdW5sb2NrOwpAQCAtNDI1MiwxMyAmIzQzOzQyNTYsMjYgQEAgaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MzsvKgomIzQzOyAqIFplcm8gb3V0IHRoZSB1bmFsaWduZWQgaGVhZCBhbmQgdGFpbCBvZiB0aGUgW2xzdGFydCwgbHN0YXJ0JiM0MztsZW5ndGgpCiYjNDM7ICogcmFuZ2UuCiYjNDM7ICoKJiM0MzsgKiBPbiByZXR1cm4sIEBwYXJ0aWFsX3plcm9lZCByZWNvcmRzIHdoaWNoIGVkZ2VzIGFjdHVhbGx5IGdvdAomIzQzOyAqIHBhcnRpYWwtemVyb2VkLiAgU2V0IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUL0VYVDRfUEFSVElBTF9aRVJPX0VORCBpZgomIzQzOyAqIHRoZSBoZWFkL3RhaWwgYmxvY2sgZ290IGFjdHVhbGx5IHBhcnRpYWxseSB6ZXJvZWQgKGluIHdyaXR0ZW4sIGRpcnR5CiYjNDM7ICogdW53cml0dGVuIG9yIGRlbGFsbG9jIHN0YXRlKS4gIENsZWFyZWQgaWYgdGhlIGhlYWQvdGFpbCBibG9jayBpcyBhCiYjNDM7ICogaG9sZSBvciBhIGNsZWFuIHVud3JpdHRlbiBibG9jaywgaW4gd2hpY2ggY2FzZSB0aGVyZSBpcyBub3RoaW5nIG5lZWRzCiYjNDM7ICogdG8gemVyby4gIFdoZW4gdGhlIGhlYWQgYW5kIHRhaWwgbGFuZCBpbiB0aGUgc2FtZSBibG9jaywgYm90aCBiaXRzCiYjNDM7ICogYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyby4KJiM0MzsgKi8KIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCwKLQkJCSAgICAgYm9vbCAqZGlkX3plcm8pCiYjNDM7CQkJICAgICB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKQogewogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0mZ3Q7aV9zYjsKIAl1bnNpZ25lZCBwYXJ0aWFsX3N0YXJ0LCBwYXJ0aWFsX2VuZDsKIAlleHQ0X2ZzYmxrX3Qgc3RhcnQsIGVuZDsKIAlsb2ZmX3QgYnl0ZV9lbmQgPSAobHN0YXJ0ICYjNDM7IGxlbmd0aCAtIDEpOwomIzQzOwlib29sIGRpZF96ZXJvID0gZmFsc2U7CiAJaW50IGVyciA9IDA7CiAKIAlwYXJ0aWFsX3N0YXJ0ID0gbHN0YXJ0ICZhbXA7IChzYi0mZ3Q7c19ibG9ja3NpemUgLSAxKTsKQEAgLTQyNzAsMjEgJiM0Mzs0Mjg3LDMyIEBAIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCwKIAkvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIHdpdGhpbiB0aGUgc2luZ2xlIGJsb2NrICovCiAJaWYgKHN0YXJ0ID09IGVuZCAmYW1wOyZhbXA7CiAJICAgIChwYXJ0aWFsX3N0YXJ0IHx8IChwYXJ0aWFsX2VuZCAhPSBzYi0mZ3Q7c19ibG9ja3NpemUgLSAxKSkpIHsKLQkJZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgZGlkX3plcm8sCiYjNDM7CQllcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCAmYW1wO2RpZF96ZXJvLAogCQkJCQkgICAgTlVMTCk7CiYjNDM7CQlpZiAoZGlkX3plcm8pCiYjNDM7CQkJKnBhcnRpYWxfemVyb2VkIHw9IChFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCB8CiYjNDM7CQkJCQkgICAgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKTsKIAkJcmV0dXJuIGVycjsKIAl9CiAJLyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqLwogCWlmIChwYXJ0aWFsX3N0YXJ0KSB7CiAJCWVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgbHN0YXJ0LCBzYi0mZ3Q7c19ibG9ja3NpemUsCi0JCQkJCSAgICBkaWRfemVybywgTlVMTCk7CiYjNDM7CQkJCQkgICAgJmFtcDtkaWRfemVybywgTlVMTCk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gZXJyOwomIzQzOwkJaWYgKGRpZF96ZXJvKQomIzQzOwkJCSpwYXJ0aWFsX3plcm9lZCB8PSBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVDsKIAl9CiAJLyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIGVuZCBvZiB0aGUgcmFuZ2UgKi8KLQlpZiAocGFydGlhbF9lbmQgIT0gc2ItJmd0O3NfYmxvY2tzaXplIC0gMSkKJiM0MzsJaWYgKHBhcnRpYWxfZW5kICE9IHNiLSZndDtzX2Jsb2Nrc2l6ZSAtIDEpIHsKJiM0MzsJCWRpZF96ZXJvID0gZmFsc2U7CiAJCWVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgYnl0ZV9lbmQgLSBwYXJ0aWFsX2VuZCwKLQkJCQkJICAgIHBhcnRpYWxfZW5kICYjNDM7IDEsIGRpZF96ZXJvLCBOVUxMKTsKJiM0MzsJCQkJCSAgICBwYXJ0aWFsX2VuZCAmIzQzOyAxLCAmYW1wO2RpZF96ZXJvLCBOVUxMKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJcmV0dXJuIGVycjsKJiM0MzsJCWlmIChkaWRfemVybykKJiM0MzsJCQkqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fRU5EOwomIzQzOwl9CiAJcmV0dXJuIGVycjsKIH0KIApAQCAtNDQzMyw3ICYjNDM7NDQ2MSw3IEBAIGludCBleHQ0X3B1bmNoX2hvbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgpCiAJbG9mZl90IGVuZCA9IG9mZnNldCAmIzQzOyBsZW5ndGg7CiAJaGFuZGxlX3QgKmhhbmRsZTsKIAl1bnNpZ25lZCBpbnQgY3JlZGl0czsKLQlib29sIHBhcnRpYWxfemVyb2VkID0gZmFsc2U7CiYjNDM7CXVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7CiAJaW50IHJldDsKIAogCXRyYWNlX2V4dDRfcHVuY2hfaG9sZShpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsIDApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjMxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBleHQ0IFplcm8tUmFuZ2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1lc3Npbmcgd2l0aCBgZXh0NF96ZXJvX3JhbmdlYCwgYGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc2AsIGFuZCBgZXh0NF9wdW5jaF9ob2xlYC4gQWxsIGtleSBmdW5jdGlvbnMgd2l0aGluIGBmcy9leHQ0L2V4dGVudHMuY2AgYW5kIGBmcy9leHQ0L2lub2RlLmNgLiBTb3VuZHMgbGlrZSBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiBob3cgcGFydGlhbCBibG9ja3MgZ2V0IHplcm9lZCwgYW5kIGhvdyB0aGF0IGluZm9ybWF0aW9uIHRoZW4gaW5mbHVlbmNlcyB0aGUgYWxsb2NhdGlvbiBhbmQgemVyb2luZyBvZiB3aG9sZSBibG9ja3Mgd2hlbiBgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FU2AgaXMgdXNlZC4gVGhpcyBkaXJlY3RseSB0b3VjaGVzIHRoZSBjb3JlIGxvZ2ljIG9mIGV4dDQmIzM5O3MgYGZhbGxvY2F0ZWAsIHNwZWNpZmljYWxseSB0aGUgYEZBTExPQ19GTF9aRVJPX1JBTkdFYCBhbmQgYEZBTExPQ19GTF9XUklURV9aRVJPRVNgIGZsYWdzLgoKR2l2ZW4gdGhlIHNjb3BlIGFuZCBpbXBhY3Qgb24gc3VjaCBjb3JlIGZ1bmN0aW9uYWxpdHksIGl0JiMzOTtzIHNjcmVhbWluZyBmb3Igc29tZSBzZXJpb3VzIGZ1enppbmcuIEEgY2hhbmdlIHRoaXMgbG93LWxldmVsIGNvdWxkIGVhc2lseSBpbnRyb2R1Y2Ugc3VidGxlLCBoYXJkLXRvLWRldGVjdCBpc3N1ZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2Ugc3RyZXNzIHRlc3QgdGhlIGhlY2sgb3V0IG9mIHRoaXMuCgpGaXJzdCwgbGV0JiMzOTtzIHZlcmlmeSB0aGUgYnVpbGQgcHJlcmVxdWlzaXRlcy4gSXQmIzM5O3MgZXh0NCwgc28gb2J2aW91c2x5IHdlIG5lZWQgYEVYVDRfRlNgIGVuYWJsZWQgaW4gdGhlIGNvbmZpZy4gQnV0IGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHdpdGggYGdyZXBwZXJgIGFuZCBjb25maXJtIG5vdGhpbmcgZWxzZSBpcyBpbXBsaWNpdGx5IHJlcXVpcmVkLiBJdCYjMzk7cyBhbHdheXMgYmVzdCB0byBiZSBwcmVjaXNlIHdoZW4gaXQgY29tZXMgdG8ga2VybmVsIG1vZGlmaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhUNF9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXG5mcy9leHQ0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxuZnMvZXh0NC9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtVc2UgZXh0NCBmb3IgZXh0MiBmaWxlIHN5c3RlbXNcJiMzNDtcbmZzL2V4dDQvS2NvbmZpZzozNzpcdGRlcGVuZHMgb24gRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTM4LVx0ZGVwZW5kcyBvbiBFWFQyX0ZTPW5cbi0tXG5mcy9leHQ0L0tjb25maWctNDUtXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXG5mcy9leHQ0L0tjb25maWctNDctXHRib29sIFwmIzM0O0V4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbmZzL2V4dDQvS2NvbmZpZzo0ODpcdGRlcGVuZHMgb24gRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTQ5LVx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuLS1cbmZzL2V4dDQvS2NvbmZpZy01NS1cbmZzL2V4dDQvS2NvbmZpZzo1Njpjb25maWcgRVhUNF9GU19TRUNVUklUWVxuZnMvZXh0NC9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtFeHQ0IFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuZnMvZXh0NC9LY29uZmlnOjU4Olx0ZGVwZW5kcyBvbiBFWFQ0X0ZTXG5mcy9leHQ0L0tjb25maWctNTktXHRoZWxwXG4tLVxuZnMvZXh0NC9LY29uZmlnPTY4PWNvbmZpZyBFWFQ0X0RFQlVHXG5mcy9leHQ0L0tjb25maWctNjktXHRib29sIFwmIzM0O0V4dDQgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbmZzL2V4dDQvS2NvbmZpZzo3MDpcdGRlcGVuZHMgb24gRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTcxLVx0aGVscFxuLS1cbmZzL2V4dDQvS2NvbmZpZz03Nz1jb25maWcgRVhUNF9LVU5JVF9URVNUU1xuZnMvZXh0NC9LY29uZmlnLTc4LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGV4dDRcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuZnMvZXh0NC9LY29uZmlnOjc5Olx0ZGVwZW5kcyBvbiBFWFQ0X0ZTIFx1MDAyNlx1MDAyNiBLVU5JVFxuZnMvZXh0NC9LY29uZmlnLTgwLVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjcwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBFWFQ0IEZpbGVzeXN0ZW0gTW9kaWZpY2F0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLCBgRVhUNF9GU2AuIE15IGZvY3VzIG5vdyBzaGlmdHMgdG8gdGhlIGNvZGUgdGhhdCYjMzk7cyBiZWVuIGFsdGVyZWQgd2l0aGluIGl0LiBJIHNlZSB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vZGlmaWVkOiBgZXh0NF96ZXJvX3JhbmdlYCwgYGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc2AsIGFuZCBgZXh0NF9wdW5jaF9ob2xlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGVzZSBjaGFuZ2VzLgoKQWxyaWdodCwgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhvc2Uga2V5IGZ1bmN0aW9uczogYGV4dDRfemVyb19yYW5nZWAsIGBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NgLCBhbmQgYGV4dDRfcHVuY2hfaG9sZWAuIEkmIzM5O2xsIGRlbHZlIGludG8gdGhlIHVzYWdlIG9mIGBleHQ0X3plcm9fcmFuZ2VgIGFuZCBgZXh0NF9wdW5jaF9ob2xlYCwgYW5kIGl0IGFwcGVhcnMgdGhleSYjMzk7cmUgYm90aCBjYWxsZWQgYnkgdGhlIGBleHQ0X2ZhbGxvY2F0ZWAgZnVuY3Rpb24uIFRoaXMgcG9pbnRzIHRvIGBmYWxsb2NhdGVgIGJlaW5nIHRoZSBkcml2ZXIgZm9yIHRoZXNlIG9wZXJhdGlvbnMsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG15IGVmZm9ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF96ZXJvX3JhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHRlbnRzLmM9NDcwOD1zdGF0aWMgaW50IGV4dDRfaW5zZXJ0X3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTtcbmZzL2V4dDQvZXh0ZW50cy5jLTQ3MDktXG5mcy9leHQ0L2V4dGVudHMuYzo0NzEwOnN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbmZzL2V4dDQvZXh0ZW50cy5jLTQ3MTEtXHRcdFx0ICAgIGxvZmZfdCBsZW4sIGludCBtb2RlKVxuLS1cbmZzL2V4dDQvZXh0ZW50cy5jLTQ3MjAtXG5mcy9leHQ0L2V4dGVudHMuYzo0NzIxOlx0dHJhY2VfZXh0NF96ZXJvX3JhbmdlKGlub2RlLCBvZmZzZXQsIGxlbiwgbW9kZSk7XG5mcy9leHQ0L2V4dGVudHMuYy00NzIyLVx0V0FSTl9PTl9PTkNFKCFpbm9kZV9pc19sb2NrZWQoaW5vZGUpKTtcbi0tXG5mcy9leHQ0L2V4dGVudHMuYz00ODgxPWxvbmcgZXh0NF9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL2V4dDQvZXh0ZW50cy5jLTQ5NDktXHRjYXNlIEZBTExPQ19GTF9XUklURV9aRVJPRVM6XG5mcy9leHQ0L2V4dGVudHMuYzo0OTUwOlx0XHRyZXQgPSBleHQ0X3plcm9fcmFuZ2UoZmlsZSwgb2Zmc2V0LCBsZW4sIG1vZGUpO1xuZnMvZXh0NC9leHRlbnRzLmMtNDk1MS1cdFx0YnJlYWs7XG4tLVxuZnMvZXh0NC9pbm9kZS5jPTQwMDQ9dm9pZCBleHQ0X3NldF9hb3BzKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTQwMjUtICogSGVyZSB3ZSBjYW4mIzM5O3Qgc2tpcCBhbiB1bndyaXR0ZW4gYnVmZmVyIGV2ZW4gdGhvdWdoIGl0IHVzdWFsbHkgcmVhZHMgemVyb1xuZnMvZXh0NC9pbm9kZS5jOjQwMjY6ICogYmVjYXVzZSBpdCBtaWdodCBoYXZlIGRhdGEgaW4gcGFnZWNhY2hlIChlZywgaWYgY2FsbGVkIGZyb20gZXh0NF96ZXJvX3JhbmdlLFxuZnMvZXh0NC9pbm9kZS5jLTQwMjctICogZXh0NF9wdW5jaF9ob2xlLCBldGMpIHdoaWNoIG5lZWRzIHRvIGJlIHByb3Blcmx5IHplcm9lZCBvdXQuIE90aGVyd2lzZSBhXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUxMAoJCQkJCQkJb3V0cHV0OiAxNTEKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEV4dDQgWmVyb2luZyBPcGVyYXRpb25zKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZpbGUgc3lzdGVtIHBlcnNwZWN0aXZlLiBJJiMzOTttIHNlZWluZyB0aHJlZSBrZXkgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gemVyb2luZyBvcGVyYXRpb25zIGluIHRoZSBleHQ0IGZpbGUgc3lzdGVtOiBgZXh0NF96ZXJvX3JhbmdlYCwgYGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc2AsIGFuZCBgZXh0NF9wdW5jaF9ob2xlYC4gSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIGBleHQ0X2ZhbGxvY2F0ZWAsIHdoaWNoIGlzIGxpa2VseSB0aGUgdXNlci1zcGFjZSBlbnRyeSBwb2ludC4KCkZpcnN0LCBJIGNvbmZpcm1lZCB0aGF0IGBleHQ0X3plcm9fcmFuZ2VgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiBgZnMvZXh0NC9leHRlbnRzLmNgLiBUaGlzIHRlbGxzIG1lIGltbWVkaWF0ZWx5IHRoYXQgaXQmIzM5O3MgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uLiBUaGF0IGFsc28gbWVhbnMgdGhhdCBgZXh0NF9mYWxsb2NhdGVgIGhhcyB0byBiZSB0aGUgdXNlci1zcGFjZSBlbnRyeS4KCk5vdywgSSBzY2FubmVkIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGBleHQ0X2Jsb2NrX3plcm9fZW9mYCBhbmQgYGV4dDRfbG9hZF90YWlsX2JoYCB3ZXJlIG1vZGlmaWVkLCBidXQgdGhleSYjMzk7cmUganVzdCByZWxhdGVkIHRvIGNvZGUgb3IgY29tbWVudHMuIFRodXMsIHRoZSBmb2N1cyByZW1haW5zIG9uIGBleHQ0X3plcm9fcmFuZ2VgLCBgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzYCwgYW5kIGBleHQ0X3B1bmNoX2hvbGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF96ZXJvX3JhbmdlJiMzNDssCiAgICAmIzM0O2V4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyYjMzQ7LAogICAgJiMzNDtleHQ0X3B1bmNoX2hvbGUmIzM0OywKICAgICYjMzQ7ZXh0NF9mYWxsb2NhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB6ZXJvaW5nIHBhcnRpYWwgYmxvY2tzIGluIGV4dDQsIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgYEZBTExPQ19GTF9aRVJPX1JBTkdFYCBhbmQgYEZBTExPQ19GTF9XUklURV9aRVJPRVNgIG1vZGVzIGluIGBleHQ0X2ZhbGxvY2F0ZWAuIFRoaXMgaXMgYSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGZpbGUgYWxsb2NhdGlvbiBhbmQgemVyb2luZyBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB0aGUgYGZhbGxvY2F0ZWAgc3lzY2FsbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfemVyb19yYW5nZSYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MmIzM0OywKICAgICYjMzQ7ZXh0NF9wdW5jaF9ob2xlJiMzNDssCiAgICAmIzM0O2V4dDRfZmFsbG9jYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgemVyb2luZyBwYXJ0aWFsIGJsb2NrcyBpbiBleHQ0LCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIGBGQUxMT0NfRkxfWkVST19SQU5HRWAgYW5kIGBGQUxMT0NfRkxfV1JJVEVfWkVST0VTYCBtb2RlcyBpbiBgZXh0NF9mYWxsb2NhdGVgLiBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsIGNoYW5nZSB0byBmaWxlIGFsbG9jYXRpb24gYW5kIHplcm9pbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBmYWxsb2NhdGVgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjoyNToxMS43OTA3NTM3MzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUwMTAyMjEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF96ZXJvX3JhbmdlXCIsXG4gICAgXCJleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NcIixcbiAgICBcImV4dDRfcHVuY2hfaG9sZVwiLFxuICAgIFwiZXh0NF9mYWxsb2NhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHplcm9pbmcgcGFydGlhbCBibG9ja3MgaW4gZXh0NCwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyBgRkFMTE9DX0ZMX1pFUk9fUkFOR0VgIGFuZCBgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FU2AgbW9kZXMgaW4gYGV4dDRfZmFsbG9jYXRlYC4gVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gZmlsZSBhbGxvY2F0aW9uIGFuZCB6ZXJvaW5nIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjoyNToxMS43OTA3NTgxMDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDM3MjU1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIzNDFlNDQ3YzA3NzFkMWYyNmU3OTIzODk3NmQyYzAxMjFlYmE2OGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAyMjoyNToxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXFxuaW5kZXggOTQyODNhOTkxZTVjNGYuLmIyZTU1ODc2ZDBlMzUyIDEwMDY0NFxcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcXG5AQCAtMzA5OSw4ICszMDk5LDExIEBAIGV4dGVybiBpbnQgZXh0NF9jaHVua190cmFuc19leHRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5yYmxvY2tzKTtcXG4gZXh0ZXJuIGludCBleHQ0X21ldGFfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBsYmxvY2tzLFxcbiBcXHRcXHRcXHRcXHQgIGludCBwZXh0ZW50cyk7XFxuIGV4dGVybiBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZCk7XFxuK1xcbisjZGVmaW5lIEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUXFx0MHgxXFxuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fRU5EXFx0MHgyXFxuIGV4dGVybiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsXFxuLVxcdFxcdFxcdFxcdCAgICBsb2ZmX3QgbGVuZ3RoLCBib29sICpkaWRfemVybyk7XFxuK1xcdFxcdFxcdFxcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcXG4gZXh0ZXJuIHZtX2ZhdWx0X3QgZXh0NF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpO1xcbiBleHRlcm4gcXNpemVfdCAqZXh0NF9nZXRfcmVzZXJ2ZWRfc3BhY2Uoc3RydWN0IGlub2RlICppbm9kZSk7XFxuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHRlbnRzLmMgYi9mcy9leHQ0L2V4dGVudHMuY1xcbmluZGV4IDEyNWY2MjhlNzM4YWIxLi4zODc1M2MyZWY5MTBiMSAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xcbisrKyBiL2ZzL2V4dDQvZXh0ZW50cy5jXFxuQEAgLTQ3MTUsNyArNDcxNSw3IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0bG9mZl90IGFsaWduX3N0YXJ0LCBhbGlnbl9lbmQsIG5ld19zaXplID0gMDtcXG4gXFx0bG9mZl90IGVuZCA9IG9mZnNldCArIGxlbjtcXG4gXFx0dW5zaWduZWQgaW50IGJsb2Nrc2l6ZSA9IGlfYmxvY2tzaXplKGlub2RlKTtcXG4tXFx0Ym9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlO1xcbitcXHR1bnNpZ25lZCBpbnQgcGFydGlhbF96ZXJvZWQgPSAwO1xcbiBcXHRpbnQgcmV0LCBmbGFncztcXG4gXFxuIFxcdHRyYWNlX2V4dDRfemVyb19yYW5nZShpbm9kZSwgb2Zmc2V0LCBsZW4sIG1vZGUpO1xcbkBAIC00NzM0LDE3ICs0NzM0LDI1IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0fVxcbiBcXG4gXFx0ZmxhZ3MgPSBFWFQ0X0dFVF9CTE9DS1NfQ1JFQVRFX1VOV1JJVF9FWFQ7XFxuLVxcdC8qIFByZWFsbG9jYXRlIHRoZSByYW5nZSBpbmNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqL1xcbitcXHQvKlxcbitcXHQgKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMsIGFuZCB6ZXJvXFxuK1xcdCAqIG91dCBwYXJ0aWFsIGJsb2NrcyBpZiB0aGV5IGFscmVhZHkgY29udGFpbiBkYXRhLlxcbitcXHQgKi9cXG4gXFx0aWYgKCFJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSkge1xcbiBcXHRcXHRyZXQgPSBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKGZpbGUsIG9mZnNldCwgbGVuLCBuZXdfc2l6ZSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBmbGFncyk7XFxuK1xcdFxcdGlmICghcmV0KVxcbitcXHRcXHRcXHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnBhcnRpYWxfemVyb2VkKTtcXG4gXFx0XFx0aWYgKHJldClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0ID0gZXh0NF91cGRhdGVfZGlza3NpemVfYmVmb3JlX3B1bmNoKGlub2RlLCBvZmZzZXQsIGxlbik7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuK1xcdGlmIChtb2RlIFxcdTAwMjYgRkFMTE9DX0ZMX1pFUk9fUkFOR0UpIHtcXG4rXFx0XFx0cmV0ID0gZXh0NF91cGRhdGVfZGlza3NpemVfYmVmb3JlX3B1bmNoKGlub2RlLCBvZmZzZXQsIGxlbik7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIE5vdyByZWxlYXNlIHRoZSBwYWdlcyBhbmQgemVybyBibG9jayBhbGlnbmVkIHBhcnQgb2YgcGFnZXMgKi9cXG4gXFx0cmV0ID0gZXh0NF90cnVuY2F0ZV9wYWdlX2NhY2hlX2Jsb2NrX3JhbmdlKGlub2RlLCBvZmZzZXQsIGVuZCk7XFxuQEAgLTQ3NTQsNiArNDc2MiwyMSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXFxuIFxcdC8qIFplcm8gcmFuZ2UgZXhjbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMgKi9cXG4gXFx0YWxpZ25fc3RhcnQgPSByb3VuZF91cChvZmZzZXQsIGJsb2Nrc2l6ZSk7XFxuIFxcdGFsaWduX2VuZCA9IHJvdW5kX2Rvd24oZW5kLCBibG9ja3NpemUpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogSW4gV1JJVEVfWkVST0VTIG1vZGUsIGVkZ2VzIHRoYXQgd2VyZSBub3QgcGFydGlhbC16ZXJvZWQgKGNsZWFuXFxuK1xcdCAqIHVud3JpdHRlbiBvciBob2xlKSBtdXN0IGJlIGFsbG9jYXRlZCBhbmQgemVyb2VkIGFzIHdob2xlIGJsb2Nrcy5cXG4rXFx0ICogRXhwYW5kIHRoZSBhbGlnbmVkIHJhbmdlIG91dHdhcmQgdG8gY292ZXIgdGhlbS5cXG4rXFx0ICovXFxuK1xcdGlmIChtb2RlIFxcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykge1xcbitcXHRcXHRpZiAoIUlTX0FMSUdORUQob2Zmc2V0LCBibG9ja3NpemUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhKHBhcnRpYWxfemVyb2VkIFxcdTAwMjYgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQpKVxcbitcXHRcXHRcXHRhbGlnbl9zdGFydCA9IHJvdW5kX2Rvd24ob2Zmc2V0LCBibG9ja3NpemUpO1xcbitcXHRcXHRpZiAoIUlTX0FMSUdORUQoZW5kLCBibG9ja3NpemUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhKHBhcnRpYWxfemVyb2VkIFxcdTAwMjYgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKSlcXG4rXFx0XFx0XFx0YWxpZ25fZW5kID0gcm91bmRfdXAoZW5kLCBibG9ja3NpemUpO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoYWxpZ25fZW5kIFxcdTAwM2UgYWxpZ25fc3RhcnQpIHtcXG4gXFx0XFx0aWYgKG1vZGUgXFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKVxcbiBcXHRcXHRcXHRmbGFncyA9IEVYVDRfR0VUX0JMT0NLU19DUkVBVEVfWkVSTyB8IEVYVDRfRVhfTk9DQUNIRTtcXG5AQCAtNDc3MCwxMSArNDc5MywxNSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXFxuIFxcdGlmIChJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSlcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdC8qIFplcm8gb3V0IHBhcnRpYWwgYmxvY2sgYXQgdGhlIGVkZ2VzIG9mIHRoZSByYW5nZSAqL1xcbi1cXHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLCBcXHUwMDI2cGFydGlhbF96ZXJvZWQpO1xcbi1cXHRpZiAocmV0KVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbi1cXHRpZiAoKChmaWxlLVxcdTAwM2VmX2ZsYWdzIFxcdTAwMjYgT19TWU5DKSB8fCBJU19TWU5DKGlub2RlKSkgXFx1MDAyNlxcdTAwMjYgcGFydGlhbF96ZXJvZWQpIHtcXG4rXFx0LypcXG4rXFx0ICogSW4gRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IGhhdmUgYmVlbiBwYXJ0aWFsbHlcXG4rXFx0ICogemVyb2VkIG11c3QgYmUgd3JpdHRlbiBiYWNrIHRvIGVuc3VyZSB0aGUgZW50aXJlIHplcm9lZCByYW5nZVxcbitcXHQgKiBpcyBjb252ZXJ0ZWQgdG8gdGhlIHdyaXR0ZW4gc3RhdGUuIEluIFNZTkMgbW9kZSwgd3JpdGViYWNrIGlzXFxuK1xcdCAqIGFsc28gcmVxdWlyZWQgdG8gcGVyc2lzdCB0aGUgemVyb2VkIGRhdGEgdG8gZGlzay5cXG4rXFx0ICovXFxuK1xcdGlmIChwYXJ0aWFsX3plcm9lZCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgKChtb2RlIFxcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykgfHxcXG4rXFx0ICAgICAoZmlsZS1cXHUwMDNlZl9mbGFncyBcXHUwMDI2IE9fU1lOQykgfHwgSVNfU1lOQyhpbm9kZSkpKSB7XFxuIFxcdFxcdHJldCA9IGZpbGVtYXBfd3JpdGVfYW5kX3dhaXRfcmFuZ2UoaW5vZGUtXFx1MDAzZWlfbWFwcGluZywgb2Zmc2V0LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICBlbmQgLSAxKTtcXG4gXFx0XFx0aWYgKHJldClcXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jXFxuaW5kZXggYzJjMmQ2YWM3ZjNkMTMuLmQ2OGY3YmU0ZmYwMmE2IDEwMDY0NFxcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xcbisrKyBiL2ZzL2V4dDQvaW5vZGUuY1xcbkBAIC00MDI2LDYgKzQwMjYsMTAgQEAgdm9pZCBleHQ0X3NldF9hb3BzKHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuICAqIGJlY2F1c2UgaXQgbWlnaHQgaGF2ZSBkYXRhIGluIHBhZ2VjYWNoZSAoZWcsIGlmIGNhbGxlZCBmcm9tIGV4dDRfemVyb19yYW5nZSxcXG4gICogZXh0NF9wdW5jaF9ob2xlLCBldGMpIHdoaWNoIG5lZWRzIHRvIGJlIHByb3Blcmx5IHplcm9lZCBvdXQuIE90aGVyd2lzZSBhXFxuICAqIHJhY2luZyB3cml0ZWJhY2sgY2FuIGNvbWUgbGF0ZXIgYW5kIGZsdXNoIHRoZSBzdGFsZSBwYWdlY2FjaGUgdG8gZGlzay5cXG4rICpcXG4rICogUmV0dXJuIHRoZSBsb2FkZWQgYmggaWYgaXQgYWN0dWFsbHkgbmVlZHMgemVyb2luZyAtIGluIHdyaXR0ZW4sIGRpcnR5XFxuKyAqIHVud3JpdHRlbiwgb3IgZGVsYWxsb2Mgc3RhdGUuIFJldHVybiBOVUxMIGlmIGl0J3MgY2xlYW4gKGkuZS4sIGEgaG9sZSBvclxcbisgKiBhIGNsZWFuIHVud3JpdHRlbiBibG9jaykuXFxuICAqL1xcbiBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcXG4ge1xcbkBAIC00MDY1LDcgKzQwNjksNyBAQCBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcXG4gXFx0aWYgKCFidWZmZXJfbWFwcGVkKGJoKSkge1xcbiBcXHRcXHRCVUZGRVJfVFJBQ0UoYmgsIFxcXCJ1bm1hcHBlZFxcXCIpO1xcbiBcXHRcXHRleHQ0X2dldF9ibG9jayhpbm9kZSwgaWJsb2NrLCBiaCwgMCk7XFxuLVxcdFxcdC8qIHVubWFwcGVkPyBJdCdzIGEgaG9sZSAtIG5vdGhpbmcgdG8gZG8gKi9cXG4rXFx0XFx0LyogSXQncyBhIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2sgLSBub3RoaW5nIHRvIGRvICovXFxuIFxcdFxcdGlmICghYnVmZmVyX21hcHBlZChiaCkpIHtcXG4gXFx0XFx0XFx0QlVGRkVSX1RSQUNFKGJoLCBcXFwic3RpbGwgdW5tYXBwZWRcXFwiKTtcXG4gXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuQEAgLTQyNTIsMTMgKzQyNTYsMjYgQEAgaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbisvKlxcbisgKiBaZXJvIG91dCB0aGUgdW5hbGlnbmVkIGhlYWQgYW5kIHRhaWwgb2YgdGhlIFtsc3RhcnQsIGxzdGFydCtsZW5ndGgpXFxuKyAqIHJhbmdlLlxcbisgKlxcbisgKiBPbiByZXR1cm4sIEBwYXJ0aWFsX3plcm9lZCByZWNvcmRzIHdoaWNoIGVkZ2VzIGFjdHVhbGx5IGdvdFxcbisgKiBwYXJ0aWFsLXplcm9lZC4gIFNldCBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVC9FWFQ0X1BBUlRJQUxfWkVST19FTkQgaWZcXG4rICogdGhlIGhlYWQvdGFpbCBibG9jayBnb3QgYWN0dWFsbHkgcGFydGlhbGx5IHplcm9lZCAoaW4gd3JpdHRlbiwgZGlydHlcXG4rICogdW53cml0dGVuIG9yIGRlbGFsbG9jIHN0YXRlKS4gIENsZWFyZWQgaWYgdGhlIGhlYWQvdGFpbCBibG9jayBpcyBhXFxuKyAqIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2ssIGluIHdoaWNoIGNhc2UgdGhlcmUgaXMgbm90aGluZyBuZWVkc1xcbisgKiB0byB6ZXJvLiAgV2hlbiB0aGUgaGVhZCBhbmQgdGFpbCBsYW5kIGluIHRoZSBzYW1lIGJsb2NrLCBib3RoIGJpdHNcXG4rICogYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyby5cXG4rICovXFxuIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCxcXG4tXFx0XFx0XFx0ICAgICBib29sICpkaWRfemVybylcXG4rXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKVxcbiB7XFxuIFxcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cXHUwMDNlaV9zYjtcXG4gXFx0dW5zaWduZWQgcGFydGlhbF9zdGFydCwgcGFydGlhbF9lbmQ7XFxuIFxcdGV4dDRfZnNibGtfdCBzdGFydCwgZW5kO1xcbiBcXHRsb2ZmX3QgYnl0ZV9lbmQgPSAobHN0YXJ0ICsgbGVuZ3RoIC0gMSk7XFxuK1xcdGJvb2wgZGlkX3plcm8gPSBmYWxzZTtcXG4gXFx0aW50IGVyciA9IDA7XFxuIFxcbiBcXHRwYXJ0aWFsX3N0YXJ0ID0gbHN0YXJ0IFxcdTAwMjYgKHNiLVxcdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpO1xcbkBAIC00MjcwLDIxICs0Mjg3LDMyIEBAIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCxcXG4gXFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyB3aXRoaW4gdGhlIHNpbmdsZSBibG9jayAqL1xcbiBcXHRpZiAoc3RhcnQgPT0gZW5kIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAocGFydGlhbF9zdGFydCB8fCAocGFydGlhbF9lbmQgIT0gc2ItXFx1MDAzZXNfYmxvY2tzaXplIC0gMSkpKSB7XFxuLVxcdFxcdGVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgbHN0YXJ0LCBsZW5ndGgsIGRpZF96ZXJvLFxcbitcXHRcXHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBcXHUwMDI2ZGlkX3plcm8sXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBOVUxMKTtcXG4rXFx0XFx0aWYgKGRpZF96ZXJvKVxcbitcXHRcXHRcXHQqcGFydGlhbF96ZXJvZWQgfD0gKEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUIHxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIEVYVDRfUEFSVElBTF9aRVJPX0VORCk7XFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdH1cXG4gXFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqL1xcbiBcXHRpZiAocGFydGlhbF9zdGFydCkge1xcbiBcXHRcXHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgc2ItXFx1MDAzZXNfYmxvY2tzaXplLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgZGlkX3plcm8sIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0aWYgKGRpZF96ZXJvKVxcbitcXHRcXHRcXHQqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQ7XFxuIFxcdH1cXG4gXFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIGVuZCBvZiB0aGUgcmFuZ2UgKi9cXG4tXFx0aWYgKHBhcnRpYWxfZW5kICE9IHNiLVxcdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpXFxuK1xcdGlmIChwYXJ0aWFsX2VuZCAhPSBzYi1cXHUwMDNlc19ibG9ja3NpemUgLSAxKSB7XFxuK1xcdFxcdGRpZF96ZXJvID0gZmFsc2U7XFxuIFxcdFxcdGVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgYnl0ZV9lbmQgLSBwYXJ0aWFsX2VuZCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIHBhcnRpYWxfZW5kICsgMSwgZGlkX3plcm8sIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgcGFydGlhbF9lbmQgKyAxLCBcXHUwMDI2ZGlkX3plcm8sIE5VTEwpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRpZiAoZGlkX3plcm8pXFxuK1xcdFxcdFxcdCpwYXJ0aWFsX3plcm9lZCB8PSBFWFQ0X1BBUlRJQUxfWkVST19FTkQ7XFxuK1xcdH1cXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG5AQCAtNDQzMyw3ICs0NDYxLDcgQEAgaW50IGV4dDRfcHVuY2hfaG9sZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aClcXG4gXFx0bG9mZl90IGVuZCA9IG9mZnNldCArIGxlbmd0aDtcXG4gXFx0aGFuZGxlX3QgKmhhbmRsZTtcXG4gXFx0dW5zaWduZWQgaW50IGNyZWRpdHM7XFxuLVxcdGJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTtcXG4rXFx0dW5zaWduZWQgaW50IHBhcnRpYWxfemVyb2VkID0gMDtcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdHRyYWNlX2V4dDRfcHVuY2hfaG9sZShpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjoyNToxMi4yNjYwNTcyMzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MDI1NzA5MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3plcm9fcmFuZ2VcIixcbiAgICBcImV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc1wiLFxuICAgIFwiZXh0NF9wdW5jaF9ob2xlXCIsXG4gICAgXCJleHQ0X2ZhbGxvY2F0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgemVyb2luZyBwYXJ0aWFsIGJsb2NrcyBpbiBleHQ0LCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIGBGQUxMT0NfRkxfWkVST19SQU5HRWAgYW5kIGBGQUxMT0NfRkxfV1JJVEVfWkVST0VTYCBtb2RlcyBpbiBgZXh0NF9mYWxsb2NhdGVgLiBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsIGNoYW5nZSB0byBmaWxlIGFsbG9jYXRpb24gYW5kIHplcm9pbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBmYWxsb2NhdGVgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjM0MWU0NDdjMDc3MWQxZjI2ZTc5MjM4OTc2ZDJjMDEyMWViYTY4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMjI6MjU6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXG5pbmRleCA5NDI4M2E5OTFlNWM0Zi4uYjJlNTU4NzZkMGUzNTIgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dDQuaFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcbkBAIC0zMDk5LDggKzMwOTksMTEgQEAgZXh0ZXJuIGludCBleHQ0X2NodW5rX3RyYW5zX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbnJibG9ja3MpO1xuIGV4dGVybiBpbnQgZXh0NF9tZXRhX3RyYW5zX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbGJsb2NrcyxcbiBcdFx0XHRcdCAgaW50IHBleHRlbnRzKTtcbiBleHRlcm4gaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpO1xuK1xuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlRcdDB4MVxuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fRU5EXHQweDJcbiBleHRlcm4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LFxuLVx0XHRcdFx0ICAgIGxvZmZfdCBsZW5ndGgsIGJvb2wgKmRpZF96ZXJvKTtcbitcdFx0XHRcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcbiBleHRlcm4gdm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7XG4gZXh0ZXJuIHFzaXplX3QgKmV4dDRfZ2V0X3Jlc2VydmVkX3NwYWNlKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dGVudHMuYyBiL2ZzL2V4dDQvZXh0ZW50cy5jXG5pbmRleCAxMjVmNjI4ZTczOGFiMS4uMzg3NTNjMmVmOTEwYjEgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xuKysrIGIvZnMvZXh0NC9leHRlbnRzLmNcbkBAIC00NzE1LDcgKzQ3MTUsNyBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHRsb2ZmX3QgYWxpZ25fc3RhcnQsIGFsaWduX2VuZCwgbmV3X3NpemUgPSAwO1xuIFx0bG9mZl90IGVuZCA9IG9mZnNldCArIGxlbjtcbiBcdHVuc2lnbmVkIGludCBibG9ja3NpemUgPSBpX2Jsb2Nrc2l6ZShpbm9kZSk7XG4tXHRib29sIHBhcnRpYWxfemVyb2VkID0gZmFsc2U7XG4rXHR1bnNpZ25lZCBpbnQgcGFydGlhbF96ZXJvZWQgPSAwO1xuIFx0aW50IHJldCwgZmxhZ3M7XG4gXG4gXHR0cmFjZV9leHQ0X3plcm9fcmFuZ2UoaW5vZGUsIG9mZnNldCwgbGVuLCBtb2RlKTtcbkBAIC00NzM0LDE3ICs0NzM0LDI1IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbiBcdH1cbiBcbiBcdGZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9VTldSSVRfRVhUO1xuLVx0LyogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovXG4rXHQvKlxuK1x0ICogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzLCBhbmQgemVyb1xuK1x0ICogb3V0IHBhcnRpYWwgYmxvY2tzIGlmIHRoZXkgYWxyZWFkeSBjb250YWluIGRhdGEuXG4rXHQgKi9cbiBcdGlmICghSVNfQUxJR05FRChvZmZzZXQgfCBlbmQsIGJsb2Nrc2l6ZSkpIHtcbiBcdFx0cmV0ID0gZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhmaWxlLCBvZmZzZXQsIGxlbiwgbmV3X3NpemUsXG4gXHRcdFx0XHRcdCAgICAgZmxhZ3MpO1xuK1x0XHRpZiAoIXJldClcbitcdFx0XHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLFxuK1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZwYXJ0aWFsX3plcm9lZCk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdHJldCA9IGV4dDRfdXBkYXRlX2Rpc2tzaXplX2JlZm9yZV9wdW5jaChpbm9kZSwgb2Zmc2V0LCBsZW4pO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdGlmIChtb2RlIFx1MDAyNiBGQUxMT0NfRkxfWkVST19SQU5HRSkge1xuK1x0XHRyZXQgPSBleHQ0X3VwZGF0ZV9kaXNrc2l6ZV9iZWZvcmVfcHVuY2goaW5vZGUsIG9mZnNldCwgbGVuKTtcbitcdFx0aWYgKHJldClcbitcdFx0XHRyZXR1cm4gcmV0O1xuK1x0fVxuIFxuIFx0LyogTm93IHJlbGVhc2UgdGhlIHBhZ2VzIGFuZCB6ZXJvIGJsb2NrIGFsaWduZWQgcGFydCBvZiBwYWdlcyAqL1xuIFx0cmV0ID0gZXh0NF90cnVuY2F0ZV9wYWdlX2NhY2hlX2Jsb2NrX3JhbmdlKGlub2RlLCBvZmZzZXQsIGVuZCk7XG5AQCAtNDc1NCw2ICs0NzYyLDIxIEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbiBcdC8qIFplcm8gcmFuZ2UgZXhjbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMgKi9cbiBcdGFsaWduX3N0YXJ0ID0gcm91bmRfdXAob2Zmc2V0LCBibG9ja3NpemUpO1xuIFx0YWxpZ25fZW5kID0gcm91bmRfZG93bihlbmQsIGJsb2Nrc2l6ZSk7XG4rXG4rXHQvKlxuK1x0ICogSW4gV1JJVEVfWkVST0VTIG1vZGUsIGVkZ2VzIHRoYXQgd2VyZSBub3QgcGFydGlhbC16ZXJvZWQgKGNsZWFuXG4rXHQgKiB1bndyaXR0ZW4gb3IgaG9sZSkgbXVzdCBiZSBhbGxvY2F0ZWQgYW5kIHplcm9lZCBhcyB3aG9sZSBibG9ja3MuXG4rXHQgKiBFeHBhbmQgdGhlIGFsaWduZWQgcmFuZ2Ugb3V0d2FyZCB0byBjb3ZlciB0aGVtLlxuK1x0ICovXG4rXHRpZiAobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykge1xuK1x0XHRpZiAoIUlTX0FMSUdORUQob2Zmc2V0LCBibG9ja3NpemUpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIShwYXJ0aWFsX3plcm9lZCBcdTAwMjYgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQpKVxuK1x0XHRcdGFsaWduX3N0YXJ0ID0gcm91bmRfZG93bihvZmZzZXQsIGJsb2Nrc2l6ZSk7XG4rXHRcdGlmICghSVNfQUxJR05FRChlbmQsIGJsb2Nrc2l6ZSkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAhKHBhcnRpYWxfemVyb2VkIFx1MDAyNiBFWFQ0X1BBUlRJQUxfWkVST19FTkQpKVxuK1x0XHRcdGFsaWduX2VuZCA9IHJvdW5kX3VwKGVuZCwgYmxvY2tzaXplKTtcbitcdH1cbitcbiBcdGlmIChhbGlnbl9lbmQgXHUwMDNlIGFsaWduX3N0YXJ0KSB7XG4gXHRcdGlmIChtb2RlIFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKVxuIFx0XHRcdGZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9aRVJPIHwgRVhUNF9FWF9OT0NBQ0hFO1xuQEAgLTQ3NzAsMTEgKzQ3OTMsMTUgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0aWYgKElTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0LyogWmVybyBvdXQgcGFydGlhbCBibG9jayBhdCB0aGUgZWRnZXMgb2YgdGhlIHJhbmdlICovXG4tXHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLCBcdTAwMjZwYXJ0aWFsX3plcm9lZCk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVx0aWYgKCgoZmlsZS1cdTAwM2VmX2ZsYWdzIFx1MDAyNiBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSBcdTAwMjZcdTAwMjYgcGFydGlhbF96ZXJvZWQpIHtcbitcdC8qXG4rXHQgKiBJbiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTIG1vZGUsIGVkZ2VzIHRoYXQgaGF2ZSBiZWVuIHBhcnRpYWxseVxuK1x0ICogemVyb2VkIG11c3QgYmUgd3JpdHRlbiBiYWNrIHRvIGVuc3VyZSB0aGUgZW50aXJlIHplcm9lZCByYW5nZVxuK1x0ICogaXMgY29udmVydGVkIHRvIHRoZSB3cml0dGVuIHN0YXRlLiBJbiBTWU5DIG1vZGUsIHdyaXRlYmFjayBpc1xuK1x0ICogYWxzbyByZXF1aXJlZCB0byBwZXJzaXN0IHRoZSB6ZXJvZWQgZGF0YSB0byBkaXNrLlxuK1x0ICovXG4rXHRpZiAocGFydGlhbF96ZXJvZWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgKChtb2RlIFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKSB8fFxuK1x0ICAgICAoZmlsZS1cdTAwM2VmX2ZsYWdzIFx1MDAyNiBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSkge1xuIFx0XHRyZXQgPSBmaWxlbWFwX3dyaXRlX2FuZF93YWl0X3JhbmdlKGlub2RlLVx1MDAzZWlfbWFwcGluZywgb2Zmc2V0LFxuIFx0XHRcdFx0XHRcdCAgIGVuZCAtIDEpO1xuIFx0XHRpZiAocmV0KVxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuY1xuaW5kZXggYzJjMmQ2YWM3ZjNkMTMuLmQ2OGY3YmU0ZmYwMmE2IDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9pbm9kZS5jXG4rKysgYi9mcy9leHQ0L2lub2RlLmNcbkBAIC00MDI2LDYgKzQwMjYsMTAgQEAgdm9pZCBleHQ0X3NldF9hb3BzKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gICogYmVjYXVzZSBpdCBtaWdodCBoYXZlIGRhdGEgaW4gcGFnZWNhY2hlIChlZywgaWYgY2FsbGVkIGZyb20gZXh0NF96ZXJvX3JhbmdlLFxuICAqIGV4dDRfcHVuY2hfaG9sZSwgZXRjKSB3aGljaCBuZWVkcyB0byBiZSBwcm9wZXJseSB6ZXJvZWQgb3V0LiBPdGhlcndpc2UgYVxuICAqIHJhY2luZyB3cml0ZWJhY2sgY2FuIGNvbWUgbGF0ZXIgYW5kIGZsdXNoIHRoZSBzdGFsZSBwYWdlY2FjaGUgdG8gZGlzay5cbisgKlxuKyAqIFJldHVybiB0aGUgbG9hZGVkIGJoIGlmIGl0IGFjdHVhbGx5IG5lZWRzIHplcm9pbmcgLSBpbiB3cml0dGVuLCBkaXJ0eVxuKyAqIHVud3JpdHRlbiwgb3IgZGVsYWxsb2Mgc3RhdGUuIFJldHVybiBOVUxMIGlmIGl0J3MgY2xlYW4gKGkuZS4sIGEgaG9sZSBvclxuKyAqIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrKS5cbiAgKi9cbiBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcbiB7XG5AQCAtNDA2NSw3ICs0MDY5LDcgQEAgc3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pXG4gXHRpZiAoIWJ1ZmZlcl9tYXBwZWQoYmgpKSB7XG4gXHRcdEJVRkZFUl9UUkFDRShiaCwgXCJ1bm1hcHBlZFwiKTtcbiBcdFx0ZXh0NF9nZXRfYmxvY2soaW5vZGUsIGlibG9jaywgYmgsIDApO1xuLVx0XHQvKiB1bm1hcHBlZD8gSXQncyBhIGhvbGUgLSBub3RoaW5nIHRvIGRvICovXG4rXHRcdC8qIEl0J3MgYSBob2xlIG9yIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrIC0gbm90aGluZyB0byBkbyAqL1xuIFx0XHRpZiAoIWJ1ZmZlcl9tYXBwZWQoYmgpKSB7XG4gXHRcdFx0QlVGRkVSX1RSQUNFKGJoLCBcInN0aWxsIHVubWFwcGVkXCIpO1xuIFx0XHRcdGdvdG8gdW5sb2NrO1xuQEAgLTQyNTIsMTMgKzQyNTYsMjYgQEAgaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLypcbisgKiBaZXJvIG91dCB0aGUgdW5hbGlnbmVkIGhlYWQgYW5kIHRhaWwgb2YgdGhlIFtsc3RhcnQsIGxzdGFydCtsZW5ndGgpXG4rICogcmFuZ2UuXG4rICpcbisgKiBPbiByZXR1cm4sIEBwYXJ0aWFsX3plcm9lZCByZWNvcmRzIHdoaWNoIGVkZ2VzIGFjdHVhbGx5IGdvdFxuKyAqIHBhcnRpYWwtemVyb2VkLiAgU2V0IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUL0VYVDRfUEFSVElBTF9aRVJPX0VORCBpZlxuKyAqIHRoZSBoZWFkL3RhaWwgYmxvY2sgZ290IGFjdHVhbGx5IHBhcnRpYWxseSB6ZXJvZWQgKGluIHdyaXR0ZW4sIGRpcnR5XG4rICogdW53cml0dGVuIG9yIGRlbGFsbG9jIHN0YXRlKS4gIENsZWFyZWQgaWYgdGhlIGhlYWQvdGFpbCBibG9jayBpcyBhXG4rICogaG9sZSBvciBhIGNsZWFuIHVud3JpdHRlbiBibG9jaywgaW4gd2hpY2ggY2FzZSB0aGVyZSBpcyBub3RoaW5nIG5lZWRzXG4rICogdG8gemVyby4gIFdoZW4gdGhlIGhlYWQgYW5kIHRhaWwgbGFuZCBpbiB0aGUgc2FtZSBibG9jaywgYm90aCBiaXRzXG4rICogYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyby5cbisgKi9cbiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsIGxvZmZfdCBsZW5ndGgsXG4tXHRcdFx0ICAgICBib29sICpkaWRfemVybylcbitcdFx0XHQgICAgIHVuc2lnbmVkIGludCAqcGFydGlhbF96ZXJvZWQpXG4ge1xuIFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLVx1MDAzZWlfc2I7XG4gXHR1bnNpZ25lZCBwYXJ0aWFsX3N0YXJ0LCBwYXJ0aWFsX2VuZDtcbiBcdGV4dDRfZnNibGtfdCBzdGFydCwgZW5kO1xuIFx0bG9mZl90IGJ5dGVfZW5kID0gKGxzdGFydCArIGxlbmd0aCAtIDEpO1xuK1x0Ym9vbCBkaWRfemVybyA9IGZhbHNlO1xuIFx0aW50IGVyciA9IDA7XG4gXG4gXHRwYXJ0aWFsX3N0YXJ0ID0gbHN0YXJ0IFx1MDAyNiAoc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKTtcbkBAIC00MjcwLDIxICs0Mjg3LDMyIEBAIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCxcbiBcdC8qIEhhbmRsZSBwYXJ0aWFsIHplcm8gd2l0aGluIHRoZSBzaW5nbGUgYmxvY2sgKi9cbiBcdGlmIChzdGFydCA9PSBlbmQgXHUwMDI2XHUwMDI2XG4gXHQgICAgKHBhcnRpYWxfc3RhcnQgfHwgKHBhcnRpYWxfZW5kICE9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSkpKSB7XG4tXHRcdGVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgbHN0YXJ0LCBsZW5ndGgsIGRpZF96ZXJvLFxuK1x0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBcdTAwMjZkaWRfemVybyxcbiBcdFx0XHRcdFx0ICAgIE5VTEwpO1xuK1x0XHRpZiAoZGlkX3plcm8pXG4rXHRcdFx0KnBhcnRpYWxfemVyb2VkIHw9IChFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCB8XG4rXHRcdFx0XHRcdCAgICBFWFQ0X1BBUlRJQUxfWkVST19FTkQpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqL1xuIFx0aWYgKHBhcnRpYWxfc3RhcnQpIHtcbiBcdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIHNiLVx1MDAzZXNfYmxvY2tzaXplLFxuLVx0XHRcdFx0XHQgICAgZGlkX3plcm8sIE5VTEwpO1xuK1x0XHRcdFx0XHQgICAgXHUwMDI2ZGlkX3plcm8sIE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBlcnI7XG4rXHRcdGlmIChkaWRfemVybylcbitcdFx0XHQqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQ7XG4gXHR9XG4gXHQvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIG91dCBvbiB0aGUgZW5kIG9mIHRoZSByYW5nZSAqL1xuLVx0aWYgKHBhcnRpYWxfZW5kICE9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSlcbitcdGlmIChwYXJ0aWFsX2VuZCAhPSBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpIHtcbitcdFx0ZGlkX3plcm8gPSBmYWxzZTtcbiBcdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBieXRlX2VuZCAtIHBhcnRpYWxfZW5kLFxuLVx0XHRcdFx0XHQgICAgcGFydGlhbF9lbmQgKyAxLCBkaWRfemVybywgTlVMTCk7XG4rXHRcdFx0XHRcdCAgICBwYXJ0aWFsX2VuZCArIDEsIFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHRpZiAoZGlkX3plcm8pXG4rXHRcdFx0KnBhcnRpYWxfemVyb2VkIHw9IEVYVDRfUEFSVElBTF9aRVJPX0VORDtcbitcdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuQEAgLTQ0MzMsNyArNDQ2MSw3IEBAIGludCBleHQ0X3B1bmNoX2hvbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgpXG4gXHRsb2ZmX3QgZW5kID0gb2Zmc2V0ICsgbGVuZ3RoO1xuIFx0aGFuZGxlX3QgKmhhbmRsZTtcbiBcdHVuc2lnbmVkIGludCBjcmVkaXRzO1xuLVx0Ym9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlO1xuK1x0dW5zaWduZWQgaW50IHBhcnRpYWxfemVyb2VkID0gMDtcbiBcdGludCByZXQ7XG4gXG4gXHR0cmFjZV9leHQ0X3B1bmNoX2hvbGUoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLCAwKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjI1OjEyLjI2NjA1OTU2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MTM0NDc1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIGV4dDQgWmVyby1SYW5nZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbWVzc2luZyB3aXRoIGBleHQ0X3plcm9fcmFuZ2VgLCBgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzYCwgYW5kIGBleHQ0X3B1bmNoX2hvbGVgLiBBbGwga2V5IGZ1bmN0aW9ucyB3aXRoaW4gYGZzL2V4dDQvZXh0ZW50cy5jYCBhbmQgYGZzL2V4dDQvaW5vZGUuY2AuIFNvdW5kcyBsaWtlIGl0J3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gaG93IHBhcnRpYWwgYmxvY2tzIGdldCB6ZXJvZWQsIGFuZCBob3cgdGhhdCBpbmZvcm1hdGlvbiB0aGVuIGluZmx1ZW5jZXMgdGhlIGFsbG9jYXRpb24gYW5kIHplcm9pbmcgb2Ygd2hvbGUgYmxvY2tzIHdoZW4gYEZBTExPQ19GTF9XUklURV9aRVJPRVNgIGlzIHVzZWQuIFRoaXMgZGlyZWN0bHkgdG91Y2hlcyB0aGUgY29yZSBsb2dpYyBvZiBleHQ0J3MgYGZhbGxvY2F0ZWAsIHNwZWNpZmljYWxseSB0aGUgYEZBTExPQ19GTF9aRVJPX1JBTkdFYCBhbmQgYEZBTExPQ19GTF9XUklURV9aRVJPRVNgIGZsYWdzLlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIGltcGFjdCBvbiBzdWNoIGNvcmUgZnVuY3Rpb25hbGl0eSwgaXQncyBzY3JlYW1pbmcgZm9yIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBBIGNoYW5nZSB0aGlzIGxvdy1sZXZlbCBjb3VsZCBlYXNpbHkgaW50cm9kdWNlIHN1YnRsZSwgaGFyZC10by1kZXRlY3QgaXNzdWVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHN0cmVzcyB0ZXN0IHRoZSBoZWNrIG91dCBvZiB0aGlzLlxuXG5GaXJzdCwgbGV0J3MgdmVyaWZ5IHRoZSBidWlsZCBwcmVyZXF1aXNpdGVzLiBJdCdzIGV4dDQsIHNvIG9idmlvdXNseSB3ZSBuZWVkIGBFWFQ0X0ZTYCBlbmFibGVkIGluIHRoZSBjb25maWcuIEJ1dCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgZG91YmxlLWNoZWNrIHdpdGggYGdyZXBwZXJgIGFuZCBjb25maXJtIG5vdGhpbmcgZWxzZSBpcyBpbXBsaWNpdGx5IHJlcXVpcmVkLiBJdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHByZWNpc2Ugd2hlbiBpdCBjb21lcyB0byBrZXJuZWwgbW9kaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYzMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjI1OjE3LjE3OTUwODg4MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTExMzg0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFQ0X0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVxcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcXG5mcy9leHQ0L0tjb25maWctMzYtXFx0Ym9vbCBcXFwiVXNlIGV4dDQgZm9yIGV4dDIgZmlsZSBzeXN0ZW1zXFxcIlxcbmZzL2V4dDQvS2NvbmZpZzozNzpcXHRkZXBlbmRzIG9uIEVYVDRfRlNcXG5mcy9leHQ0L0tjb25maWctMzgtXFx0ZGVwZW5kcyBvbiBFWFQyX0ZTPW5cXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy00NS1cXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXFxuZnMvZXh0NC9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIkV4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuZnMvZXh0NC9LY29uZmlnOjQ4OlxcdGRlcGVuZHMgb24gRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy00OS1cXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNTUtXFxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXFxuZnMvZXh0NC9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIkV4dDQgU2VjdXJpdHkgTGFiZWxzXFxcIlxcbmZzL2V4dDQvS2NvbmZpZzo1ODpcXHRkZXBlbmRzIG9uIEVYVDRfRlNcXG5mcy9leHQ0L0tjb25maWctNTktXFx0aGVscFxcbi0tXFxuZnMvZXh0NC9LY29uZmlnPTY4PWNvbmZpZyBFWFQ0X0RFQlVHXFxuZnMvZXh0NC9LY29uZmlnLTY5LVxcdGJvb2wgXFxcIkV4dDQgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuZnMvZXh0NC9LY29uZmlnOjcwOlxcdGRlcGVuZHMgb24gRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy03MS1cXHRoZWxwXFxuLS1cXG5mcy9leHQ0L0tjb25maWc9Nzc9Y29uZmlnIEVYVDRfS1VOSVRfVEVTVFNcXG5mcy9leHQ0L0tjb25maWctNzgtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBleHQ0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuZnMvZXh0NC9LY29uZmlnOjc5OlxcdGRlcGVuZHMgb24gRVhUNF9GUyBcXHUwMDI2XFx1MDAyNiBLVU5JVFxcbmZzL2V4dDQvS2NvbmZpZy04MC1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjoyNToxNy4yNDg2Mjg1MTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM3MjM2NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBFWFQ0IEZpbGVzeXN0ZW0gTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiwgYEVYVDRfRlNgLiBNeSBmb2N1cyBub3cgc2hpZnRzIHRvIHRoZSBjb2RlIHRoYXQncyBiZWVuIGFsdGVyZWQgd2l0aGluIGl0LiBJIHNlZSB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vZGlmaWVkOiBgZXh0NF96ZXJvX3JhbmdlYCwgYGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc2AsIGFuZCBgZXh0NF9wdW5jaF9ob2xlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5BbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIHRob3NlIGtleSBmdW5jdGlvbnM6IGBleHQ0X3plcm9fcmFuZ2VgLCBgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzYCwgYW5kIGBleHQ0X3B1bmNoX2hvbGVgLiBJJ2xsIGRlbHZlIGludG8gdGhlIHVzYWdlIG9mIGBleHQ0X3plcm9fcmFuZ2VgIGFuZCBgZXh0NF9wdW5jaF9ob2xlYCwgYW5kIGl0IGFwcGVhcnMgdGhleSdyZSBib3RoIGNhbGxlZCBieSB0aGUgYGV4dDRfZmFsbG9jYXRlYCBmdW5jdGlvbi4gVGhpcyBwb2ludHMgdG8gYGZhbGxvY2F0ZWAgYmVpbmcgdGhlIGRyaXZlciBmb3IgdGhlc2Ugb3BlcmF0aW9ucywgc28gdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBjb25jZW50cmF0ZSBteSBlZmZvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjcwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjI1OjIwLjk4NTg2NzI5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTY5MTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X3plcm9fcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9leHRlbnRzLmM9NDcwOD1zdGF0aWMgaW50IGV4dDRfaW5zZXJ0X3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTtcXG5mcy9leHQ0L2V4dGVudHMuYy00NzA5LVxcbmZzL2V4dDQvZXh0ZW50cy5jOjQ3MTA6c3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxcbmZzL2V4dDQvZXh0ZW50cy5jLTQ3MTEtXFx0XFx0XFx0ICAgIGxvZmZfdCBsZW4sIGludCBtb2RlKVxcbi0tXFxuZnMvZXh0NC9leHRlbnRzLmMtNDcyMC1cXG5mcy9leHQ0L2V4dGVudHMuYzo0NzIxOlxcdHRyYWNlX2V4dDRfemVyb19yYW5nZShpbm9kZSwgb2Zmc2V0LCBsZW4sIG1vZGUpO1xcbmZzL2V4dDQvZXh0ZW50cy5jLTQ3MjItXFx0V0FSTl9PTl9PTkNFKCFpbm9kZV9pc19sb2NrZWQoaW5vZGUpKTtcXG4tLVxcbmZzL2V4dDQvZXh0ZW50cy5jPTQ4ODE9bG9uZyBleHQ0X2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9leHQ0L2V4dGVudHMuYy00OTQ5LVxcdGNhc2UgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUzpcXG5mcy9leHQ0L2V4dGVudHMuYzo0OTUwOlxcdFxcdHJldCA9IGV4dDRfemVyb19yYW5nZShmaWxlLCBvZmZzZXQsIGxlbiwgbW9kZSk7XFxuZnMvZXh0NC9leHRlbnRzLmMtNDk1MS1cXHRcXHRicmVhaztcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz00MDA0PXZvaWQgZXh0NF9zZXRfYW9wcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jLTQwMjUtICogSGVyZSB3ZSBjYW4ndCBza2lwIGFuIHVud3JpdHRlbiBidWZmZXIgZXZlbiB0aG91Z2ggaXQgdXN1YWxseSByZWFkcyB6ZXJvXFxuZnMvZXh0NC9pbm9kZS5jOjQwMjY6ICogYmVjYXVzZSBpdCBtaWdodCBoYXZlIGRhdGEgaW4gcGFnZWNhY2hlIChlZywgaWYgY2FsbGVkIGZyb20gZXh0NF96ZXJvX3JhbmdlLFxcbmZzL2V4dDQvaW5vZGUuYy00MDI3LSAqIGV4dDRfcHVuY2hfaG9sZSwgZXRjKSB3aGljaCBuZWVkcyB0byBiZSBwcm9wZXJseSB6ZXJvZWQgb3V0LiBPdGhlcndpc2UgYVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjoyNToyMS4wNDE1NjQwOTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDk2NDMyOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBFeHQ0IFplcm9pbmcgT3BlcmF0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgZmlsZSBzeXN0ZW0gcGVyc3BlY3RpdmUuIEknbSBzZWVpbmcgdGhyZWUga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHplcm9pbmcgb3BlcmF0aW9ucyBpbiB0aGUgZXh0NCBmaWxlIHN5c3RlbTogYGV4dDRfemVyb19yYW5nZWAsIGBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NgLCBhbmQgYGV4dDRfcHVuY2hfaG9sZWAuIEknbSBhbHNvIGNvbnNpZGVyaW5nIGBleHQ0X2ZhbGxvY2F0ZWAsIHdoaWNoIGlzIGxpa2VseSB0aGUgdXNlci1zcGFjZSBlbnRyeSBwb2ludC5cblxuRmlyc3QsIEkgY29uZmlybWVkIHRoYXQgYGV4dDRfemVyb19yYW5nZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIGBmcy9leHQ0L2V4dGVudHMuY2AuIFRoaXMgdGVsbHMgbWUgaW1tZWRpYXRlbHkgdGhhdCBpdCdzIGFuIGludGVybmFsIGhlbHBlciBmdW5jdGlvbi4gVGhhdCBhbHNvIG1lYW5zIHRoYXQgYGV4dDRfZmFsbG9jYXRlYCBoYXMgdG8gYmUgdGhlIHVzZXItc3BhY2UgZW50cnkuXG5cbk5vdywgSSBzY2FubmVkIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGBleHQ0X2Jsb2NrX3plcm9fZW9mYCBhbmQgYGV4dDRfbG9hZF90YWlsX2JoYCB3ZXJlIG1vZGlmaWVkLCBidXQgdGhleSdyZSBqdXN0IHJlbGF0ZWQgdG8gY29kZSBvciBjb21tZW50cy4gVGh1cywgdGhlIGZvY3VzIHJlbWFpbnMgb24gYGV4dDRfemVyb19yYW5nZWAsIGBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NgLCBhbmQgYGV4dDRfcHVuY2hfaG9sZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MTAsIk91dHB1dFRva2VucyI6MTUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjI1OjI2LjEzNzk5ODcwOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzNzU0ODc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF96ZXJvX3JhbmdlXCIsXG4gICAgXCJleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NcIixcbiAgICBcImV4dDRfcHVuY2hfaG9sZVwiLFxuICAgIFwiZXh0NF9mYWxsb2NhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHplcm9pbmcgcGFydGlhbCBibG9ja3MgaW4gZXh0NCwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyBgRkFMTE9DX0ZMX1pFUk9fUkFOR0VgIGFuZCBgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FU2AgbW9kZXMgaW4gYGV4dDRfZmFsbG9jYXRlYC4gVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gZmlsZSBhbGxvY2F0aW9uIGFuZCB6ZXJvaW5nIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3plcm9fcmFuZ2VcIixcbiAgICBcImV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc1wiLFxuICAgIFwiZXh0NF9wdW5jaF9ob2xlXCIsXG4gICAgXCJleHQ0X2ZhbGxvY2F0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgemVyb2luZyBwYXJ0aWFsIGJsb2NrcyBpbiBleHQ0LCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIGBGQUxMT0NfRkxfWkVST19SQU5HRWAgYW5kIGBGQUxMT0NfRkxfV1JJVEVfWkVST0VTYCBtb2RlcyBpbiBgZXh0NF9mYWxsb2NhdGVgLiBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsIGNoYW5nZSB0byBmaWxlIGFsbG9jYXRpb24gYW5kIHplcm9pbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBmYWxsb2NhdGVgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowch4rc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 22:13:06 +0000 UTC FinishedAt: 2026-07-01 22:25:27 +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": "d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "cf24068b-11eb-4bf8-a1fd-e86533ae31c9" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_zero_range", "ext4_zero_partial_blocks", "ext4_punch_hole", "ext4_fallocate" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X3plcm9fcmFuZ2UmIzM0OywKICAgICYjMzQ7ZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzJiMzNDssCiAgICAmIzM0O2V4dDRfcHVuY2hfaG9sZSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZhbGxvY2F0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHplcm9pbmcgcGFydGlhbCBibG9ja3MgaW4gZXh0NCwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyBgRkFMTE9DX0ZMX1pFUk9fUkFOR0VgIGFuZCBgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FU2AgbW9kZXMgaW4gYGV4dDRfZmFsbG9jYXRlYC4gVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gZmlsZSBhbGxvY2F0aW9uIGFuZCB6ZXJvaW5nIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjM0MWU0NDdjMDc3MWQxZjI2ZTc5MjM4OTc2ZDJjMDEyMWViYTY4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMjI6MjU6MTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaFxuaW5kZXggOTQyODNhOTkxZTVjNGYuLmIyZTU1ODc2ZDBlMzUyIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oXG5AQCAtMzA5OSw4ICYjNDM7MzA5OSwxMSBAQCBleHRlcm4gaW50IGV4dDRfY2h1bmtfdHJhbnNfZXh0ZW50KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2Nrcyk7XG4gZXh0ZXJuIGludCBleHQ0X21ldGFfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBsYmxvY2tzLFxuIFx0XHRcdFx0ICBpbnQgcGV4dGVudHMpO1xuIGV4dGVybiBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZCk7XG4mIzQzO1xuJiM0MzsjZGVmaW5lIEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUXHQweDFcbiYjNDM7I2RlZmluZSBFWFQ0X1BBUlRJQUxfWkVST19FTkRcdDB4MlxuIGV4dGVybiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsXG4tXHRcdFx0XHQgICAgbG9mZl90IGxlbmd0aCwgYm9vbCAqZGlkX3plcm8pO1xuJiM0MztcdFx0XHRcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcbiBleHRlcm4gdm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7XG4gZXh0ZXJuIHFzaXplX3QgKmV4dDRfZ2V0X3Jlc2VydmVkX3NwYWNlKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dGVudHMuYyBiL2ZzL2V4dDQvZXh0ZW50cy5jXG5pbmRleCAxMjVmNjI4ZTczOGFiMS4uMzg3NTNjMmVmOTEwYjEgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9leHRlbnRzLmNcbkBAIC00NzE1LDcgJiM0Mzs0NzE1LDcgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0bG9mZl90IGFsaWduX3N0YXJ0LCBhbGlnbl9lbmQsIG5ld19zaXplID0gMDtcbiBcdGxvZmZfdCBlbmQgPSBvZmZzZXQgJiM0MzsgbGVuO1xuIFx0dW5zaWduZWQgaW50IGJsb2Nrc2l6ZSA9IGlfYmxvY2tzaXplKGlub2RlKTtcbi1cdGJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgcGFydGlhbF96ZXJvZWQgPSAwO1xuIFx0aW50IHJldCwgZmxhZ3M7XG4gXG4gXHR0cmFjZV9leHQ0X3plcm9fcmFuZ2UoaW5vZGUsIG9mZnNldCwgbGVuLCBtb2RlKTtcbkBAIC00NzM0LDE3ICYjNDM7NDczNCwyNSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHR9XG4gXG4gXHRmbGFncyA9IEVYVDRfR0VUX0JMT0NLU19DUkVBVEVfVU5XUklUX0VYVDtcbi1cdC8qIFByZWFsbG9jYXRlIHRoZSByYW5nZSBpbmNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqL1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzLCBhbmQgemVyb1xuJiM0MztcdCAqIG91dCBwYXJ0aWFsIGJsb2NrcyBpZiB0aGV5IGFscmVhZHkgY29udGFpbiBkYXRhLlxuJiM0MztcdCAqL1xuIFx0aWYgKCFJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSkge1xuIFx0XHRyZXQgPSBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKGZpbGUsIG9mZnNldCwgbGVuLCBuZXdfc2l6ZSxcbiBcdFx0XHRcdFx0ICAgICBmbGFncyk7XG4mIzQzO1x0XHRpZiAoIXJldClcbiYjNDM7XHRcdFx0cmV0ID0gZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKGlub2RlLCBvZmZzZXQsIGxlbixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnBhcnRpYWxfemVyb2VkKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuLVx0cmV0ID0gZXh0NF91cGRhdGVfZGlza3NpemVfYmVmb3JlX3B1bmNoKGlub2RlLCBvZmZzZXQsIGxlbik7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdGlmIChtb2RlIFx1MDAyNiBGQUxMT0NfRkxfWkVST19SQU5HRSkge1xuJiM0MztcdFx0cmV0ID0gZXh0NF91cGRhdGVfZGlza3NpemVfYmVmb3JlX3B1bmNoKGlub2RlLCBvZmZzZXQsIGxlbik7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiBcbiBcdC8qIE5vdyByZWxlYXNlIHRoZSBwYWdlcyBhbmQgemVybyBibG9jayBhbGlnbmVkIHBhcnQgb2YgcGFnZXMgKi9cbiBcdHJldCA9IGV4dDRfdHJ1bmNhdGVfcGFnZV9jYWNoZV9ibG9ja19yYW5nZShpbm9kZSwgb2Zmc2V0LCBlbmQpO1xuQEAgLTQ3NTQsNiAmIzQzOzQ3NjIsMjEgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0LyogWmVybyByYW5nZSBleGNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqL1xuIFx0YWxpZ25fc3RhcnQgPSByb3VuZF91cChvZmZzZXQsIGJsb2Nrc2l6ZSk7XG4gXHRhbGlnbl9lbmQgPSByb3VuZF9kb3duKGVuZCwgYmxvY2tzaXplKTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBJbiBXUklURV9aRVJPRVMgbW9kZSwgZWRnZXMgdGhhdCB3ZXJlIG5vdCBwYXJ0aWFsLXplcm9lZCAoY2xlYW5cbiYjNDM7XHQgKiB1bndyaXR0ZW4gb3IgaG9sZSkgbXVzdCBiZSBhbGxvY2F0ZWQgYW5kIHplcm9lZCBhcyB3aG9sZSBibG9ja3MuXG4mIzQzO1x0ICogRXhwYW5kIHRoZSBhbGlnbmVkIHJhbmdlIG91dHdhcmQgdG8gY292ZXIgdGhlbS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykge1xuJiM0MztcdFx0aWYgKCFJU19BTElHTkVEKG9mZnNldCwgYmxvY2tzaXplKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhKHBhcnRpYWxfemVyb2VkIFx1MDAyNiBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCkpXG4mIzQzO1x0XHRcdGFsaWduX3N0YXJ0ID0gcm91bmRfZG93bihvZmZzZXQsIGJsb2Nrc2l6ZSk7XG4mIzQzO1x0XHRpZiAoIUlTX0FMSUdORUQoZW5kLCBibG9ja3NpemUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICEocGFydGlhbF96ZXJvZWQgXHUwMDI2IEVYVDRfUEFSVElBTF9aRVJPX0VORCkpXG4mIzQzO1x0XHRcdGFsaWduX2VuZCA9IHJvdW5kX3VwKGVuZCwgYmxvY2tzaXplKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKGFsaWduX2VuZCBcdTAwM2UgYWxpZ25fc3RhcnQpIHtcbiBcdFx0aWYgKG1vZGUgXHUwMDI2IEZBTExPQ19GTF9XUklURV9aRVJPRVMpXG4gXHRcdFx0ZmxhZ3MgPSBFWFQ0X0dFVF9CTE9DS1NfQ1JFQVRFX1pFUk8gfCBFWFQ0X0VYX05PQ0FDSEU7XG5AQCAtNDc3MCwxMSAmIzQzOzQ3OTMsMTUgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0aWYgKElTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0LyogWmVybyBvdXQgcGFydGlhbCBibG9jayBhdCB0aGUgZWRnZXMgb2YgdGhlIHJhbmdlICovXG4tXHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLCBcdTAwMjZwYXJ0aWFsX3plcm9lZCk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVx0aWYgKCgoZmlsZS1cdTAwM2VmX2ZsYWdzIFx1MDAyNiBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSBcdTAwMjZcdTAwMjYgcGFydGlhbF96ZXJvZWQpIHtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEluIEZBTExPQ19GTF9XUklURV9aRVJPRVMgbW9kZSwgZWRnZXMgdGhhdCBoYXZlIGJlZW4gcGFydGlhbGx5XG4mIzQzO1x0ICogemVyb2VkIG11c3QgYmUgd3JpdHRlbiBiYWNrIHRvIGVuc3VyZSB0aGUgZW50aXJlIHplcm9lZCByYW5nZVxuJiM0MztcdCAqIGlzIGNvbnZlcnRlZCB0byB0aGUgd3JpdHRlbiBzdGF0ZS4gSW4gU1lOQyBtb2RlLCB3cml0ZWJhY2sgaXNcbiYjNDM7XHQgKiBhbHNvIHJlcXVpcmVkIHRvIHBlcnNpc3QgdGhlIHplcm9lZCBkYXRhIHRvIGRpc2suXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHBhcnRpYWxfemVyb2VkIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAoKG1vZGUgXHUwMDI2IEZBTExPQ19GTF9XUklURV9aRVJPRVMpIHx8XG4mIzQzO1x0ICAgICAoZmlsZS1cdTAwM2VmX2ZsYWdzIFx1MDAyNiBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSkge1xuIFx0XHRyZXQgPSBmaWxlbWFwX3dyaXRlX2FuZF93YWl0X3JhbmdlKGlub2RlLVx1MDAzZWlfbWFwcGluZywgb2Zmc2V0LFxuIFx0XHRcdFx0XHRcdCAgIGVuZCAtIDEpO1xuIFx0XHRpZiAocmV0KVxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuY1xuaW5kZXggYzJjMmQ2YWM3ZjNkMTMuLmQ2OGY3YmU0ZmYwMmE2IDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9pbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2lub2RlLmNcbkBAIC00MDI2LDYgJiM0Mzs0MDI2LDEwIEBAIHZvaWQgZXh0NF9zZXRfYW9wcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuICAqIGJlY2F1c2UgaXQgbWlnaHQgaGF2ZSBkYXRhIGluIHBhZ2VjYWNoZSAoZWcsIGlmIGNhbGxlZCBmcm9tIGV4dDRfemVyb19yYW5nZSxcbiAgKiBleHQ0X3B1bmNoX2hvbGUsIGV0Yykgd2hpY2ggbmVlZHMgdG8gYmUgcHJvcGVybHkgemVyb2VkIG91dC4gT3RoZXJ3aXNlIGFcbiAgKiByYWNpbmcgd3JpdGViYWNrIGNhbiBjb21lIGxhdGVyIGFuZCBmbHVzaCB0aGUgc3RhbGUgcGFnZWNhY2hlIHRvIGRpc2suXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybiB0aGUgbG9hZGVkIGJoIGlmIGl0IGFjdHVhbGx5IG5lZWRzIHplcm9pbmcgLSBpbiB3cml0dGVuLCBkaXJ0eVxuJiM0MzsgKiB1bndyaXR0ZW4sIG9yIGRlbGFsbG9jIHN0YXRlLiBSZXR1cm4gTlVMTCBpZiBpdCYjMzk7cyBjbGVhbiAoaS5lLiwgYSBob2xlIG9yXG4mIzQzOyAqIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrKS5cbiAgKi9cbiBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcbiB7XG5AQCAtNDA2NSw3ICYjNDM7NDA2OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKVxuIFx0aWYgKCFidWZmZXJfbWFwcGVkKGJoKSkge1xuIFx0XHRCVUZGRVJfVFJBQ0UoYmgsIFwmIzM0O3VubWFwcGVkXCYjMzQ7KTtcbiBcdFx0ZXh0NF9nZXRfYmxvY2soaW5vZGUsIGlibG9jaywgYmgsIDApO1xuLVx0XHQvKiB1bm1hcHBlZD8gSXQmIzM5O3MgYSBob2xlIC0gbm90aGluZyB0byBkbyAqL1xuJiM0MztcdFx0LyogSXQmIzM5O3MgYSBob2xlIG9yIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrIC0gbm90aGluZyB0byBkbyAqL1xuIFx0XHRpZiAoIWJ1ZmZlcl9tYXBwZWQoYmgpKSB7XG4gXHRcdFx0QlVGRkVSX1RSQUNFKGJoLCBcJiMzNDtzdGlsbCB1bm1hcHBlZFwmIzM0Oyk7XG4gXHRcdFx0Z290byB1bmxvY2s7XG5AQCAtNDI1MiwxMyAmIzQzOzQyNTYsMjYgQEAgaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFplcm8gb3V0IHRoZSB1bmFsaWduZWQgaGVhZCBhbmQgdGFpbCBvZiB0aGUgW2xzdGFydCwgbHN0YXJ0JiM0MztsZW5ndGgpXG4mIzQzOyAqIHJhbmdlLlxuJiM0MzsgKlxuJiM0MzsgKiBPbiByZXR1cm4sIEBwYXJ0aWFsX3plcm9lZCByZWNvcmRzIHdoaWNoIGVkZ2VzIGFjdHVhbGx5IGdvdFxuJiM0MzsgKiBwYXJ0aWFsLXplcm9lZC4gIFNldCBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVC9FWFQ0X1BBUlRJQUxfWkVST19FTkQgaWZcbiYjNDM7ICogdGhlIGhlYWQvdGFpbCBibG9jayBnb3QgYWN0dWFsbHkgcGFydGlhbGx5IHplcm9lZCAoaW4gd3JpdHRlbiwgZGlydHlcbiYjNDM7ICogdW53cml0dGVuIG9yIGRlbGFsbG9jIHN0YXRlKS4gIENsZWFyZWQgaWYgdGhlIGhlYWQvdGFpbCBibG9jayBpcyBhXG4mIzQzOyAqIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2ssIGluIHdoaWNoIGNhc2UgdGhlcmUgaXMgbm90aGluZyBuZWVkc1xuJiM0MzsgKiB0byB6ZXJvLiAgV2hlbiB0aGUgaGVhZCBhbmQgdGFpbCBsYW5kIGluIHRoZSBzYW1lIGJsb2NrLCBib3RoIGJpdHNcbiYjNDM7ICogYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyby5cbiYjNDM7ICovXG4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZ3RoLFxuLVx0XHRcdCAgICAgYm9vbCAqZGlkX3plcm8pXG4mIzQzO1x0XHRcdCAgICAgdW5zaWduZWQgaW50ICpwYXJ0aWFsX3plcm9lZClcbiB7XG4gXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXHUwMDNlaV9zYjtcbiBcdHVuc2lnbmVkIHBhcnRpYWxfc3RhcnQsIHBhcnRpYWxfZW5kO1xuIFx0ZXh0NF9mc2Jsa190IHN0YXJ0LCBlbmQ7XG4gXHRsb2ZmX3QgYnl0ZV9lbmQgPSAobHN0YXJ0ICYjNDM7IGxlbmd0aCAtIDEpO1xuJiM0MztcdGJvb2wgZGlkX3plcm8gPSBmYWxzZTtcbiBcdGludCBlcnIgPSAwO1xuIFxuIFx0cGFydGlhbF9zdGFydCA9IGxzdGFydCBcdTAwMjYgKHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSk7XG5AQCAtNDI3MCwyMSAmIzQzOzQyODcsMzIgQEAgaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZ3RoLFxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyB3aXRoaW4gdGhlIHNpbmdsZSBibG9jayAqL1xuIFx0aWYgKHN0YXJ0ID09IGVuZCBcdTAwMjZcdTAwMjZcbiBcdCAgICAocGFydGlhbF9zdGFydCB8fCAocGFydGlhbF9lbmQgIT0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKSkpIHtcbi1cdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgZGlkX3plcm8sXG4mIzQzO1x0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBcdTAwMjZkaWRfemVybyxcbiBcdFx0XHRcdFx0ICAgIE5VTEwpO1xuJiM0MztcdFx0aWYgKGRpZF96ZXJvKVxuJiM0MztcdFx0XHQqcGFydGlhbF96ZXJvZWQgfD0gKEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUIHxcbiYjNDM7XHRcdFx0XHRcdCAgICBFWFQ0X1BBUlRJQUxfWkVST19FTkQpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqL1xuIFx0aWYgKHBhcnRpYWxfc3RhcnQpIHtcbiBcdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIHNiLVx1MDAzZXNfYmxvY2tzaXplLFxuLVx0XHRcdFx0XHQgICAgZGlkX3plcm8sIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0ICAgIFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0aWYgKGRpZF96ZXJvKVxuJiM0MztcdFx0XHQqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQ7XG4gXHR9XG4gXHQvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIG91dCBvbiB0aGUgZW5kIG9mIHRoZSByYW5nZSAqL1xuLVx0aWYgKHBhcnRpYWxfZW5kICE9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSlcbiYjNDM7XHRpZiAocGFydGlhbF9lbmQgIT0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKSB7XG4mIzQzO1x0XHRkaWRfemVybyA9IGZhbHNlO1xuIFx0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGJ5dGVfZW5kIC0gcGFydGlhbF9lbmQsXG4tXHRcdFx0XHRcdCAgICBwYXJ0aWFsX2VuZCAmIzQzOyAxLCBkaWRfemVybywgTlVMTCk7XG4mIzQzO1x0XHRcdFx0XHQgICAgcGFydGlhbF9lbmQgJiM0MzsgMSwgXHUwMDI2ZGlkX3plcm8sIE5VTEwpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdGlmIChkaWRfemVybylcbiYjNDM7XHRcdFx0KnBhcnRpYWxfemVyb2VkIHw9IEVYVDRfUEFSVElBTF9aRVJPX0VORDtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbkBAIC00NDMzLDcgJiM0Mzs0NDYxLDcgQEAgaW50IGV4dDRfcHVuY2hfaG9sZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aClcbiBcdGxvZmZfdCBlbmQgPSBvZmZzZXQgJiM0MzsgbGVuZ3RoO1xuIFx0aGFuZGxlX3QgKmhhbmRsZTtcbiBcdHVuc2lnbmVkIGludCBjcmVkaXRzO1xuLVx0Ym9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlO1xuJiM0MztcdHVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7XG4gXHRpbnQgcmV0O1xuIFxuIFx0dHJhY2VfZXh0NF9wdW5jaF9ob2xlKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfemVyb19yYW5nZSYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MmIzM0OywKICAgICYjMzQ7ZXh0NF9wdW5jaF9ob2xlJiMzNDssCiAgICAmIzM0O2V4dDRfZmFsbG9jYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgemVyb2luZyBwYXJ0aWFsIGJsb2NrcyBpbiBleHQ0LCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIGBGQUxMT0NfRkxfWkVST19SQU5HRWAgYW5kIGBGQUxMT0NfRkxfV1JJVEVfWkVST0VTYCBtb2RlcyBpbiBgZXh0NF9mYWxsb2NhdGVgLiBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsIGNoYW5nZSB0byBmaWxlIGFsbG9jYXRpb24gYW5kIHplcm9pbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBmYWxsb2NhdGVgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGIzNDFlNDQ3YzA3NzFkMWYyNmU3OTIzODk3NmQyYzAxMjFlYmE2OGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDIyOjI1OjEwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaAppbmRleCA5NDI4M2E5OTFlNWM0Zi4uYjJlNTU4NzZkMGUzNTIgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvZXh0NC5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oCkBAIC0zMDk5LDggJiM0MzszMDk5LDExIEBAIGV4dGVybiBpbnQgZXh0NF9jaHVua190cmFuc19leHRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5yYmxvY2tzKTsKIGV4dGVybiBpbnQgZXh0NF9tZXRhX3RyYW5zX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbGJsb2NrcywKIAkJCQkgIGludCBwZXh0ZW50cyk7CiBleHRlcm4gaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpOwomIzQzOwomIzQzOyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQJMHgxCiYjNDM7I2RlZmluZSBFWFQ0X1BBUlRJQUxfWkVST19FTkQJMHgyCiBleHRlcm4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LAotCQkJCSAgICBsb2ZmX3QgbGVuZ3RoLCBib29sICpkaWRfemVybyk7CiYjNDM7CQkJCSAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTsKIGV4dGVybiB2bV9mYXVsdF90IGV4dDRfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKTsKIGV4dGVybiBxc2l6ZV90ICpleHQ0X2dldF9yZXNlcnZlZF9zcGFjZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0ZW50cy5jIGIvZnMvZXh0NC9leHRlbnRzLmMKaW5kZXggMTI1ZjYyOGU3MzhhYjEuLjM4NzUzYzJlZjkxMGIxIDEwMDY0NAotLS0gYS9mcy9leHQ0L2V4dGVudHMuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2V4dGVudHMuYwpAQCAtNDcxNSw3ICYjNDM7NDcxNSw3IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwKIAlsb2ZmX3QgYWxpZ25fc3RhcnQsIGFsaWduX2VuZCwgbmV3X3NpemUgPSAwOwogCWxvZmZfdCBlbmQgPSBvZmZzZXQgJiM0MzsgbGVuOwogCXVuc2lnbmVkIGludCBibG9ja3NpemUgPSBpX2Jsb2Nrc2l6ZShpbm9kZSk7Ci0JYm9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlOwomIzQzOwl1bnNpZ25lZCBpbnQgcGFydGlhbF96ZXJvZWQgPSAwOwogCWludCByZXQsIGZsYWdzOwogCiAJdHJhY2VfZXh0NF96ZXJvX3JhbmdlKGlub2RlLCBvZmZzZXQsIGxlbiwgbW9kZSk7CkBAIC00NzM0LDE3ICYjNDM7NDczNCwyNSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsCiAJfQogCiAJZmxhZ3MgPSBFWFQ0X0dFVF9CTE9DS1NfQ1JFQVRFX1VOV1JJVF9FWFQ7Ci0JLyogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovCiYjNDM7CS8qCiYjNDM7CSAqIFByZWFsbG9jYXRlIHRoZSByYW5nZSBpbmNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcywgYW5kIHplcm8KJiM0MzsJICogb3V0IHBhcnRpYWwgYmxvY2tzIGlmIHRoZXkgYWxyZWFkeSBjb250YWluIGRhdGEuCiYjNDM7CSAqLwogCWlmICghSVNfQUxJR05FRChvZmZzZXQgfCBlbmQsIGJsb2Nrc2l6ZSkpIHsKIAkJcmV0ID0gZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhmaWxlLCBvZmZzZXQsIGxlbiwgbmV3X3NpemUsCiAJCQkJCSAgICAgZmxhZ3MpOwomIzQzOwkJaWYgKCFyZXQpCiYjNDM7CQkJcmV0ID0gZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKGlub2RlLCBvZmZzZXQsIGxlbiwKJiM0MzsJCQkJCQkgICAgICAgJmFtcDtwYXJ0aWFsX3plcm9lZCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KIAotCXJldCA9IGV4dDRfdXBkYXRlX2Rpc2tzaXplX2JlZm9yZV9wdW5jaChpbm9kZSwgb2Zmc2V0LCBsZW4pOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiYjNDM7CWlmIChtb2RlICZhbXA7IEZBTExPQ19GTF9aRVJPX1JBTkdFKSB7CiYjNDM7CQlyZXQgPSBleHQ0X3VwZGF0ZV9kaXNrc2l6ZV9iZWZvcmVfcHVuY2goaW5vZGUsIG9mZnNldCwgbGVuKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJcmV0dXJuIHJldDsKJiM0MzsJfQogCiAJLyogTm93IHJlbGVhc2UgdGhlIHBhZ2VzIGFuZCB6ZXJvIGJsb2NrIGFsaWduZWQgcGFydCBvZiBwYWdlcyAqLwogCXJldCA9IGV4dDRfdHJ1bmNhdGVfcGFnZV9jYWNoZV9ibG9ja19yYW5nZShpbm9kZSwgb2Zmc2V0LCBlbmQpOwpAQCAtNDc1NCw2ICYjNDM7NDc2MiwyMSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsCiAJLyogWmVybyByYW5nZSBleGNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqLwogCWFsaWduX3N0YXJ0ID0gcm91bmRfdXAob2Zmc2V0LCBibG9ja3NpemUpOwogCWFsaWduX2VuZCA9IHJvdW5kX2Rvd24oZW5kLCBibG9ja3NpemUpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBJbiBXUklURV9aRVJPRVMgbW9kZSwgZWRnZXMgdGhhdCB3ZXJlIG5vdCBwYXJ0aWFsLXplcm9lZCAoY2xlYW4KJiM0MzsJICogdW53cml0dGVuIG9yIGhvbGUpIG11c3QgYmUgYWxsb2NhdGVkIGFuZCB6ZXJvZWQgYXMgd2hvbGUgYmxvY2tzLgomIzQzOwkgKiBFeHBhbmQgdGhlIGFsaWduZWQgcmFuZ2Ugb3V0d2FyZCB0byBjb3ZlciB0aGVtLgomIzQzOwkgKi8KJiM0MzsJaWYgKG1vZGUgJmFtcDsgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykgewomIzQzOwkJaWYgKCFJU19BTElHTkVEKG9mZnNldCwgYmxvY2tzaXplKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIShwYXJ0aWFsX3plcm9lZCAmYW1wOyBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCkpCiYjNDM7CQkJYWxpZ25fc3RhcnQgPSByb3VuZF9kb3duKG9mZnNldCwgYmxvY2tzaXplKTsKJiM0MzsJCWlmICghSVNfQUxJR05FRChlbmQsIGJsb2Nrc2l6ZSkgJmFtcDsmYW1wOwomIzQzOwkJICAgICEocGFydGlhbF96ZXJvZWQgJmFtcDsgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKSkKJiM0MzsJCQlhbGlnbl9lbmQgPSByb3VuZF91cChlbmQsIGJsb2Nrc2l6ZSk7CiYjNDM7CX0KJiM0MzsKIAlpZiAoYWxpZ25fZW5kICZndDsgYWxpZ25fc3RhcnQpIHsKIAkJaWYgKG1vZGUgJmFtcDsgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykKIAkJCWZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9aRVJPIHwgRVhUNF9FWF9OT0NBQ0hFOwpAQCAtNDc3MCwxMSAmIzQzOzQ3OTMsMTUgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LAogCWlmIChJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSkKIAkJcmV0dXJuIHJldDsKIAotCS8qIFplcm8gb3V0IHBhcnRpYWwgYmxvY2sgYXQgdGhlIGVkZ2VzIG9mIHRoZSByYW5nZSAqLwotCXJldCA9IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrcyhpbm9kZSwgb2Zmc2V0LCBsZW4sICZhbXA7cGFydGlhbF96ZXJvZWQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0JaWYgKCgoZmlsZS0mZ3Q7Zl9mbGFncyAmYW1wOyBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSAmYW1wOyZhbXA7IHBhcnRpYWxfemVyb2VkKSB7CiYjNDM7CS8qCiYjNDM7CSAqIEluIEZBTExPQ19GTF9XUklURV9aRVJPRVMgbW9kZSwgZWRnZXMgdGhhdCBoYXZlIGJlZW4gcGFydGlhbGx5CiYjNDM7CSAqIHplcm9lZCBtdXN0IGJlIHdyaXR0ZW4gYmFjayB0byBlbnN1cmUgdGhlIGVudGlyZSB6ZXJvZWQgcmFuZ2UKJiM0MzsJICogaXMgY29udmVydGVkIHRvIHRoZSB3cml0dGVuIHN0YXRlLiBJbiBTWU5DIG1vZGUsIHdyaXRlYmFjayBpcwomIzQzOwkgKiBhbHNvIHJlcXVpcmVkIHRvIHBlcnNpc3QgdGhlIHplcm9lZCBkYXRhIHRvIGRpc2suCiYjNDM7CSAqLwomIzQzOwlpZiAocGFydGlhbF96ZXJvZWQgJmFtcDsmYW1wOwomIzQzOwkgICAgKChtb2RlICZhbXA7IEZBTExPQ19GTF9XUklURV9aRVJPRVMpIHx8CiYjNDM7CSAgICAgKGZpbGUtJmd0O2ZfZmxhZ3MgJmFtcDsgT19TWU5DKSB8fCBJU19TWU5DKGlub2RlKSkpIHsKIAkJcmV0ID0gZmlsZW1hcF93cml0ZV9hbmRfd2FpdF9yYW5nZShpbm9kZS0mZ3Q7aV9tYXBwaW5nLCBvZmZzZXQsCiAJCQkJCQkgICBlbmQgLSAxKTsKIAkJaWYgKHJldCkKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuYwppbmRleCBjMmMyZDZhYzdmM2QxMy4uZDY4ZjdiZTRmZjAyYTYgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2lub2RlLmMKQEAgLTQwMjYsNiAmIzQzOzQwMjYsMTAgQEAgdm9pZCBleHQ0X3NldF9hb3BzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiAgKiBiZWNhdXNlIGl0IG1pZ2h0IGhhdmUgZGF0YSBpbiBwYWdlY2FjaGUgKGVnLCBpZiBjYWxsZWQgZnJvbSBleHQ0X3plcm9fcmFuZ2UsCiAgKiBleHQ0X3B1bmNoX2hvbGUsIGV0Yykgd2hpY2ggbmVlZHMgdG8gYmUgcHJvcGVybHkgemVyb2VkIG91dC4gT3RoZXJ3aXNlIGEKICAqIHJhY2luZyB3cml0ZWJhY2sgY2FuIGNvbWUgbGF0ZXIgYW5kIGZsdXNoIHRoZSBzdGFsZSBwYWdlY2FjaGUgdG8gZGlzay4KJiM0MzsgKgomIzQzOyAqIFJldHVybiB0aGUgbG9hZGVkIGJoIGlmIGl0IGFjdHVhbGx5IG5lZWRzIHplcm9pbmcgLSBpbiB3cml0dGVuLCBkaXJ0eQomIzQzOyAqIHVud3JpdHRlbiwgb3IgZGVsYWxsb2Mgc3RhdGUuIFJldHVybiBOVUxMIGlmIGl0JiMzOTtzIGNsZWFuIChpLmUuLCBhIGhvbGUgb3IKJiM0MzsgKiBhIGNsZWFuIHVud3JpdHRlbiBibG9jaykuCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKQogewpAQCAtNDA2NSw3ICYjNDM7NDA2OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfbG9hZF90YWlsX2JoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmcm9tKQogCWlmICghYnVmZmVyX21hcHBlZChiaCkpIHsKIAkJQlVGRkVSX1RSQUNFKGJoLCAmIzM0O3VubWFwcGVkJiMzNDspOwogCQlleHQ0X2dldF9ibG9jayhpbm9kZSwgaWJsb2NrLCBiaCwgMCk7Ci0JCS8qIHVubWFwcGVkPyBJdCYjMzk7cyBhIGhvbGUgLSBub3RoaW5nIHRvIGRvICovCiYjNDM7CQkvKiBJdCYjMzk7cyBhIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2sgLSBub3RoaW5nIHRvIGRvICovCiAJCWlmICghYnVmZmVyX21hcHBlZChiaCkpIHsKIAkJCUJVRkZFUl9UUkFDRShiaCwgJiMzNDtzdGlsbCB1bm1hcHBlZCYjMzQ7KTsKIAkJCWdvdG8gdW5sb2NrOwpAQCAtNDI1MiwxMyAmIzQzOzQyNTYsMjYgQEAgaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MzsvKgomIzQzOyAqIFplcm8gb3V0IHRoZSB1bmFsaWduZWQgaGVhZCBhbmQgdGFpbCBvZiB0aGUgW2xzdGFydCwgbHN0YXJ0JiM0MztsZW5ndGgpCiYjNDM7ICogcmFuZ2UuCiYjNDM7ICoKJiM0MzsgKiBPbiByZXR1cm4sIEBwYXJ0aWFsX3plcm9lZCByZWNvcmRzIHdoaWNoIGVkZ2VzIGFjdHVhbGx5IGdvdAomIzQzOyAqIHBhcnRpYWwtemVyb2VkLiAgU2V0IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUL0VYVDRfUEFSVElBTF9aRVJPX0VORCBpZgomIzQzOyAqIHRoZSBoZWFkL3RhaWwgYmxvY2sgZ290IGFjdHVhbGx5IHBhcnRpYWxseSB6ZXJvZWQgKGluIHdyaXR0ZW4sIGRpcnR5CiYjNDM7ICogdW53cml0dGVuIG9yIGRlbGFsbG9jIHN0YXRlKS4gIENsZWFyZWQgaWYgdGhlIGhlYWQvdGFpbCBibG9jayBpcyBhCiYjNDM7ICogaG9sZSBvciBhIGNsZWFuIHVud3JpdHRlbiBibG9jaywgaW4gd2hpY2ggY2FzZSB0aGVyZSBpcyBub3RoaW5nIG5lZWRzCiYjNDM7ICogdG8gemVyby4gIFdoZW4gdGhlIGhlYWQgYW5kIHRhaWwgbGFuZCBpbiB0aGUgc2FtZSBibG9jaywgYm90aCBiaXRzCiYjNDM7ICogYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyby4KJiM0MzsgKi8KIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCwKLQkJCSAgICAgYm9vbCAqZGlkX3plcm8pCiYjNDM7CQkJICAgICB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKQogewogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0mZ3Q7aV9zYjsKIAl1bnNpZ25lZCBwYXJ0aWFsX3N0YXJ0LCBwYXJ0aWFsX2VuZDsKIAlleHQ0X2ZzYmxrX3Qgc3RhcnQsIGVuZDsKIAlsb2ZmX3QgYnl0ZV9lbmQgPSAobHN0YXJ0ICYjNDM7IGxlbmd0aCAtIDEpOwomIzQzOwlib29sIGRpZF96ZXJvID0gZmFsc2U7CiAJaW50IGVyciA9IDA7CiAKIAlwYXJ0aWFsX3N0YXJ0ID0gbHN0YXJ0ICZhbXA7IChzYi0mZ3Q7c19ibG9ja3NpemUgLSAxKTsKQEAgLTQyNzAsMjEgJiM0Mzs0Mjg3LDMyIEBAIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCwKIAkvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIHdpdGhpbiB0aGUgc2luZ2xlIGJsb2NrICovCiAJaWYgKHN0YXJ0ID09IGVuZCAmYW1wOyZhbXA7CiAJICAgIChwYXJ0aWFsX3N0YXJ0IHx8IChwYXJ0aWFsX2VuZCAhPSBzYi0mZ3Q7c19ibG9ja3NpemUgLSAxKSkpIHsKLQkJZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIGxlbmd0aCwgZGlkX3plcm8sCiYjNDM7CQllcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCAmYW1wO2RpZF96ZXJvLAogCQkJCQkgICAgTlVMTCk7CiYjNDM7CQlpZiAoZGlkX3plcm8pCiYjNDM7CQkJKnBhcnRpYWxfemVyb2VkIHw9IChFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCB8CiYjNDM7CQkJCQkgICAgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKTsKIAkJcmV0dXJuIGVycjsKIAl9CiAJLyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqLwogCWlmIChwYXJ0aWFsX3N0YXJ0KSB7CiAJCWVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgbHN0YXJ0LCBzYi0mZ3Q7c19ibG9ja3NpemUsCi0JCQkJCSAgICBkaWRfemVybywgTlVMTCk7CiYjNDM7CQkJCQkgICAgJmFtcDtkaWRfemVybywgTlVMTCk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gZXJyOwomIzQzOwkJaWYgKGRpZF96ZXJvKQomIzQzOwkJCSpwYXJ0aWFsX3plcm9lZCB8PSBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVDsKIAl9CiAJLyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIGVuZCBvZiB0aGUgcmFuZ2UgKi8KLQlpZiAocGFydGlhbF9lbmQgIT0gc2ItJmd0O3NfYmxvY2tzaXplIC0gMSkKJiM0MzsJaWYgKHBhcnRpYWxfZW5kICE9IHNiLSZndDtzX2Jsb2Nrc2l6ZSAtIDEpIHsKJiM0MzsJCWRpZF96ZXJvID0gZmFsc2U7CiAJCWVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgYnl0ZV9lbmQgLSBwYXJ0aWFsX2VuZCwKLQkJCQkJICAgIHBhcnRpYWxfZW5kICYjNDM7IDEsIGRpZF96ZXJvLCBOVUxMKTsKJiM0MzsJCQkJCSAgICBwYXJ0aWFsX2VuZCAmIzQzOyAxLCAmYW1wO2RpZF96ZXJvLCBOVUxMKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJcmV0dXJuIGVycjsKJiM0MzsJCWlmIChkaWRfemVybykKJiM0MzsJCQkqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fRU5EOwomIzQzOwl9CiAJcmV0dXJuIGVycjsKIH0KIApAQCAtNDQzMyw3ICYjNDM7NDQ2MSw3IEBAIGludCBleHQ0X3B1bmNoX2hvbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgpCiAJbG9mZl90IGVuZCA9IG9mZnNldCAmIzQzOyBsZW5ndGg7CiAJaGFuZGxlX3QgKmhhbmRsZTsKIAl1bnNpZ25lZCBpbnQgY3JlZGl0czsKLQlib29sIHBhcnRpYWxfemVyb2VkID0gZmFsc2U7CiYjNDM7CXVuc2lnbmVkIGludCBwYXJ0aWFsX3plcm9lZCA9IDA7CiAJaW50IHJldDsKIAogCXRyYWNlX2V4dDRfcHVuY2hfaG9sZShpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsIDApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjMxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBleHQ0IFplcm8tUmFuZ2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1lc3Npbmcgd2l0aCBgZXh0NF96ZXJvX3JhbmdlYCwgYGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc2AsIGFuZCBgZXh0NF9wdW5jaF9ob2xlYC4gQWxsIGtleSBmdW5jdGlvbnMgd2l0aGluIGBmcy9leHQ0L2V4dGVudHMuY2AgYW5kIGBmcy9leHQ0L2lub2RlLmNgLiBTb3VuZHMgbGlrZSBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiBob3cgcGFydGlhbCBibG9ja3MgZ2V0IHplcm9lZCwgYW5kIGhvdyB0aGF0IGluZm9ybWF0aW9uIHRoZW4gaW5mbHVlbmNlcyB0aGUgYWxsb2NhdGlvbiBhbmQgemVyb2luZyBvZiB3aG9sZSBibG9ja3Mgd2hlbiBgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FU2AgaXMgdXNlZC4gVGhpcyBkaXJlY3RseSB0b3VjaGVzIHRoZSBjb3JlIGxvZ2ljIG9mIGV4dDQmIzM5O3MgYGZhbGxvY2F0ZWAsIHNwZWNpZmljYWxseSB0aGUgYEZBTExPQ19GTF9aRVJPX1JBTkdFYCBhbmQgYEZBTExPQ19GTF9XUklURV9aRVJPRVNgIGZsYWdzLgoKR2l2ZW4gdGhlIHNjb3BlIGFuZCBpbXBhY3Qgb24gc3VjaCBjb3JlIGZ1bmN0aW9uYWxpdHksIGl0JiMzOTtzIHNjcmVhbWluZyBmb3Igc29tZSBzZXJpb3VzIGZ1enppbmcuIEEgY2hhbmdlIHRoaXMgbG93LWxldmVsIGNvdWxkIGVhc2lseSBpbnRyb2R1Y2Ugc3VidGxlLCBoYXJkLXRvLWRldGVjdCBpc3N1ZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2Ugc3RyZXNzIHRlc3QgdGhlIGhlY2sgb3V0IG9mIHRoaXMuCgpGaXJzdCwgbGV0JiMzOTtzIHZlcmlmeSB0aGUgYnVpbGQgcHJlcmVxdWlzaXRlcy4gSXQmIzM5O3MgZXh0NCwgc28gb2J2aW91c2x5IHdlIG5lZWQgYEVYVDRfRlNgIGVuYWJsZWQgaW4gdGhlIGNvbmZpZy4gQnV0IGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHdpdGggYGdyZXBwZXJgIGFuZCBjb25maXJtIG5vdGhpbmcgZWxzZSBpcyBpbXBsaWNpdGx5IHJlcXVpcmVkLiBJdCYjMzk7cyBhbHdheXMgYmVzdCB0byBiZSBwcmVjaXNlIHdoZW4gaXQgY29tZXMgdG8ga2VybmVsIG1vZGlmaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhUNF9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXG5mcy9leHQ0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxuZnMvZXh0NC9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtVc2UgZXh0NCBmb3IgZXh0MiBmaWxlIHN5c3RlbXNcJiMzNDtcbmZzL2V4dDQvS2NvbmZpZzozNzpcdGRlcGVuZHMgb24gRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTM4LVx0ZGVwZW5kcyBvbiBFWFQyX0ZTPW5cbi0tXG5mcy9leHQ0L0tjb25maWctNDUtXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXG5mcy9leHQ0L0tjb25maWctNDctXHRib29sIFwmIzM0O0V4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbmZzL2V4dDQvS2NvbmZpZzo0ODpcdGRlcGVuZHMgb24gRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTQ5LVx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuLS1cbmZzL2V4dDQvS2NvbmZpZy01NS1cbmZzL2V4dDQvS2NvbmZpZzo1Njpjb25maWcgRVhUNF9GU19TRUNVUklUWVxuZnMvZXh0NC9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtFeHQ0IFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuZnMvZXh0NC9LY29uZmlnOjU4Olx0ZGVwZW5kcyBvbiBFWFQ0X0ZTXG5mcy9leHQ0L0tjb25maWctNTktXHRoZWxwXG4tLVxuZnMvZXh0NC9LY29uZmlnPTY4PWNvbmZpZyBFWFQ0X0RFQlVHXG5mcy9leHQ0L0tjb25maWctNjktXHRib29sIFwmIzM0O0V4dDQgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbmZzL2V4dDQvS2NvbmZpZzo3MDpcdGRlcGVuZHMgb24gRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTcxLVx0aGVscFxuLS1cbmZzL2V4dDQvS2NvbmZpZz03Nz1jb25maWcgRVhUNF9LVU5JVF9URVNUU1xuZnMvZXh0NC9LY29uZmlnLTc4LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGV4dDRcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuZnMvZXh0NC9LY29uZmlnOjc5Olx0ZGVwZW5kcyBvbiBFWFQ0X0ZTIFx1MDAyNlx1MDAyNiBLVU5JVFxuZnMvZXh0NC9LY29uZmlnLTgwLVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjcwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBFWFQ0IEZpbGVzeXN0ZW0gTW9kaWZpY2F0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLCBgRVhUNF9GU2AuIE15IGZvY3VzIG5vdyBzaGlmdHMgdG8gdGhlIGNvZGUgdGhhdCYjMzk7cyBiZWVuIGFsdGVyZWQgd2l0aGluIGl0LiBJIHNlZSB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vZGlmaWVkOiBgZXh0NF96ZXJvX3JhbmdlYCwgYGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc2AsIGFuZCBgZXh0NF9wdW5jaF9ob2xlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGVzZSBjaGFuZ2VzLgoKQWxyaWdodCwgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhvc2Uga2V5IGZ1bmN0aW9uczogYGV4dDRfemVyb19yYW5nZWAsIGBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NgLCBhbmQgYGV4dDRfcHVuY2hfaG9sZWAuIEkmIzM5O2xsIGRlbHZlIGludG8gdGhlIHVzYWdlIG9mIGBleHQ0X3plcm9fcmFuZ2VgIGFuZCBgZXh0NF9wdW5jaF9ob2xlYCwgYW5kIGl0IGFwcGVhcnMgdGhleSYjMzk7cmUgYm90aCBjYWxsZWQgYnkgdGhlIGBleHQ0X2ZhbGxvY2F0ZWAgZnVuY3Rpb24uIFRoaXMgcG9pbnRzIHRvIGBmYWxsb2NhdGVgIGJlaW5nIHRoZSBkcml2ZXIgZm9yIHRoZXNlIG9wZXJhdGlvbnMsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG15IGVmZm9ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF96ZXJvX3JhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHRlbnRzLmM9NDcwOD1zdGF0aWMgaW50IGV4dDRfaW5zZXJ0X3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTtcbmZzL2V4dDQvZXh0ZW50cy5jLTQ3MDktXG5mcy9leHQ0L2V4dGVudHMuYzo0NzEwOnN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbmZzL2V4dDQvZXh0ZW50cy5jLTQ3MTEtXHRcdFx0ICAgIGxvZmZfdCBsZW4sIGludCBtb2RlKVxuLS1cbmZzL2V4dDQvZXh0ZW50cy5jLTQ3MjAtXG5mcy9leHQ0L2V4dGVudHMuYzo0NzIxOlx0dHJhY2VfZXh0NF96ZXJvX3JhbmdlKGlub2RlLCBvZmZzZXQsIGxlbiwgbW9kZSk7XG5mcy9leHQ0L2V4dGVudHMuYy00NzIyLVx0V0FSTl9PTl9PTkNFKCFpbm9kZV9pc19sb2NrZWQoaW5vZGUpKTtcbi0tXG5mcy9leHQ0L2V4dGVudHMuYz00ODgxPWxvbmcgZXh0NF9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL2V4dDQvZXh0ZW50cy5jLTQ5NDktXHRjYXNlIEZBTExPQ19GTF9XUklURV9aRVJPRVM6XG5mcy9leHQ0L2V4dGVudHMuYzo0OTUwOlx0XHRyZXQgPSBleHQ0X3plcm9fcmFuZ2UoZmlsZSwgb2Zmc2V0LCBsZW4sIG1vZGUpO1xuZnMvZXh0NC9leHRlbnRzLmMtNDk1MS1cdFx0YnJlYWs7XG4tLVxuZnMvZXh0NC9pbm9kZS5jPTQwMDQ9dm9pZCBleHQ0X3NldF9hb3BzKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTQwMjUtICogSGVyZSB3ZSBjYW4mIzM5O3Qgc2tpcCBhbiB1bndyaXR0ZW4gYnVmZmVyIGV2ZW4gdGhvdWdoIGl0IHVzdWFsbHkgcmVhZHMgemVyb1xuZnMvZXh0NC9pbm9kZS5jOjQwMjY6ICogYmVjYXVzZSBpdCBtaWdodCBoYXZlIGRhdGEgaW4gcGFnZWNhY2hlIChlZywgaWYgY2FsbGVkIGZyb20gZXh0NF96ZXJvX3JhbmdlLFxuZnMvZXh0NC9pbm9kZS5jLTQwMjctICogZXh0NF9wdW5jaF9ob2xlLCBldGMpIHdoaWNoIG5lZWRzIHRvIGJlIHByb3Blcmx5IHplcm9lZCBvdXQuIE90aGVyd2lzZSBhXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUxMAoJCQkJCQkJb3V0cHV0OiAxNTEKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEV4dDQgWmVyb2luZyBPcGVyYXRpb25zKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZpbGUgc3lzdGVtIHBlcnNwZWN0aXZlLiBJJiMzOTttIHNlZWluZyB0aHJlZSBrZXkgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gemVyb2luZyBvcGVyYXRpb25zIGluIHRoZSBleHQ0IGZpbGUgc3lzdGVtOiBgZXh0NF96ZXJvX3JhbmdlYCwgYGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc2AsIGFuZCBgZXh0NF9wdW5jaF9ob2xlYC4gSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIGBleHQ0X2ZhbGxvY2F0ZWAsIHdoaWNoIGlzIGxpa2VseSB0aGUgdXNlci1zcGFjZSBlbnRyeSBwb2ludC4KCkZpcnN0LCBJIGNvbmZpcm1lZCB0aGF0IGBleHQ0X3plcm9fcmFuZ2VgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiBgZnMvZXh0NC9leHRlbnRzLmNgLiBUaGlzIHRlbGxzIG1lIGltbWVkaWF0ZWx5IHRoYXQgaXQmIzM5O3MgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uLiBUaGF0IGFsc28gbWVhbnMgdGhhdCBgZXh0NF9mYWxsb2NhdGVgIGhhcyB0byBiZSB0aGUgdXNlci1zcGFjZSBlbnRyeS4KCk5vdywgSSBzY2FubmVkIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGBleHQ0X2Jsb2NrX3plcm9fZW9mYCBhbmQgYGV4dDRfbG9hZF90YWlsX2JoYCB3ZXJlIG1vZGlmaWVkLCBidXQgdGhleSYjMzk7cmUganVzdCByZWxhdGVkIHRvIGNvZGUgb3IgY29tbWVudHMuIFRodXMsIHRoZSBmb2N1cyByZW1haW5zIG9uIGBleHQ0X3plcm9fcmFuZ2VgLCBgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzYCwgYW5kIGBleHQ0X3B1bmNoX2hvbGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF96ZXJvX3JhbmdlJiMzNDssCiAgICAmIzM0O2V4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyYjMzQ7LAogICAgJiMzNDtleHQ0X3B1bmNoX2hvbGUmIzM0OywKICAgICYjMzQ7ZXh0NF9mYWxsb2NhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciB6ZXJvaW5nIHBhcnRpYWwgYmxvY2tzIGluIGV4dDQsIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgYEZBTExPQ19GTF9aRVJPX1JBTkdFYCBhbmQgYEZBTExPQ19GTF9XUklURV9aRVJPRVNgIG1vZGVzIGluIGBleHQ0X2ZhbGxvY2F0ZWAuIFRoaXMgaXMgYSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGZpbGUgYWxsb2NhdGlvbiBhbmQgemVyb2luZyBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB0aGUgYGZhbGxvY2F0ZWAgc3lzY2FsbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfemVyb19yYW5nZSYjMzQ7LAogICAgJiMzNDtleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MmIzM0OywKICAgICYjMzQ7ZXh0NF9wdW5jaF9ob2xlJiMzNDssCiAgICAmIzM0O2V4dDRfZmFsbG9jYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgemVyb2luZyBwYXJ0aWFsIGJsb2NrcyBpbiBleHQ0LCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIGBGQUxMT0NfRkxfWkVST19SQU5HRWAgYW5kIGBGQUxMT0NfRkxfV1JJVEVfWkVST0VTYCBtb2RlcyBpbiBgZXh0NF9mYWxsb2NhdGVgLiBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsIGNoYW5nZSB0byBmaWxlIGFsbG9jYXRpb24gYW5kIHplcm9pbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBmYWxsb2NhdGVgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjoyNToxMS43OTA3NTM3MzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUwMTAyMjEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF96ZXJvX3JhbmdlXCIsXG4gICAgXCJleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NcIixcbiAgICBcImV4dDRfcHVuY2hfaG9sZVwiLFxuICAgIFwiZXh0NF9mYWxsb2NhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHplcm9pbmcgcGFydGlhbCBibG9ja3MgaW4gZXh0NCwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyBgRkFMTE9DX0ZMX1pFUk9fUkFOR0VgIGFuZCBgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FU2AgbW9kZXMgaW4gYGV4dDRfZmFsbG9jYXRlYC4gVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gZmlsZSBhbGxvY2F0aW9uIGFuZCB6ZXJvaW5nIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjoyNToxMS43OTA3NTgxMDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDM3MjU1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIzNDFlNDQ3YzA3NzFkMWYyNmU3OTIzODk3NmQyYzAxMjFlYmE2OGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAyMjoyNToxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXFxuaW5kZXggOTQyODNhOTkxZTVjNGYuLmIyZTU1ODc2ZDBlMzUyIDEwMDY0NFxcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcXG5AQCAtMzA5OSw4ICszMDk5LDExIEBAIGV4dGVybiBpbnQgZXh0NF9jaHVua190cmFuc19leHRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5yYmxvY2tzKTtcXG4gZXh0ZXJuIGludCBleHQ0X21ldGFfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBsYmxvY2tzLFxcbiBcXHRcXHRcXHRcXHQgIGludCBwZXh0ZW50cyk7XFxuIGV4dGVybiBpbnQgZXh0NF9ibG9ja196ZXJvX2VvZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSwgbG9mZl90IGVuZCk7XFxuK1xcbisjZGVmaW5lIEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUXFx0MHgxXFxuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fRU5EXFx0MHgyXFxuIGV4dGVybiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsXFxuLVxcdFxcdFxcdFxcdCAgICBsb2ZmX3QgbGVuZ3RoLCBib29sICpkaWRfemVybyk7XFxuK1xcdFxcdFxcdFxcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcXG4gZXh0ZXJuIHZtX2ZhdWx0X3QgZXh0NF9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpO1xcbiBleHRlcm4gcXNpemVfdCAqZXh0NF9nZXRfcmVzZXJ2ZWRfc3BhY2Uoc3RydWN0IGlub2RlICppbm9kZSk7XFxuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHRlbnRzLmMgYi9mcy9leHQ0L2V4dGVudHMuY1xcbmluZGV4IDEyNWY2MjhlNzM4YWIxLi4zODc1M2MyZWY5MTBiMSAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xcbisrKyBiL2ZzL2V4dDQvZXh0ZW50cy5jXFxuQEAgLTQ3MTUsNyArNDcxNSw3IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0bG9mZl90IGFsaWduX3N0YXJ0LCBhbGlnbl9lbmQsIG5ld19zaXplID0gMDtcXG4gXFx0bG9mZl90IGVuZCA9IG9mZnNldCArIGxlbjtcXG4gXFx0dW5zaWduZWQgaW50IGJsb2Nrc2l6ZSA9IGlfYmxvY2tzaXplKGlub2RlKTtcXG4tXFx0Ym9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlO1xcbitcXHR1bnNpZ25lZCBpbnQgcGFydGlhbF96ZXJvZWQgPSAwO1xcbiBcXHRpbnQgcmV0LCBmbGFncztcXG4gXFxuIFxcdHRyYWNlX2V4dDRfemVyb19yYW5nZShpbm9kZSwgb2Zmc2V0LCBsZW4sIG1vZGUpO1xcbkBAIC00NzM0LDE3ICs0NzM0LDI1IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcXG4gXFx0fVxcbiBcXG4gXFx0ZmxhZ3MgPSBFWFQ0X0dFVF9CTE9DS1NfQ1JFQVRFX1VOV1JJVF9FWFQ7XFxuLVxcdC8qIFByZWFsbG9jYXRlIHRoZSByYW5nZSBpbmNsdWRpbmcgdGhlIHVuYWxpZ25lZCBlZGdlcyAqL1xcbitcXHQvKlxcbitcXHQgKiBQcmVhbGxvY2F0ZSB0aGUgcmFuZ2UgaW5jbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMsIGFuZCB6ZXJvXFxuK1xcdCAqIG91dCBwYXJ0aWFsIGJsb2NrcyBpZiB0aGV5IGFscmVhZHkgY29udGFpbiBkYXRhLlxcbitcXHQgKi9cXG4gXFx0aWYgKCFJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSkge1xcbiBcXHRcXHRyZXQgPSBleHQ0X2FsbG9jX2ZpbGVfYmxvY2tzKGZpbGUsIG9mZnNldCwgbGVuLCBuZXdfc2l6ZSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBmbGFncyk7XFxuK1xcdFxcdGlmICghcmV0KVxcbitcXHRcXHRcXHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnBhcnRpYWxfemVyb2VkKTtcXG4gXFx0XFx0aWYgKHJldClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0ID0gZXh0NF91cGRhdGVfZGlza3NpemVfYmVmb3JlX3B1bmNoKGlub2RlLCBvZmZzZXQsIGxlbik7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuK1xcdGlmIChtb2RlIFxcdTAwMjYgRkFMTE9DX0ZMX1pFUk9fUkFOR0UpIHtcXG4rXFx0XFx0cmV0ID0gZXh0NF91cGRhdGVfZGlza3NpemVfYmVmb3JlX3B1bmNoKGlub2RlLCBvZmZzZXQsIGxlbik7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIE5vdyByZWxlYXNlIHRoZSBwYWdlcyBhbmQgemVybyBibG9jayBhbGlnbmVkIHBhcnQgb2YgcGFnZXMgKi9cXG4gXFx0cmV0ID0gZXh0NF90cnVuY2F0ZV9wYWdlX2NhY2hlX2Jsb2NrX3JhbmdlKGlub2RlLCBvZmZzZXQsIGVuZCk7XFxuQEAgLTQ3NTQsNiArNDc2MiwyMSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXFxuIFxcdC8qIFplcm8gcmFuZ2UgZXhjbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMgKi9cXG4gXFx0YWxpZ25fc3RhcnQgPSByb3VuZF91cChvZmZzZXQsIGJsb2Nrc2l6ZSk7XFxuIFxcdGFsaWduX2VuZCA9IHJvdW5kX2Rvd24oZW5kLCBibG9ja3NpemUpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogSW4gV1JJVEVfWkVST0VTIG1vZGUsIGVkZ2VzIHRoYXQgd2VyZSBub3QgcGFydGlhbC16ZXJvZWQgKGNsZWFuXFxuK1xcdCAqIHVud3JpdHRlbiBvciBob2xlKSBtdXN0IGJlIGFsbG9jYXRlZCBhbmQgemVyb2VkIGFzIHdob2xlIGJsb2Nrcy5cXG4rXFx0ICogRXhwYW5kIHRoZSBhbGlnbmVkIHJhbmdlIG91dHdhcmQgdG8gY292ZXIgdGhlbS5cXG4rXFx0ICovXFxuK1xcdGlmIChtb2RlIFxcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykge1xcbitcXHRcXHRpZiAoIUlTX0FMSUdORUQob2Zmc2V0LCBibG9ja3NpemUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhKHBhcnRpYWxfemVyb2VkIFxcdTAwMjYgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQpKVxcbitcXHRcXHRcXHRhbGlnbl9zdGFydCA9IHJvdW5kX2Rvd24ob2Zmc2V0LCBibG9ja3NpemUpO1xcbitcXHRcXHRpZiAoIUlTX0FMSUdORUQoZW5kLCBibG9ja3NpemUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhKHBhcnRpYWxfemVyb2VkIFxcdTAwMjYgRVhUNF9QQVJUSUFMX1pFUk9fRU5EKSlcXG4rXFx0XFx0XFx0YWxpZ25fZW5kID0gcm91bmRfdXAoZW5kLCBibG9ja3NpemUpO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoYWxpZ25fZW5kIFxcdTAwM2UgYWxpZ25fc3RhcnQpIHtcXG4gXFx0XFx0aWYgKG1vZGUgXFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKVxcbiBcXHRcXHRcXHRmbGFncyA9IEVYVDRfR0VUX0JMT0NLU19DUkVBVEVfWkVSTyB8IEVYVDRfRVhfTk9DQUNIRTtcXG5AQCAtNDc3MCwxMSArNDc5MywxNSBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXFxuIFxcdGlmIChJU19BTElHTkVEKG9mZnNldCB8IGVuZCwgYmxvY2tzaXplKSlcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdC8qIFplcm8gb3V0IHBhcnRpYWwgYmxvY2sgYXQgdGhlIGVkZ2VzIG9mIHRoZSByYW5nZSAqL1xcbi1cXHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLCBcXHUwMDI2cGFydGlhbF96ZXJvZWQpO1xcbi1cXHRpZiAocmV0KVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbi1cXHRpZiAoKChmaWxlLVxcdTAwM2VmX2ZsYWdzIFxcdTAwMjYgT19TWU5DKSB8fCBJU19TWU5DKGlub2RlKSkgXFx1MDAyNlxcdTAwMjYgcGFydGlhbF96ZXJvZWQpIHtcXG4rXFx0LypcXG4rXFx0ICogSW4gRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUyBtb2RlLCBlZGdlcyB0aGF0IGhhdmUgYmVlbiBwYXJ0aWFsbHlcXG4rXFx0ICogemVyb2VkIG11c3QgYmUgd3JpdHRlbiBiYWNrIHRvIGVuc3VyZSB0aGUgZW50aXJlIHplcm9lZCByYW5nZVxcbitcXHQgKiBpcyBjb252ZXJ0ZWQgdG8gdGhlIHdyaXR0ZW4gc3RhdGUuIEluIFNZTkMgbW9kZSwgd3JpdGViYWNrIGlzXFxuK1xcdCAqIGFsc28gcmVxdWlyZWQgdG8gcGVyc2lzdCB0aGUgemVyb2VkIGRhdGEgdG8gZGlzay5cXG4rXFx0ICovXFxuK1xcdGlmIChwYXJ0aWFsX3plcm9lZCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgKChtb2RlIFxcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykgfHxcXG4rXFx0ICAgICAoZmlsZS1cXHUwMDNlZl9mbGFncyBcXHUwMDI2IE9fU1lOQykgfHwgSVNfU1lOQyhpbm9kZSkpKSB7XFxuIFxcdFxcdHJldCA9IGZpbGVtYXBfd3JpdGVfYW5kX3dhaXRfcmFuZ2UoaW5vZGUtXFx1MDAzZWlfbWFwcGluZywgb2Zmc2V0LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICBlbmQgLSAxKTtcXG4gXFx0XFx0aWYgKHJldClcXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jXFxuaW5kZXggYzJjMmQ2YWM3ZjNkMTMuLmQ2OGY3YmU0ZmYwMmE2IDEwMDY0NFxcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xcbisrKyBiL2ZzL2V4dDQvaW5vZGUuY1xcbkBAIC00MDI2LDYgKzQwMjYsMTAgQEAgdm9pZCBleHQ0X3NldF9hb3BzKHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuICAqIGJlY2F1c2UgaXQgbWlnaHQgaGF2ZSBkYXRhIGluIHBhZ2VjYWNoZSAoZWcsIGlmIGNhbGxlZCBmcm9tIGV4dDRfemVyb19yYW5nZSxcXG4gICogZXh0NF9wdW5jaF9ob2xlLCBldGMpIHdoaWNoIG5lZWRzIHRvIGJlIHByb3Blcmx5IHplcm9lZCBvdXQuIE90aGVyd2lzZSBhXFxuICAqIHJhY2luZyB3cml0ZWJhY2sgY2FuIGNvbWUgbGF0ZXIgYW5kIGZsdXNoIHRoZSBzdGFsZSBwYWdlY2FjaGUgdG8gZGlzay5cXG4rICpcXG4rICogUmV0dXJuIHRoZSBsb2FkZWQgYmggaWYgaXQgYWN0dWFsbHkgbmVlZHMgemVyb2luZyAtIGluIHdyaXR0ZW4sIGRpcnR5XFxuKyAqIHVud3JpdHRlbiwgb3IgZGVsYWxsb2Mgc3RhdGUuIFJldHVybiBOVUxMIGlmIGl0J3MgY2xlYW4gKGkuZS4sIGEgaG9sZSBvclxcbisgKiBhIGNsZWFuIHVud3JpdHRlbiBibG9jaykuXFxuICAqL1xcbiBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcXG4ge1xcbkBAIC00MDY1LDcgKzQwNjksNyBAQCBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcXG4gXFx0aWYgKCFidWZmZXJfbWFwcGVkKGJoKSkge1xcbiBcXHRcXHRCVUZGRVJfVFJBQ0UoYmgsIFxcXCJ1bm1hcHBlZFxcXCIpO1xcbiBcXHRcXHRleHQ0X2dldF9ibG9jayhpbm9kZSwgaWJsb2NrLCBiaCwgMCk7XFxuLVxcdFxcdC8qIHVubWFwcGVkPyBJdCdzIGEgaG9sZSAtIG5vdGhpbmcgdG8gZG8gKi9cXG4rXFx0XFx0LyogSXQncyBhIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2sgLSBub3RoaW5nIHRvIGRvICovXFxuIFxcdFxcdGlmICghYnVmZmVyX21hcHBlZChiaCkpIHtcXG4gXFx0XFx0XFx0QlVGRkVSX1RSQUNFKGJoLCBcXFwic3RpbGwgdW5tYXBwZWRcXFwiKTtcXG4gXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuQEAgLTQyNTIsMTMgKzQyNTYsMjYgQEAgaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbisvKlxcbisgKiBaZXJvIG91dCB0aGUgdW5hbGlnbmVkIGhlYWQgYW5kIHRhaWwgb2YgdGhlIFtsc3RhcnQsIGxzdGFydCtsZW5ndGgpXFxuKyAqIHJhbmdlLlxcbisgKlxcbisgKiBPbiByZXR1cm4sIEBwYXJ0aWFsX3plcm9lZCByZWNvcmRzIHdoaWNoIGVkZ2VzIGFjdHVhbGx5IGdvdFxcbisgKiBwYXJ0aWFsLXplcm9lZC4gIFNldCBFWFQ0X1BBUlRJQUxfWkVST19TVEFSVC9FWFQ0X1BBUlRJQUxfWkVST19FTkQgaWZcXG4rICogdGhlIGhlYWQvdGFpbCBibG9jayBnb3QgYWN0dWFsbHkgcGFydGlhbGx5IHplcm9lZCAoaW4gd3JpdHRlbiwgZGlydHlcXG4rICogdW53cml0dGVuIG9yIGRlbGFsbG9jIHN0YXRlKS4gIENsZWFyZWQgaWYgdGhlIGhlYWQvdGFpbCBibG9jayBpcyBhXFxuKyAqIGhvbGUgb3IgYSBjbGVhbiB1bndyaXR0ZW4gYmxvY2ssIGluIHdoaWNoIGNhc2UgdGhlcmUgaXMgbm90aGluZyBuZWVkc1xcbisgKiB0byB6ZXJvLiAgV2hlbiB0aGUgaGVhZCBhbmQgdGFpbCBsYW5kIGluIHRoZSBzYW1lIGJsb2NrLCBib3RoIGJpdHNcXG4rICogYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyby5cXG4rICovXFxuIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCxcXG4tXFx0XFx0XFx0ICAgICBib29sICpkaWRfemVybylcXG4rXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKVxcbiB7XFxuIFxcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cXHUwMDNlaV9zYjtcXG4gXFx0dW5zaWduZWQgcGFydGlhbF9zdGFydCwgcGFydGlhbF9lbmQ7XFxuIFxcdGV4dDRfZnNibGtfdCBzdGFydCwgZW5kO1xcbiBcXHRsb2ZmX3QgYnl0ZV9lbmQgPSAobHN0YXJ0ICsgbGVuZ3RoIC0gMSk7XFxuK1xcdGJvb2wgZGlkX3plcm8gPSBmYWxzZTtcXG4gXFx0aW50IGVyciA9IDA7XFxuIFxcbiBcXHRwYXJ0aWFsX3N0YXJ0ID0gbHN0YXJ0IFxcdTAwMjYgKHNiLVxcdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpO1xcbkBAIC00MjcwLDIxICs0Mjg3LDMyIEBAIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCxcXG4gXFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyB3aXRoaW4gdGhlIHNpbmdsZSBibG9jayAqL1xcbiBcXHRpZiAoc3RhcnQgPT0gZW5kIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAocGFydGlhbF9zdGFydCB8fCAocGFydGlhbF9lbmQgIT0gc2ItXFx1MDAzZXNfYmxvY2tzaXplIC0gMSkpKSB7XFxuLVxcdFxcdGVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgbHN0YXJ0LCBsZW5ndGgsIGRpZF96ZXJvLFxcbitcXHRcXHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBcXHUwMDI2ZGlkX3plcm8sXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBOVUxMKTtcXG4rXFx0XFx0aWYgKGRpZF96ZXJvKVxcbitcXHRcXHRcXHQqcGFydGlhbF96ZXJvZWQgfD0gKEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUIHxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIEVYVDRfUEFSVElBTF9aRVJPX0VORCk7XFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdH1cXG4gXFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqL1xcbiBcXHRpZiAocGFydGlhbF9zdGFydCkge1xcbiBcXHRcXHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgc2ItXFx1MDAzZXNfYmxvY2tzaXplLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgZGlkX3plcm8sIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0aWYgKGRpZF96ZXJvKVxcbitcXHRcXHRcXHQqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQ7XFxuIFxcdH1cXG4gXFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIGVuZCBvZiB0aGUgcmFuZ2UgKi9cXG4tXFx0aWYgKHBhcnRpYWxfZW5kICE9IHNiLVxcdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpXFxuK1xcdGlmIChwYXJ0aWFsX2VuZCAhPSBzYi1cXHUwMDNlc19ibG9ja3NpemUgLSAxKSB7XFxuK1xcdFxcdGRpZF96ZXJvID0gZmFsc2U7XFxuIFxcdFxcdGVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgYnl0ZV9lbmQgLSBwYXJ0aWFsX2VuZCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIHBhcnRpYWxfZW5kICsgMSwgZGlkX3plcm8sIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgcGFydGlhbF9lbmQgKyAxLCBcXHUwMDI2ZGlkX3plcm8sIE5VTEwpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRpZiAoZGlkX3plcm8pXFxuK1xcdFxcdFxcdCpwYXJ0aWFsX3plcm9lZCB8PSBFWFQ0X1BBUlRJQUxfWkVST19FTkQ7XFxuK1xcdH1cXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG5AQCAtNDQzMyw3ICs0NDYxLDcgQEAgaW50IGV4dDRfcHVuY2hfaG9sZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aClcXG4gXFx0bG9mZl90IGVuZCA9IG9mZnNldCArIGxlbmd0aDtcXG4gXFx0aGFuZGxlX3QgKmhhbmRsZTtcXG4gXFx0dW5zaWduZWQgaW50IGNyZWRpdHM7XFxuLVxcdGJvb2wgcGFydGlhbF96ZXJvZWQgPSBmYWxzZTtcXG4rXFx0dW5zaWduZWQgaW50IHBhcnRpYWxfemVyb2VkID0gMDtcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdHRyYWNlX2V4dDRfcHVuY2hfaG9sZShpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjoyNToxMi4yNjYwNTcyMzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MDI1NzA5MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3plcm9fcmFuZ2VcIixcbiAgICBcImV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc1wiLFxuICAgIFwiZXh0NF9wdW5jaF9ob2xlXCIsXG4gICAgXCJleHQ0X2ZhbGxvY2F0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgemVyb2luZyBwYXJ0aWFsIGJsb2NrcyBpbiBleHQ0LCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIGBGQUxMT0NfRkxfWkVST19SQU5HRWAgYW5kIGBGQUxMT0NfRkxfV1JJVEVfWkVST0VTYCBtb2RlcyBpbiBgZXh0NF9mYWxsb2NhdGVgLiBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsIGNoYW5nZSB0byBmaWxlIGFsbG9jYXRpb24gYW5kIHplcm9pbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBmYWxsb2NhdGVgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjM0MWU0NDdjMDc3MWQxZjI2ZTc5MjM4OTc2ZDJjMDEyMWViYTY4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMjI6MjU6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXG5pbmRleCA5NDI4M2E5OTFlNWM0Zi4uYjJlNTU4NzZkMGUzNTIgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dDQuaFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcbkBAIC0zMDk5LDggKzMwOTksMTEgQEAgZXh0ZXJuIGludCBleHQ0X2NodW5rX3RyYW5zX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbnJibG9ja3MpO1xuIGV4dGVybiBpbnQgZXh0NF9tZXRhX3RyYW5zX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbGJsb2NrcyxcbiBcdFx0XHRcdCAgaW50IHBleHRlbnRzKTtcbiBleHRlcm4gaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpO1xuK1xuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlRcdDB4MVxuKyNkZWZpbmUgRVhUNF9QQVJUSUFMX1pFUk9fRU5EXHQweDJcbiBleHRlcm4gaW50IGV4dDRfemVyb19wYXJ0aWFsX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgbHN0YXJ0LFxuLVx0XHRcdFx0ICAgIGxvZmZfdCBsZW5ndGgsIGJvb2wgKmRpZF96ZXJvKTtcbitcdFx0XHRcdCAgICBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnBhcnRpYWxfemVyb2VkKTtcbiBleHRlcm4gdm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7XG4gZXh0ZXJuIHFzaXplX3QgKmV4dDRfZ2V0X3Jlc2VydmVkX3NwYWNlKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuIGV4dGVybiBpbnQgZXh0NF9nZXRfcHJvamlkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGtwcm9qaWRfdCAqcHJvamlkKTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dGVudHMuYyBiL2ZzL2V4dDQvZXh0ZW50cy5jXG5pbmRleCAxMjVmNjI4ZTczOGFiMS4uMzg3NTNjMmVmOTEwYjEgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dGVudHMuY1xuKysrIGIvZnMvZXh0NC9leHRlbnRzLmNcbkBAIC00NzE1LDcgKzQ3MTUsNyBAQCBzdGF0aWMgbG9uZyBleHQ0X3plcm9fcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsXG4gXHRsb2ZmX3QgYWxpZ25fc3RhcnQsIGFsaWduX2VuZCwgbmV3X3NpemUgPSAwO1xuIFx0bG9mZl90IGVuZCA9IG9mZnNldCArIGxlbjtcbiBcdHVuc2lnbmVkIGludCBibG9ja3NpemUgPSBpX2Jsb2Nrc2l6ZShpbm9kZSk7XG4tXHRib29sIHBhcnRpYWxfemVyb2VkID0gZmFsc2U7XG4rXHR1bnNpZ25lZCBpbnQgcGFydGlhbF96ZXJvZWQgPSAwO1xuIFx0aW50IHJldCwgZmxhZ3M7XG4gXG4gXHR0cmFjZV9leHQ0X3plcm9fcmFuZ2UoaW5vZGUsIG9mZnNldCwgbGVuLCBtb2RlKTtcbkBAIC00NzM0LDE3ICs0NzM0LDI1IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbiBcdH1cbiBcbiBcdGZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9VTldSSVRfRVhUO1xuLVx0LyogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzICovXG4rXHQvKlxuK1x0ICogUHJlYWxsb2NhdGUgdGhlIHJhbmdlIGluY2x1ZGluZyB0aGUgdW5hbGlnbmVkIGVkZ2VzLCBhbmQgemVyb1xuK1x0ICogb3V0IHBhcnRpYWwgYmxvY2tzIGlmIHRoZXkgYWxyZWFkeSBjb250YWluIGRhdGEuXG4rXHQgKi9cbiBcdGlmICghSVNfQUxJR05FRChvZmZzZXQgfCBlbmQsIGJsb2Nrc2l6ZSkpIHtcbiBcdFx0cmV0ID0gZXh0NF9hbGxvY19maWxlX2Jsb2NrcyhmaWxlLCBvZmZzZXQsIGxlbiwgbmV3X3NpemUsXG4gXHRcdFx0XHRcdCAgICAgZmxhZ3MpO1xuK1x0XHRpZiAoIXJldClcbitcdFx0XHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLFxuK1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZwYXJ0aWFsX3plcm9lZCk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdHJldCA9IGV4dDRfdXBkYXRlX2Rpc2tzaXplX2JlZm9yZV9wdW5jaChpbm9kZSwgb2Zmc2V0LCBsZW4pO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdGlmIChtb2RlIFx1MDAyNiBGQUxMT0NfRkxfWkVST19SQU5HRSkge1xuK1x0XHRyZXQgPSBleHQ0X3VwZGF0ZV9kaXNrc2l6ZV9iZWZvcmVfcHVuY2goaW5vZGUsIG9mZnNldCwgbGVuKTtcbitcdFx0aWYgKHJldClcbitcdFx0XHRyZXR1cm4gcmV0O1xuK1x0fVxuIFxuIFx0LyogTm93IHJlbGVhc2UgdGhlIHBhZ2VzIGFuZCB6ZXJvIGJsb2NrIGFsaWduZWQgcGFydCBvZiBwYWdlcyAqL1xuIFx0cmV0ID0gZXh0NF90cnVuY2F0ZV9wYWdlX2NhY2hlX2Jsb2NrX3JhbmdlKGlub2RlLCBvZmZzZXQsIGVuZCk7XG5AQCAtNDc1NCw2ICs0NzYyLDIxIEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCxcbiBcdC8qIFplcm8gcmFuZ2UgZXhjbHVkaW5nIHRoZSB1bmFsaWduZWQgZWRnZXMgKi9cbiBcdGFsaWduX3N0YXJ0ID0gcm91bmRfdXAob2Zmc2V0LCBibG9ja3NpemUpO1xuIFx0YWxpZ25fZW5kID0gcm91bmRfZG93bihlbmQsIGJsb2Nrc2l6ZSk7XG4rXG4rXHQvKlxuK1x0ICogSW4gV1JJVEVfWkVST0VTIG1vZGUsIGVkZ2VzIHRoYXQgd2VyZSBub3QgcGFydGlhbC16ZXJvZWQgKGNsZWFuXG4rXHQgKiB1bndyaXR0ZW4gb3IgaG9sZSkgbXVzdCBiZSBhbGxvY2F0ZWQgYW5kIHplcm9lZCBhcyB3aG9sZSBibG9ja3MuXG4rXHQgKiBFeHBhbmQgdGhlIGFsaWduZWQgcmFuZ2Ugb3V0d2FyZCB0byBjb3ZlciB0aGVtLlxuK1x0ICovXG4rXHRpZiAobW9kZSBcdTAwMjYgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUykge1xuK1x0XHRpZiAoIUlTX0FMSUdORUQob2Zmc2V0LCBibG9ja3NpemUpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIShwYXJ0aWFsX3plcm9lZCBcdTAwMjYgRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQpKVxuK1x0XHRcdGFsaWduX3N0YXJ0ID0gcm91bmRfZG93bihvZmZzZXQsIGJsb2Nrc2l6ZSk7XG4rXHRcdGlmICghSVNfQUxJR05FRChlbmQsIGJsb2Nrc2l6ZSkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAhKHBhcnRpYWxfemVyb2VkIFx1MDAyNiBFWFQ0X1BBUlRJQUxfWkVST19FTkQpKVxuK1x0XHRcdGFsaWduX2VuZCA9IHJvdW5kX3VwKGVuZCwgYmxvY2tzaXplKTtcbitcdH1cbitcbiBcdGlmIChhbGlnbl9lbmQgXHUwMDNlIGFsaWduX3N0YXJ0KSB7XG4gXHRcdGlmIChtb2RlIFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKVxuIFx0XHRcdGZsYWdzID0gRVhUNF9HRVRfQkxPQ0tTX0NSRUFURV9aRVJPIHwgRVhUNF9FWF9OT0NBQ0hFO1xuQEAgLTQ3NzAsMTEgKzQ3OTMsMTUgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxuIFx0aWYgKElTX0FMSUdORUQob2Zmc2V0IHwgZW5kLCBibG9ja3NpemUpKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0LyogWmVybyBvdXQgcGFydGlhbCBibG9jayBhdCB0aGUgZWRnZXMgb2YgdGhlIHJhbmdlICovXG4tXHRyZXQgPSBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3MoaW5vZGUsIG9mZnNldCwgbGVuLCBcdTAwMjZwYXJ0aWFsX3plcm9lZCk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVx0aWYgKCgoZmlsZS1cdTAwM2VmX2ZsYWdzIFx1MDAyNiBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSBcdTAwMjZcdTAwMjYgcGFydGlhbF96ZXJvZWQpIHtcbitcdC8qXG4rXHQgKiBJbiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTIG1vZGUsIGVkZ2VzIHRoYXQgaGF2ZSBiZWVuIHBhcnRpYWxseVxuK1x0ICogemVyb2VkIG11c3QgYmUgd3JpdHRlbiBiYWNrIHRvIGVuc3VyZSB0aGUgZW50aXJlIHplcm9lZCByYW5nZVxuK1x0ICogaXMgY29udmVydGVkIHRvIHRoZSB3cml0dGVuIHN0YXRlLiBJbiBTWU5DIG1vZGUsIHdyaXRlYmFjayBpc1xuK1x0ICogYWxzbyByZXF1aXJlZCB0byBwZXJzaXN0IHRoZSB6ZXJvZWQgZGF0YSB0byBkaXNrLlxuK1x0ICovXG4rXHRpZiAocGFydGlhbF96ZXJvZWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgKChtb2RlIFx1MDAyNiBGQUxMT0NfRkxfV1JJVEVfWkVST0VTKSB8fFxuK1x0ICAgICAoZmlsZS1cdTAwM2VmX2ZsYWdzIFx1MDAyNiBPX1NZTkMpIHx8IElTX1NZTkMoaW5vZGUpKSkge1xuIFx0XHRyZXQgPSBmaWxlbWFwX3dyaXRlX2FuZF93YWl0X3JhbmdlKGlub2RlLVx1MDAzZWlfbWFwcGluZywgb2Zmc2V0LFxuIFx0XHRcdFx0XHRcdCAgIGVuZCAtIDEpO1xuIFx0XHRpZiAocmV0KVxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuY1xuaW5kZXggYzJjMmQ2YWM3ZjNkMTMuLmQ2OGY3YmU0ZmYwMmE2IDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9pbm9kZS5jXG4rKysgYi9mcy9leHQ0L2lub2RlLmNcbkBAIC00MDI2LDYgKzQwMjYsMTAgQEAgdm9pZCBleHQ0X3NldF9hb3BzKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gICogYmVjYXVzZSBpdCBtaWdodCBoYXZlIGRhdGEgaW4gcGFnZWNhY2hlIChlZywgaWYgY2FsbGVkIGZyb20gZXh0NF96ZXJvX3JhbmdlLFxuICAqIGV4dDRfcHVuY2hfaG9sZSwgZXRjKSB3aGljaCBuZWVkcyB0byBiZSBwcm9wZXJseSB6ZXJvZWQgb3V0LiBPdGhlcndpc2UgYVxuICAqIHJhY2luZyB3cml0ZWJhY2sgY2FuIGNvbWUgbGF0ZXIgYW5kIGZsdXNoIHRoZSBzdGFsZSBwYWdlY2FjaGUgdG8gZGlzay5cbisgKlxuKyAqIFJldHVybiB0aGUgbG9hZGVkIGJoIGlmIGl0IGFjdHVhbGx5IG5lZWRzIHplcm9pbmcgLSBpbiB3cml0dGVuLCBkaXJ0eVxuKyAqIHVud3JpdHRlbiwgb3IgZGVsYWxsb2Mgc3RhdGUuIFJldHVybiBOVUxMIGlmIGl0J3MgY2xlYW4gKGkuZS4sIGEgaG9sZSBvclxuKyAqIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrKS5cbiAgKi9cbiBzdGF0aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICpleHQ0X2xvYWRfdGFpbF9iaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgZnJvbSlcbiB7XG5AQCAtNDA2NSw3ICs0MDY5LDcgQEAgc3RhdGljIHN0cnVjdCBidWZmZXJfaGVhZCAqZXh0NF9sb2FkX3RhaWxfYmgoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20pXG4gXHRpZiAoIWJ1ZmZlcl9tYXBwZWQoYmgpKSB7XG4gXHRcdEJVRkZFUl9UUkFDRShiaCwgXCJ1bm1hcHBlZFwiKTtcbiBcdFx0ZXh0NF9nZXRfYmxvY2soaW5vZGUsIGlibG9jaywgYmgsIDApO1xuLVx0XHQvKiB1bm1hcHBlZD8gSXQncyBhIGhvbGUgLSBub3RoaW5nIHRvIGRvICovXG4rXHRcdC8qIEl0J3MgYSBob2xlIG9yIGEgY2xlYW4gdW53cml0dGVuIGJsb2NrIC0gbm90aGluZyB0byBkbyAqL1xuIFx0XHRpZiAoIWJ1ZmZlcl9tYXBwZWQoYmgpKSB7XG4gXHRcdFx0QlVGRkVSX1RSQUNFKGJoLCBcInN0aWxsIHVubWFwcGVkXCIpO1xuIFx0XHRcdGdvdG8gdW5sb2NrO1xuQEAgLTQyNTIsMTMgKzQyNTYsMjYgQEAgaW50IGV4dDRfYmxvY2tfemVyb19lb2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGZyb20sIGxvZmZfdCBlbmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLypcbisgKiBaZXJvIG91dCB0aGUgdW5hbGlnbmVkIGhlYWQgYW5kIHRhaWwgb2YgdGhlIFtsc3RhcnQsIGxzdGFydCtsZW5ndGgpXG4rICogcmFuZ2UuXG4rICpcbisgKiBPbiByZXR1cm4sIEBwYXJ0aWFsX3plcm9lZCByZWNvcmRzIHdoaWNoIGVkZ2VzIGFjdHVhbGx5IGdvdFxuKyAqIHBhcnRpYWwtemVyb2VkLiAgU2V0IEVYVDRfUEFSVElBTF9aRVJPX1NUQVJUL0VYVDRfUEFSVElBTF9aRVJPX0VORCBpZlxuKyAqIHRoZSBoZWFkL3RhaWwgYmxvY2sgZ290IGFjdHVhbGx5IHBhcnRpYWxseSB6ZXJvZWQgKGluIHdyaXR0ZW4sIGRpcnR5XG4rICogdW53cml0dGVuIG9yIGRlbGFsbG9jIHN0YXRlKS4gIENsZWFyZWQgaWYgdGhlIGhlYWQvdGFpbCBibG9jayBpcyBhXG4rICogaG9sZSBvciBhIGNsZWFuIHVud3JpdHRlbiBibG9jaywgaW4gd2hpY2ggY2FzZSB0aGVyZSBpcyBub3RoaW5nIG5lZWRzXG4rICogdG8gemVyby4gIFdoZW4gdGhlIGhlYWQgYW5kIHRhaWwgbGFuZCBpbiB0aGUgc2FtZSBibG9jaywgYm90aCBiaXRzXG4rICogYXJlIHNldCB0b2dldGhlciBvbiBhIHN1Y2Nlc3NmdWwgemVyby5cbisgKi9cbiBpbnQgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBsc3RhcnQsIGxvZmZfdCBsZW5ndGgsXG4tXHRcdFx0ICAgICBib29sICpkaWRfemVybylcbitcdFx0XHQgICAgIHVuc2lnbmVkIGludCAqcGFydGlhbF96ZXJvZWQpXG4ge1xuIFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLVx1MDAzZWlfc2I7XG4gXHR1bnNpZ25lZCBwYXJ0aWFsX3N0YXJ0LCBwYXJ0aWFsX2VuZDtcbiBcdGV4dDRfZnNibGtfdCBzdGFydCwgZW5kO1xuIFx0bG9mZl90IGJ5dGVfZW5kID0gKGxzdGFydCArIGxlbmd0aCAtIDEpO1xuK1x0Ym9vbCBkaWRfemVybyA9IGZhbHNlO1xuIFx0aW50IGVyciA9IDA7XG4gXG4gXHRwYXJ0aWFsX3N0YXJ0ID0gbHN0YXJ0IFx1MDAyNiAoc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxKTtcbkBAIC00MjcwLDIxICs0Mjg3LDMyIEBAIGludCBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmd0aCxcbiBcdC8qIEhhbmRsZSBwYXJ0aWFsIHplcm8gd2l0aGluIHRoZSBzaW5nbGUgYmxvY2sgKi9cbiBcdGlmIChzdGFydCA9PSBlbmQgXHUwMDI2XHUwMDI2XG4gXHQgICAgKHBhcnRpYWxfc3RhcnQgfHwgKHBhcnRpYWxfZW5kICE9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSkpKSB7XG4tXHRcdGVyciA9IGV4dDRfYmxvY2tfemVyb19yYW5nZShpbm9kZSwgbHN0YXJ0LCBsZW5ndGgsIGRpZF96ZXJvLFxuK1x0XHRlcnIgPSBleHQ0X2Jsb2NrX3plcm9fcmFuZ2UoaW5vZGUsIGxzdGFydCwgbGVuZ3RoLCBcdTAwMjZkaWRfemVybyxcbiBcdFx0XHRcdFx0ICAgIE5VTEwpO1xuK1x0XHRpZiAoZGlkX3plcm8pXG4rXHRcdFx0KnBhcnRpYWxfemVyb2VkIHw9IChFWFQ0X1BBUlRJQUxfWkVST19TVEFSVCB8XG4rXHRcdFx0XHRcdCAgICBFWFQ0X1BBUlRJQUxfWkVST19FTkQpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFx0LyogSGFuZGxlIHBhcnRpYWwgemVybyBvdXQgb24gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSAqL1xuIFx0aWYgKHBhcnRpYWxfc3RhcnQpIHtcbiBcdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBsc3RhcnQsIHNiLVx1MDAzZXNfYmxvY2tzaXplLFxuLVx0XHRcdFx0XHQgICAgZGlkX3plcm8sIE5VTEwpO1xuK1x0XHRcdFx0XHQgICAgXHUwMDI2ZGlkX3plcm8sIE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBlcnI7XG4rXHRcdGlmIChkaWRfemVybylcbitcdFx0XHQqcGFydGlhbF96ZXJvZWQgfD0gRVhUNF9QQVJUSUFMX1pFUk9fU1RBUlQ7XG4gXHR9XG4gXHQvKiBIYW5kbGUgcGFydGlhbCB6ZXJvIG91dCBvbiB0aGUgZW5kIG9mIHRoZSByYW5nZSAqL1xuLVx0aWYgKHBhcnRpYWxfZW5kICE9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMSlcbitcdGlmIChwYXJ0aWFsX2VuZCAhPSBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSAtIDEpIHtcbitcdFx0ZGlkX3plcm8gPSBmYWxzZTtcbiBcdFx0ZXJyID0gZXh0NF9ibG9ja196ZXJvX3JhbmdlKGlub2RlLCBieXRlX2VuZCAtIHBhcnRpYWxfZW5kLFxuLVx0XHRcdFx0XHQgICAgcGFydGlhbF9lbmQgKyAxLCBkaWRfemVybywgTlVMTCk7XG4rXHRcdFx0XHRcdCAgICBwYXJ0aWFsX2VuZCArIDEsIFx1MDAyNmRpZF96ZXJvLCBOVUxMKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHRpZiAoZGlkX3plcm8pXG4rXHRcdFx0KnBhcnRpYWxfemVyb2VkIHw9IEVYVDRfUEFSVElBTF9aRVJPX0VORDtcbitcdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuQEAgLTQ0MzMsNyArNDQ2MSw3IEBAIGludCBleHQ0X3B1bmNoX2hvbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgpXG4gXHRsb2ZmX3QgZW5kID0gb2Zmc2V0ICsgbGVuZ3RoO1xuIFx0aGFuZGxlX3QgKmhhbmRsZTtcbiBcdHVuc2lnbmVkIGludCBjcmVkaXRzO1xuLVx0Ym9vbCBwYXJ0aWFsX3plcm9lZCA9IGZhbHNlO1xuK1x0dW5zaWduZWQgaW50IHBhcnRpYWxfemVyb2VkID0gMDtcbiBcdGludCByZXQ7XG4gXG4gXHR0cmFjZV9leHQ0X3B1bmNoX2hvbGUoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLCAwKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjI1OjEyLjI2NjA1OTU2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MTM0NDc1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIGV4dDQgWmVyby1SYW5nZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbWVzc2luZyB3aXRoIGBleHQ0X3plcm9fcmFuZ2VgLCBgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzYCwgYW5kIGBleHQ0X3B1bmNoX2hvbGVgLiBBbGwga2V5IGZ1bmN0aW9ucyB3aXRoaW4gYGZzL2V4dDQvZXh0ZW50cy5jYCBhbmQgYGZzL2V4dDQvaW5vZGUuY2AuIFNvdW5kcyBsaWtlIGl0J3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gaG93IHBhcnRpYWwgYmxvY2tzIGdldCB6ZXJvZWQsIGFuZCBob3cgdGhhdCBpbmZvcm1hdGlvbiB0aGVuIGluZmx1ZW5jZXMgdGhlIGFsbG9jYXRpb24gYW5kIHplcm9pbmcgb2Ygd2hvbGUgYmxvY2tzIHdoZW4gYEZBTExPQ19GTF9XUklURV9aRVJPRVNgIGlzIHVzZWQuIFRoaXMgZGlyZWN0bHkgdG91Y2hlcyB0aGUgY29yZSBsb2dpYyBvZiBleHQ0J3MgYGZhbGxvY2F0ZWAsIHNwZWNpZmljYWxseSB0aGUgYEZBTExPQ19GTF9aRVJPX1JBTkdFYCBhbmQgYEZBTExPQ19GTF9XUklURV9aRVJPRVNgIGZsYWdzLlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIGltcGFjdCBvbiBzdWNoIGNvcmUgZnVuY3Rpb25hbGl0eSwgaXQncyBzY3JlYW1pbmcgZm9yIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBBIGNoYW5nZSB0aGlzIGxvdy1sZXZlbCBjb3VsZCBlYXNpbHkgaW50cm9kdWNlIHN1YnRsZSwgaGFyZC10by1kZXRlY3QgaXNzdWVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHN0cmVzcyB0ZXN0IHRoZSBoZWNrIG91dCBvZiB0aGlzLlxuXG5GaXJzdCwgbGV0J3MgdmVyaWZ5IHRoZSBidWlsZCBwcmVyZXF1aXNpdGVzLiBJdCdzIGV4dDQsIHNvIG9idmlvdXNseSB3ZSBuZWVkIGBFWFQ0X0ZTYCBlbmFibGVkIGluIHRoZSBjb25maWcuIEJ1dCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgZG91YmxlLWNoZWNrIHdpdGggYGdyZXBwZXJgIGFuZCBjb25maXJtIG5vdGhpbmcgZWxzZSBpcyBpbXBsaWNpdGx5IHJlcXVpcmVkLiBJdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHByZWNpc2Ugd2hlbiBpdCBjb21lcyB0byBrZXJuZWwgbW9kaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYzMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjI1OjE3LjE3OTUwODg4MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTExMzg0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFQ0X0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVxcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcXG5mcy9leHQ0L0tjb25maWctMzYtXFx0Ym9vbCBcXFwiVXNlIGV4dDQgZm9yIGV4dDIgZmlsZSBzeXN0ZW1zXFxcIlxcbmZzL2V4dDQvS2NvbmZpZzozNzpcXHRkZXBlbmRzIG9uIEVYVDRfRlNcXG5mcy9leHQ0L0tjb25maWctMzgtXFx0ZGVwZW5kcyBvbiBFWFQyX0ZTPW5cXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy00NS1cXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXFxuZnMvZXh0NC9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIkV4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuZnMvZXh0NC9LY29uZmlnOjQ4OlxcdGRlcGVuZHMgb24gRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy00OS1cXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNTUtXFxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXFxuZnMvZXh0NC9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIkV4dDQgU2VjdXJpdHkgTGFiZWxzXFxcIlxcbmZzL2V4dDQvS2NvbmZpZzo1ODpcXHRkZXBlbmRzIG9uIEVYVDRfRlNcXG5mcy9leHQ0L0tjb25maWctNTktXFx0aGVscFxcbi0tXFxuZnMvZXh0NC9LY29uZmlnPTY4PWNvbmZpZyBFWFQ0X0RFQlVHXFxuZnMvZXh0NC9LY29uZmlnLTY5LVxcdGJvb2wgXFxcIkV4dDQgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuZnMvZXh0NC9LY29uZmlnOjcwOlxcdGRlcGVuZHMgb24gRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy03MS1cXHRoZWxwXFxuLS1cXG5mcy9leHQ0L0tjb25maWc9Nzc9Y29uZmlnIEVYVDRfS1VOSVRfVEVTVFNcXG5mcy9leHQ0L0tjb25maWctNzgtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBleHQ0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuZnMvZXh0NC9LY29uZmlnOjc5OlxcdGRlcGVuZHMgb24gRVhUNF9GUyBcXHUwMDI2XFx1MDAyNiBLVU5JVFxcbmZzL2V4dDQvS2NvbmZpZy04MC1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjoyNToxNy4yNDg2Mjg1MTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM3MjM2NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBFWFQ0IEZpbGVzeXN0ZW0gTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiwgYEVYVDRfRlNgLiBNeSBmb2N1cyBub3cgc2hpZnRzIHRvIHRoZSBjb2RlIHRoYXQncyBiZWVuIGFsdGVyZWQgd2l0aGluIGl0LiBJIHNlZSB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vZGlmaWVkOiBgZXh0NF96ZXJvX3JhbmdlYCwgYGV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc2AsIGFuZCBgZXh0NF9wdW5jaF9ob2xlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5BbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIHRob3NlIGtleSBmdW5jdGlvbnM6IGBleHQ0X3plcm9fcmFuZ2VgLCBgZXh0NF96ZXJvX3BhcnRpYWxfYmxvY2tzYCwgYW5kIGBleHQ0X3B1bmNoX2hvbGVgLiBJJ2xsIGRlbHZlIGludG8gdGhlIHVzYWdlIG9mIGBleHQ0X3plcm9fcmFuZ2VgIGFuZCBgZXh0NF9wdW5jaF9ob2xlYCwgYW5kIGl0IGFwcGVhcnMgdGhleSdyZSBib3RoIGNhbGxlZCBieSB0aGUgYGV4dDRfZmFsbG9jYXRlYCBmdW5jdGlvbi4gVGhpcyBwb2ludHMgdG8gYGZhbGxvY2F0ZWAgYmVpbmcgdGhlIGRyaXZlciBmb3IgdGhlc2Ugb3BlcmF0aW9ucywgc28gdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBjb25jZW50cmF0ZSBteSBlZmZvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjcwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjI1OjIwLjk4NTg2NzI5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTY5MTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X3plcm9fcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9leHRlbnRzLmM9NDcwOD1zdGF0aWMgaW50IGV4dDRfaW5zZXJ0X3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTtcXG5mcy9leHQ0L2V4dGVudHMuYy00NzA5LVxcbmZzL2V4dDQvZXh0ZW50cy5jOjQ3MTA6c3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LFxcbmZzL2V4dDQvZXh0ZW50cy5jLTQ3MTEtXFx0XFx0XFx0ICAgIGxvZmZfdCBsZW4sIGludCBtb2RlKVxcbi0tXFxuZnMvZXh0NC9leHRlbnRzLmMtNDcyMC1cXG5mcy9leHQ0L2V4dGVudHMuYzo0NzIxOlxcdHRyYWNlX2V4dDRfemVyb19yYW5nZShpbm9kZSwgb2Zmc2V0LCBsZW4sIG1vZGUpO1xcbmZzL2V4dDQvZXh0ZW50cy5jLTQ3MjItXFx0V0FSTl9PTl9PTkNFKCFpbm9kZV9pc19sb2NrZWQoaW5vZGUpKTtcXG4tLVxcbmZzL2V4dDQvZXh0ZW50cy5jPTQ4ODE9bG9uZyBleHQ0X2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9leHQ0L2V4dGVudHMuYy00OTQ5LVxcdGNhc2UgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FUzpcXG5mcy9leHQ0L2V4dGVudHMuYzo0OTUwOlxcdFxcdHJldCA9IGV4dDRfemVyb19yYW5nZShmaWxlLCBvZmZzZXQsIGxlbiwgbW9kZSk7XFxuZnMvZXh0NC9leHRlbnRzLmMtNDk1MS1cXHRcXHRicmVhaztcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz00MDA0PXZvaWQgZXh0NF9zZXRfYW9wcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jLTQwMjUtICogSGVyZSB3ZSBjYW4ndCBza2lwIGFuIHVud3JpdHRlbiBidWZmZXIgZXZlbiB0aG91Z2ggaXQgdXN1YWxseSByZWFkcyB6ZXJvXFxuZnMvZXh0NC9pbm9kZS5jOjQwMjY6ICogYmVjYXVzZSBpdCBtaWdodCBoYXZlIGRhdGEgaW4gcGFnZWNhY2hlIChlZywgaWYgY2FsbGVkIGZyb20gZXh0NF96ZXJvX3JhbmdlLFxcbmZzL2V4dDQvaW5vZGUuYy00MDI3LSAqIGV4dDRfcHVuY2hfaG9sZSwgZXRjKSB3aGljaCBuZWVkcyB0byBiZSBwcm9wZXJseSB6ZXJvZWQgb3V0LiBPdGhlcndpc2UgYVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjoyNToyMS4wNDE1NjQwOTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDk2NDMyOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBFeHQ0IFplcm9pbmcgT3BlcmF0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgZmlsZSBzeXN0ZW0gcGVyc3BlY3RpdmUuIEknbSBzZWVpbmcgdGhyZWUga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHplcm9pbmcgb3BlcmF0aW9ucyBpbiB0aGUgZXh0NCBmaWxlIHN5c3RlbTogYGV4dDRfemVyb19yYW5nZWAsIGBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NgLCBhbmQgYGV4dDRfcHVuY2hfaG9sZWAuIEknbSBhbHNvIGNvbnNpZGVyaW5nIGBleHQ0X2ZhbGxvY2F0ZWAsIHdoaWNoIGlzIGxpa2VseSB0aGUgdXNlci1zcGFjZSBlbnRyeSBwb2ludC5cblxuRmlyc3QsIEkgY29uZmlybWVkIHRoYXQgYGV4dDRfemVyb19yYW5nZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIGBmcy9leHQ0L2V4dGVudHMuY2AuIFRoaXMgdGVsbHMgbWUgaW1tZWRpYXRlbHkgdGhhdCBpdCdzIGFuIGludGVybmFsIGhlbHBlciBmdW5jdGlvbi4gVGhhdCBhbHNvIG1lYW5zIHRoYXQgYGV4dDRfZmFsbG9jYXRlYCBoYXMgdG8gYmUgdGhlIHVzZXItc3BhY2UgZW50cnkuXG5cbk5vdywgSSBzY2FubmVkIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGBleHQ0X2Jsb2NrX3plcm9fZW9mYCBhbmQgYGV4dDRfbG9hZF90YWlsX2JoYCB3ZXJlIG1vZGlmaWVkLCBidXQgdGhleSdyZSBqdXN0IHJlbGF0ZWQgdG8gY29kZSBvciBjb21tZW50cy4gVGh1cywgdGhlIGZvY3VzIHJlbWFpbnMgb24gYGV4dDRfemVyb19yYW5nZWAsIGBleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NgLCBhbmQgYGV4dDRfcHVuY2hfaG9sZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MTAsIk91dHB1dFRva2VucyI6MTUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjI1OjI2LjEzNzk5ODcwOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzNzU0ODc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF96ZXJvX3JhbmdlXCIsXG4gICAgXCJleHQ0X3plcm9fcGFydGlhbF9ibG9ja3NcIixcbiAgICBcImV4dDRfcHVuY2hfaG9sZVwiLFxuICAgIFwiZXh0NF9mYWxsb2NhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHplcm9pbmcgcGFydGlhbCBibG9ja3MgaW4gZXh0NCwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyBgRkFMTE9DX0ZMX1pFUk9fUkFOR0VgIGFuZCBgRkFMTE9DX0ZMX1dSSVRFX1pFUk9FU2AgbW9kZXMgaW4gYGV4dDRfZmFsbG9jYXRlYC4gVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gZmlsZSBhbGxvY2F0aW9uIGFuZCB6ZXJvaW5nIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3plcm9fcmFuZ2VcIixcbiAgICBcImV4dDRfemVyb19wYXJ0aWFsX2Jsb2Nrc1wiLFxuICAgIFwiZXh0NF9wdW5jaF9ob2xlXCIsXG4gICAgXCJleHQ0X2ZhbGxvY2F0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgemVyb2luZyBwYXJ0aWFsIGJsb2NrcyBpbiBleHQ0LCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIGBGQUxMT0NfRkxfWkVST19SQU5HRWAgYW5kIGBGQUxMT0NfRkxfV1JJVEVfWkVST0VTYCBtb2RlcyBpbiBgZXh0NF9mYWxsb2NhdGVgLiBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsIGNoYW5nZSB0byBmaWxlIGFsbG9jYXRpb24gYW5kIHplcm9pbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBmYWxsb2NhdGVgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowch4rc[1] Phase: Succeeded StartedAt: 2026-07-01 22:25:54 +0000 UTC FinishedAt: 2026-07-01 22:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 22:25:54 +0000 UTC FinishedAt: 2026-07-01 22:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2] Phase: Succeeded StartedAt: 2026-07-01 22:25:54 +0000 UTC FinishedAt: 2026-07-02 02:41:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 22:25:54 +0000 UTC FinishedAt: 2026-07-02 02:41:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","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-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 22:25:54 +0000 UTC FinishedAt: 2026-07-01 22:26:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 22:25:54 +0000 UTC FinishedAt: 2026-07-01 22:26:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowch4rc/series-workflowch4rc-convert-artifact-1651162143/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 22:26:21 +0000 UTC FinishedAt: 2026-07-01 22:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 22:26:21 +0000 UTC FinishedAt: 2026-07-01 22:53:31 +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:*858935ed-f329-4ffd-84eb-84ae6218996f,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-workflowch4rc/series-workflowch4rc-convert-artifact-1651162143/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": "35593f7a-413f-4ca3-ad69-5fe63505550a", "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-workflowch4rc/series-workflowch4rc-build-action-598945317/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 22:26:21 +0000 UTC FinishedAt: 2026-07-01 22:53:21 +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:*858935ed-f329-4ffd-84eb-84ae6218996f,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-workflowch4rc/series-workflowch4rc-convert-artifact-1651162143/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": "35593f7a-413f-4ca3-ad69-5fe63505550a", "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-workflowch4rc/series-workflowch4rc-build-action-598945317/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 22:53:31 +0000 UTC FinishedAt: 2026-07-01 22:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 22:53:31 +0000 UTC FinishedAt: 2026-07-01 22:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 22:53:31 +0000 UTC FinishedAt: 2026-07-01 22:53:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 22:53:31 +0000 UTC FinishedAt: 2026-07-01 22:53:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","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-workflowch4rc/series-workflowch4rc-convert-artifact-4060709038/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 22:53:41 +0000 UTC FinishedAt: 2026-07-01 22:55:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 22:53:41 +0000 UTC FinishedAt: 2026-07-01 22:55:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*35593f7a-413f-4ca3-ad69-5fe63505550a,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-workflowch4rc/series-workflowch4rc-build-action-598945317/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-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 22:55:57 +0000 UTC FinishedAt: 2026-07-01 22:55:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 22:55:57 +0000 UTC FinishedAt: 2026-07-01 22:55:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 22:55:57 +0000 UTC FinishedAt: 2026-07-01 23:36:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 22:55:57 +0000 UTC FinishedAt: 2026-07-01 23:36:09 +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:*858935ed-f329-4ffd-84eb-84ae6218996f,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-workflowch4rc/series-workflowch4rc-convert-artifact-4060709038/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": "ad8e13ae-f3cd-4f56-90ad-a8d98e06833f", "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-workflowch4rc/series-workflowch4rc-build-action-306329538/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 22:55:57 +0000 UTC FinishedAt: 2026-07-01 23:34:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*858935ed-f329-4ffd-84eb-84ae6218996f,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-workflowch4rc/series-workflowch4rc-convert-artifact-4060709038/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": "ad8e13ae-f3cd-4f56-90ad-a8d98e06833f", "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-workflowch4rc/series-workflowch4rc-build-action-306329538/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 23:36:09 +0000 UTC FinishedAt: 2026-07-01 23:36:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 23:36:09 +0000 UTC FinishedAt: 2026-07-01 23:36:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 23:36:09 +0000 UTC FinishedAt: 2026-07-01 23:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 23:36:09 +0000 UTC FinishedAt: 2026-07-01 23:38:20 +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:*ad8e13ae-f3cd-4f56-90ad-a8d98e06833f,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-workflowch4rc/series-workflowch4rc-build-action-306329538/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-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 23:38:30 +0000 UTC FinishedAt: 2026-07-02 02:41:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 23:38:30 +0000 UTC FinishedAt: 2026-07-02 02:41:06 +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_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"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:*35593f7a-413f-4ca3-ad69-5fe63505550a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ad8e13ae-f3cd-4f56-90ad-a8d98e06833f,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-workflowch4rc/series-workflowch4rc-build-action-598945317/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-workflowch4rc/series-workflowch4rc-build-action-306329538/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 23:38:30 +0000 UTC FinishedAt: 2026-07-01 23:39:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 23:38:30 +0000 UTC FinishedAt: 2026-07-01 23:39:30 +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_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"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-workflowch4rc/series-workflowch4rc-convert-artifact-4188855123/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 23:38:30 +0000 UTC FinishedAt: 2026-07-01 23:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 23:38:30 +0000 UTC FinishedAt: 2026-07-01 23:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 23:38:30 +0000 UTC FinishedAt: 2026-07-01 23:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 23:39:52 +0000 UTC FinishedAt: 2026-07-02 02:41:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch4rc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_zero_range","ext4_zero_partial_blocks","ext4_punch_hole","ext4_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"cf24068b-11eb-4bf8-a1fd-e86533ae31c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 23:39:52 +0000 UTC FinishedAt: 2026-07-02 02:40:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*35593f7a-413f-4ca3-ad69-5fe63505550a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ad8e13ae-f3cd-4f56-90ad-a8d98e06833f,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-workflowch4rc/series-workflowch4rc-build-action-598945317/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-workflowch4rc/series-workflowch4rc-build-action-306329538/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-workflowch4rc/series-workflowch4rc-convert-artifact-4188855123/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,}