Name: series-workflowx5smx Phase: Succeeded StartedAt: 2026-07-11 13:59:45 +0000 UTC FinishedAt: 2026-07-11 18:26:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[0] Phase: Succeeded StartedAt: 2026-07-11 13:59:45 +0000 UTC FinishedAt: 2026-07-11 14:17:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 13:59:45 +0000 UTC FinishedAt: 2026-07-11 14:17: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": "dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3", "config_name": "upstream-apparmor-kasan.config", "series_id": "45bc106c-0f9b-4d2a-8b15-e85fc3101a48" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "atomic_open", "lookup_open", "dentry_create" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRvbWljX29wZW4mIzM0OywKICAgICYjMzQ7bG9va3VwX29wZW4mIzM0OywKICAgICYjMzQ7ZGVudHJ5X2NyZWF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFZGUyBsb2dpYyBpbiBmcy9uYW1laS5jLCBzcGVjaWZpY2FsbHkgcmVmYWN0b3JpbmcgYXRvbWljX29wZW4oKSBhbmQgbG9va3VwX29wZW4oKSB0byBjaGFuZ2UgaG93IGNyZWF0ZV9lcnJvciBpcyBoYW5kbGVkIGR1cmluZyBmaWxlIGNyZWF0aW9uIGFuZCBhdG9taWMgb3Blbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVhZTIwZTM1MjRlZmM4NzY3ZDlkZjQyY2I1NmZiYWQzNzc2MGM1YzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxNDoxNzoxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9uYW1laS5jIGIvZnMvbmFtZWkuY1xuaW5kZXggMTljZTQzYzlhNmU2NjIuLjJlZWYyYTQ5ZDNmNDFlIDEwMDY0NFxuLS0tIGEvZnMvbmFtZWkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvbmFtZWkuY1xuQEAgLTQzMzYsNTAgJiM0Mzs0MzM2LDc4IEBAIHN0YXRpYyBpbnQgbWF5X29fY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxuIFx0cmV0dXJuIHNlY3VyaXR5X2lub2RlX2NyZWF0ZShkaXItXHUwMDNlZGVudHJ5LVx1MDAzZWRfaW5vZGUsIGRlbnRyeSwgbW9kZSk7XG4gfVxuIFxuLS8qXG4tICogQXR0ZW1wdCB0byBhdG9taWNhbGx5IGxvb2sgdXAsIGNyZWF0ZSBhbmQgb3BlbiBhIGZpbGUgZnJvbSBhIG5lZ2F0aXZlXG4tICogZGVudHJ5LlxuLSAqXG4tICogUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwuICBUaGUgZmlsZSB3aWxsIGhhdmUgYmVlbiBjcmVhdGVkIGFuZCBhdHRhY2hlZCB0b1xuLSAqIEBmaWxlIGJ5IHRoZSBmaWxlc3lzdGVtIGNhbGxpbmcgZmluaXNoX29wZW4oKS5cbi0gKlxuLSAqIElmIHRoZSBmaWxlIHdhcyBsb29rZWQgdXAgb25seSBvciBkaWRuJiMzOTt0IG5lZWQgY3JlYXRpbmcsIEZNT0RFX09QRU5FRCB3b24mIzM5O3Rcbi0gKiBiZSBzZXQuICBUaGUgY2FsbGVyIHdpbGwgbmVlZCB0byBwZXJmb3JtIHRoZSBvcGVuIHRoZW1zZWx2ZXMuICBAcGF0aCB3aWxsXG4tICogaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gcG9pbnQgdG8gdGhlIG5ldyBkZW50cnkuICBUaGlzIG1heSBiZSBuZWdhdGl2ZS5cbi0gKlxuLSAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBvdGhlcndpc2UuXG4mIzQzOy8qKlxuJiM0MzsgKiBhdG9taWNfb3BlbigpIC0gYXR0ZW1wdCB0byBhdG9taWNhbGx5IGxvb2sgdXAsIGNyZWF0ZSBhbmQgb3BlbiBhIGZpbGVcbiYjNDM7ICogZnJvbSBhIG5lZ2F0aXZlIGRlbnRyeS5cbiYjNDM7ICogQHBhdGg6ICAgICAgICAgIHBhcmVudCBkaXJlY3RvcnkgcGF0aFxuJiM0MzsgKiBAZGVudHJ5OiAgICAgICAgY2hpbGQgdG8gLVx1MDAzZWF0b21pY19vcGVuKClcbiYjNDM7ICogQGZpbGU6ICAgICAgICAgIGZpbGUgdG8gYXR0YWNoIGNoaWxkIHRvXG4mIzQzOyAqIEBvcGVuX2ZsYWc6ICAgICBvcGVuIGZsYWdzXG4mIzQzOyAqIEBtb2RlOiAgICAgICAgICBjcmVhdGUgbW9kZVxuJiM0MzsgKiBAY3JlYXRlX2Vycm9yOiAgcmV0dXJuIHZhbHVlIGZyb20gbWF5X29fY3JlYXRlKClcbiYjNDM7ICpcbiYjNDM7ICogSWYgYSBub24tZXJyb3IgZGVudHJ5IGlzIHJldHVybmVkIHRoZW46IHdoZW4gRk1PREVfT1BFTkVEIGlzIHNldCxcbiYjNDM7ICogdGhlIGZpbGUgd2lsbCBoYXZlIGJlZW4gYXR0YWNoZWQgdG8gQGZpbGUgYnkgdGhlIGZpbGVzeXN0ZW0gY2FsbGluZ1xuJiM0MzsgKiBmaW5pc2hfb3BlbigpLiBJZiBGTU9ERV9PUEVORUQgaXNuJiMzOTt0IHNldCwgdGhlIGZpbGVzeXN0ZW0gaW5zdGVhZCBjYWxsZWRcbiYjNDM7ICogZmluaXNoX25vX29wZW4oKSBhbmQgdGhlIGNhbGxlciB3aWxsIG5lZWQgdG8gcGVyZm9ybSB0aGUgb3BlbiB0aGVtc2VsdmVzLlxuJiM0MzsgKlxuJiM0MzsgKiBGTU9ERV9DUkVBVEVEIGlzIHNldCB3aGVuIHRoZSBjYWxsIHRvIC1cdTAwM2VhdG9taWNfb3BlbigpIGFjdHVhbGx5IGNyZWF0ZWRcbiYjNDM7ICogdGhlIGZpbGUuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnMgdGhlIG9wZW5lZC9sb29rZWQtdXAgZGVudHJ5IG9uIHN1Y2Nlc3Mgb3IgRVJSX1BUUigtRSkgb24gZmFpbHVyZS5cbiYjNDM7ICogT24gZXJyb3IsIGF0b21pY19vcGVuKCkgY29uc3VtZXMgQGRlbnRyeS5cbiAgKi9cbiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbiBcdFx0XHRcdCAgc3RydWN0IGZpbGUgKmZpbGUsXG4tXHRcdFx0XHQgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSlcbiYjNDM7XHRcdFx0XHQgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSwgaW50IGNyZWF0ZV9lcnJvcilcbiB7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpjb25zdCBERU5UUllfTk9UX1NFVCA9ICh2b2lkICopIC0xVUw7XG4tXHRzdHJ1Y3QgaW5vZGUgKmRpciA9ICBwYXRoLVx1MDAzZWRlbnRyeS1cdTAwM2VkX2lub2RlO1xuJiM0MztcdHN0cnVjdCBpbm9kZSAqZGlyX2lub2RlID0gcGF0aC1cdTAwM2VkZW50cnktXHUwMDNlZF9pbm9kZTtcbiBcdGludCBlcnJvcjtcbiBcbiBcdGZpbGUtXHUwMDNlX19mX3BhdGguZGVudHJ5ID0gREVOVFJZX05PVF9TRVQ7XG4gXHRmaWxlLVx1MDAzZV9fZl9wYXRoLm1udCA9IHBhdGgtXHUwMDNlbW50O1xuLVx0ZXJyb3IgPSBkaXItXHUwMDNlaV9vcC1cdTAwM2VhdG9taWNfb3BlbihkaXIsIGRlbnRyeSwgZmlsZSxcbiYjNDM7XHRlcnJvciA9IGRpcl9pbm9kZS1cdTAwM2VpX29wLVx1MDAzZWF0b21pY19vcGVuKGRpcl9pbm9kZSwgZGVudHJ5LCBmaWxlLFxuIFx0XHRcdFx0ICAgICAgIG9wZW5fdG9fbmFtZWlfZmxhZ3Mob3Blbl9mbGFnKSwgbW9kZSk7XG4gXHRkX2xvb2t1cF9kb25lKGRlbnRyeSk7XG4mIzQzO1xuIFx0aWYgKCFlcnJvcikge1xuIFx0XHRpZiAoZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2IEZNT0RFX09QRU5FRCkge1xuLVx0XHRcdGlmICh1bmxpa2VseShkZW50cnkgIT0gZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5KSkge1xuJiM0MztcdFx0XHQvKiBmaW5pc2hfb3BlbigpIGNhbGxlZCAqL1xuJiM0MztcdFx0XHRzdHJ1Y3QgZGVudHJ5ICpvcGVuZWQgPSBmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnk7XG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseShvcGVuZWQgIT0gZGVudHJ5KSkge1xuIFx0XHRcdFx0ZHB1dChkZW50cnkpO1xuLVx0XHRcdFx0ZGVudHJ5ID0gZGdldChmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnkpO1xuJiM0MztcdFx0XHRcdGRlbnRyeSA9IGRnZXQob3BlbmVkKTtcbiBcdFx0XHR9XG4tXHRcdH0gZWxzZSBpZiAoV0FSTl9PTihmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnkgPT0gREVOVFJZX05PVF9TRVQpKSB7XG4tXHRcdFx0ZXJyb3IgPSAtRUlPO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGlmIChmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnkpIHtcbiYjNDM7XHRcdH0gZWxzZSBpZiAobGlrZWx5KGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeSAhPSBERU5UUllfTk9UX1NFVCkpIHtcbiYjNDM7XHRcdFx0LyogZmluaXNoX25vX29wZW4oKSBjYWxsZWQgKi9cbiYjNDM7XHRcdFx0c3RydWN0IGRlbnRyeSAqcmVwbGFjZWQgPSBmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnk7XG4mIzQzO1x0XHRcdGlmIChyZXBsYWNlZCkge1xuIFx0XHRcdFx0ZHB1dChkZW50cnkpO1xuLVx0XHRcdFx0ZGVudHJ5ID0gZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5O1xuJiM0MztcdFx0XHRcdGRlbnRyeSA9IHJlcGxhY2VkO1xuIFx0XHRcdH1cbiBcdFx0XHRpZiAodW5saWtlbHkoZF9pc19uZWdhdGl2ZShkZW50cnkpKSlcbiBcdFx0XHRcdGVycm9yID0gLUVOT0VOVDtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGNvbnN0IGNoYXIgKmZzbmFtZSA9IGRlbnRyeS1cdTAwM2VkX3NiLVx1MDAzZXNfdHlwZS1cdTAwM2VuYW1lO1xuJiM0MztcdFx0XHRXQVJOKDEsIFwmIzM0OyVzOiAtXHUwMDNlYXRvbWljX29wZW4oKSBsZWZ0IGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeSB1bnNldCFcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgICAgZnNuYW1lKTtcbiYjNDM7XHRcdFx0ZXJyb3IgPSAtRUlPO1xuIFx0XHR9XG4gXHR9XG4mIzQzO1xuIFx0aWYgKGVycm9yKSB7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcdTAwMjZcdTAwMjYgZXJyb3IgPT0gLUVOT0VOVCkge1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBTaG91bGQgaGF2ZSBkb25lIGEgY3JlYXRlLCBidXQgZXJyb3JlZCBiZWZvcmUuXG4mIzQzO1x0XHRcdCAqIFNvbWUgZmlsZXN5c3RlbXMgcmV0dXJuIC1FTk9FTlQgZGlyZWN0bHkgaW5zdGVhZCBvZlxuJiM0MztcdFx0XHQgKiBjYWxsaW5nIGZpbmlzaF9ub19vcGVuKCkgd2l0aCBhIG5lZ2F0aXZlIGRlbnRyeTtcbiYjNDM7XHRcdFx0ICogZWl0aGVyIHdheSBpdCBzaG91bGQgb25seSBtZWFuIHRoZSBjaGlsZCBkb2VzbiYjMzk7dCBleGlzdCxcbiYjNDM7XHRcdFx0ICogc28gYSByZWZ1c2VkIGNyZWF0ZSBpcyBzYWZlIHRvIHJlY29yZCBoZXJlLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcbiYjNDM7XHRcdFx0ZXJyb3IgPSBjcmVhdGVfZXJyb3I7XG4mIzQzO1x0XHR9XG4gXHRcdGRwdXQoZGVudHJ5KTtcbiBcdFx0ZGVudHJ5ID0gRVJSX1BUUihlcnJvcik7XG4gXHR9XG5AQCAtNDQzNyw3ICYjNDM7NDQ2NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdGRlbnRyeSA9IE5VTEw7XG4gXHR9XG4gXHRpZiAoZGVudHJ5LVx1MDAzZWRfaW5vZGUpIHtcbi1cdFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGZfb3AtXHUwMDNlb3BlbiAqL1xuJiM0MztcdFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGRvX29wZW4oKS4gKi9cbiBcdFx0cmV0dXJuIGRlbnRyeTtcbiBcdH1cbiBcbkBAIC00NDcxLDEwICYjNDM7NDQ5OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRpZiAoZGlyX2lub2RlLVx1MDAzZWlfb3AtXHUwMDNlYXRvbWljX29wZW4pIHtcbiBcdFx0aWYgKG5kLVx1MDAzZWZsYWdzIFx1MDAyNiBMT09LVVBfRElSRUNUT1JZKVxuIFx0XHRcdG9wZW5fZmxhZyB8PSBPX0RJUkVDVE9SWTtcbi1cdFx0ZGVudHJ5ID0gYXRvbWljX29wZW4oXHUwMDI2bmQtXHUwMDNlcGF0aCwgZGVudHJ5LCBmaWxlLCBvcGVuX2ZsYWcsIG1vZGUpO1xuLVx0XHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcdTAwMjZcdTAwMjYgZGVudHJ5ID09IEVSUl9QVFIoLUVOT0VOVCkpXG4tXHRcdFx0ZGVudHJ5ID0gRVJSX1BUUihjcmVhdGVfZXJyb3IpO1xuLVx0XHRyZXR1cm4gZGVudHJ5O1xuJiM0MztcdFx0cmV0dXJuIGF0b21pY19vcGVuKFx1MDAyNm5kLVx1MDAzZXBhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlLCBjcmVhdGVfZXJyb3IpO1xuIFx0fVxuIFxuIFx0aWYgKGRfaW5fbG9va3VwKGRlbnRyeSkpIHtcbkBAIC00NDkwLDMwICYjNDM7NDUxNSwzNiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRcdGRlbnRyeSA9IHJlcztcbiBcdFx0fVxuIFx0fVxuJiM0MztcdGlmIChkZW50cnktXHUwMDNlZF9pbm9kZSB8fCAhKG9wLVx1MDAzZW9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVCkpIHtcbiYjNDM7XHRcdC8qIE5vIG5lZWQgdG8gY3JlYXRlIGEgZmlsZS4gSWYgbG9va3VwIHJldHVybmVkIGEgcG9zaXRpdmVcbiYjNDM7XHRcdCAqIGRlbnRyeSwgdGhlIGZpbGUgd2lsbCBiZSBvcGVuZWQgaW4gZG9fb3BlbigpLiAqL1xuJiM0MztcdFx0cmV0dXJuIGRlbnRyeTtcbiYjNDM7XHR9XG4gXG4tXHQvKiBOZWdhdGl2ZSBkZW50cnksIGp1c3QgY3JlYXRlIHRoZSBmaWxlICovXG4tXHRpZiAoIWRlbnRyeS1cdTAwM2VkX2lub2RlIFx1MDAyNlx1MDAyNiAob3Blbl9mbGFnIFx1MDAyNiBPX0NSRUFUKSkge1xuLVx0XHQvKiBidXQgYnJlYWsgdGhlIGRpcmVjdG9yeSBsZWFzZSBmaXJzdCEgKi9cbi1cdFx0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBkZWxlZ2F0ZWRfaW5vZGUpO1xuLVx0XHRpZiAoZXJyb3IpXG4tXHRcdFx0Z290byBvdXRfZHB1dDtcbi1cbi1cdFx0ZmlsZS1cdTAwM2VmX21vZGUgfD0gRk1PREVfQ1JFQVRFRDtcbi1cdFx0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcbi1cdFx0aWYgKCFkaXJfaW5vZGUtXHUwMDNlaV9vcC1cdTAwM2VjcmVhdGUpIHtcbi1cdFx0XHRlcnJvciA9IC1FQUNDRVM7XG4tXHRcdFx0Z290byBvdXRfZHB1dDtcbi1cdFx0fVxuJiM0MztcdC8qIE5lZ2F0aXZlIGRlbnRyeSB3aXRoIE9fQ1JFQVQgZmxhZyBzZXQgKi9cbiYjNDM7XHRhdWRpdF9pbm9kZV9jaGlsZChkaXJfaW5vZGUsIGRlbnRyeSwgQVVESVRfVFlQRV9DSElMRF9DUkVBVEUpO1xuIFxuLVx0XHRlcnJvciA9IGRpcl9pbm9kZS1cdTAwM2VpX29wLVx1MDAzZWNyZWF0ZShpZG1hcCwgZGlyX2lub2RlLCBkZW50cnksXG4tXHRcdFx0XHRcdFx0bW9kZSwgb3Blbl9mbGFnIFx1MDAyNiBPX0VYQ0wpO1xuLVx0XHRpZiAoZXJyb3IpXG4tXHRcdFx0Z290byBvdXRfZHB1dDtcbi1cdH1cbi1cdGlmICh1bmxpa2VseShjcmVhdGVfZXJyb3IpIFx1MDAyNlx1MDAyNiAhZGVudHJ5LVx1MDAzZWRfaW5vZGUpIHtcbiYjNDM7XHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSkge1xuJiM0MztcdFx0Lyogc2hvdWxkIGhhdmUgZG9uZSBhIGNyZWF0ZSwgYnV0IHdlIGFscmVhZHkgZXJyb3JlZCAqL1xuIFx0XHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcbiBcdFx0Z290byBvdXRfZHB1dDtcbiBcdH1cbiYjNDM7XG4mIzQzO1x0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBkZWxlZ2F0ZWRfaW5vZGUpO1xuJiM0MztcdGlmIChlcnJvcilcbiYjNDM7XHRcdGdvdG8gb3V0X2RwdXQ7XG4mIzQzO1xuJiM0MztcdGZpbGUtXHUwMDNlZl9tb2RlIHw9IEZNT0RFX0NSRUFURUQ7XG4mIzQzO1x0aWYgKCFkaXJfaW5vZGUtXHUwMDNlaV9vcC1cdTAwM2VjcmVhdGUpIHtcbiYjNDM7XHRcdGVycm9yID0gLUVBQ0NFUztcbiYjNDM7XHRcdGdvdG8gb3V0X2RwdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRlcnJvciA9IGRpcl9pbm9kZS1cdTAwM2VpX29wLVx1MDAzZWNyZWF0ZShpZG1hcCwgZGlyX2lub2RlLCBkZW50cnksXG4mIzQzO1x0XHRcdFx0XHRtb2RlLCBvcGVuX2ZsYWcgXHUwMDI2IE9fRVhDTCk7XG4mIzQzO1x0aWYgKGVycm9yKVxuJiM0MztcdFx0Z290byBvdXRfZHB1dDtcbiYjNDM7XG4gXHRyZXR1cm4gZGVudHJ5O1xuIFxuIG91dF9kcHV0OlxuQEAgLTUwNTEsNyAmIzQzOzUwODIsNyBAQCBzdHJ1Y3QgZmlsZSAqZGVudHJ5X2NyZWF0ZShzdHJ1Y3QgcGF0aCAqcGF0aCwgaW50IGZsYWdzLCB1bW9kZV90IG1vZGUsXG4gXG4gXHRcdC8qIGF0b21pY19vcGVuIHdpbGwgZHB1dChkZW50cnkpIG9uIGVycm9yICovXG4gXHRcdGRnZXQob3JpZ19kZW50cnkpO1xuLVx0XHRkZW50cnkgPSBhdG9taWNfb3BlbihwYXRoLCBkZW50cnksIGZpbGUsIGZsYWdzLCBtb2RlKTtcbiYjNDM7XHRcdGRlbnRyeSA9IGF0b21pY19vcGVuKHBhdGgsIGRlbnRyeSwgZmlsZSwgZmxhZ3MsIG1vZGUsIGNyZWF0ZV9lcnJvcik7XG4gXHRcdGVycm9yID0gUFRSX0VSUl9PUl9aRVJPKGRlbnRyeSk7XG4gXG4gXHRcdGlmIChJU19FUlIoZGVudHJ5KSlcbkBAIC01MDYxLDkgJiM0Mzs1MDkyLDYgQEAgc3RydWN0IGZpbGUgKmRlbnRyeV9jcmVhdGUoc3RydWN0IHBhdGggKnBhdGgsIGludCBmbGFncywgdW1vZGVfdCBtb2RlLFxuIFx0XHRcdC8qIERyb3AgdGhlIGV4dHJhIHJlZmVyZW5jZSAqL1xuIFx0XHRcdGRwdXQob3JpZ19kZW50cnkpO1xuIFxuLVx0XHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcdTAwMjZcdTAwMjYgZXJyb3IgPT0gLUVOT0VOVClcbi1cdFx0XHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcbi1cbiBcdFx0aWYgKCFlcnJvcikge1xuIFx0XHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfQ1JFQVRFRClcbiBcdFx0XHRcdGZzbm90aWZ5X2NyZWF0ZShkaXItXHUwMDNlZF9pbm9kZSwgZGVudHJ5KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0b21pY19vcGVuJiMzNDssCiAgICAmIzM0O2xvb2t1cF9vcGVuJiMzNDssCiAgICAmIzM0O2RlbnRyeV9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBWRlMgbG9naWMgaW4gZnMvbmFtZWkuYywgc3BlY2lmaWNhbGx5IHJlZmFjdG9yaW5nIGF0b21pY19vcGVuKCkgYW5kIGxvb2t1cF9vcGVuKCkgdG8gY2hhbmdlIGhvdyBjcmVhdGVfZXJyb3IgaXMgaGFuZGxlZCBkdXJpbmcgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVhZTIwZTM1MjRlZmM4NzY3ZDlkZjQyY2I1NmZiYWQzNzc2MGM1YzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAxNDoxNzoxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL25hbWVpLmMgYi9mcy9uYW1laS5jCmluZGV4IDE5Y2U0M2M5YTZlNjYyLi4yZWVmMmE0OWQzZjQxZSAxMDA2NDQKLS0tIGEvZnMvbmFtZWkuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9uYW1laS5jCkBAIC00MzM2LDUwICYjNDM7NDMzNiw3OCBAQCBzdGF0aWMgaW50IG1heV9vX2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwKIAlyZXR1cm4gc2VjdXJpdHlfaW5vZGVfY3JlYXRlKGRpci0mZ3Q7ZGVudHJ5LSZndDtkX2lub2RlLCBkZW50cnksIG1vZGUpOwogfQogCi0vKgotICogQXR0ZW1wdCB0byBhdG9taWNhbGx5IGxvb2sgdXAsIGNyZWF0ZSBhbmQgb3BlbiBhIGZpbGUgZnJvbSBhIG5lZ2F0aXZlCi0gKiBkZW50cnkuCi0gKgotICogUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwuICBUaGUgZmlsZSB3aWxsIGhhdmUgYmVlbiBjcmVhdGVkIGFuZCBhdHRhY2hlZCB0bwotICogQGZpbGUgYnkgdGhlIGZpbGVzeXN0ZW0gY2FsbGluZyBmaW5pc2hfb3BlbigpLgotICoKLSAqIElmIHRoZSBmaWxlIHdhcyBsb29rZWQgdXAgb25seSBvciBkaWRuJiMzOTt0IG5lZWQgY3JlYXRpbmcsIEZNT0RFX09QRU5FRCB3b24mIzM5O3QKLSAqIGJlIHNldC4gIFRoZSBjYWxsZXIgd2lsbCBuZWVkIHRvIHBlcmZvcm0gdGhlIG9wZW4gdGhlbXNlbHZlcy4gIEBwYXRoIHdpbGwKLSAqIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHBvaW50IHRvIHRoZSBuZXcgZGVudHJ5LiAgVGhpcyBtYXkgYmUgbmVnYXRpdmUuCi0gKgotICogUmV0dXJucyBhbiBlcnJvciBjb2RlIG90aGVyd2lzZS4KJiM0MzsvKioKJiM0MzsgKiBhdG9taWNfb3BlbigpIC0gYXR0ZW1wdCB0byBhdG9taWNhbGx5IGxvb2sgdXAsIGNyZWF0ZSBhbmQgb3BlbiBhIGZpbGUKJiM0MzsgKiBmcm9tIGEgbmVnYXRpdmUgZGVudHJ5LgomIzQzOyAqIEBwYXRoOiAgICAgICAgICBwYXJlbnQgZGlyZWN0b3J5IHBhdGgKJiM0MzsgKiBAZGVudHJ5OiAgICAgICAgY2hpbGQgdG8gLSZndDthdG9taWNfb3BlbigpCiYjNDM7ICogQGZpbGU6ICAgICAgICAgIGZpbGUgdG8gYXR0YWNoIGNoaWxkIHRvCiYjNDM7ICogQG9wZW5fZmxhZzogICAgIG9wZW4gZmxhZ3MKJiM0MzsgKiBAbW9kZTogICAgICAgICAgY3JlYXRlIG1vZGUKJiM0MzsgKiBAY3JlYXRlX2Vycm9yOiAgcmV0dXJuIHZhbHVlIGZyb20gbWF5X29fY3JlYXRlKCkKJiM0MzsgKgomIzQzOyAqIElmIGEgbm9uLWVycm9yIGRlbnRyeSBpcyByZXR1cm5lZCB0aGVuOiB3aGVuIEZNT0RFX09QRU5FRCBpcyBzZXQsCiYjNDM7ICogdGhlIGZpbGUgd2lsbCBoYXZlIGJlZW4gYXR0YWNoZWQgdG8gQGZpbGUgYnkgdGhlIGZpbGVzeXN0ZW0gY2FsbGluZwomIzQzOyAqIGZpbmlzaF9vcGVuKCkuIElmIEZNT0RFX09QRU5FRCBpc24mIzM5O3Qgc2V0LCB0aGUgZmlsZXN5c3RlbSBpbnN0ZWFkIGNhbGxlZAomIzQzOyAqIGZpbmlzaF9ub19vcGVuKCkgYW5kIHRoZSBjYWxsZXIgd2lsbCBuZWVkIHRvIHBlcmZvcm0gdGhlIG9wZW4gdGhlbXNlbHZlcy4KJiM0MzsgKgomIzQzOyAqIEZNT0RFX0NSRUFURUQgaXMgc2V0IHdoZW4gdGhlIGNhbGwgdG8gLSZndDthdG9taWNfb3BlbigpIGFjdHVhbGx5IGNyZWF0ZWQKJiM0MzsgKiB0aGUgZmlsZS4KJiM0MzsgKgomIzQzOyAqIFJldHVybnMgdGhlIG9wZW5lZC9sb29rZWQtdXAgZGVudHJ5IG9uIHN1Y2Nlc3Mgb3IgRVJSX1BUUigtRSkgb24gZmFpbHVyZS4KJiM0MzsgKiBPbiBlcnJvciwgYXRvbWljX29wZW4oKSBjb25zdW1lcyBAZGVudHJ5LgogICovCiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKIAkJCQkgIHN0cnVjdCBmaWxlICpmaWxlLAotCQkJCSAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKQomIzQzOwkJCQkgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSwgaW50IGNyZWF0ZV9lcnJvcikKIHsKIAlzdHJ1Y3QgZGVudHJ5ICpjb25zdCBERU5UUllfTk9UX1NFVCA9ICh2b2lkICopIC0xVUw7Ci0Jc3RydWN0IGlub2RlICpkaXIgPSAgcGF0aC0mZ3Q7ZGVudHJ5LSZndDtkX2lub2RlOwomIzQzOwlzdHJ1Y3QgaW5vZGUgKmRpcl9pbm9kZSA9IHBhdGgtJmd0O2RlbnRyeS0mZ3Q7ZF9pbm9kZTsKIAlpbnQgZXJyb3I7CiAKIAlmaWxlLSZndDtfX2ZfcGF0aC5kZW50cnkgPSBERU5UUllfTk9UX1NFVDsKIAlmaWxlLSZndDtfX2ZfcGF0aC5tbnQgPSBwYXRoLSZndDttbnQ7Ci0JZXJyb3IgPSBkaXItJmd0O2lfb3AtJmd0O2F0b21pY19vcGVuKGRpciwgZGVudHJ5LCBmaWxlLAomIzQzOwllcnJvciA9IGRpcl9pbm9kZS0mZ3Q7aV9vcC0mZ3Q7YXRvbWljX29wZW4oZGlyX2lub2RlLCBkZW50cnksIGZpbGUsCiAJCQkJICAgICAgIG9wZW5fdG9fbmFtZWlfZmxhZ3Mob3Blbl9mbGFnKSwgbW9kZSk7CiAJZF9sb29rdXBfZG9uZShkZW50cnkpOwomIzQzOwogCWlmICghZXJyb3IpIHsKIAkJaWYgKGZpbGUtJmd0O2ZfbW9kZSAmYW1wOyBGTU9ERV9PUEVORUQpIHsKLQkJCWlmICh1bmxpa2VseShkZW50cnkgIT0gZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeSkpIHsKJiM0MzsJCQkvKiBmaW5pc2hfb3BlbigpIGNhbGxlZCAqLwomIzQzOwkJCXN0cnVjdCBkZW50cnkgKm9wZW5lZCA9IGZpbGUtJmd0O2ZfcGF0aC5kZW50cnk7CiYjNDM7CQkJaWYgKHVubGlrZWx5KG9wZW5lZCAhPSBkZW50cnkpKSB7CiAJCQkJZHB1dChkZW50cnkpOwotCQkJCWRlbnRyeSA9IGRnZXQoZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeSk7CiYjNDM7CQkJCWRlbnRyeSA9IGRnZXQob3BlbmVkKTsKIAkJCX0KLQkJfSBlbHNlIGlmIChXQVJOX09OKGZpbGUtJmd0O2ZfcGF0aC5kZW50cnkgPT0gREVOVFJZX05PVF9TRVQpKSB7Ci0JCQllcnJvciA9IC1FSU87Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeSkgewomIzQzOwkJfSBlbHNlIGlmIChsaWtlbHkoZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeSAhPSBERU5UUllfTk9UX1NFVCkpIHsKJiM0MzsJCQkvKiBmaW5pc2hfbm9fb3BlbigpIGNhbGxlZCAqLwomIzQzOwkJCXN0cnVjdCBkZW50cnkgKnJlcGxhY2VkID0gZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeTsKJiM0MzsJCQlpZiAocmVwbGFjZWQpIHsKIAkJCQlkcHV0KGRlbnRyeSk7Ci0JCQkJZGVudHJ5ID0gZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeTsKJiM0MzsJCQkJZGVudHJ5ID0gcmVwbGFjZWQ7CiAJCQl9CiAJCQlpZiAodW5saWtlbHkoZF9pc19uZWdhdGl2ZShkZW50cnkpKSkKIAkJCQllcnJvciA9IC1FTk9FTlQ7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWNvbnN0IGNoYXIgKmZzbmFtZSA9IGRlbnRyeS0mZ3Q7ZF9zYi0mZ3Q7c190eXBlLSZndDtuYW1lOwomIzQzOwkJCVdBUk4oMSwgJiMzNDslczogLSZndDthdG9taWNfb3BlbigpIGxlZnQgZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeSB1bnNldCFcbiYjMzQ7LAomIzQzOwkJCSAgICAgICAgZnNuYW1lKTsKJiM0MzsJCQllcnJvciA9IC1FSU87CiAJCX0KIAl9CiYjNDM7CiAJaWYgKGVycm9yKSB7CiYjNDM7CQlpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSAmYW1wOyZhbXA7IGVycm9yID09IC1FTk9FTlQpIHsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFNob3VsZCBoYXZlIGRvbmUgYSBjcmVhdGUsIGJ1dCBlcnJvcmVkIGJlZm9yZS4KJiM0MzsJCQkgKiBTb21lIGZpbGVzeXN0ZW1zIHJldHVybiAtRU5PRU5UIGRpcmVjdGx5IGluc3RlYWQgb2YKJiM0MzsJCQkgKiBjYWxsaW5nIGZpbmlzaF9ub19vcGVuKCkgd2l0aCBhIG5lZ2F0aXZlIGRlbnRyeTsKJiM0MzsJCQkgKiBlaXRoZXIgd2F5IGl0IHNob3VsZCBvbmx5IG1lYW4gdGhlIGNoaWxkIGRvZXNuJiMzOTt0IGV4aXN0LAomIzQzOwkJCSAqIHNvIGEgcmVmdXNlZCBjcmVhdGUgaXMgc2FmZSB0byByZWNvcmQgaGVyZS4KJiM0MzsJCQkgKi8KJiM0MzsJCQlhdWRpdF9pbm9kZV9jaGlsZChkaXJfaW5vZGUsIGRlbnRyeSwgQVVESVRfVFlQRV9DSElMRF9DUkVBVEUpOwomIzQzOwkJCWVycm9yID0gY3JlYXRlX2Vycm9yOwomIzQzOwkJfQogCQlkcHV0KGRlbnRyeSk7CiAJCWRlbnRyeSA9IEVSUl9QVFIoZXJyb3IpOwogCX0KQEAgLTQ0MzcsNyAmIzQzOzQ0NjUsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLAogCQlkZW50cnkgPSBOVUxMOwogCX0KIAlpZiAoZGVudHJ5LSZndDtkX2lub2RlKSB7Ci0JCS8qIENhY2hlZCBwb3NpdGl2ZSBkZW50cnk6IHdpbGwgb3BlbiBpbiBmX29wLSZndDtvcGVuICovCiYjNDM7CQkvKiBDYWNoZWQgcG9zaXRpdmUgZGVudHJ5OiB3aWxsIG9wZW4gaW4gZG9fb3BlbigpLiAqLwogCQlyZXR1cm4gZGVudHJ5OwogCX0KIApAQCAtNDQ3MSwxMCAmIzQzOzQ0OTksNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLAogCWlmIChkaXJfaW5vZGUtJmd0O2lfb3AtJmd0O2F0b21pY19vcGVuKSB7CiAJCWlmIChuZC0mZ3Q7ZmxhZ3MgJmFtcDsgTE9PS1VQX0RJUkVDVE9SWSkKIAkJCW9wZW5fZmxhZyB8PSBPX0RJUkVDVE9SWTsKLQkJZGVudHJ5ID0gYXRvbWljX29wZW4oJmFtcDtuZC0mZ3Q7cGF0aCwgZGVudHJ5LCBmaWxlLCBvcGVuX2ZsYWcsIG1vZGUpOwotCQlpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSAmYW1wOyZhbXA7IGRlbnRyeSA9PSBFUlJfUFRSKC1FTk9FTlQpKQotCQkJZGVudHJ5ID0gRVJSX1BUUihjcmVhdGVfZXJyb3IpOwotCQlyZXR1cm4gZGVudHJ5OwomIzQzOwkJcmV0dXJuIGF0b21pY19vcGVuKCZhbXA7bmQtJmd0O3BhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlLCBjcmVhdGVfZXJyb3IpOwogCX0KIAogCWlmIChkX2luX2xvb2t1cChkZW50cnkpKSB7CkBAIC00NDkwLDMwICYjNDM7NDUxNSwzNiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLAogCQkJZGVudHJ5ID0gcmVzOwogCQl9CiAJfQomIzQzOwlpZiAoZGVudHJ5LSZndDtkX2lub2RlIHx8ICEob3AtJmd0O29wZW5fZmxhZyAmYW1wOyBPX0NSRUFUKSkgewomIzQzOwkJLyogTm8gbmVlZCB0byBjcmVhdGUgYSBmaWxlLiBJZiBsb29rdXAgcmV0dXJuZWQgYSBwb3NpdGl2ZQomIzQzOwkJICogZGVudHJ5LCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBkb19vcGVuKCkuICovCiYjNDM7CQlyZXR1cm4gZGVudHJ5OwomIzQzOwl9CiAKLQkvKiBOZWdhdGl2ZSBkZW50cnksIGp1c3QgY3JlYXRlIHRoZSBmaWxlICovCi0JaWYgKCFkZW50cnktJmd0O2RfaW5vZGUgJmFtcDsmYW1wOyAob3Blbl9mbGFnICZhbXA7IE9fQ1JFQVQpKSB7Ci0JCS8qIGJ1dCBicmVhayB0aGUgZGlyZWN0b3J5IGxlYXNlIGZpcnN0ISAqLwotCQllcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIGRlbGVnYXRlZF9pbm9kZSk7Ci0JCWlmIChlcnJvcikKLQkJCWdvdG8gb3V0X2RwdXQ7Ci0KLQkJZmlsZS0mZ3Q7Zl9tb2RlIHw9IEZNT0RFX0NSRUFURUQ7Ci0JCWF1ZGl0X2lub2RlX2NoaWxkKGRpcl9pbm9kZSwgZGVudHJ5LCBBVURJVF9UWVBFX0NISUxEX0NSRUFURSk7Ci0JCWlmICghZGlyX2lub2RlLSZndDtpX29wLSZndDtjcmVhdGUpIHsKLQkJCWVycm9yID0gLUVBQ0NFUzsKLQkJCWdvdG8gb3V0X2RwdXQ7Ci0JCX0KJiM0MzsJLyogTmVnYXRpdmUgZGVudHJ5IHdpdGggT19DUkVBVCBmbGFnIHNldCAqLwomIzQzOwlhdWRpdF9pbm9kZV9jaGlsZChkaXJfaW5vZGUsIGRlbnRyeSwgQVVESVRfVFlQRV9DSElMRF9DUkVBVEUpOwogCi0JCWVycm9yID0gZGlyX2lub2RlLSZndDtpX29wLSZndDtjcmVhdGUoaWRtYXAsIGRpcl9pbm9kZSwgZGVudHJ5LAotCQkJCQkJbW9kZSwgb3Blbl9mbGFnICZhbXA7IE9fRVhDTCk7Ci0JCWlmIChlcnJvcikKLQkJCWdvdG8gb3V0X2RwdXQ7Ci0JfQotCWlmICh1bmxpa2VseShjcmVhdGVfZXJyb3IpICZhbXA7JmFtcDsgIWRlbnRyeS0mZ3Q7ZF9pbm9kZSkgewomIzQzOwlpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSkgewomIzQzOwkJLyogc2hvdWxkIGhhdmUgZG9uZSBhIGNyZWF0ZSwgYnV0IHdlIGFscmVhZHkgZXJyb3JlZCAqLwogCQllcnJvciA9IGNyZWF0ZV9lcnJvcjsKIAkJZ290byBvdXRfZHB1dDsKIAl9CiYjNDM7CiYjNDM7CWVycm9yID0gdHJ5X2JyZWFrX2RlbGVnKGRpcl9pbm9kZSwgTEVBU0VfQlJFQUtfRElSX0NSRUFURSwgZGVsZWdhdGVkX2lub2RlKTsKJiM0MzsJaWYgKGVycm9yKQomIzQzOwkJZ290byBvdXRfZHB1dDsKJiM0MzsKJiM0MzsJZmlsZS0mZ3Q7Zl9tb2RlIHw9IEZNT0RFX0NSRUFURUQ7CiYjNDM7CWlmICghZGlyX2lub2RlLSZndDtpX29wLSZndDtjcmVhdGUpIHsKJiM0MzsJCWVycm9yID0gLUVBQ0NFUzsKJiM0MzsJCWdvdG8gb3V0X2RwdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZXJyb3IgPSBkaXJfaW5vZGUtJmd0O2lfb3AtJmd0O2NyZWF0ZShpZG1hcCwgZGlyX2lub2RlLCBkZW50cnksCiYjNDM7CQkJCQltb2RlLCBvcGVuX2ZsYWcgJmFtcDsgT19FWENMKTsKJiM0MzsJaWYgKGVycm9yKQomIzQzOwkJZ290byBvdXRfZHB1dDsKJiM0MzsKIAlyZXR1cm4gZGVudHJ5OwogCiBvdXRfZHB1dDoKQEAgLTUwNTEsNyAmIzQzOzUwODIsNyBAQCBzdHJ1Y3QgZmlsZSAqZGVudHJ5X2NyZWF0ZShzdHJ1Y3QgcGF0aCAqcGF0aCwgaW50IGZsYWdzLCB1bW9kZV90IG1vZGUsCiAKIAkJLyogYXRvbWljX29wZW4gd2lsbCBkcHV0KGRlbnRyeSkgb24gZXJyb3IgKi8KIAkJZGdldChvcmlnX2RlbnRyeSk7Ci0JCWRlbnRyeSA9IGF0b21pY19vcGVuKHBhdGgsIGRlbnRyeSwgZmlsZSwgZmxhZ3MsIG1vZGUpOwomIzQzOwkJZGVudHJ5ID0gYXRvbWljX29wZW4ocGF0aCwgZGVudHJ5LCBmaWxlLCBmbGFncywgbW9kZSwgY3JlYXRlX2Vycm9yKTsKIAkJZXJyb3IgPSBQVFJfRVJSX09SX1pFUk8oZGVudHJ5KTsKIAogCQlpZiAoSVNfRVJSKGRlbnRyeSkpCkBAIC01MDYxLDkgJiM0Mzs1MDkyLDYgQEAgc3RydWN0IGZpbGUgKmRlbnRyeV9jcmVhdGUoc3RydWN0IHBhdGggKnBhdGgsIGludCBmbGFncywgdW1vZGVfdCBtb2RlLAogCQkJLyogRHJvcCB0aGUgZXh0cmEgcmVmZXJlbmNlICovCiAJCQlkcHV0KG9yaWdfZGVudHJ5KTsKIAotCQlpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSAmYW1wOyZhbXA7IGVycm9yID09IC1FTk9FTlQpCi0JCQllcnJvciA9IGNyZWF0ZV9lcnJvcjsKLQogCQlpZiAoIWVycm9yKSB7CiAJCQlpZiAoZmlsZS0mZ3Q7Zl9tb2RlICZhbXA7IEZNT0RFX0NSRUFURUQpCiAJCQkJZnNub3RpZnlfY3JlYXRlKGRpci0mZ3Q7ZF9pbm9kZSwgZGVudHJ5KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIyNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0NjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWRlMgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGZzL25hbWVpLmNgLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3Mgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZyBwb3RlbnRpYWwuIEl0IHNlZW1zIHRvIGJlIHJlZmFjdG9yaW5nIGBhdG9taWNfb3BlbigpYCBhbmQgYGxvb2t1cF9vcGVuKClgLCB3aGljaCBhcmUgY29yZSBjb21wb25lbnRzIG9mIHRoZSBWRlMmIzM5O3MgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4gbG9naWMg4oCTIGFsd2F5cyBhIGdvb2QgYXJlYSB0byBzY3J1dGluaXplLgoKU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBgY3JlYXRlX2Vycm9yYCBpbnRvIGBhdG9taWNfb3BlbigpYC4gIFRoaXMgc3VnZ2VzdHMgYSBzaGlmdCBpbiBob3cgZXJyb3JzIGZyb20gdGhlIGNyZWF0aW9uIHByb2Nlc3MgYXJlIGhhbmRsZWQsIHBhcnRpY3VsYXJseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgYG1heV9vX2NyZWF0ZSgpYCBjaGVja3MuICBgY3JlYXRlX2Vycm9yYCBpcyBub3cgY29uc3VtZWQgd2l0aGluIGBhdG9taWNfb3BlbigpYC4gVGhpcyBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGV5ZSBhcyBhIHBvdGVudGlhbCBhcmVhIGZvciBmdXp6aW5nIOKAkyBlcnJvciBoYW5kbGluZyBpcyBvZnRlbiB3aGVyZSBpbnRlcmVzdGluZyBhbmQgdW5leHBlY3RlZCBiZWhhdmlvciBhcmlzZXMuCgpJIGFsc28gc2VlIHRoYXQgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIGBsb29rdXBfb3BlbigpYCB3aGVuIGEgbmVnYXRpdmUgZGVudHJ5IGlzIGVuY291bnRlcmVkIGFuZCB0aGUgYE9fQ1JFQVRgIGZsYWcgaXMgc2V0LiAgVGhpcyBzZWN0aW9uIGFsc28gaGFzIGBhdWRpdF9pbm9kZV9jaGlsZCgpYCBjYWxscyBiZWluZyBhZGRlZCBvciBtb3ZlZCBhcm91bmQsIGZ1cnRoZXIgaW5kaWNhdGluZyBhIGNoYW5nZSBpbiB0aGUgY3JlYXRpb24gcGF0aC4gIFRoaXMgY291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlIGFzIHdlbGwuCgpUaGUgZnVuY3Rpb25zIG1vZGlmaWVkIGFyZTogYGF0b21pY19vcGVuYCwgYGxvb2t1cF9vcGVuYCwgYW5kIGBkZW50cnlfY3JlYXRlYC4gU28sIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBsb3ctbGV2ZWwgVkZTIHN0dWZmLgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZSBleGFjdCBjaGFuZ2VzLiBJbiBgYXRvbWljX29wZW5gLCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG5vdyBpbmNsdWRlcyBgaW50IGNyZWF0ZV9lcnJvcmAuICBUaGUgY29kZSB3aXRoaW4gY2hlY2tzIGZvciBhIHNwZWNpZmljIGVycm9yIChgLUVOT0VOVGApIGFuZCwgaWYgYGNyZWF0ZV9lcnJvcmAgaXMgc2V0LCBpdCBwZXJmb3JtcyBhbiBhdWRpdCBmb3IgYSBjaGlsZCBjcmVhdGlvbi4gVGhlIGltcG9ydGFudCB0aGluZyB0byBjb25zaWRlciBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoICpjb25zdW1lcyogYGNyZWF0ZV9lcnJvcmAgYW5kIHBvc3NpYmx5IGNoYW5nZXMgdGhlIGVycm9yIHJldHVybmVkLgoKSW4gYGxvb2t1cF9vcGVuYCwgdGhlIHBhdGNoIGhhcyBjaGFuZ2VkIHRvIGNhbGwgdGhlIG5ldyBgYXRvbWljX29wZW4oKWAgdGhhdCBub3cgdGFrZXMgYGNyZWF0ZV9lcnJvcmAuIEluIHRoZSBsYXRlciBwYXJ0cyBvZiBgbG9va3VwX29wZW5gIHRoZSBjb2RlIGhhcyBiZWVuIHJlb3JnYW5pemVkIHRvIGNvbnNvbGlkYXRlIGVycm9yIGhhbmRsaW5nIGFuZCB0aGUgYGF1ZGl0X2lub2RlX2NoaWxkKClgIGNhbGwuIFRoaXMgY2hhbmdlcyB0aGUgZmxvdy4KClRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIFZGUy4KCk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHllcywgdGhpcyBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIHRhcmdldCBmb3IgZnV6emluZy4gIEkmIzM5O20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIG9uIGBhdG9taWNfb3BlbmAsIGBsb29rdXBfb3BlbmAsIGFuZCBgZGVudHJ5X2NyZWF0ZWAgYmVjYXVzZSB0aGVzZSBhcmUgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0aGF0IGFyZSBjZW50cmFsIHRvIHRoZSBwYXRjaC4gSG93ZXZlciwgYGF0b21pY19vcGVuYCBhbmQgYGxvb2t1cF9vcGVuYCBhcmUgZGVmaW5lZCBhcyAqc3RhdGljKiBpbiBgZnMvbmFtZWkuY2AuICBJIHdpbGwgY2hlY2sgaWYgdGhleSBhcmUgZGlyZWN0bHkgY2FsbGFibGUuIElmIHRoZXkgYXJlIG5vdCBkaXJlY3RseSBjYWxsYWJsZSwgSSBuZWVkIHRvIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGVudHJ5IHBvaW50cy4gTGV0IG1lIGV4YW1pbmUgYGZzL25hbWVpLmNgIHRvIGNvbmZpcm0gbXkgZmluZGluZ3Mgb24gY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApP3N0cnVjdCBkZW50cnkgXFwqYXRvbWljX29wZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uYW1laS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25hbWVpLmM9NDMyMD1zdGF0aWMgaW50IG1heV9vX2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbi0tXG5mcy9uYW1laS5jLTQzNTktICovXG5mcy9uYW1laS5jOjQzNjA6c3RhdGljIHN0cnVjdCBkZW50cnkgKmF0b21pY19vcGVuKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5mcy9uYW1laS5jLTQzNjEtXHRcdFx0XHQgIHN0cnVjdCBmaWxlICpmaWxlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MzQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLi4uCgoqKkRpZ2dpbmcgaW50byB0aGUgRmlsZXN5c3RlbSBJbnRlcm5hbHMqKgoKQWxyaWdodCwgdGltZSB0byBmb2N1cy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCBmaWxlIGNyZWF0aW9uIGFuZCBsb29rdXBzIHVuZGVyIHRoZSBob29kLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRvIGV4YW1pbmUgYSBzcGVjaWZpYyBwYWlyIG9mIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBrZXkgcGxheWVycyBpbiB0aGlzIHByb2Nlc3MuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY2xvc2VseSBpbnNwZWN0aW5nIGBsb29rdXBfb3BlbmAgYW5kIGBkZW50cnlfY3JlYXRlYC4gVGhlc2UgYXJlIGxpa2VseSB0byBiZSBpbnZvbHZlZCBkaXJlY3RseSBpbiBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIGJvdGggdGhlIGluaXRpYWwgbG9va3VwIGFuZCB0aGUgZXZlbnR1YWwgY3JlYXRpb24gb2YgYSBuZXcgZmlsZSBzeXN0ZW0gZW50cnksIHJpZ2h0PyBVbmRlcnN0YW5kaW5nIHRoZWlyIGludGVyYWN0aW9uIHdpbGwgcHJvYmFibHkgcHJvdmlkZSBzb21lIGNyaXRpY2FsIGluc2lnaHQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGVzZSBmdW5jdGlvbnMgaGF2ZSB0byB0ZWFjaCB1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApP3N0cnVjdCBkZW50cnkgXFwqbG9va3VwX29wZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uYW1laS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25hbWVpLmM9NDM2MD1zdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9uYW1laS5jLTQ0MzEtICovXG5mcy9uYW1laS5jOjQ0MzI6c3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbmZzL25hbWVpLmMtNDQzMy1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NDkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVudHJ5IENyZWF0aW9uIENvbnVuZHJ1bXMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkZW50cnlfY3JlYXRlYCBhZ2Fpbi4gSSYjMzk7bSBmb2N1c2luZyBpbiBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gaG93IHdlIHN0cnVjdHVyZSB0aGUgZmlsZXN5c3RlbSBuYW1lc3BhY2UsIGFuZCB0aGVyZWZvcmUgcGVyZm9ybWFuY2UgYW5kIGNvbmN1cnJlbmN5LiBJdCYjMzk7cyB0aGUgcG9pbnQgb2YgaW5zZXJ0aW9uIG9mIG5ldyBkaXJlY3RvcnkgZW50cmllcy4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIGJlaGF2aW91ci4KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4gSG93IGRvZXMgdGhlIFZGUyBoYW5kbGUgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIGEgbmV3IGBkZW50cnlgIHN0cnVjdHVyZT8gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGJleW9uZCB0aGUgb2J2aW91cyBwYXJlbnQgYGRlbnRyeWAgYW5kIHRoZSBuYW1lPyBBcmUgd2UgZGVhbGluZyB3aXRoIGFueSBsb2NraW5nIGhlcmUsIGFuZCBpZiBzbywgd2hhdCYjMzk7cyB0aGUgZ3JhbnVsYXJpdHkgYW5kIHBvdGVudGlhbCBmb3IgY29udGVudGlvbj8gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3Igc3VidGxlIGNvbmN1cnJlbmN5IGlzc3Vlcy4gV2hhdCBpcyB0aGUgbGlmZWN5Y2xlIG9mIHRoaXMgbmV3bHkgY3JlYXRlZCBkZW50cnkgd2l0aGluIHRoZSBmaWxlc3lzdGVtLiBBbmQgaXMgdGhpcyBkZW50cnkgYmVpbmcgaW5pdGlhbGl6ZWQgaW4gdGhlIGNvcnJlY3QgZm9ybWF0PwoKSSBuZWVkIHRvIHRyYWNlIHRoZSBhbGxvY2F0aW9uIHBhdGgsIGVuc3VyaW5nIHRoYXQgbWVtb3J5IG1hbmFnZW1lbnQgaXMgZWZmaWNpZW50IGFuZCB0aGF0IHdlIGFyZW4mIzM5O3QgaW50cm9kdWNpbmcgYW55IGZyYWdtZW50YXRpb24gaXNzdWVzLiBBbHNvLCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgY2FyZWZ1bGx5IGF0IGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgdGhyZWFkcyBjcmVhdGluZyBkZW50cmllcyBzaW11bHRhbmVvdXNseSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgdGhlc2UgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGlub2RlIGFyZSBiZWluZyBoYW5kbGVkLCBhbmQgbG9vayBmb3IgYW55IGluY29uc2lzdGVuY2llcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYW5kIGhvdyB0aGUgYGRlbnRyeWAgaXMgbGlua2VkIGludG8gdGhlIGRlbnRyeSBjYWNoZSwgYW5kIGhvdyBpdCBpcyBwcm90ZWN0ZWQuIEZpbmFsbHksIEkmIzM5O20gdGhpbmtpbmcgSSBtYXkgbmVlZCB0byBsb29rIGF0IG1lbW9yeSByZWNsYW1hdGlvbiBhbmQgaG93IHdlIHByZXZlbnQgYW55IGxlYWtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/c3RydWN0IGZpbGUgXFwqZGVudHJ5X2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25hbWVpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmFtZWkuYz01MDM5PUVYUE9SVF9TWU1CT0woc3RhcnRfY3JlYXRpbmdfdXNlcl9wYXRoKTtcbi0tXG5mcy9uYW1laS5jLTUwNTctICovXG5mcy9uYW1laS5jOjUwNTg6c3RydWN0IGZpbGUgKmRlbnRyeV9jcmVhdGUoc3RydWN0IHBhdGggKnBhdGgsIGludCBmbGFncywgdW1vZGVfdCBtb2RlLFxuZnMvbmFtZWkuYy01MDU5LVx0XHRcdCAgIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMzMKCQkJCQkJCW91dHB1dDogMTA4CgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFZGUyBDb3JlKioKCk9rYXksIHRoZXNlIGFyZSBzb2xpZCBjaG9pY2VzIGZvciBmb2N1cyBzeW1ib2xzIOKAkyBgYXRvbWljX29wZW5gLCBgbG9va3VwX29wZW5gLCBhbmQgYGRlbnRyeV9jcmVhdGVgLiBUaG9zZSBkZWZpbml0ZWx5IGhpdCB0aGUgY29yZSBvZiB3aGF0JiMzOTtzIGJlaW5nIHRvdWNoZWQgaGVyZS4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFyZWE/IEdpdmVuIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgY29yZSBWRlMsIEkgZG9u4oCZdCB0aGluayBhbnkgc3BlY2lmaWMgY29uZmlncyBhcmUgbmVlZGVkLiBJdCYjMzk7cyBmdW5kYW1lbnRhbCBlbm91Z2ggdGhhdCB0aGUgc3RhbmRhcmQgZnV6emluZyBzZXR1cCBzaG91bGQgc3VmZmljZS4KCkFscmlnaHQsIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgVkZTLCBzcGVjaWZpY2FsbHkgaW4gYGZzL25hbWVpLmNgLCBhbmQgY2hhbmdpbmcgaG93IGBjcmVhdGVfZXJyb3JgIGlzIGhhbmRsZWQgaW4gZmlsZSBjcmVhdGlvbiBhbmQgdGhlIGF0b21pYyBvcGVuIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsJiMzOTtzIGNyaXRpY2FsIHBhdGguIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCBpdCAqYWJzb2x1dGVseSogd2FycmFudHMgZnV6emluZy4gVGhlIHBhdGNoIGVmZmVjdGl2ZWx5IHJlZmFjdG9ycyBgYXRvbWljX29wZW5gIGFuZCBgbG9va3VwX29wZW5gLCB3aGljaCBpcyBjb3JlIGxvZ2ljLCBzbyBmdXp6aW5nIGlzIGFwcHJvcHJpYXRlLiBBbmQsIEVuYWJsZUNvbmZpZ3Mgc2hvdWxkIGJlIGVtcHR5IGZvciB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRvbWljX29wZW4mIzM0OywKICAgICYjMzQ7bG9va3VwX29wZW4mIzM0OywKICAgICYjMzQ7ZGVudHJ5X2NyZWF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFZGUyBsb2dpYyBpbiBmcy9uYW1laS5jLCBzcGVjaWZpY2FsbHkgcmVmYWN0b3JpbmcgYXRvbWljX29wZW4oKSBhbmQgbG9va3VwX29wZW4oKSB0byBjaGFuZ2UgaG93IGNyZWF0ZV9lcnJvciBpcyBoYW5kbGVkIGR1cmluZyBmaWxlIGNyZWF0aW9uIGFuZCBhdG9taWMgb3Blbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdG9taWNfb3BlbiYjMzQ7LAogICAgJiMzNDtsb29rdXBfb3BlbiYjMzQ7LAogICAgJiMzNDtkZW50cnlfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgVkZTIGxvZ2ljIGluIGZzL25hbWVpLmMsIHNwZWNpZmljYWxseSByZWZhY3RvcmluZyBhdG9taWNfb3BlbigpIGFuZCBsb29rdXBfb3BlbigpIHRvIGNoYW5nZSBob3cgY3JlYXRlX2Vycm9yIGlzIGhhbmRsZWQgZHVyaW5nIGZpbGUgY3JlYXRpb24gYW5kIGF0b21pYyBvcGVuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6MTc6MTUuMjc3MTA3MTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MzQ2MjM5MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRvbWljX29wZW5cIixcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJkZW50cnlfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBWRlMgbG9naWMgaW4gZnMvbmFtZWkuYywgc3BlY2lmaWNhbGx5IHJlZmFjdG9yaW5nIGF0b21pY19vcGVuKCkgYW5kIGxvb2t1cF9vcGVuKCkgdG8gY2hhbmdlIGhvdyBjcmVhdGVfZXJyb3IgaXMgaGFuZGxlZCBkdXJpbmcgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjE1LjI3NzExNjEzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA4ODIwMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWFlMjBlMzUyNGVmYzg3NjdkOWRmNDJjYjU2ZmJhZDM3NzYwYzVjOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxMSAxNDoxNzoxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9uYW1laS5jIGIvZnMvbmFtZWkuY1xcbmluZGV4IDE5Y2U0M2M5YTZlNjYyLi4yZWVmMmE0OWQzZjQxZSAxMDA2NDRcXG4tLS0gYS9mcy9uYW1laS5jXFxuKysrIGIvZnMvbmFtZWkuY1xcbkBAIC00MzM2LDUwICs0MzM2LDc4IEBAIHN0YXRpYyBpbnQgbWF5X29fY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbiBcXHRyZXR1cm4gc2VjdXJpdHlfaW5vZGVfY3JlYXRlKGRpci1cXHUwMDNlZGVudHJ5LVxcdTAwM2VkX2lub2RlLCBkZW50cnksIG1vZGUpO1xcbiB9XFxuIFxcbi0vKlxcbi0gKiBBdHRlbXB0IHRvIGF0b21pY2FsbHkgbG9vayB1cCwgY3JlYXRlIGFuZCBvcGVuIGEgZmlsZSBmcm9tIGEgbmVnYXRpdmVcXG4tICogZGVudHJ5Llxcbi0gKlxcbi0gKiBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bC4gIFRoZSBmaWxlIHdpbGwgaGF2ZSBiZWVuIGNyZWF0ZWQgYW5kIGF0dGFjaGVkIHRvXFxuLSAqIEBmaWxlIGJ5IHRoZSBmaWxlc3lzdGVtIGNhbGxpbmcgZmluaXNoX29wZW4oKS5cXG4tICpcXG4tICogSWYgdGhlIGZpbGUgd2FzIGxvb2tlZCB1cCBvbmx5IG9yIGRpZG4ndCBuZWVkIGNyZWF0aW5nLCBGTU9ERV9PUEVORUQgd29uJ3RcXG4tICogYmUgc2V0LiAgVGhlIGNhbGxlciB3aWxsIG5lZWQgdG8gcGVyZm9ybSB0aGUgb3BlbiB0aGVtc2VsdmVzLiAgQHBhdGggd2lsbFxcbi0gKiBoYXZlIGJlZW4gdXBkYXRlZCB0byBwb2ludCB0byB0aGUgbmV3IGRlbnRyeS4gIFRoaXMgbWF5IGJlIG5lZ2F0aXZlLlxcbi0gKlxcbi0gKiBSZXR1cm5zIGFuIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxcbisvKipcXG4rICogYXRvbWljX29wZW4oKSAtIGF0dGVtcHQgdG8gYXRvbWljYWxseSBsb29rIHVwLCBjcmVhdGUgYW5kIG9wZW4gYSBmaWxlXFxuKyAqIGZyb20gYSBuZWdhdGl2ZSBkZW50cnkuXFxuKyAqIEBwYXRoOiAgICAgICAgICBwYXJlbnQgZGlyZWN0b3J5IHBhdGhcXG4rICogQGRlbnRyeTogICAgICAgIGNoaWxkIHRvIC1cXHUwMDNlYXRvbWljX29wZW4oKVxcbisgKiBAZmlsZTogICAgICAgICAgZmlsZSB0byBhdHRhY2ggY2hpbGQgdG9cXG4rICogQG9wZW5fZmxhZzogICAgIG9wZW4gZmxhZ3NcXG4rICogQG1vZGU6ICAgICAgICAgIGNyZWF0ZSBtb2RlXFxuKyAqIEBjcmVhdGVfZXJyb3I6ICByZXR1cm4gdmFsdWUgZnJvbSBtYXlfb19jcmVhdGUoKVxcbisgKlxcbisgKiBJZiBhIG5vbi1lcnJvciBkZW50cnkgaXMgcmV0dXJuZWQgdGhlbjogd2hlbiBGTU9ERV9PUEVORUQgaXMgc2V0LFxcbisgKiB0aGUgZmlsZSB3aWxsIGhhdmUgYmVlbiBhdHRhY2hlZCB0byBAZmlsZSBieSB0aGUgZmlsZXN5c3RlbSBjYWxsaW5nXFxuKyAqIGZpbmlzaF9vcGVuKCkuIElmIEZNT0RFX09QRU5FRCBpc24ndCBzZXQsIHRoZSBmaWxlc3lzdGVtIGluc3RlYWQgY2FsbGVkXFxuKyAqIGZpbmlzaF9ub19vcGVuKCkgYW5kIHRoZSBjYWxsZXIgd2lsbCBuZWVkIHRvIHBlcmZvcm0gdGhlIG9wZW4gdGhlbXNlbHZlcy5cXG4rICpcXG4rICogRk1PREVfQ1JFQVRFRCBpcyBzZXQgd2hlbiB0aGUgY2FsbCB0byAtXFx1MDAzZWF0b21pY19vcGVuKCkgYWN0dWFsbHkgY3JlYXRlZFxcbisgKiB0aGUgZmlsZS5cXG4rICpcXG4rICogUmV0dXJucyB0aGUgb3BlbmVkL2xvb2tlZC11cCBkZW50cnkgb24gc3VjY2VzcyBvciBFUlJfUFRSKC1FKSBvbiBmYWlsdXJlLlxcbisgKiBPbiBlcnJvciwgYXRvbWljX29wZW4oKSBjb25zdW1lcyBAZGVudHJ5LlxcbiAgKi9cXG4gc3RhdGljIHN0cnVjdCBkZW50cnkgKmF0b21pY19vcGVuKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IGZpbGUgKmZpbGUsXFxuLVxcdFxcdFxcdFxcdCAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKVxcbitcXHRcXHRcXHRcXHQgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSwgaW50IGNyZWF0ZV9lcnJvcilcXG4ge1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpjb25zdCBERU5UUllfTk9UX1NFVCA9ICh2b2lkICopIC0xVUw7XFxuLVxcdHN0cnVjdCBpbm9kZSAqZGlyID0gIHBhdGgtXFx1MDAzZWRlbnRyeS1cXHUwMDNlZF9pbm9kZTtcXG4rXFx0c3RydWN0IGlub2RlICpkaXJfaW5vZGUgPSBwYXRoLVxcdTAwM2VkZW50cnktXFx1MDAzZWRfaW5vZGU7XFxuIFxcdGludCBlcnJvcjtcXG4gXFxuIFxcdGZpbGUtXFx1MDAzZV9fZl9wYXRoLmRlbnRyeSA9IERFTlRSWV9OT1RfU0VUO1xcbiBcXHRmaWxlLVxcdTAwM2VfX2ZfcGF0aC5tbnQgPSBwYXRoLVxcdTAwM2VtbnQ7XFxuLVxcdGVycm9yID0gZGlyLVxcdTAwM2VpX29wLVxcdTAwM2VhdG9taWNfb3BlbihkaXIsIGRlbnRyeSwgZmlsZSxcXG4rXFx0ZXJyb3IgPSBkaXJfaW5vZGUtXFx1MDAzZWlfb3AtXFx1MDAzZWF0b21pY19vcGVuKGRpcl9pbm9kZSwgZGVudHJ5LCBmaWxlLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgb3Blbl90b19uYW1laV9mbGFncyhvcGVuX2ZsYWcpLCBtb2RlKTtcXG4gXFx0ZF9sb29rdXBfZG9uZShkZW50cnkpO1xcbitcXG4gXFx0aWYgKCFlcnJvcikge1xcbiBcXHRcXHRpZiAoZmlsZS1cXHUwMDNlZl9tb2RlIFxcdTAwMjYgRk1PREVfT1BFTkVEKSB7XFxuLVxcdFxcdFxcdGlmICh1bmxpa2VseShkZW50cnkgIT0gZmlsZS1cXHUwMDNlZl9wYXRoLmRlbnRyeSkpIHtcXG4rXFx0XFx0XFx0LyogZmluaXNoX29wZW4oKSBjYWxsZWQgKi9cXG4rXFx0XFx0XFx0c3RydWN0IGRlbnRyeSAqb3BlbmVkID0gZmlsZS1cXHUwMDNlZl9wYXRoLmRlbnRyeTtcXG4rXFx0XFx0XFx0aWYgKHVubGlrZWx5KG9wZW5lZCAhPSBkZW50cnkpKSB7XFxuIFxcdFxcdFxcdFxcdGRwdXQoZGVudHJ5KTtcXG4tXFx0XFx0XFx0XFx0ZGVudHJ5ID0gZGdldChmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5KTtcXG4rXFx0XFx0XFx0XFx0ZGVudHJ5ID0gZGdldChvcGVuZWQpO1xcbiBcXHRcXHRcXHR9XFxuLVxcdFxcdH0gZWxzZSBpZiAoV0FSTl9PTihmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5ID09IERFTlRSWV9OT1RfU0VUKSkge1xcbi1cXHRcXHRcXHRlcnJvciA9IC1FSU87XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGlmIChmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5KSB7XFxuK1xcdFxcdH0gZWxzZSBpZiAobGlrZWx5KGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnkgIT0gREVOVFJZX05PVF9TRVQpKSB7XFxuK1xcdFxcdFxcdC8qIGZpbmlzaF9ub19vcGVuKCkgY2FsbGVkICovXFxuK1xcdFxcdFxcdHN0cnVjdCBkZW50cnkgKnJlcGxhY2VkID0gZmlsZS1cXHUwMDNlZl9wYXRoLmRlbnRyeTtcXG4rXFx0XFx0XFx0aWYgKHJlcGxhY2VkKSB7XFxuIFxcdFxcdFxcdFxcdGRwdXQoZGVudHJ5KTtcXG4tXFx0XFx0XFx0XFx0ZGVudHJ5ID0gZmlsZS1cXHUwMDNlZl9wYXRoLmRlbnRyeTtcXG4rXFx0XFx0XFx0XFx0ZGVudHJ5ID0gcmVwbGFjZWQ7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0aWYgKHVubGlrZWx5KGRfaXNfbmVnYXRpdmUoZGVudHJ5KSkpXFxuIFxcdFxcdFxcdFxcdGVycm9yID0gLUVOT0VOVDtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0Y29uc3QgY2hhciAqZnNuYW1lID0gZGVudHJ5LVxcdTAwM2VkX3NiLVxcdTAwM2VzX3R5cGUtXFx1MDAzZW5hbWU7XFxuK1xcdFxcdFxcdFdBUk4oMSwgXFxcIiVzOiAtXFx1MDAzZWF0b21pY19vcGVuKCkgbGVmdCBmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5IHVuc2V0IVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgICAgICBmc25hbWUpO1xcbitcXHRcXHRcXHRlcnJvciA9IC1FSU87XFxuIFxcdFxcdH1cXG4gXFx0fVxcbitcXG4gXFx0aWYgKGVycm9yKSB7XFxuK1xcdFxcdGlmICh1bmxpa2VseShjcmVhdGVfZXJyb3IpIFxcdTAwMjZcXHUwMDI2IGVycm9yID09IC1FTk9FTlQpIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogU2hvdWxkIGhhdmUgZG9uZSBhIGNyZWF0ZSwgYnV0IGVycm9yZWQgYmVmb3JlLlxcbitcXHRcXHRcXHQgKiBTb21lIGZpbGVzeXN0ZW1zIHJldHVybiAtRU5PRU5UIGRpcmVjdGx5IGluc3RlYWQgb2ZcXG4rXFx0XFx0XFx0ICogY2FsbGluZyBmaW5pc2hfbm9fb3BlbigpIHdpdGggYSBuZWdhdGl2ZSBkZW50cnk7XFxuK1xcdFxcdFxcdCAqIGVpdGhlciB3YXkgaXQgc2hvdWxkIG9ubHkgbWVhbiB0aGUgY2hpbGQgZG9lc24ndCBleGlzdCxcXG4rXFx0XFx0XFx0ICogc28gYSByZWZ1c2VkIGNyZWF0ZSBpcyBzYWZlIHRvIHJlY29yZCBoZXJlLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcXG4rXFx0XFx0XFx0ZXJyb3IgPSBjcmVhdGVfZXJyb3I7XFxuK1xcdFxcdH1cXG4gXFx0XFx0ZHB1dChkZW50cnkpO1xcbiBcXHRcXHRkZW50cnkgPSBFUlJfUFRSKGVycm9yKTtcXG4gXFx0fVxcbkBAIC00NDM3LDcgKzQ0NjUsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRcXHRkZW50cnkgPSBOVUxMO1xcbiBcXHR9XFxuIFxcdGlmIChkZW50cnktXFx1MDAzZWRfaW5vZGUpIHtcXG4tXFx0XFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGZfb3AtXFx1MDAzZW9wZW4gKi9cXG4rXFx0XFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGRvX29wZW4oKS4gKi9cXG4gXFx0XFx0cmV0dXJuIGRlbnRyeTtcXG4gXFx0fVxcbiBcXG5AQCAtNDQ3MSwxMCArNDQ5OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdGlmIChkaXJfaW5vZGUtXFx1MDAzZWlfb3AtXFx1MDAzZWF0b21pY19vcGVuKSB7XFxuIFxcdFxcdGlmIChuZC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMT09LVVBfRElSRUNUT1JZKVxcbiBcXHRcXHRcXHRvcGVuX2ZsYWcgfD0gT19ESVJFQ1RPUlk7XFxuLVxcdFxcdGRlbnRyeSA9IGF0b21pY19vcGVuKFxcdTAwMjZuZC1cXHUwMDNlcGF0aCwgZGVudHJ5LCBmaWxlLCBvcGVuX2ZsYWcsIG1vZGUpO1xcbi1cXHRcXHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcXHUwMDI2XFx1MDAyNiBkZW50cnkgPT0gRVJSX1BUUigtRU5PRU5UKSlcXG4tXFx0XFx0XFx0ZGVudHJ5ID0gRVJSX1BUUihjcmVhdGVfZXJyb3IpO1xcbi1cXHRcXHRyZXR1cm4gZGVudHJ5O1xcbitcXHRcXHRyZXR1cm4gYXRvbWljX29wZW4oXFx1MDAyNm5kLVxcdTAwM2VwYXRoLCBkZW50cnksIGZpbGUsIG9wZW5fZmxhZywgbW9kZSwgY3JlYXRlX2Vycm9yKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGRfaW5fbG9va3VwKGRlbnRyeSkpIHtcXG5AQCAtNDQ5MCwzMCArNDUxNSwzNiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRcXHRcXHRkZW50cnkgPSByZXM7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbitcXHRpZiAoZGVudHJ5LVxcdTAwM2VkX2lub2RlIHx8ICEob3AtXFx1MDAzZW9wZW5fZmxhZyBcXHUwMDI2IE9fQ1JFQVQpKSB7XFxuK1xcdFxcdC8qIE5vIG5lZWQgdG8gY3JlYXRlIGEgZmlsZS4gSWYgbG9va3VwIHJldHVybmVkIGEgcG9zaXRpdmVcXG4rXFx0XFx0ICogZGVudHJ5LCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBkb19vcGVuKCkuICovXFxuK1xcdFxcdHJldHVybiBkZW50cnk7XFxuK1xcdH1cXG4gXFxuLVxcdC8qIE5lZ2F0aXZlIGRlbnRyeSwganVzdCBjcmVhdGUgdGhlIGZpbGUgKi9cXG4tXFx0aWYgKCFkZW50cnktXFx1MDAzZWRfaW5vZGUgXFx1MDAyNlxcdTAwMjYgKG9wZW5fZmxhZyBcXHUwMDI2IE9fQ1JFQVQpKSB7XFxuLVxcdFxcdC8qIGJ1dCBicmVhayB0aGUgZGlyZWN0b3J5IGxlYXNlIGZpcnN0ISAqL1xcbi1cXHRcXHRlcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIGRlbGVnYXRlZF9pbm9kZSk7XFxuLVxcdFxcdGlmIChlcnJvcilcXG4tXFx0XFx0XFx0Z290byBvdXRfZHB1dDtcXG4tXFxuLVxcdFxcdGZpbGUtXFx1MDAzZWZfbW9kZSB8PSBGTU9ERV9DUkVBVEVEO1xcbi1cXHRcXHRhdWRpdF9pbm9kZV9jaGlsZChkaXJfaW5vZGUsIGRlbnRyeSwgQVVESVRfVFlQRV9DSElMRF9DUkVBVEUpO1xcbi1cXHRcXHRpZiAoIWRpcl9pbm9kZS1cXHUwMDNlaV9vcC1cXHUwMDNlY3JlYXRlKSB7XFxuLVxcdFxcdFxcdGVycm9yID0gLUVBQ0NFUztcXG4tXFx0XFx0XFx0Z290byBvdXRfZHB1dDtcXG4tXFx0XFx0fVxcbitcXHQvKiBOZWdhdGl2ZSBkZW50cnkgd2l0aCBPX0NSRUFUIGZsYWcgc2V0ICovXFxuK1xcdGF1ZGl0X2lub2RlX2NoaWxkKGRpcl9pbm9kZSwgZGVudHJ5LCBBVURJVF9UWVBFX0NISUxEX0NSRUFURSk7XFxuIFxcbi1cXHRcXHRlcnJvciA9IGRpcl9pbm9kZS1cXHUwMDNlaV9vcC1cXHUwMDNlY3JlYXRlKGlkbWFwLCBkaXJfaW5vZGUsIGRlbnRyeSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0bW9kZSwgb3Blbl9mbGFnIFxcdTAwMjYgT19FWENMKTtcXG4tXFx0XFx0aWYgKGVycm9yKVxcbi1cXHRcXHRcXHRnb3RvIG91dF9kcHV0O1xcbi1cXHR9XFxuLVxcdGlmICh1bmxpa2VseShjcmVhdGVfZXJyb3IpIFxcdTAwMjZcXHUwMDI2ICFkZW50cnktXFx1MDAzZWRfaW5vZGUpIHtcXG4rXFx0aWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikpIHtcXG4rXFx0XFx0Lyogc2hvdWxkIGhhdmUgZG9uZSBhIGNyZWF0ZSwgYnV0IHdlIGFscmVhZHkgZXJyb3JlZCAqL1xcbiBcXHRcXHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcXG4gXFx0XFx0Z290byBvdXRfZHB1dDtcXG4gXFx0fVxcbitcXG4rXFx0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBkZWxlZ2F0ZWRfaW5vZGUpO1xcbitcXHRpZiAoZXJyb3IpXFxuK1xcdFxcdGdvdG8gb3V0X2RwdXQ7XFxuK1xcbitcXHRmaWxlLVxcdTAwM2VmX21vZGUgfD0gRk1PREVfQ1JFQVRFRDtcXG4rXFx0aWYgKCFkaXJfaW5vZGUtXFx1MDAzZWlfb3AtXFx1MDAzZWNyZWF0ZSkge1xcbitcXHRcXHRlcnJvciA9IC1FQUNDRVM7XFxuK1xcdFxcdGdvdG8gb3V0X2RwdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGVycm9yID0gZGlyX2lub2RlLVxcdTAwM2VpX29wLVxcdTAwM2VjcmVhdGUoaWRtYXAsIGRpcl9pbm9kZSwgZGVudHJ5LFxcbitcXHRcXHRcXHRcXHRcXHRtb2RlLCBvcGVuX2ZsYWcgXFx1MDAyNiBPX0VYQ0wpO1xcbitcXHRpZiAoZXJyb3IpXFxuK1xcdFxcdGdvdG8gb3V0X2RwdXQ7XFxuK1xcbiBcXHRyZXR1cm4gZGVudHJ5O1xcbiBcXG4gb3V0X2RwdXQ6XFxuQEAgLTUwNTEsNyArNTA4Miw3IEBAIHN0cnVjdCBmaWxlICpkZW50cnlfY3JlYXRlKHN0cnVjdCBwYXRoICpwYXRoLCBpbnQgZmxhZ3MsIHVtb2RlX3QgbW9kZSxcXG4gXFxuIFxcdFxcdC8qIGF0b21pY19vcGVuIHdpbGwgZHB1dChkZW50cnkpIG9uIGVycm9yICovXFxuIFxcdFxcdGRnZXQob3JpZ19kZW50cnkpO1xcbi1cXHRcXHRkZW50cnkgPSBhdG9taWNfb3BlbihwYXRoLCBkZW50cnksIGZpbGUsIGZsYWdzLCBtb2RlKTtcXG4rXFx0XFx0ZGVudHJ5ID0gYXRvbWljX29wZW4ocGF0aCwgZGVudHJ5LCBmaWxlLCBmbGFncywgbW9kZSwgY3JlYXRlX2Vycm9yKTtcXG4gXFx0XFx0ZXJyb3IgPSBQVFJfRVJSX09SX1pFUk8oZGVudHJ5KTtcXG4gXFxuIFxcdFxcdGlmIChJU19FUlIoZGVudHJ5KSlcXG5AQCAtNTA2MSw5ICs1MDkyLDYgQEAgc3RydWN0IGZpbGUgKmRlbnRyeV9jcmVhdGUoc3RydWN0IHBhdGggKnBhdGgsIGludCBmbGFncywgdW1vZGVfdCBtb2RlLFxcbiBcXHRcXHRcXHQvKiBEcm9wIHRoZSBleHRyYSByZWZlcmVuY2UgKi9cXG4gXFx0XFx0XFx0ZHB1dChvcmlnX2RlbnRyeSk7XFxuIFxcbi1cXHRcXHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcXHUwMDI2XFx1MDAyNiBlcnJvciA9PSAtRU5PRU5UKVxcbi1cXHRcXHRcXHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcXG4tXFxuIFxcdFxcdGlmICghZXJyb3IpIHtcXG4gXFx0XFx0XFx0aWYgKGZpbGUtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IEZNT0RFX0NSRUFURUQpXFxuIFxcdFxcdFxcdFxcdGZzbm90aWZ5X2NyZWF0ZShkaXItXFx1MDAzZWRfaW5vZGUsIGRlbnRyeSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjE1Ljg4ODc0NDA3OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYyMjI5Nzg4NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRvbWljX29wZW5cIixcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJkZW50cnlfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBWRlMgbG9naWMgaW4gZnMvbmFtZWkuYywgc3BlY2lmaWNhbGx5IHJlZmFjdG9yaW5nIGF0b21pY19vcGVuKCkgYW5kIGxvb2t1cF9vcGVuKCkgdG8gY2hhbmdlIGhvdyBjcmVhdGVfZXJyb3IgaXMgaGFuZGxlZCBkdXJpbmcgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWFlMjBlMzUyNGVmYzg3NjdkOWRmNDJjYjU2ZmJhZDM3NzYwYzVjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDE0OjE3OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbmFtZWkuYyBiL2ZzL25hbWVpLmNcbmluZGV4IDE5Y2U0M2M5YTZlNjYyLi4yZWVmMmE0OWQzZjQxZSAxMDA2NDRcbi0tLSBhL2ZzL25hbWVpLmNcbisrKyBiL2ZzL25hbWVpLmNcbkBAIC00MzM2LDUwICs0MzM2LDc4IEBAIHN0YXRpYyBpbnQgbWF5X29fY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxuIFx0cmV0dXJuIHNlY3VyaXR5X2lub2RlX2NyZWF0ZShkaXItXHUwMDNlZGVudHJ5LVx1MDAzZWRfaW5vZGUsIGRlbnRyeSwgbW9kZSk7XG4gfVxuIFxuLS8qXG4tICogQXR0ZW1wdCB0byBhdG9taWNhbGx5IGxvb2sgdXAsIGNyZWF0ZSBhbmQgb3BlbiBhIGZpbGUgZnJvbSBhIG5lZ2F0aXZlXG4tICogZGVudHJ5LlxuLSAqXG4tICogUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwuICBUaGUgZmlsZSB3aWxsIGhhdmUgYmVlbiBjcmVhdGVkIGFuZCBhdHRhY2hlZCB0b1xuLSAqIEBmaWxlIGJ5IHRoZSBmaWxlc3lzdGVtIGNhbGxpbmcgZmluaXNoX29wZW4oKS5cbi0gKlxuLSAqIElmIHRoZSBmaWxlIHdhcyBsb29rZWQgdXAgb25seSBvciBkaWRuJ3QgbmVlZCBjcmVhdGluZywgRk1PREVfT1BFTkVEIHdvbid0XG4tICogYmUgc2V0LiAgVGhlIGNhbGxlciB3aWxsIG5lZWQgdG8gcGVyZm9ybSB0aGUgb3BlbiB0aGVtc2VsdmVzLiAgQHBhdGggd2lsbFxuLSAqIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHBvaW50IHRvIHRoZSBuZXcgZGVudHJ5LiAgVGhpcyBtYXkgYmUgbmVnYXRpdmUuXG4tICpcbi0gKiBSZXR1cm5zIGFuIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuKy8qKlxuKyAqIGF0b21pY19vcGVuKCkgLSBhdHRlbXB0IHRvIGF0b21pY2FsbHkgbG9vayB1cCwgY3JlYXRlIGFuZCBvcGVuIGEgZmlsZVxuKyAqIGZyb20gYSBuZWdhdGl2ZSBkZW50cnkuXG4rICogQHBhdGg6ICAgICAgICAgIHBhcmVudCBkaXJlY3RvcnkgcGF0aFxuKyAqIEBkZW50cnk6ICAgICAgICBjaGlsZCB0byAtXHUwMDNlYXRvbWljX29wZW4oKVxuKyAqIEBmaWxlOiAgICAgICAgICBmaWxlIHRvIGF0dGFjaCBjaGlsZCB0b1xuKyAqIEBvcGVuX2ZsYWc6ICAgICBvcGVuIGZsYWdzXG4rICogQG1vZGU6ICAgICAgICAgIGNyZWF0ZSBtb2RlXG4rICogQGNyZWF0ZV9lcnJvcjogIHJldHVybiB2YWx1ZSBmcm9tIG1heV9vX2NyZWF0ZSgpXG4rICpcbisgKiBJZiBhIG5vbi1lcnJvciBkZW50cnkgaXMgcmV0dXJuZWQgdGhlbjogd2hlbiBGTU9ERV9PUEVORUQgaXMgc2V0LFxuKyAqIHRoZSBmaWxlIHdpbGwgaGF2ZSBiZWVuIGF0dGFjaGVkIHRvIEBmaWxlIGJ5IHRoZSBmaWxlc3lzdGVtIGNhbGxpbmdcbisgKiBmaW5pc2hfb3BlbigpLiBJZiBGTU9ERV9PUEVORUQgaXNuJ3Qgc2V0LCB0aGUgZmlsZXN5c3RlbSBpbnN0ZWFkIGNhbGxlZFxuKyAqIGZpbmlzaF9ub19vcGVuKCkgYW5kIHRoZSBjYWxsZXIgd2lsbCBuZWVkIHRvIHBlcmZvcm0gdGhlIG9wZW4gdGhlbXNlbHZlcy5cbisgKlxuKyAqIEZNT0RFX0NSRUFURUQgaXMgc2V0IHdoZW4gdGhlIGNhbGwgdG8gLVx1MDAzZWF0b21pY19vcGVuKCkgYWN0dWFsbHkgY3JlYXRlZFxuKyAqIHRoZSBmaWxlLlxuKyAqXG4rICogUmV0dXJucyB0aGUgb3BlbmVkL2xvb2tlZC11cCBkZW50cnkgb24gc3VjY2VzcyBvciBFUlJfUFRSKC1FKSBvbiBmYWlsdXJlLlxuKyAqIE9uIGVycm9yLCBhdG9taWNfb3BlbigpIGNvbnN1bWVzIEBkZW50cnkuXG4gICovXG4gc3RhdGljIHN0cnVjdCBkZW50cnkgKmF0b21pY19vcGVuKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4gXHRcdFx0XHQgIHN0cnVjdCBmaWxlICpmaWxlLFxuLVx0XHRcdFx0ICBpbnQgb3Blbl9mbGFnLCB1bW9kZV90IG1vZGUpXG4rXHRcdFx0XHQgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSwgaW50IGNyZWF0ZV9lcnJvcilcbiB7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpjb25zdCBERU5UUllfTk9UX1NFVCA9ICh2b2lkICopIC0xVUw7XG4tXHRzdHJ1Y3QgaW5vZGUgKmRpciA9ICBwYXRoLVx1MDAzZWRlbnRyeS1cdTAwM2VkX2lub2RlO1xuK1x0c3RydWN0IGlub2RlICpkaXJfaW5vZGUgPSBwYXRoLVx1MDAzZWRlbnRyeS1cdTAwM2VkX2lub2RlO1xuIFx0aW50IGVycm9yO1xuIFxuIFx0ZmlsZS1cdTAwM2VfX2ZfcGF0aC5kZW50cnkgPSBERU5UUllfTk9UX1NFVDtcbiBcdGZpbGUtXHUwMDNlX19mX3BhdGgubW50ID0gcGF0aC1cdTAwM2VtbnQ7XG4tXHRlcnJvciA9IGRpci1cdTAwM2VpX29wLVx1MDAzZWF0b21pY19vcGVuKGRpciwgZGVudHJ5LCBmaWxlLFxuK1x0ZXJyb3IgPSBkaXJfaW5vZGUtXHUwMDNlaV9vcC1cdTAwM2VhdG9taWNfb3BlbihkaXJfaW5vZGUsIGRlbnRyeSwgZmlsZSxcbiBcdFx0XHRcdCAgICAgICBvcGVuX3RvX25hbWVpX2ZsYWdzKG9wZW5fZmxhZyksIG1vZGUpO1xuIFx0ZF9sb29rdXBfZG9uZShkZW50cnkpO1xuK1xuIFx0aWYgKCFlcnJvcikge1xuIFx0XHRpZiAoZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2IEZNT0RFX09QRU5FRCkge1xuLVx0XHRcdGlmICh1bmxpa2VseShkZW50cnkgIT0gZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5KSkge1xuK1x0XHRcdC8qIGZpbmlzaF9vcGVuKCkgY2FsbGVkICovXG4rXHRcdFx0c3RydWN0IGRlbnRyeSAqb3BlbmVkID0gZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5O1xuK1x0XHRcdGlmICh1bmxpa2VseShvcGVuZWQgIT0gZGVudHJ5KSkge1xuIFx0XHRcdFx0ZHB1dChkZW50cnkpO1xuLVx0XHRcdFx0ZGVudHJ5ID0gZGdldChmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnkpO1xuK1x0XHRcdFx0ZGVudHJ5ID0gZGdldChvcGVuZWQpO1xuIFx0XHRcdH1cbi1cdFx0fSBlbHNlIGlmIChXQVJOX09OKGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeSA9PSBERU5UUllfTk9UX1NFVCkpIHtcbi1cdFx0XHRlcnJvciA9IC1FSU87XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0aWYgKGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeSkge1xuK1x0XHR9IGVsc2UgaWYgKGxpa2VseShmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnkgIT0gREVOVFJZX05PVF9TRVQpKSB7XG4rXHRcdFx0LyogZmluaXNoX25vX29wZW4oKSBjYWxsZWQgKi9cbitcdFx0XHRzdHJ1Y3QgZGVudHJ5ICpyZXBsYWNlZCA9IGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeTtcbitcdFx0XHRpZiAocmVwbGFjZWQpIHtcbiBcdFx0XHRcdGRwdXQoZGVudHJ5KTtcbi1cdFx0XHRcdGRlbnRyeSA9IGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeTtcbitcdFx0XHRcdGRlbnRyeSA9IHJlcGxhY2VkO1xuIFx0XHRcdH1cbiBcdFx0XHRpZiAodW5saWtlbHkoZF9pc19uZWdhdGl2ZShkZW50cnkpKSlcbiBcdFx0XHRcdGVycm9yID0gLUVOT0VOVDtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRjb25zdCBjaGFyICpmc25hbWUgPSBkZW50cnktXHUwMDNlZF9zYi1cdTAwM2VzX3R5cGUtXHUwMDNlbmFtZTtcbitcdFx0XHRXQVJOKDEsIFwiJXM6IC1cdTAwM2VhdG9taWNfb3BlbigpIGxlZnQgZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5IHVuc2V0IVxcblwiLFxuK1x0XHRcdCAgICAgICAgZnNuYW1lKTtcbitcdFx0XHRlcnJvciA9IC1FSU87XG4gXHRcdH1cbiBcdH1cbitcbiBcdGlmIChlcnJvcikge1xuK1x0XHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcdTAwMjZcdTAwMjYgZXJyb3IgPT0gLUVOT0VOVCkge1xuK1x0XHRcdC8qXG4rXHRcdFx0ICogU2hvdWxkIGhhdmUgZG9uZSBhIGNyZWF0ZSwgYnV0IGVycm9yZWQgYmVmb3JlLlxuK1x0XHRcdCAqIFNvbWUgZmlsZXN5c3RlbXMgcmV0dXJuIC1FTk9FTlQgZGlyZWN0bHkgaW5zdGVhZCBvZlxuK1x0XHRcdCAqIGNhbGxpbmcgZmluaXNoX25vX29wZW4oKSB3aXRoIGEgbmVnYXRpdmUgZGVudHJ5O1xuK1x0XHRcdCAqIGVpdGhlciB3YXkgaXQgc2hvdWxkIG9ubHkgbWVhbiB0aGUgY2hpbGQgZG9lc24ndCBleGlzdCxcbitcdFx0XHQgKiBzbyBhIHJlZnVzZWQgY3JlYXRlIGlzIHNhZmUgdG8gcmVjb3JkIGhlcmUuXG4rXHRcdFx0ICovXG4rXHRcdFx0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcbitcdFx0XHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcbitcdFx0fVxuIFx0XHRkcHV0KGRlbnRyeSk7XG4gXHRcdGRlbnRyeSA9IEVSUl9QVFIoZXJyb3IpO1xuIFx0fVxuQEAgLTQ0MzcsNyArNDQ2NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdGRlbnRyeSA9IE5VTEw7XG4gXHR9XG4gXHRpZiAoZGVudHJ5LVx1MDAzZWRfaW5vZGUpIHtcbi1cdFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGZfb3AtXHUwMDNlb3BlbiAqL1xuK1x0XHQvKiBDYWNoZWQgcG9zaXRpdmUgZGVudHJ5OiB3aWxsIG9wZW4gaW4gZG9fb3BlbigpLiAqL1xuIFx0XHRyZXR1cm4gZGVudHJ5O1xuIFx0fVxuIFxuQEAgLTQ0NzEsMTAgKzQ0OTksNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0aWYgKGRpcl9pbm9kZS1cdTAwM2VpX29wLVx1MDAzZWF0b21pY19vcGVuKSB7XG4gXHRcdGlmIChuZC1cdTAwM2VmbGFncyBcdTAwMjYgTE9PS1VQX0RJUkVDVE9SWSlcbiBcdFx0XHRvcGVuX2ZsYWcgfD0gT19ESVJFQ1RPUlk7XG4tXHRcdGRlbnRyeSA9IGF0b21pY19vcGVuKFx1MDAyNm5kLVx1MDAzZXBhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlKTtcbi1cdFx0aWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikgXHUwMDI2XHUwMDI2IGRlbnRyeSA9PSBFUlJfUFRSKC1FTk9FTlQpKVxuLVx0XHRcdGRlbnRyeSA9IEVSUl9QVFIoY3JlYXRlX2Vycm9yKTtcbi1cdFx0cmV0dXJuIGRlbnRyeTtcbitcdFx0cmV0dXJuIGF0b21pY19vcGVuKFx1MDAyNm5kLVx1MDAzZXBhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlLCBjcmVhdGVfZXJyb3IpO1xuIFx0fVxuIFxuIFx0aWYgKGRfaW5fbG9va3VwKGRlbnRyeSkpIHtcbkBAIC00NDkwLDMwICs0NTE1LDM2IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdFx0ZGVudHJ5ID0gcmVzO1xuIFx0XHR9XG4gXHR9XG4rXHRpZiAoZGVudHJ5LVx1MDAzZWRfaW5vZGUgfHwgIShvcC1cdTAwM2VvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpKSB7XG4rXHRcdC8qIE5vIG5lZWQgdG8gY3JlYXRlIGEgZmlsZS4gSWYgbG9va3VwIHJldHVybmVkIGEgcG9zaXRpdmVcbitcdFx0ICogZGVudHJ5LCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBkb19vcGVuKCkuICovXG4rXHRcdHJldHVybiBkZW50cnk7XG4rXHR9XG4gXG4tXHQvKiBOZWdhdGl2ZSBkZW50cnksIGp1c3QgY3JlYXRlIHRoZSBmaWxlICovXG4tXHRpZiAoIWRlbnRyeS1cdTAwM2VkX2lub2RlIFx1MDAyNlx1MDAyNiAob3Blbl9mbGFnIFx1MDAyNiBPX0NSRUFUKSkge1xuLVx0XHQvKiBidXQgYnJlYWsgdGhlIGRpcmVjdG9yeSBsZWFzZSBmaXJzdCEgKi9cbi1cdFx0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBkZWxlZ2F0ZWRfaW5vZGUpO1xuLVx0XHRpZiAoZXJyb3IpXG4tXHRcdFx0Z290byBvdXRfZHB1dDtcbi1cbi1cdFx0ZmlsZS1cdTAwM2VmX21vZGUgfD0gRk1PREVfQ1JFQVRFRDtcbi1cdFx0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcbi1cdFx0aWYgKCFkaXJfaW5vZGUtXHUwMDNlaV9vcC1cdTAwM2VjcmVhdGUpIHtcbi1cdFx0XHRlcnJvciA9IC1FQUNDRVM7XG4tXHRcdFx0Z290byBvdXRfZHB1dDtcbi1cdFx0fVxuK1x0LyogTmVnYXRpdmUgZGVudHJ5IHdpdGggT19DUkVBVCBmbGFnIHNldCAqL1xuK1x0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcbiBcbi1cdFx0ZXJyb3IgPSBkaXJfaW5vZGUtXHUwMDNlaV9vcC1cdTAwM2VjcmVhdGUoaWRtYXAsIGRpcl9pbm9kZSwgZGVudHJ5LFxuLVx0XHRcdFx0XHRcdG1vZGUsIG9wZW5fZmxhZyBcdTAwMjYgT19FWENMKTtcbi1cdFx0aWYgKGVycm9yKVxuLVx0XHRcdGdvdG8gb3V0X2RwdXQ7XG4tXHR9XG4tXHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcdTAwMjZcdTAwMjYgIWRlbnRyeS1cdTAwM2VkX2lub2RlKSB7XG4rXHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSkge1xuK1x0XHQvKiBzaG91bGQgaGF2ZSBkb25lIGEgY3JlYXRlLCBidXQgd2UgYWxyZWFkeSBlcnJvcmVkICovXG4gXHRcdGVycm9yID0gY3JlYXRlX2Vycm9yO1xuIFx0XHRnb3RvIG91dF9kcHV0O1xuIFx0fVxuK1xuK1x0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBkZWxlZ2F0ZWRfaW5vZGUpO1xuK1x0aWYgKGVycm9yKVxuK1x0XHRnb3RvIG91dF9kcHV0O1xuK1xuK1x0ZmlsZS1cdTAwM2VmX21vZGUgfD0gRk1PREVfQ1JFQVRFRDtcbitcdGlmICghZGlyX2lub2RlLVx1MDAzZWlfb3AtXHUwMDNlY3JlYXRlKSB7XG4rXHRcdGVycm9yID0gLUVBQ0NFUztcbitcdFx0Z290byBvdXRfZHB1dDtcbitcdH1cbitcbitcdGVycm9yID0gZGlyX2lub2RlLVx1MDAzZWlfb3AtXHUwMDNlY3JlYXRlKGlkbWFwLCBkaXJfaW5vZGUsIGRlbnRyeSxcbitcdFx0XHRcdFx0bW9kZSwgb3Blbl9mbGFnIFx1MDAyNiBPX0VYQ0wpO1xuK1x0aWYgKGVycm9yKVxuK1x0XHRnb3RvIG91dF9kcHV0O1xuK1xuIFx0cmV0dXJuIGRlbnRyeTtcbiBcbiBvdXRfZHB1dDpcbkBAIC01MDUxLDcgKzUwODIsNyBAQCBzdHJ1Y3QgZmlsZSAqZGVudHJ5X2NyZWF0ZShzdHJ1Y3QgcGF0aCAqcGF0aCwgaW50IGZsYWdzLCB1bW9kZV90IG1vZGUsXG4gXG4gXHRcdC8qIGF0b21pY19vcGVuIHdpbGwgZHB1dChkZW50cnkpIG9uIGVycm9yICovXG4gXHRcdGRnZXQob3JpZ19kZW50cnkpO1xuLVx0XHRkZW50cnkgPSBhdG9taWNfb3BlbihwYXRoLCBkZW50cnksIGZpbGUsIGZsYWdzLCBtb2RlKTtcbitcdFx0ZGVudHJ5ID0gYXRvbWljX29wZW4ocGF0aCwgZGVudHJ5LCBmaWxlLCBmbGFncywgbW9kZSwgY3JlYXRlX2Vycm9yKTtcbiBcdFx0ZXJyb3IgPSBQVFJfRVJSX09SX1pFUk8oZGVudHJ5KTtcbiBcbiBcdFx0aWYgKElTX0VSUihkZW50cnkpKVxuQEAgLTUwNjEsOSArNTA5Miw2IEBAIHN0cnVjdCBmaWxlICpkZW50cnlfY3JlYXRlKHN0cnVjdCBwYXRoICpwYXRoLCBpbnQgZmxhZ3MsIHVtb2RlX3QgbW9kZSxcbiBcdFx0XHQvKiBEcm9wIHRoZSBleHRyYSByZWZlcmVuY2UgKi9cbiBcdFx0XHRkcHV0KG9yaWdfZGVudHJ5KTtcbiBcbi1cdFx0aWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikgXHUwMDI2XHUwMDI2IGVycm9yID09IC1FTk9FTlQpXG4tXHRcdFx0ZXJyb3IgPSBjcmVhdGVfZXJyb3I7XG4tXG4gXHRcdGlmICghZXJyb3IpIHtcbiBcdFx0XHRpZiAoZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2IEZNT0RFX0NSRUFURUQpXG4gXHRcdFx0XHRmc25vdGlmeV9jcmVhdGUoZGlyLVx1MDAzZWRfaW5vZGUsIGRlbnRyeSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNDoxNzoxNS44ODg3NDYwNjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDUwODI1NjU4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZGUyBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgZnMvbmFtZWkuY2AuICBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBJdCBzZWVtcyB0byBiZSByZWZhY3RvcmluZyBgYXRvbWljX29wZW4oKWAgYW5kIGBsb29rdXBfb3BlbigpYCwgd2hpY2ggYXJlIGNvcmUgY29tcG9uZW50cyBvZiB0aGUgVkZTJ3MgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4gbG9naWMg4oCTIGFsd2F5cyBhIGdvb2QgYXJlYSB0byBzY3J1dGluaXplLlxuXG5TcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBjcmVhdGVfZXJyb3JgIGludG8gYGF0b21pY19vcGVuKClgLiAgVGhpcyBzdWdnZXN0cyBhIHNoaWZ0IGluIGhvdyBlcnJvcnMgZnJvbSB0aGUgY3JlYXRpb24gcHJvY2VzcyBhcmUgaGFuZGxlZCwgcGFydGljdWxhcmx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBgbWF5X29fY3JlYXRlKClgIGNoZWNrcy4gIGBjcmVhdGVfZXJyb3JgIGlzIG5vdyBjb25zdW1lZCB3aXRoaW4gYGF0b21pY19vcGVuKClgLiBUaGlzIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgZXllIGFzIGEgcG90ZW50aWFsIGFyZWEgZm9yIGZ1enppbmcg4oCTIGVycm9yIGhhbmRsaW5nIGlzIG9mdGVuIHdoZXJlIGludGVyZXN0aW5nIGFuZCB1bmV4cGVjdGVkIGJlaGF2aW9yIGFyaXNlcy5cblxuSSBhbHNvIHNlZSB0aGF0IGl0J3MgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIGBsb29rdXBfb3BlbigpYCB3aGVuIGEgbmVnYXRpdmUgZGVudHJ5IGlzIGVuY291bnRlcmVkIGFuZCB0aGUgYE9fQ1JFQVRgIGZsYWcgaXMgc2V0LiAgVGhpcyBzZWN0aW9uIGFsc28gaGFzIGBhdWRpdF9pbm9kZV9jaGlsZCgpYCBjYWxscyBiZWluZyBhZGRlZCBvciBtb3ZlZCBhcm91bmQsIGZ1cnRoZXIgaW5kaWNhdGluZyBhIGNoYW5nZSBpbiB0aGUgY3JlYXRpb24gcGF0aC4gIFRoaXMgY291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlIGFzIHdlbGwuXG5cblRoZSBmdW5jdGlvbnMgbW9kaWZpZWQgYXJlOiBgYXRvbWljX29wZW5gLCBgbG9va3VwX29wZW5gLCBhbmQgYGRlbnRyeV9jcmVhdGVgLiBTbywgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGxvdy1sZXZlbCBWRlMgc3R1ZmYuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoZSBleGFjdCBjaGFuZ2VzLiBJbiBgYXRvbWljX29wZW5gLCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG5vdyBpbmNsdWRlcyBgaW50IGNyZWF0ZV9lcnJvcmAuICBUaGUgY29kZSB3aXRoaW4gY2hlY2tzIGZvciBhIHNwZWNpZmljIGVycm9yIChgLUVOT0VOVGApIGFuZCwgaWYgYGNyZWF0ZV9lcnJvcmAgaXMgc2V0LCBpdCBwZXJmb3JtcyBhbiBhdWRpdCBmb3IgYSBjaGlsZCBjcmVhdGlvbi4gVGhlIGltcG9ydGFudCB0aGluZyB0byBjb25zaWRlciBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoICpjb25zdW1lcyogYGNyZWF0ZV9lcnJvcmAgYW5kIHBvc3NpYmx5IGNoYW5nZXMgdGhlIGVycm9yIHJldHVybmVkLlxuXG5JbiBgbG9va3VwX29wZW5gLCB0aGUgcGF0Y2ggaGFzIGNoYW5nZWQgdG8gY2FsbCB0aGUgbmV3IGBhdG9taWNfb3BlbigpYCB0aGF0IG5vdyB0YWtlcyBgY3JlYXRlX2Vycm9yYC4gSW4gdGhlIGxhdGVyIHBhcnRzIG9mIGBsb29rdXBfb3BlbmAgdGhlIGNvZGUgaGFzIGJlZW4gcmVvcmdhbml6ZWQgdG8gY29uc29saWRhdGUgZXJyb3IgaGFuZGxpbmcgYW5kIHRoZSBgYXVkaXRfaW5vZGVfY2hpbGQoKWAgY2FsbC4gVGhpcyBjaGFuZ2VzIHRoZSBmbG93LlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBWRlMuXG5cbk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHllcywgdGhpcyBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIHRhcmdldCBmb3IgZnV6emluZy4gIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gYGF0b21pY19vcGVuYCwgYGxvb2t1cF9vcGVuYCwgYW5kIGBkZW50cnlfY3JlYXRlYCBiZWNhdXNlIHRoZXNlIGFyZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRoYXQgYXJlIGNlbnRyYWwgdG8gdGhlIHBhdGNoLiBIb3dldmVyLCBgYXRvbWljX29wZW5gIGFuZCBgbG9va3VwX29wZW5gIGFyZSBkZWZpbmVkIGFzICpzdGF0aWMqIGluIGBmcy9uYW1laS5jYC4gIEkgd2lsbCBjaGVjayBpZiB0aGV5IGFyZSBkaXJlY3RseSBjYWxsYWJsZS4gSWYgdGhleSBhcmUgbm90IGRpcmVjdGx5IGNhbGxhYmxlLCBJIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgZW50cnkgcG9pbnRzLiBMZXQgbWUgZXhhbWluZSBgZnMvbmFtZWkuY2AgdG8gY29uZmlybSBteSBmaW5kaW5ncyBvbiBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjI3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjMwLjM5NzAwNDcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTg5ODk3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApP3N0cnVjdCBkZW50cnkgXFxcXCphdG9taWNfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uYW1laS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25hbWVpLmM9NDMyMD1zdGF0aWMgaW50IG1heV9vX2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcXG4tLVxcbmZzL25hbWVpLmMtNDM1OS0gKi9cXG5mcy9uYW1laS5jOjQzNjA6c3RhdGljIHN0cnVjdCBkZW50cnkgKmF0b21pY19vcGVuKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuZnMvbmFtZWkuYy00MzYxLVxcdFxcdFxcdFxcdCAgc3RydWN0IGZpbGUgKmZpbGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjMwLjUxODkwOTYyM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjIwMzU1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLi4uXG5cbioqRGlnZ2luZyBpbnRvIHRoZSBGaWxlc3lzdGVtIEludGVybmFscyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZm9jdXMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBoYXBwZW5pbmcgd2l0aCBmaWxlIGNyZWF0aW9uIGFuZCBsb29rdXBzIHVuZGVyIHRoZSBob29kLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRvIGV4YW1pbmUgYSBzcGVjaWZpYyBwYWlyIG9mIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBrZXkgcGxheWVycyBpbiB0aGlzIHByb2Nlc3MuIEknbSBnb2luZyB0byBzdGFydCBieSBjbG9zZWx5IGluc3BlY3RpbmcgYGxvb2t1cF9vcGVuYCBhbmQgYGRlbnRyeV9jcmVhdGVgLiBUaGVzZSBhcmUgbGlrZWx5IHRvIGJlIGludm9sdmVkIGRpcmVjdGx5IGluIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYm90aCB0aGUgaW5pdGlhbCBsb29rdXAgYW5kIHRoZSBldmVudHVhbCBjcmVhdGlvbiBvZiBhIG5ldyBmaWxlIHN5c3RlbSBlbnRyeSwgcmlnaHQ/IFVuZGVyc3RhbmRpbmcgdGhlaXIgaW50ZXJhY3Rpb24gd2lsbCBwcm9iYWJseSBwcm92aWRlIHNvbWUgY3JpdGljYWwgaW5zaWdodC4gTGV0J3Mgc2VlIHdoYXQgdGhlc2UgZnVuY3Rpb25zIGhhdmUgdG8gdGVhY2ggdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MzQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNDoxNzozMy41NDA5NDcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjk2MjI4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApP3N0cnVjdCBkZW50cnkgXFxcXCpsb29rdXBfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uYW1laS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25hbWVpLmM9NDM2MD1zdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmZzL25hbWVpLmMtNDQzMS0gKi9cXG5mcy9uYW1laS5jOjQ0MzI6c3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5mcy9uYW1laS5jLTQ0MzMtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgb3Blbl9mbGFncyAqb3AsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjMzLjY1NzkxNTM1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NTcxODQyODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVudHJ5IENyZWF0aW9uIENvbnVuZHJ1bXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgZGVudHJ5X2NyZWF0ZWAgYWdhaW4uIEknbSBmb2N1c2luZyBpbiBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gaG93IHdlIHN0cnVjdHVyZSB0aGUgZmlsZXN5c3RlbSBuYW1lc3BhY2UsIGFuZCB0aGVyZWZvcmUgcGVyZm9ybWFuY2UgYW5kIGNvbmN1cnJlbmN5LiBJdCdzIHRoZSBwb2ludCBvZiBpbnNlcnRpb24gb2YgbmV3IGRpcmVjdG9yeSBlbnRyaWVzLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3VyLlxuXG5JJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4gSG93IGRvZXMgdGhlIFZGUyBoYW5kbGUgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIGEgbmV3IGBkZW50cnlgIHN0cnVjdHVyZT8gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGJleW9uZCB0aGUgb2J2aW91cyBwYXJlbnQgYGRlbnRyeWAgYW5kIHRoZSBuYW1lPyBBcmUgd2UgZGVhbGluZyB3aXRoIGFueSBsb2NraW5nIGhlcmUsIGFuZCBpZiBzbywgd2hhdCdzIHRoZSBncmFudWxhcml0eSBhbmQgcG90ZW50aWFsIGZvciBjb250ZW50aW9uPyBJJ20gc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHN1YnRsZSBjb25jdXJyZW5jeSBpc3N1ZXMuIFdoYXQgaXMgdGhlIGxpZmVjeWNsZSBvZiB0aGlzIG5ld2x5IGNyZWF0ZWQgZGVudHJ5IHdpdGhpbiB0aGUgZmlsZXN5c3RlbS4gQW5kIGlzIHRoaXMgZGVudHJ5IGJlaW5nIGluaXRpYWxpemVkIGluIHRoZSBjb3JyZWN0IGZvcm1hdD9cblxuSSBuZWVkIHRvIHRyYWNlIHRoZSBhbGxvY2F0aW9uIHBhdGgsIGVuc3VyaW5nIHRoYXQgbWVtb3J5IG1hbmFnZW1lbnQgaXMgZWZmaWNpZW50IGFuZCB0aGF0IHdlIGFyZW4ndCBpbnRyb2R1Y2luZyBhbnkgZnJhZ21lbnRhdGlvbiBpc3N1ZXMuIEFsc28sIEknbSBnb2luZyB0byBsb29rIGNhcmVmdWxseSBhdCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgZXNwZWNpYWxseSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgdGhyZWFkcyBjcmVhdGluZyBkZW50cmllcyBzaW11bHRhbmVvdXNseSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgdGhlc2UgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGlub2RlIGFyZSBiZWluZyBoYW5kbGVkLCBhbmQgbG9vayBmb3IgYW55IGluY29uc2lzdGVuY2llcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYW5kIGhvdyB0aGUgYGRlbnRyeWAgaXMgbGlua2VkIGludG8gdGhlIGRlbnRyeSBjYWNoZSwgYW5kIGhvdyBpdCBpcyBwcm90ZWN0ZWQuIEZpbmFsbHksIEknbSB0aGlua2luZyBJIG1heSBuZWVkIHRvIGxvb2sgYXQgbWVtb3J5IHJlY2xhbWF0aW9uIGFuZCBob3cgd2UgcHJldmVudCBhbnkgbGVha3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NDksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjM3LjMxNTEwMzk3MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDgzNjU5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApP3N0cnVjdCBmaWxlIFxcXFwqZGVudHJ5X2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uYW1laS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25hbWVpLmM9NTAzOT1FWFBPUlRfU1lNQk9MKHN0YXJ0X2NyZWF0aW5nX3VzZXJfcGF0aCk7XFxuLS1cXG5mcy9uYW1laS5jLTUwNTctICovXFxuZnMvbmFtZWkuYzo1MDU4OnN0cnVjdCBmaWxlICpkZW50cnlfY3JlYXRlKHN0cnVjdCBwYXRoICpwYXRoLCBpbnQgZmxhZ3MsIHVtb2RlX3QgbW9kZSxcXG5mcy9uYW1laS5jLTUwNTktXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjM3LjM5NTk0NjkyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTU3MzM5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgVkZTIENvcmUqKlxuXG5Pa2F5LCB0aGVzZSBhcmUgc29saWQgY2hvaWNlcyBmb3IgZm9jdXMgc3ltYm9scyDigJMgYGF0b21pY19vcGVuYCwgYGxvb2t1cF9vcGVuYCwgYW5kIGBkZW50cnlfY3JlYXRlYC4gVGhvc2UgZGVmaW5pdGVseSBoaXQgdGhlIGNvcmUgb2Ygd2hhdCdzIGJlaW5nIHRvdWNoZWQgaGVyZS4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFyZWE/IEdpdmVuIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgY29yZSBWRlMsIEkgZG9u4oCZdCB0aGluayBhbnkgc3BlY2lmaWMgY29uZmlncyBhcmUgbmVlZGVkLiBJdCdzIGZ1bmRhbWVudGFsIGVub3VnaCB0aGF0IHRoZSBzdGFuZGFyZCBmdXp6aW5nIHNldHVwIHNob3VsZCBzdWZmaWNlLlxuXG5BbHJpZ2h0LCBJJ2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgVkZTLCBzcGVjaWZpY2FsbHkgaW4gYGZzL25hbWVpLmNgLCBhbmQgY2hhbmdpbmcgaG93IGBjcmVhdGVfZXJyb3JgIGlzIGhhbmRsZWQgaW4gZmlsZSBjcmVhdGlvbiBhbmQgdGhlIGF0b21pYyBvcGVuIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsJ3MgY3JpdGljYWwgcGF0aC4gR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3QsIGl0ICphYnNvbHV0ZWx5KiB3YXJyYW50cyBmdXp6aW5nLiBUaGUgcGF0Y2ggZWZmZWN0aXZlbHkgcmVmYWN0b3JzIGBhdG9taWNfb3BlbmAgYW5kIGBsb29rdXBfb3BlbmAsIHdoaWNoIGlzIGNvcmUgbG9naWMsIHNvIGZ1enppbmcgaXMgYXBwcm9wcmlhdGUuIEFuZCwgRW5hYmxlQ29uZmlncyBzaG91bGQgYmUgZW1wdHkgZm9yIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMzMsIk91dHB1dFRva2VucyI6MTA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjQyLjExMTY4MzM5MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRvbWljX29wZW5cIixcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJkZW50cnlfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBWRlMgbG9naWMgaW4gZnMvbmFtZWkuYywgc3BlY2lmaWNhbGx5IHJlZmFjdG9yaW5nIGF0b21pY19vcGVuKCkgYW5kIGxvb2t1cF9vcGVuKCkgdG8gY2hhbmdlIGhvdyBjcmVhdGVfZXJyb3IgaXMgaGFuZGxlZCBkdXJpbmcgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRvbWljX29wZW5cIixcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJkZW50cnlfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBWRlMgbG9naWMgaW4gZnMvbmFtZWkuYywgc3BlY2lmaWNhbGx5IHJlZmFjdG9yaW5nIGF0b21pY19vcGVuKCkgYW5kIGxvb2t1cF9vcGVuKCkgdG8gY2hhbmdlIGhvdyBjcmVhdGVfZXJyb3IgaXMgaGFuZGxlZCBkdXJpbmcgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowx5smx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 13:59:45 +0000 UTC FinishedAt: 2026-07-11 14:17:44 +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": "dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3", "config_name": "upstream-apparmor-kasan.config", "series_id": "45bc106c-0f9b-4d2a-8b15-e85fc3101a48" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "atomic_open", "lookup_open", "dentry_create" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRvbWljX29wZW4mIzM0OywKICAgICYjMzQ7bG9va3VwX29wZW4mIzM0OywKICAgICYjMzQ7ZGVudHJ5X2NyZWF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFZGUyBsb2dpYyBpbiBmcy9uYW1laS5jLCBzcGVjaWZpY2FsbHkgcmVmYWN0b3JpbmcgYXRvbWljX29wZW4oKSBhbmQgbG9va3VwX29wZW4oKSB0byBjaGFuZ2UgaG93IGNyZWF0ZV9lcnJvciBpcyBoYW5kbGVkIGR1cmluZyBmaWxlIGNyZWF0aW9uIGFuZCBhdG9taWMgb3Blbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVhZTIwZTM1MjRlZmM4NzY3ZDlkZjQyY2I1NmZiYWQzNzc2MGM1YzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxNDoxNzoxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9uYW1laS5jIGIvZnMvbmFtZWkuY1xuaW5kZXggMTljZTQzYzlhNmU2NjIuLjJlZWYyYTQ5ZDNmNDFlIDEwMDY0NFxuLS0tIGEvZnMvbmFtZWkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvbmFtZWkuY1xuQEAgLTQzMzYsNTAgJiM0Mzs0MzM2LDc4IEBAIHN0YXRpYyBpbnQgbWF5X29fY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxuIFx0cmV0dXJuIHNlY3VyaXR5X2lub2RlX2NyZWF0ZShkaXItXHUwMDNlZGVudHJ5LVx1MDAzZWRfaW5vZGUsIGRlbnRyeSwgbW9kZSk7XG4gfVxuIFxuLS8qXG4tICogQXR0ZW1wdCB0byBhdG9taWNhbGx5IGxvb2sgdXAsIGNyZWF0ZSBhbmQgb3BlbiBhIGZpbGUgZnJvbSBhIG5lZ2F0aXZlXG4tICogZGVudHJ5LlxuLSAqXG4tICogUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwuICBUaGUgZmlsZSB3aWxsIGhhdmUgYmVlbiBjcmVhdGVkIGFuZCBhdHRhY2hlZCB0b1xuLSAqIEBmaWxlIGJ5IHRoZSBmaWxlc3lzdGVtIGNhbGxpbmcgZmluaXNoX29wZW4oKS5cbi0gKlxuLSAqIElmIHRoZSBmaWxlIHdhcyBsb29rZWQgdXAgb25seSBvciBkaWRuJiMzOTt0IG5lZWQgY3JlYXRpbmcsIEZNT0RFX09QRU5FRCB3b24mIzM5O3Rcbi0gKiBiZSBzZXQuICBUaGUgY2FsbGVyIHdpbGwgbmVlZCB0byBwZXJmb3JtIHRoZSBvcGVuIHRoZW1zZWx2ZXMuICBAcGF0aCB3aWxsXG4tICogaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gcG9pbnQgdG8gdGhlIG5ldyBkZW50cnkuICBUaGlzIG1heSBiZSBuZWdhdGl2ZS5cbi0gKlxuLSAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBvdGhlcndpc2UuXG4mIzQzOy8qKlxuJiM0MzsgKiBhdG9taWNfb3BlbigpIC0gYXR0ZW1wdCB0byBhdG9taWNhbGx5IGxvb2sgdXAsIGNyZWF0ZSBhbmQgb3BlbiBhIGZpbGVcbiYjNDM7ICogZnJvbSBhIG5lZ2F0aXZlIGRlbnRyeS5cbiYjNDM7ICogQHBhdGg6ICAgICAgICAgIHBhcmVudCBkaXJlY3RvcnkgcGF0aFxuJiM0MzsgKiBAZGVudHJ5OiAgICAgICAgY2hpbGQgdG8gLVx1MDAzZWF0b21pY19vcGVuKClcbiYjNDM7ICogQGZpbGU6ICAgICAgICAgIGZpbGUgdG8gYXR0YWNoIGNoaWxkIHRvXG4mIzQzOyAqIEBvcGVuX2ZsYWc6ICAgICBvcGVuIGZsYWdzXG4mIzQzOyAqIEBtb2RlOiAgICAgICAgICBjcmVhdGUgbW9kZVxuJiM0MzsgKiBAY3JlYXRlX2Vycm9yOiAgcmV0dXJuIHZhbHVlIGZyb20gbWF5X29fY3JlYXRlKClcbiYjNDM7ICpcbiYjNDM7ICogSWYgYSBub24tZXJyb3IgZGVudHJ5IGlzIHJldHVybmVkIHRoZW46IHdoZW4gRk1PREVfT1BFTkVEIGlzIHNldCxcbiYjNDM7ICogdGhlIGZpbGUgd2lsbCBoYXZlIGJlZW4gYXR0YWNoZWQgdG8gQGZpbGUgYnkgdGhlIGZpbGVzeXN0ZW0gY2FsbGluZ1xuJiM0MzsgKiBmaW5pc2hfb3BlbigpLiBJZiBGTU9ERV9PUEVORUQgaXNuJiMzOTt0IHNldCwgdGhlIGZpbGVzeXN0ZW0gaW5zdGVhZCBjYWxsZWRcbiYjNDM7ICogZmluaXNoX25vX29wZW4oKSBhbmQgdGhlIGNhbGxlciB3aWxsIG5lZWQgdG8gcGVyZm9ybSB0aGUgb3BlbiB0aGVtc2VsdmVzLlxuJiM0MzsgKlxuJiM0MzsgKiBGTU9ERV9DUkVBVEVEIGlzIHNldCB3aGVuIHRoZSBjYWxsIHRvIC1cdTAwM2VhdG9taWNfb3BlbigpIGFjdHVhbGx5IGNyZWF0ZWRcbiYjNDM7ICogdGhlIGZpbGUuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnMgdGhlIG9wZW5lZC9sb29rZWQtdXAgZGVudHJ5IG9uIHN1Y2Nlc3Mgb3IgRVJSX1BUUigtRSkgb24gZmFpbHVyZS5cbiYjNDM7ICogT24gZXJyb3IsIGF0b21pY19vcGVuKCkgY29uc3VtZXMgQGRlbnRyeS5cbiAgKi9cbiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbiBcdFx0XHRcdCAgc3RydWN0IGZpbGUgKmZpbGUsXG4tXHRcdFx0XHQgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSlcbiYjNDM7XHRcdFx0XHQgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSwgaW50IGNyZWF0ZV9lcnJvcilcbiB7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpjb25zdCBERU5UUllfTk9UX1NFVCA9ICh2b2lkICopIC0xVUw7XG4tXHRzdHJ1Y3QgaW5vZGUgKmRpciA9ICBwYXRoLVx1MDAzZWRlbnRyeS1cdTAwM2VkX2lub2RlO1xuJiM0MztcdHN0cnVjdCBpbm9kZSAqZGlyX2lub2RlID0gcGF0aC1cdTAwM2VkZW50cnktXHUwMDNlZF9pbm9kZTtcbiBcdGludCBlcnJvcjtcbiBcbiBcdGZpbGUtXHUwMDNlX19mX3BhdGguZGVudHJ5ID0gREVOVFJZX05PVF9TRVQ7XG4gXHRmaWxlLVx1MDAzZV9fZl9wYXRoLm1udCA9IHBhdGgtXHUwMDNlbW50O1xuLVx0ZXJyb3IgPSBkaXItXHUwMDNlaV9vcC1cdTAwM2VhdG9taWNfb3BlbihkaXIsIGRlbnRyeSwgZmlsZSxcbiYjNDM7XHRlcnJvciA9IGRpcl9pbm9kZS1cdTAwM2VpX29wLVx1MDAzZWF0b21pY19vcGVuKGRpcl9pbm9kZSwgZGVudHJ5LCBmaWxlLFxuIFx0XHRcdFx0ICAgICAgIG9wZW5fdG9fbmFtZWlfZmxhZ3Mob3Blbl9mbGFnKSwgbW9kZSk7XG4gXHRkX2xvb2t1cF9kb25lKGRlbnRyeSk7XG4mIzQzO1xuIFx0aWYgKCFlcnJvcikge1xuIFx0XHRpZiAoZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2IEZNT0RFX09QRU5FRCkge1xuLVx0XHRcdGlmICh1bmxpa2VseShkZW50cnkgIT0gZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5KSkge1xuJiM0MztcdFx0XHQvKiBmaW5pc2hfb3BlbigpIGNhbGxlZCAqL1xuJiM0MztcdFx0XHRzdHJ1Y3QgZGVudHJ5ICpvcGVuZWQgPSBmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnk7XG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseShvcGVuZWQgIT0gZGVudHJ5KSkge1xuIFx0XHRcdFx0ZHB1dChkZW50cnkpO1xuLVx0XHRcdFx0ZGVudHJ5ID0gZGdldChmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnkpO1xuJiM0MztcdFx0XHRcdGRlbnRyeSA9IGRnZXQob3BlbmVkKTtcbiBcdFx0XHR9XG4tXHRcdH0gZWxzZSBpZiAoV0FSTl9PTihmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnkgPT0gREVOVFJZX05PVF9TRVQpKSB7XG4tXHRcdFx0ZXJyb3IgPSAtRUlPO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGlmIChmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnkpIHtcbiYjNDM7XHRcdH0gZWxzZSBpZiAobGlrZWx5KGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeSAhPSBERU5UUllfTk9UX1NFVCkpIHtcbiYjNDM7XHRcdFx0LyogZmluaXNoX25vX29wZW4oKSBjYWxsZWQgKi9cbiYjNDM7XHRcdFx0c3RydWN0IGRlbnRyeSAqcmVwbGFjZWQgPSBmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnk7XG4mIzQzO1x0XHRcdGlmIChyZXBsYWNlZCkge1xuIFx0XHRcdFx0ZHB1dChkZW50cnkpO1xuLVx0XHRcdFx0ZGVudHJ5ID0gZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5O1xuJiM0MztcdFx0XHRcdGRlbnRyeSA9IHJlcGxhY2VkO1xuIFx0XHRcdH1cbiBcdFx0XHRpZiAodW5saWtlbHkoZF9pc19uZWdhdGl2ZShkZW50cnkpKSlcbiBcdFx0XHRcdGVycm9yID0gLUVOT0VOVDtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGNvbnN0IGNoYXIgKmZzbmFtZSA9IGRlbnRyeS1cdTAwM2VkX3NiLVx1MDAzZXNfdHlwZS1cdTAwM2VuYW1lO1xuJiM0MztcdFx0XHRXQVJOKDEsIFwmIzM0OyVzOiAtXHUwMDNlYXRvbWljX29wZW4oKSBsZWZ0IGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeSB1bnNldCFcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgICAgZnNuYW1lKTtcbiYjNDM7XHRcdFx0ZXJyb3IgPSAtRUlPO1xuIFx0XHR9XG4gXHR9XG4mIzQzO1xuIFx0aWYgKGVycm9yKSB7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcdTAwMjZcdTAwMjYgZXJyb3IgPT0gLUVOT0VOVCkge1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBTaG91bGQgaGF2ZSBkb25lIGEgY3JlYXRlLCBidXQgZXJyb3JlZCBiZWZvcmUuXG4mIzQzO1x0XHRcdCAqIFNvbWUgZmlsZXN5c3RlbXMgcmV0dXJuIC1FTk9FTlQgZGlyZWN0bHkgaW5zdGVhZCBvZlxuJiM0MztcdFx0XHQgKiBjYWxsaW5nIGZpbmlzaF9ub19vcGVuKCkgd2l0aCBhIG5lZ2F0aXZlIGRlbnRyeTtcbiYjNDM7XHRcdFx0ICogZWl0aGVyIHdheSBpdCBzaG91bGQgb25seSBtZWFuIHRoZSBjaGlsZCBkb2VzbiYjMzk7dCBleGlzdCxcbiYjNDM7XHRcdFx0ICogc28gYSByZWZ1c2VkIGNyZWF0ZSBpcyBzYWZlIHRvIHJlY29yZCBoZXJlLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcbiYjNDM7XHRcdFx0ZXJyb3IgPSBjcmVhdGVfZXJyb3I7XG4mIzQzO1x0XHR9XG4gXHRcdGRwdXQoZGVudHJ5KTtcbiBcdFx0ZGVudHJ5ID0gRVJSX1BUUihlcnJvcik7XG4gXHR9XG5AQCAtNDQzNyw3ICYjNDM7NDQ2NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdGRlbnRyeSA9IE5VTEw7XG4gXHR9XG4gXHRpZiAoZGVudHJ5LVx1MDAzZWRfaW5vZGUpIHtcbi1cdFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGZfb3AtXHUwMDNlb3BlbiAqL1xuJiM0MztcdFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGRvX29wZW4oKS4gKi9cbiBcdFx0cmV0dXJuIGRlbnRyeTtcbiBcdH1cbiBcbkBAIC00NDcxLDEwICYjNDM7NDQ5OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRpZiAoZGlyX2lub2RlLVx1MDAzZWlfb3AtXHUwMDNlYXRvbWljX29wZW4pIHtcbiBcdFx0aWYgKG5kLVx1MDAzZWZsYWdzIFx1MDAyNiBMT09LVVBfRElSRUNUT1JZKVxuIFx0XHRcdG9wZW5fZmxhZyB8PSBPX0RJUkVDVE9SWTtcbi1cdFx0ZGVudHJ5ID0gYXRvbWljX29wZW4oXHUwMDI2bmQtXHUwMDNlcGF0aCwgZGVudHJ5LCBmaWxlLCBvcGVuX2ZsYWcsIG1vZGUpO1xuLVx0XHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcdTAwMjZcdTAwMjYgZGVudHJ5ID09IEVSUl9QVFIoLUVOT0VOVCkpXG4tXHRcdFx0ZGVudHJ5ID0gRVJSX1BUUihjcmVhdGVfZXJyb3IpO1xuLVx0XHRyZXR1cm4gZGVudHJ5O1xuJiM0MztcdFx0cmV0dXJuIGF0b21pY19vcGVuKFx1MDAyNm5kLVx1MDAzZXBhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlLCBjcmVhdGVfZXJyb3IpO1xuIFx0fVxuIFxuIFx0aWYgKGRfaW5fbG9va3VwKGRlbnRyeSkpIHtcbkBAIC00NDkwLDMwICYjNDM7NDUxNSwzNiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRcdGRlbnRyeSA9IHJlcztcbiBcdFx0fVxuIFx0fVxuJiM0MztcdGlmIChkZW50cnktXHUwMDNlZF9pbm9kZSB8fCAhKG9wLVx1MDAzZW9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVCkpIHtcbiYjNDM7XHRcdC8qIE5vIG5lZWQgdG8gY3JlYXRlIGEgZmlsZS4gSWYgbG9va3VwIHJldHVybmVkIGEgcG9zaXRpdmVcbiYjNDM7XHRcdCAqIGRlbnRyeSwgdGhlIGZpbGUgd2lsbCBiZSBvcGVuZWQgaW4gZG9fb3BlbigpLiAqL1xuJiM0MztcdFx0cmV0dXJuIGRlbnRyeTtcbiYjNDM7XHR9XG4gXG4tXHQvKiBOZWdhdGl2ZSBkZW50cnksIGp1c3QgY3JlYXRlIHRoZSBmaWxlICovXG4tXHRpZiAoIWRlbnRyeS1cdTAwM2VkX2lub2RlIFx1MDAyNlx1MDAyNiAob3Blbl9mbGFnIFx1MDAyNiBPX0NSRUFUKSkge1xuLVx0XHQvKiBidXQgYnJlYWsgdGhlIGRpcmVjdG9yeSBsZWFzZSBmaXJzdCEgKi9cbi1cdFx0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBkZWxlZ2F0ZWRfaW5vZGUpO1xuLVx0XHRpZiAoZXJyb3IpXG4tXHRcdFx0Z290byBvdXRfZHB1dDtcbi1cbi1cdFx0ZmlsZS1cdTAwM2VmX21vZGUgfD0gRk1PREVfQ1JFQVRFRDtcbi1cdFx0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcbi1cdFx0aWYgKCFkaXJfaW5vZGUtXHUwMDNlaV9vcC1cdTAwM2VjcmVhdGUpIHtcbi1cdFx0XHRlcnJvciA9IC1FQUNDRVM7XG4tXHRcdFx0Z290byBvdXRfZHB1dDtcbi1cdFx0fVxuJiM0MztcdC8qIE5lZ2F0aXZlIGRlbnRyeSB3aXRoIE9fQ1JFQVQgZmxhZyBzZXQgKi9cbiYjNDM7XHRhdWRpdF9pbm9kZV9jaGlsZChkaXJfaW5vZGUsIGRlbnRyeSwgQVVESVRfVFlQRV9DSElMRF9DUkVBVEUpO1xuIFxuLVx0XHRlcnJvciA9IGRpcl9pbm9kZS1cdTAwM2VpX29wLVx1MDAzZWNyZWF0ZShpZG1hcCwgZGlyX2lub2RlLCBkZW50cnksXG4tXHRcdFx0XHRcdFx0bW9kZSwgb3Blbl9mbGFnIFx1MDAyNiBPX0VYQ0wpO1xuLVx0XHRpZiAoZXJyb3IpXG4tXHRcdFx0Z290byBvdXRfZHB1dDtcbi1cdH1cbi1cdGlmICh1bmxpa2VseShjcmVhdGVfZXJyb3IpIFx1MDAyNlx1MDAyNiAhZGVudHJ5LVx1MDAzZWRfaW5vZGUpIHtcbiYjNDM7XHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSkge1xuJiM0MztcdFx0Lyogc2hvdWxkIGhhdmUgZG9uZSBhIGNyZWF0ZSwgYnV0IHdlIGFscmVhZHkgZXJyb3JlZCAqL1xuIFx0XHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcbiBcdFx0Z290byBvdXRfZHB1dDtcbiBcdH1cbiYjNDM7XG4mIzQzO1x0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBkZWxlZ2F0ZWRfaW5vZGUpO1xuJiM0MztcdGlmIChlcnJvcilcbiYjNDM7XHRcdGdvdG8gb3V0X2RwdXQ7XG4mIzQzO1xuJiM0MztcdGZpbGUtXHUwMDNlZl9tb2RlIHw9IEZNT0RFX0NSRUFURUQ7XG4mIzQzO1x0aWYgKCFkaXJfaW5vZGUtXHUwMDNlaV9vcC1cdTAwM2VjcmVhdGUpIHtcbiYjNDM7XHRcdGVycm9yID0gLUVBQ0NFUztcbiYjNDM7XHRcdGdvdG8gb3V0X2RwdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRlcnJvciA9IGRpcl9pbm9kZS1cdTAwM2VpX29wLVx1MDAzZWNyZWF0ZShpZG1hcCwgZGlyX2lub2RlLCBkZW50cnksXG4mIzQzO1x0XHRcdFx0XHRtb2RlLCBvcGVuX2ZsYWcgXHUwMDI2IE9fRVhDTCk7XG4mIzQzO1x0aWYgKGVycm9yKVxuJiM0MztcdFx0Z290byBvdXRfZHB1dDtcbiYjNDM7XG4gXHRyZXR1cm4gZGVudHJ5O1xuIFxuIG91dF9kcHV0OlxuQEAgLTUwNTEsNyAmIzQzOzUwODIsNyBAQCBzdHJ1Y3QgZmlsZSAqZGVudHJ5X2NyZWF0ZShzdHJ1Y3QgcGF0aCAqcGF0aCwgaW50IGZsYWdzLCB1bW9kZV90IG1vZGUsXG4gXG4gXHRcdC8qIGF0b21pY19vcGVuIHdpbGwgZHB1dChkZW50cnkpIG9uIGVycm9yICovXG4gXHRcdGRnZXQob3JpZ19kZW50cnkpO1xuLVx0XHRkZW50cnkgPSBhdG9taWNfb3BlbihwYXRoLCBkZW50cnksIGZpbGUsIGZsYWdzLCBtb2RlKTtcbiYjNDM7XHRcdGRlbnRyeSA9IGF0b21pY19vcGVuKHBhdGgsIGRlbnRyeSwgZmlsZSwgZmxhZ3MsIG1vZGUsIGNyZWF0ZV9lcnJvcik7XG4gXHRcdGVycm9yID0gUFRSX0VSUl9PUl9aRVJPKGRlbnRyeSk7XG4gXG4gXHRcdGlmIChJU19FUlIoZGVudHJ5KSlcbkBAIC01MDYxLDkgJiM0Mzs1MDkyLDYgQEAgc3RydWN0IGZpbGUgKmRlbnRyeV9jcmVhdGUoc3RydWN0IHBhdGggKnBhdGgsIGludCBmbGFncywgdW1vZGVfdCBtb2RlLFxuIFx0XHRcdC8qIERyb3AgdGhlIGV4dHJhIHJlZmVyZW5jZSAqL1xuIFx0XHRcdGRwdXQob3JpZ19kZW50cnkpO1xuIFxuLVx0XHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcdTAwMjZcdTAwMjYgZXJyb3IgPT0gLUVOT0VOVClcbi1cdFx0XHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcbi1cbiBcdFx0aWYgKCFlcnJvcikge1xuIFx0XHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfQ1JFQVRFRClcbiBcdFx0XHRcdGZzbm90aWZ5X2NyZWF0ZShkaXItXHUwMDNlZF9pbm9kZSwgZGVudHJ5KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0b21pY19vcGVuJiMzNDssCiAgICAmIzM0O2xvb2t1cF9vcGVuJiMzNDssCiAgICAmIzM0O2RlbnRyeV9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBWRlMgbG9naWMgaW4gZnMvbmFtZWkuYywgc3BlY2lmaWNhbGx5IHJlZmFjdG9yaW5nIGF0b21pY19vcGVuKCkgYW5kIGxvb2t1cF9vcGVuKCkgdG8gY2hhbmdlIGhvdyBjcmVhdGVfZXJyb3IgaXMgaGFuZGxlZCBkdXJpbmcgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVhZTIwZTM1MjRlZmM4NzY3ZDlkZjQyY2I1NmZiYWQzNzc2MGM1YzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAxNDoxNzoxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL25hbWVpLmMgYi9mcy9uYW1laS5jCmluZGV4IDE5Y2U0M2M5YTZlNjYyLi4yZWVmMmE0OWQzZjQxZSAxMDA2NDQKLS0tIGEvZnMvbmFtZWkuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9uYW1laS5jCkBAIC00MzM2LDUwICYjNDM7NDMzNiw3OCBAQCBzdGF0aWMgaW50IG1heV9vX2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwKIAlyZXR1cm4gc2VjdXJpdHlfaW5vZGVfY3JlYXRlKGRpci0mZ3Q7ZGVudHJ5LSZndDtkX2lub2RlLCBkZW50cnksIG1vZGUpOwogfQogCi0vKgotICogQXR0ZW1wdCB0byBhdG9taWNhbGx5IGxvb2sgdXAsIGNyZWF0ZSBhbmQgb3BlbiBhIGZpbGUgZnJvbSBhIG5lZ2F0aXZlCi0gKiBkZW50cnkuCi0gKgotICogUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwuICBUaGUgZmlsZSB3aWxsIGhhdmUgYmVlbiBjcmVhdGVkIGFuZCBhdHRhY2hlZCB0bwotICogQGZpbGUgYnkgdGhlIGZpbGVzeXN0ZW0gY2FsbGluZyBmaW5pc2hfb3BlbigpLgotICoKLSAqIElmIHRoZSBmaWxlIHdhcyBsb29rZWQgdXAgb25seSBvciBkaWRuJiMzOTt0IG5lZWQgY3JlYXRpbmcsIEZNT0RFX09QRU5FRCB3b24mIzM5O3QKLSAqIGJlIHNldC4gIFRoZSBjYWxsZXIgd2lsbCBuZWVkIHRvIHBlcmZvcm0gdGhlIG9wZW4gdGhlbXNlbHZlcy4gIEBwYXRoIHdpbGwKLSAqIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHBvaW50IHRvIHRoZSBuZXcgZGVudHJ5LiAgVGhpcyBtYXkgYmUgbmVnYXRpdmUuCi0gKgotICogUmV0dXJucyBhbiBlcnJvciBjb2RlIG90aGVyd2lzZS4KJiM0MzsvKioKJiM0MzsgKiBhdG9taWNfb3BlbigpIC0gYXR0ZW1wdCB0byBhdG9taWNhbGx5IGxvb2sgdXAsIGNyZWF0ZSBhbmQgb3BlbiBhIGZpbGUKJiM0MzsgKiBmcm9tIGEgbmVnYXRpdmUgZGVudHJ5LgomIzQzOyAqIEBwYXRoOiAgICAgICAgICBwYXJlbnQgZGlyZWN0b3J5IHBhdGgKJiM0MzsgKiBAZGVudHJ5OiAgICAgICAgY2hpbGQgdG8gLSZndDthdG9taWNfb3BlbigpCiYjNDM7ICogQGZpbGU6ICAgICAgICAgIGZpbGUgdG8gYXR0YWNoIGNoaWxkIHRvCiYjNDM7ICogQG9wZW5fZmxhZzogICAgIG9wZW4gZmxhZ3MKJiM0MzsgKiBAbW9kZTogICAgICAgICAgY3JlYXRlIG1vZGUKJiM0MzsgKiBAY3JlYXRlX2Vycm9yOiAgcmV0dXJuIHZhbHVlIGZyb20gbWF5X29fY3JlYXRlKCkKJiM0MzsgKgomIzQzOyAqIElmIGEgbm9uLWVycm9yIGRlbnRyeSBpcyByZXR1cm5lZCB0aGVuOiB3aGVuIEZNT0RFX09QRU5FRCBpcyBzZXQsCiYjNDM7ICogdGhlIGZpbGUgd2lsbCBoYXZlIGJlZW4gYXR0YWNoZWQgdG8gQGZpbGUgYnkgdGhlIGZpbGVzeXN0ZW0gY2FsbGluZwomIzQzOyAqIGZpbmlzaF9vcGVuKCkuIElmIEZNT0RFX09QRU5FRCBpc24mIzM5O3Qgc2V0LCB0aGUgZmlsZXN5c3RlbSBpbnN0ZWFkIGNhbGxlZAomIzQzOyAqIGZpbmlzaF9ub19vcGVuKCkgYW5kIHRoZSBjYWxsZXIgd2lsbCBuZWVkIHRvIHBlcmZvcm0gdGhlIG9wZW4gdGhlbXNlbHZlcy4KJiM0MzsgKgomIzQzOyAqIEZNT0RFX0NSRUFURUQgaXMgc2V0IHdoZW4gdGhlIGNhbGwgdG8gLSZndDthdG9taWNfb3BlbigpIGFjdHVhbGx5IGNyZWF0ZWQKJiM0MzsgKiB0aGUgZmlsZS4KJiM0MzsgKgomIzQzOyAqIFJldHVybnMgdGhlIG9wZW5lZC9sb29rZWQtdXAgZGVudHJ5IG9uIHN1Y2Nlc3Mgb3IgRVJSX1BUUigtRSkgb24gZmFpbHVyZS4KJiM0MzsgKiBPbiBlcnJvciwgYXRvbWljX29wZW4oKSBjb25zdW1lcyBAZGVudHJ5LgogICovCiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKIAkJCQkgIHN0cnVjdCBmaWxlICpmaWxlLAotCQkJCSAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKQomIzQzOwkJCQkgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSwgaW50IGNyZWF0ZV9lcnJvcikKIHsKIAlzdHJ1Y3QgZGVudHJ5ICpjb25zdCBERU5UUllfTk9UX1NFVCA9ICh2b2lkICopIC0xVUw7Ci0Jc3RydWN0IGlub2RlICpkaXIgPSAgcGF0aC0mZ3Q7ZGVudHJ5LSZndDtkX2lub2RlOwomIzQzOwlzdHJ1Y3QgaW5vZGUgKmRpcl9pbm9kZSA9IHBhdGgtJmd0O2RlbnRyeS0mZ3Q7ZF9pbm9kZTsKIAlpbnQgZXJyb3I7CiAKIAlmaWxlLSZndDtfX2ZfcGF0aC5kZW50cnkgPSBERU5UUllfTk9UX1NFVDsKIAlmaWxlLSZndDtfX2ZfcGF0aC5tbnQgPSBwYXRoLSZndDttbnQ7Ci0JZXJyb3IgPSBkaXItJmd0O2lfb3AtJmd0O2F0b21pY19vcGVuKGRpciwgZGVudHJ5LCBmaWxlLAomIzQzOwllcnJvciA9IGRpcl9pbm9kZS0mZ3Q7aV9vcC0mZ3Q7YXRvbWljX29wZW4oZGlyX2lub2RlLCBkZW50cnksIGZpbGUsCiAJCQkJICAgICAgIG9wZW5fdG9fbmFtZWlfZmxhZ3Mob3Blbl9mbGFnKSwgbW9kZSk7CiAJZF9sb29rdXBfZG9uZShkZW50cnkpOwomIzQzOwogCWlmICghZXJyb3IpIHsKIAkJaWYgKGZpbGUtJmd0O2ZfbW9kZSAmYW1wOyBGTU9ERV9PUEVORUQpIHsKLQkJCWlmICh1bmxpa2VseShkZW50cnkgIT0gZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeSkpIHsKJiM0MzsJCQkvKiBmaW5pc2hfb3BlbigpIGNhbGxlZCAqLwomIzQzOwkJCXN0cnVjdCBkZW50cnkgKm9wZW5lZCA9IGZpbGUtJmd0O2ZfcGF0aC5kZW50cnk7CiYjNDM7CQkJaWYgKHVubGlrZWx5KG9wZW5lZCAhPSBkZW50cnkpKSB7CiAJCQkJZHB1dChkZW50cnkpOwotCQkJCWRlbnRyeSA9IGRnZXQoZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeSk7CiYjNDM7CQkJCWRlbnRyeSA9IGRnZXQob3BlbmVkKTsKIAkJCX0KLQkJfSBlbHNlIGlmIChXQVJOX09OKGZpbGUtJmd0O2ZfcGF0aC5kZW50cnkgPT0gREVOVFJZX05PVF9TRVQpKSB7Ci0JCQllcnJvciA9IC1FSU87Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeSkgewomIzQzOwkJfSBlbHNlIGlmIChsaWtlbHkoZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeSAhPSBERU5UUllfTk9UX1NFVCkpIHsKJiM0MzsJCQkvKiBmaW5pc2hfbm9fb3BlbigpIGNhbGxlZCAqLwomIzQzOwkJCXN0cnVjdCBkZW50cnkgKnJlcGxhY2VkID0gZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeTsKJiM0MzsJCQlpZiAocmVwbGFjZWQpIHsKIAkJCQlkcHV0KGRlbnRyeSk7Ci0JCQkJZGVudHJ5ID0gZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeTsKJiM0MzsJCQkJZGVudHJ5ID0gcmVwbGFjZWQ7CiAJCQl9CiAJCQlpZiAodW5saWtlbHkoZF9pc19uZWdhdGl2ZShkZW50cnkpKSkKIAkJCQllcnJvciA9IC1FTk9FTlQ7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWNvbnN0IGNoYXIgKmZzbmFtZSA9IGRlbnRyeS0mZ3Q7ZF9zYi0mZ3Q7c190eXBlLSZndDtuYW1lOwomIzQzOwkJCVdBUk4oMSwgJiMzNDslczogLSZndDthdG9taWNfb3BlbigpIGxlZnQgZmlsZS0mZ3Q7Zl9wYXRoLmRlbnRyeSB1bnNldCFcbiYjMzQ7LAomIzQzOwkJCSAgICAgICAgZnNuYW1lKTsKJiM0MzsJCQllcnJvciA9IC1FSU87CiAJCX0KIAl9CiYjNDM7CiAJaWYgKGVycm9yKSB7CiYjNDM7CQlpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSAmYW1wOyZhbXA7IGVycm9yID09IC1FTk9FTlQpIHsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFNob3VsZCBoYXZlIGRvbmUgYSBjcmVhdGUsIGJ1dCBlcnJvcmVkIGJlZm9yZS4KJiM0MzsJCQkgKiBTb21lIGZpbGVzeXN0ZW1zIHJldHVybiAtRU5PRU5UIGRpcmVjdGx5IGluc3RlYWQgb2YKJiM0MzsJCQkgKiBjYWxsaW5nIGZpbmlzaF9ub19vcGVuKCkgd2l0aCBhIG5lZ2F0aXZlIGRlbnRyeTsKJiM0MzsJCQkgKiBlaXRoZXIgd2F5IGl0IHNob3VsZCBvbmx5IG1lYW4gdGhlIGNoaWxkIGRvZXNuJiMzOTt0IGV4aXN0LAomIzQzOwkJCSAqIHNvIGEgcmVmdXNlZCBjcmVhdGUgaXMgc2FmZSB0byByZWNvcmQgaGVyZS4KJiM0MzsJCQkgKi8KJiM0MzsJCQlhdWRpdF9pbm9kZV9jaGlsZChkaXJfaW5vZGUsIGRlbnRyeSwgQVVESVRfVFlQRV9DSElMRF9DUkVBVEUpOwomIzQzOwkJCWVycm9yID0gY3JlYXRlX2Vycm9yOwomIzQzOwkJfQogCQlkcHV0KGRlbnRyeSk7CiAJCWRlbnRyeSA9IEVSUl9QVFIoZXJyb3IpOwogCX0KQEAgLTQ0MzcsNyAmIzQzOzQ0NjUsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLAogCQlkZW50cnkgPSBOVUxMOwogCX0KIAlpZiAoZGVudHJ5LSZndDtkX2lub2RlKSB7Ci0JCS8qIENhY2hlZCBwb3NpdGl2ZSBkZW50cnk6IHdpbGwgb3BlbiBpbiBmX29wLSZndDtvcGVuICovCiYjNDM7CQkvKiBDYWNoZWQgcG9zaXRpdmUgZGVudHJ5OiB3aWxsIG9wZW4gaW4gZG9fb3BlbigpLiAqLwogCQlyZXR1cm4gZGVudHJ5OwogCX0KIApAQCAtNDQ3MSwxMCAmIzQzOzQ0OTksNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLAogCWlmIChkaXJfaW5vZGUtJmd0O2lfb3AtJmd0O2F0b21pY19vcGVuKSB7CiAJCWlmIChuZC0mZ3Q7ZmxhZ3MgJmFtcDsgTE9PS1VQX0RJUkVDVE9SWSkKIAkJCW9wZW5fZmxhZyB8PSBPX0RJUkVDVE9SWTsKLQkJZGVudHJ5ID0gYXRvbWljX29wZW4oJmFtcDtuZC0mZ3Q7cGF0aCwgZGVudHJ5LCBmaWxlLCBvcGVuX2ZsYWcsIG1vZGUpOwotCQlpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSAmYW1wOyZhbXA7IGRlbnRyeSA9PSBFUlJfUFRSKC1FTk9FTlQpKQotCQkJZGVudHJ5ID0gRVJSX1BUUihjcmVhdGVfZXJyb3IpOwotCQlyZXR1cm4gZGVudHJ5OwomIzQzOwkJcmV0dXJuIGF0b21pY19vcGVuKCZhbXA7bmQtJmd0O3BhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlLCBjcmVhdGVfZXJyb3IpOwogCX0KIAogCWlmIChkX2luX2xvb2t1cChkZW50cnkpKSB7CkBAIC00NDkwLDMwICYjNDM7NDUxNSwzNiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLAogCQkJZGVudHJ5ID0gcmVzOwogCQl9CiAJfQomIzQzOwlpZiAoZGVudHJ5LSZndDtkX2lub2RlIHx8ICEob3AtJmd0O29wZW5fZmxhZyAmYW1wOyBPX0NSRUFUKSkgewomIzQzOwkJLyogTm8gbmVlZCB0byBjcmVhdGUgYSBmaWxlLiBJZiBsb29rdXAgcmV0dXJuZWQgYSBwb3NpdGl2ZQomIzQzOwkJICogZGVudHJ5LCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBkb19vcGVuKCkuICovCiYjNDM7CQlyZXR1cm4gZGVudHJ5OwomIzQzOwl9CiAKLQkvKiBOZWdhdGl2ZSBkZW50cnksIGp1c3QgY3JlYXRlIHRoZSBmaWxlICovCi0JaWYgKCFkZW50cnktJmd0O2RfaW5vZGUgJmFtcDsmYW1wOyAob3Blbl9mbGFnICZhbXA7IE9fQ1JFQVQpKSB7Ci0JCS8qIGJ1dCBicmVhayB0aGUgZGlyZWN0b3J5IGxlYXNlIGZpcnN0ISAqLwotCQllcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIGRlbGVnYXRlZF9pbm9kZSk7Ci0JCWlmIChlcnJvcikKLQkJCWdvdG8gb3V0X2RwdXQ7Ci0KLQkJZmlsZS0mZ3Q7Zl9tb2RlIHw9IEZNT0RFX0NSRUFURUQ7Ci0JCWF1ZGl0X2lub2RlX2NoaWxkKGRpcl9pbm9kZSwgZGVudHJ5LCBBVURJVF9UWVBFX0NISUxEX0NSRUFURSk7Ci0JCWlmICghZGlyX2lub2RlLSZndDtpX29wLSZndDtjcmVhdGUpIHsKLQkJCWVycm9yID0gLUVBQ0NFUzsKLQkJCWdvdG8gb3V0X2RwdXQ7Ci0JCX0KJiM0MzsJLyogTmVnYXRpdmUgZGVudHJ5IHdpdGggT19DUkVBVCBmbGFnIHNldCAqLwomIzQzOwlhdWRpdF9pbm9kZV9jaGlsZChkaXJfaW5vZGUsIGRlbnRyeSwgQVVESVRfVFlQRV9DSElMRF9DUkVBVEUpOwogCi0JCWVycm9yID0gZGlyX2lub2RlLSZndDtpX29wLSZndDtjcmVhdGUoaWRtYXAsIGRpcl9pbm9kZSwgZGVudHJ5LAotCQkJCQkJbW9kZSwgb3Blbl9mbGFnICZhbXA7IE9fRVhDTCk7Ci0JCWlmIChlcnJvcikKLQkJCWdvdG8gb3V0X2RwdXQ7Ci0JfQotCWlmICh1bmxpa2VseShjcmVhdGVfZXJyb3IpICZhbXA7JmFtcDsgIWRlbnRyeS0mZ3Q7ZF9pbm9kZSkgewomIzQzOwlpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSkgewomIzQzOwkJLyogc2hvdWxkIGhhdmUgZG9uZSBhIGNyZWF0ZSwgYnV0IHdlIGFscmVhZHkgZXJyb3JlZCAqLwogCQllcnJvciA9IGNyZWF0ZV9lcnJvcjsKIAkJZ290byBvdXRfZHB1dDsKIAl9CiYjNDM7CiYjNDM7CWVycm9yID0gdHJ5X2JyZWFrX2RlbGVnKGRpcl9pbm9kZSwgTEVBU0VfQlJFQUtfRElSX0NSRUFURSwgZGVsZWdhdGVkX2lub2RlKTsKJiM0MzsJaWYgKGVycm9yKQomIzQzOwkJZ290byBvdXRfZHB1dDsKJiM0MzsKJiM0MzsJZmlsZS0mZ3Q7Zl9tb2RlIHw9IEZNT0RFX0NSRUFURUQ7CiYjNDM7CWlmICghZGlyX2lub2RlLSZndDtpX29wLSZndDtjcmVhdGUpIHsKJiM0MzsJCWVycm9yID0gLUVBQ0NFUzsKJiM0MzsJCWdvdG8gb3V0X2RwdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZXJyb3IgPSBkaXJfaW5vZGUtJmd0O2lfb3AtJmd0O2NyZWF0ZShpZG1hcCwgZGlyX2lub2RlLCBkZW50cnksCiYjNDM7CQkJCQltb2RlLCBvcGVuX2ZsYWcgJmFtcDsgT19FWENMKTsKJiM0MzsJaWYgKGVycm9yKQomIzQzOwkJZ290byBvdXRfZHB1dDsKJiM0MzsKIAlyZXR1cm4gZGVudHJ5OwogCiBvdXRfZHB1dDoKQEAgLTUwNTEsNyAmIzQzOzUwODIsNyBAQCBzdHJ1Y3QgZmlsZSAqZGVudHJ5X2NyZWF0ZShzdHJ1Y3QgcGF0aCAqcGF0aCwgaW50IGZsYWdzLCB1bW9kZV90IG1vZGUsCiAKIAkJLyogYXRvbWljX29wZW4gd2lsbCBkcHV0KGRlbnRyeSkgb24gZXJyb3IgKi8KIAkJZGdldChvcmlnX2RlbnRyeSk7Ci0JCWRlbnRyeSA9IGF0b21pY19vcGVuKHBhdGgsIGRlbnRyeSwgZmlsZSwgZmxhZ3MsIG1vZGUpOwomIzQzOwkJZGVudHJ5ID0gYXRvbWljX29wZW4ocGF0aCwgZGVudHJ5LCBmaWxlLCBmbGFncywgbW9kZSwgY3JlYXRlX2Vycm9yKTsKIAkJZXJyb3IgPSBQVFJfRVJSX09SX1pFUk8oZGVudHJ5KTsKIAogCQlpZiAoSVNfRVJSKGRlbnRyeSkpCkBAIC01MDYxLDkgJiM0Mzs1MDkyLDYgQEAgc3RydWN0IGZpbGUgKmRlbnRyeV9jcmVhdGUoc3RydWN0IHBhdGggKnBhdGgsIGludCBmbGFncywgdW1vZGVfdCBtb2RlLAogCQkJLyogRHJvcCB0aGUgZXh0cmEgcmVmZXJlbmNlICovCiAJCQlkcHV0KG9yaWdfZGVudHJ5KTsKIAotCQlpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSAmYW1wOyZhbXA7IGVycm9yID09IC1FTk9FTlQpCi0JCQllcnJvciA9IGNyZWF0ZV9lcnJvcjsKLQogCQlpZiAoIWVycm9yKSB7CiAJCQlpZiAoZmlsZS0mZ3Q7Zl9tb2RlICZhbXA7IEZNT0RFX0NSRUFURUQpCiAJCQkJZnNub3RpZnlfY3JlYXRlKGRpci0mZ3Q7ZF9pbm9kZSwgZGVudHJ5KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIyNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0NjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWRlMgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGZzL25hbWVpLmNgLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3Mgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZyBwb3RlbnRpYWwuIEl0IHNlZW1zIHRvIGJlIHJlZmFjdG9yaW5nIGBhdG9taWNfb3BlbigpYCBhbmQgYGxvb2t1cF9vcGVuKClgLCB3aGljaCBhcmUgY29yZSBjb21wb25lbnRzIG9mIHRoZSBWRlMmIzM5O3MgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4gbG9naWMg4oCTIGFsd2F5cyBhIGdvb2QgYXJlYSB0byBzY3J1dGluaXplLgoKU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBgY3JlYXRlX2Vycm9yYCBpbnRvIGBhdG9taWNfb3BlbigpYC4gIFRoaXMgc3VnZ2VzdHMgYSBzaGlmdCBpbiBob3cgZXJyb3JzIGZyb20gdGhlIGNyZWF0aW9uIHByb2Nlc3MgYXJlIGhhbmRsZWQsIHBhcnRpY3VsYXJseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgYG1heV9vX2NyZWF0ZSgpYCBjaGVja3MuICBgY3JlYXRlX2Vycm9yYCBpcyBub3cgY29uc3VtZWQgd2l0aGluIGBhdG9taWNfb3BlbigpYC4gVGhpcyBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGV5ZSBhcyBhIHBvdGVudGlhbCBhcmVhIGZvciBmdXp6aW5nIOKAkyBlcnJvciBoYW5kbGluZyBpcyBvZnRlbiB3aGVyZSBpbnRlcmVzdGluZyBhbmQgdW5leHBlY3RlZCBiZWhhdmlvciBhcmlzZXMuCgpJIGFsc28gc2VlIHRoYXQgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIGBsb29rdXBfb3BlbigpYCB3aGVuIGEgbmVnYXRpdmUgZGVudHJ5IGlzIGVuY291bnRlcmVkIGFuZCB0aGUgYE9fQ1JFQVRgIGZsYWcgaXMgc2V0LiAgVGhpcyBzZWN0aW9uIGFsc28gaGFzIGBhdWRpdF9pbm9kZV9jaGlsZCgpYCBjYWxscyBiZWluZyBhZGRlZCBvciBtb3ZlZCBhcm91bmQsIGZ1cnRoZXIgaW5kaWNhdGluZyBhIGNoYW5nZSBpbiB0aGUgY3JlYXRpb24gcGF0aC4gIFRoaXMgY291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlIGFzIHdlbGwuCgpUaGUgZnVuY3Rpb25zIG1vZGlmaWVkIGFyZTogYGF0b21pY19vcGVuYCwgYGxvb2t1cF9vcGVuYCwgYW5kIGBkZW50cnlfY3JlYXRlYC4gU28sIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBsb3ctbGV2ZWwgVkZTIHN0dWZmLgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZSBleGFjdCBjaGFuZ2VzLiBJbiBgYXRvbWljX29wZW5gLCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG5vdyBpbmNsdWRlcyBgaW50IGNyZWF0ZV9lcnJvcmAuICBUaGUgY29kZSB3aXRoaW4gY2hlY2tzIGZvciBhIHNwZWNpZmljIGVycm9yIChgLUVOT0VOVGApIGFuZCwgaWYgYGNyZWF0ZV9lcnJvcmAgaXMgc2V0LCBpdCBwZXJmb3JtcyBhbiBhdWRpdCBmb3IgYSBjaGlsZCBjcmVhdGlvbi4gVGhlIGltcG9ydGFudCB0aGluZyB0byBjb25zaWRlciBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoICpjb25zdW1lcyogYGNyZWF0ZV9lcnJvcmAgYW5kIHBvc3NpYmx5IGNoYW5nZXMgdGhlIGVycm9yIHJldHVybmVkLgoKSW4gYGxvb2t1cF9vcGVuYCwgdGhlIHBhdGNoIGhhcyBjaGFuZ2VkIHRvIGNhbGwgdGhlIG5ldyBgYXRvbWljX29wZW4oKWAgdGhhdCBub3cgdGFrZXMgYGNyZWF0ZV9lcnJvcmAuIEluIHRoZSBsYXRlciBwYXJ0cyBvZiBgbG9va3VwX29wZW5gIHRoZSBjb2RlIGhhcyBiZWVuIHJlb3JnYW5pemVkIHRvIGNvbnNvbGlkYXRlIGVycm9yIGhhbmRsaW5nIGFuZCB0aGUgYGF1ZGl0X2lub2RlX2NoaWxkKClgIGNhbGwuIFRoaXMgY2hhbmdlcyB0aGUgZmxvdy4KClRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIFZGUy4KCk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHllcywgdGhpcyBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIHRhcmdldCBmb3IgZnV6emluZy4gIEkmIzM5O20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIG9uIGBhdG9taWNfb3BlbmAsIGBsb29rdXBfb3BlbmAsIGFuZCBgZGVudHJ5X2NyZWF0ZWAgYmVjYXVzZSB0aGVzZSBhcmUgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0aGF0IGFyZSBjZW50cmFsIHRvIHRoZSBwYXRjaC4gSG93ZXZlciwgYGF0b21pY19vcGVuYCBhbmQgYGxvb2t1cF9vcGVuYCBhcmUgZGVmaW5lZCBhcyAqc3RhdGljKiBpbiBgZnMvbmFtZWkuY2AuICBJIHdpbGwgY2hlY2sgaWYgdGhleSBhcmUgZGlyZWN0bHkgY2FsbGFibGUuIElmIHRoZXkgYXJlIG5vdCBkaXJlY3RseSBjYWxsYWJsZSwgSSBuZWVkIHRvIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGVudHJ5IHBvaW50cy4gTGV0IG1lIGV4YW1pbmUgYGZzL25hbWVpLmNgIHRvIGNvbmZpcm0gbXkgZmluZGluZ3Mgb24gY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApP3N0cnVjdCBkZW50cnkgXFwqYXRvbWljX29wZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uYW1laS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25hbWVpLmM9NDMyMD1zdGF0aWMgaW50IG1heV9vX2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbi0tXG5mcy9uYW1laS5jLTQzNTktICovXG5mcy9uYW1laS5jOjQzNjA6c3RhdGljIHN0cnVjdCBkZW50cnkgKmF0b21pY19vcGVuKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5mcy9uYW1laS5jLTQzNjEtXHRcdFx0XHQgIHN0cnVjdCBmaWxlICpmaWxlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MzQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLi4uCgoqKkRpZ2dpbmcgaW50byB0aGUgRmlsZXN5c3RlbSBJbnRlcm5hbHMqKgoKQWxyaWdodCwgdGltZSB0byBmb2N1cy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCBmaWxlIGNyZWF0aW9uIGFuZCBsb29rdXBzIHVuZGVyIHRoZSBob29kLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRvIGV4YW1pbmUgYSBzcGVjaWZpYyBwYWlyIG9mIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBrZXkgcGxheWVycyBpbiB0aGlzIHByb2Nlc3MuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY2xvc2VseSBpbnNwZWN0aW5nIGBsb29rdXBfb3BlbmAgYW5kIGBkZW50cnlfY3JlYXRlYC4gVGhlc2UgYXJlIGxpa2VseSB0byBiZSBpbnZvbHZlZCBkaXJlY3RseSBpbiBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIGJvdGggdGhlIGluaXRpYWwgbG9va3VwIGFuZCB0aGUgZXZlbnR1YWwgY3JlYXRpb24gb2YgYSBuZXcgZmlsZSBzeXN0ZW0gZW50cnksIHJpZ2h0PyBVbmRlcnN0YW5kaW5nIHRoZWlyIGludGVyYWN0aW9uIHdpbGwgcHJvYmFibHkgcHJvdmlkZSBzb21lIGNyaXRpY2FsIGluc2lnaHQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGVzZSBmdW5jdGlvbnMgaGF2ZSB0byB0ZWFjaCB1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApP3N0cnVjdCBkZW50cnkgXFwqbG9va3VwX29wZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uYW1laS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25hbWVpLmM9NDM2MD1zdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9uYW1laS5jLTQ0MzEtICovXG5mcy9uYW1laS5jOjQ0MzI6c3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbmZzL25hbWVpLmMtNDQzMy1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NDkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVudHJ5IENyZWF0aW9uIENvbnVuZHJ1bXMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkZW50cnlfY3JlYXRlYCBhZ2Fpbi4gSSYjMzk7bSBmb2N1c2luZyBpbiBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gaG93IHdlIHN0cnVjdHVyZSB0aGUgZmlsZXN5c3RlbSBuYW1lc3BhY2UsIGFuZCB0aGVyZWZvcmUgcGVyZm9ybWFuY2UgYW5kIGNvbmN1cnJlbmN5LiBJdCYjMzk7cyB0aGUgcG9pbnQgb2YgaW5zZXJ0aW9uIG9mIG5ldyBkaXJlY3RvcnkgZW50cmllcy4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIGJlaGF2aW91ci4KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4gSG93IGRvZXMgdGhlIFZGUyBoYW5kbGUgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIGEgbmV3IGBkZW50cnlgIHN0cnVjdHVyZT8gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGJleW9uZCB0aGUgb2J2aW91cyBwYXJlbnQgYGRlbnRyeWAgYW5kIHRoZSBuYW1lPyBBcmUgd2UgZGVhbGluZyB3aXRoIGFueSBsb2NraW5nIGhlcmUsIGFuZCBpZiBzbywgd2hhdCYjMzk7cyB0aGUgZ3JhbnVsYXJpdHkgYW5kIHBvdGVudGlhbCBmb3IgY29udGVudGlvbj8gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3Igc3VidGxlIGNvbmN1cnJlbmN5IGlzc3Vlcy4gV2hhdCBpcyB0aGUgbGlmZWN5Y2xlIG9mIHRoaXMgbmV3bHkgY3JlYXRlZCBkZW50cnkgd2l0aGluIHRoZSBmaWxlc3lzdGVtLiBBbmQgaXMgdGhpcyBkZW50cnkgYmVpbmcgaW5pdGlhbGl6ZWQgaW4gdGhlIGNvcnJlY3QgZm9ybWF0PwoKSSBuZWVkIHRvIHRyYWNlIHRoZSBhbGxvY2F0aW9uIHBhdGgsIGVuc3VyaW5nIHRoYXQgbWVtb3J5IG1hbmFnZW1lbnQgaXMgZWZmaWNpZW50IGFuZCB0aGF0IHdlIGFyZW4mIzM5O3QgaW50cm9kdWNpbmcgYW55IGZyYWdtZW50YXRpb24gaXNzdWVzLiBBbHNvLCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgY2FyZWZ1bGx5IGF0IGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgdGhyZWFkcyBjcmVhdGluZyBkZW50cmllcyBzaW11bHRhbmVvdXNseSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgdGhlc2UgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGlub2RlIGFyZSBiZWluZyBoYW5kbGVkLCBhbmQgbG9vayBmb3IgYW55IGluY29uc2lzdGVuY2llcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYW5kIGhvdyB0aGUgYGRlbnRyeWAgaXMgbGlua2VkIGludG8gdGhlIGRlbnRyeSBjYWNoZSwgYW5kIGhvdyBpdCBpcyBwcm90ZWN0ZWQuIEZpbmFsbHksIEkmIzM5O20gdGhpbmtpbmcgSSBtYXkgbmVlZCB0byBsb29rIGF0IG1lbW9yeSByZWNsYW1hdGlvbiBhbmQgaG93IHdlIHByZXZlbnQgYW55IGxlYWtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/c3RydWN0IGZpbGUgXFwqZGVudHJ5X2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25hbWVpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmFtZWkuYz01MDM5PUVYUE9SVF9TWU1CT0woc3RhcnRfY3JlYXRpbmdfdXNlcl9wYXRoKTtcbi0tXG5mcy9uYW1laS5jLTUwNTctICovXG5mcy9uYW1laS5jOjUwNTg6c3RydWN0IGZpbGUgKmRlbnRyeV9jcmVhdGUoc3RydWN0IHBhdGggKnBhdGgsIGludCBmbGFncywgdW1vZGVfdCBtb2RlLFxuZnMvbmFtZWkuYy01MDU5LVx0XHRcdCAgIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMzMKCQkJCQkJCW91dHB1dDogMTA4CgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFZGUyBDb3JlKioKCk9rYXksIHRoZXNlIGFyZSBzb2xpZCBjaG9pY2VzIGZvciBmb2N1cyBzeW1ib2xzIOKAkyBgYXRvbWljX29wZW5gLCBgbG9va3VwX29wZW5gLCBhbmQgYGRlbnRyeV9jcmVhdGVgLiBUaG9zZSBkZWZpbml0ZWx5IGhpdCB0aGUgY29yZSBvZiB3aGF0JiMzOTtzIGJlaW5nIHRvdWNoZWQgaGVyZS4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFyZWE/IEdpdmVuIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgY29yZSBWRlMsIEkgZG9u4oCZdCB0aGluayBhbnkgc3BlY2lmaWMgY29uZmlncyBhcmUgbmVlZGVkLiBJdCYjMzk7cyBmdW5kYW1lbnRhbCBlbm91Z2ggdGhhdCB0aGUgc3RhbmRhcmQgZnV6emluZyBzZXR1cCBzaG91bGQgc3VmZmljZS4KCkFscmlnaHQsIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgVkZTLCBzcGVjaWZpY2FsbHkgaW4gYGZzL25hbWVpLmNgLCBhbmQgY2hhbmdpbmcgaG93IGBjcmVhdGVfZXJyb3JgIGlzIGhhbmRsZWQgaW4gZmlsZSBjcmVhdGlvbiBhbmQgdGhlIGF0b21pYyBvcGVuIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsJiMzOTtzIGNyaXRpY2FsIHBhdGguIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCBpdCAqYWJzb2x1dGVseSogd2FycmFudHMgZnV6emluZy4gVGhlIHBhdGNoIGVmZmVjdGl2ZWx5IHJlZmFjdG9ycyBgYXRvbWljX29wZW5gIGFuZCBgbG9va3VwX29wZW5gLCB3aGljaCBpcyBjb3JlIGxvZ2ljLCBzbyBmdXp6aW5nIGlzIGFwcHJvcHJpYXRlLiBBbmQsIEVuYWJsZUNvbmZpZ3Mgc2hvdWxkIGJlIGVtcHR5IGZvciB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRvbWljX29wZW4mIzM0OywKICAgICYjMzQ7bG9va3VwX29wZW4mIzM0OywKICAgICYjMzQ7ZGVudHJ5X2NyZWF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFZGUyBsb2dpYyBpbiBmcy9uYW1laS5jLCBzcGVjaWZpY2FsbHkgcmVmYWN0b3JpbmcgYXRvbWljX29wZW4oKSBhbmQgbG9va3VwX29wZW4oKSB0byBjaGFuZ2UgaG93IGNyZWF0ZV9lcnJvciBpcyBoYW5kbGVkIGR1cmluZyBmaWxlIGNyZWF0aW9uIGFuZCBhdG9taWMgb3Blbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdG9taWNfb3BlbiYjMzQ7LAogICAgJiMzNDtsb29rdXBfb3BlbiYjMzQ7LAogICAgJiMzNDtkZW50cnlfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgVkZTIGxvZ2ljIGluIGZzL25hbWVpLmMsIHNwZWNpZmljYWxseSByZWZhY3RvcmluZyBhdG9taWNfb3BlbigpIGFuZCBsb29rdXBfb3BlbigpIHRvIGNoYW5nZSBob3cgY3JlYXRlX2Vycm9yIGlzIGhhbmRsZWQgZHVyaW5nIGZpbGUgY3JlYXRpb24gYW5kIGF0b21pYyBvcGVuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6MTc6MTUuMjc3MTA3MTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MzQ2MjM5MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRvbWljX29wZW5cIixcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJkZW50cnlfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBWRlMgbG9naWMgaW4gZnMvbmFtZWkuYywgc3BlY2lmaWNhbGx5IHJlZmFjdG9yaW5nIGF0b21pY19vcGVuKCkgYW5kIGxvb2t1cF9vcGVuKCkgdG8gY2hhbmdlIGhvdyBjcmVhdGVfZXJyb3IgaXMgaGFuZGxlZCBkdXJpbmcgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjE1LjI3NzExNjEzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA4ODIwMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWFlMjBlMzUyNGVmYzg3NjdkOWRmNDJjYjU2ZmJhZDM3NzYwYzVjOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxMSAxNDoxNzoxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9uYW1laS5jIGIvZnMvbmFtZWkuY1xcbmluZGV4IDE5Y2U0M2M5YTZlNjYyLi4yZWVmMmE0OWQzZjQxZSAxMDA2NDRcXG4tLS0gYS9mcy9uYW1laS5jXFxuKysrIGIvZnMvbmFtZWkuY1xcbkBAIC00MzM2LDUwICs0MzM2LDc4IEBAIHN0YXRpYyBpbnQgbWF5X29fY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbiBcXHRyZXR1cm4gc2VjdXJpdHlfaW5vZGVfY3JlYXRlKGRpci1cXHUwMDNlZGVudHJ5LVxcdTAwM2VkX2lub2RlLCBkZW50cnksIG1vZGUpO1xcbiB9XFxuIFxcbi0vKlxcbi0gKiBBdHRlbXB0IHRvIGF0b21pY2FsbHkgbG9vayB1cCwgY3JlYXRlIGFuZCBvcGVuIGEgZmlsZSBmcm9tIGEgbmVnYXRpdmVcXG4tICogZGVudHJ5Llxcbi0gKlxcbi0gKiBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bC4gIFRoZSBmaWxlIHdpbGwgaGF2ZSBiZWVuIGNyZWF0ZWQgYW5kIGF0dGFjaGVkIHRvXFxuLSAqIEBmaWxlIGJ5IHRoZSBmaWxlc3lzdGVtIGNhbGxpbmcgZmluaXNoX29wZW4oKS5cXG4tICpcXG4tICogSWYgdGhlIGZpbGUgd2FzIGxvb2tlZCB1cCBvbmx5IG9yIGRpZG4ndCBuZWVkIGNyZWF0aW5nLCBGTU9ERV9PUEVORUQgd29uJ3RcXG4tICogYmUgc2V0LiAgVGhlIGNhbGxlciB3aWxsIG5lZWQgdG8gcGVyZm9ybSB0aGUgb3BlbiB0aGVtc2VsdmVzLiAgQHBhdGggd2lsbFxcbi0gKiBoYXZlIGJlZW4gdXBkYXRlZCB0byBwb2ludCB0byB0aGUgbmV3IGRlbnRyeS4gIFRoaXMgbWF5IGJlIG5lZ2F0aXZlLlxcbi0gKlxcbi0gKiBSZXR1cm5zIGFuIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxcbisvKipcXG4rICogYXRvbWljX29wZW4oKSAtIGF0dGVtcHQgdG8gYXRvbWljYWxseSBsb29rIHVwLCBjcmVhdGUgYW5kIG9wZW4gYSBmaWxlXFxuKyAqIGZyb20gYSBuZWdhdGl2ZSBkZW50cnkuXFxuKyAqIEBwYXRoOiAgICAgICAgICBwYXJlbnQgZGlyZWN0b3J5IHBhdGhcXG4rICogQGRlbnRyeTogICAgICAgIGNoaWxkIHRvIC1cXHUwMDNlYXRvbWljX29wZW4oKVxcbisgKiBAZmlsZTogICAgICAgICAgZmlsZSB0byBhdHRhY2ggY2hpbGQgdG9cXG4rICogQG9wZW5fZmxhZzogICAgIG9wZW4gZmxhZ3NcXG4rICogQG1vZGU6ICAgICAgICAgIGNyZWF0ZSBtb2RlXFxuKyAqIEBjcmVhdGVfZXJyb3I6ICByZXR1cm4gdmFsdWUgZnJvbSBtYXlfb19jcmVhdGUoKVxcbisgKlxcbisgKiBJZiBhIG5vbi1lcnJvciBkZW50cnkgaXMgcmV0dXJuZWQgdGhlbjogd2hlbiBGTU9ERV9PUEVORUQgaXMgc2V0LFxcbisgKiB0aGUgZmlsZSB3aWxsIGhhdmUgYmVlbiBhdHRhY2hlZCB0byBAZmlsZSBieSB0aGUgZmlsZXN5c3RlbSBjYWxsaW5nXFxuKyAqIGZpbmlzaF9vcGVuKCkuIElmIEZNT0RFX09QRU5FRCBpc24ndCBzZXQsIHRoZSBmaWxlc3lzdGVtIGluc3RlYWQgY2FsbGVkXFxuKyAqIGZpbmlzaF9ub19vcGVuKCkgYW5kIHRoZSBjYWxsZXIgd2lsbCBuZWVkIHRvIHBlcmZvcm0gdGhlIG9wZW4gdGhlbXNlbHZlcy5cXG4rICpcXG4rICogRk1PREVfQ1JFQVRFRCBpcyBzZXQgd2hlbiB0aGUgY2FsbCB0byAtXFx1MDAzZWF0b21pY19vcGVuKCkgYWN0dWFsbHkgY3JlYXRlZFxcbisgKiB0aGUgZmlsZS5cXG4rICpcXG4rICogUmV0dXJucyB0aGUgb3BlbmVkL2xvb2tlZC11cCBkZW50cnkgb24gc3VjY2VzcyBvciBFUlJfUFRSKC1FKSBvbiBmYWlsdXJlLlxcbisgKiBPbiBlcnJvciwgYXRvbWljX29wZW4oKSBjb25zdW1lcyBAZGVudHJ5LlxcbiAgKi9cXG4gc3RhdGljIHN0cnVjdCBkZW50cnkgKmF0b21pY19vcGVuKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IGZpbGUgKmZpbGUsXFxuLVxcdFxcdFxcdFxcdCAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKVxcbitcXHRcXHRcXHRcXHQgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSwgaW50IGNyZWF0ZV9lcnJvcilcXG4ge1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpjb25zdCBERU5UUllfTk9UX1NFVCA9ICh2b2lkICopIC0xVUw7XFxuLVxcdHN0cnVjdCBpbm9kZSAqZGlyID0gIHBhdGgtXFx1MDAzZWRlbnRyeS1cXHUwMDNlZF9pbm9kZTtcXG4rXFx0c3RydWN0IGlub2RlICpkaXJfaW5vZGUgPSBwYXRoLVxcdTAwM2VkZW50cnktXFx1MDAzZWRfaW5vZGU7XFxuIFxcdGludCBlcnJvcjtcXG4gXFxuIFxcdGZpbGUtXFx1MDAzZV9fZl9wYXRoLmRlbnRyeSA9IERFTlRSWV9OT1RfU0VUO1xcbiBcXHRmaWxlLVxcdTAwM2VfX2ZfcGF0aC5tbnQgPSBwYXRoLVxcdTAwM2VtbnQ7XFxuLVxcdGVycm9yID0gZGlyLVxcdTAwM2VpX29wLVxcdTAwM2VhdG9taWNfb3BlbihkaXIsIGRlbnRyeSwgZmlsZSxcXG4rXFx0ZXJyb3IgPSBkaXJfaW5vZGUtXFx1MDAzZWlfb3AtXFx1MDAzZWF0b21pY19vcGVuKGRpcl9pbm9kZSwgZGVudHJ5LCBmaWxlLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgb3Blbl90b19uYW1laV9mbGFncyhvcGVuX2ZsYWcpLCBtb2RlKTtcXG4gXFx0ZF9sb29rdXBfZG9uZShkZW50cnkpO1xcbitcXG4gXFx0aWYgKCFlcnJvcikge1xcbiBcXHRcXHRpZiAoZmlsZS1cXHUwMDNlZl9tb2RlIFxcdTAwMjYgRk1PREVfT1BFTkVEKSB7XFxuLVxcdFxcdFxcdGlmICh1bmxpa2VseShkZW50cnkgIT0gZmlsZS1cXHUwMDNlZl9wYXRoLmRlbnRyeSkpIHtcXG4rXFx0XFx0XFx0LyogZmluaXNoX29wZW4oKSBjYWxsZWQgKi9cXG4rXFx0XFx0XFx0c3RydWN0IGRlbnRyeSAqb3BlbmVkID0gZmlsZS1cXHUwMDNlZl9wYXRoLmRlbnRyeTtcXG4rXFx0XFx0XFx0aWYgKHVubGlrZWx5KG9wZW5lZCAhPSBkZW50cnkpKSB7XFxuIFxcdFxcdFxcdFxcdGRwdXQoZGVudHJ5KTtcXG4tXFx0XFx0XFx0XFx0ZGVudHJ5ID0gZGdldChmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5KTtcXG4rXFx0XFx0XFx0XFx0ZGVudHJ5ID0gZGdldChvcGVuZWQpO1xcbiBcXHRcXHRcXHR9XFxuLVxcdFxcdH0gZWxzZSBpZiAoV0FSTl9PTihmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5ID09IERFTlRSWV9OT1RfU0VUKSkge1xcbi1cXHRcXHRcXHRlcnJvciA9IC1FSU87XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGlmIChmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5KSB7XFxuK1xcdFxcdH0gZWxzZSBpZiAobGlrZWx5KGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnkgIT0gREVOVFJZX05PVF9TRVQpKSB7XFxuK1xcdFxcdFxcdC8qIGZpbmlzaF9ub19vcGVuKCkgY2FsbGVkICovXFxuK1xcdFxcdFxcdHN0cnVjdCBkZW50cnkgKnJlcGxhY2VkID0gZmlsZS1cXHUwMDNlZl9wYXRoLmRlbnRyeTtcXG4rXFx0XFx0XFx0aWYgKHJlcGxhY2VkKSB7XFxuIFxcdFxcdFxcdFxcdGRwdXQoZGVudHJ5KTtcXG4tXFx0XFx0XFx0XFx0ZGVudHJ5ID0gZmlsZS1cXHUwMDNlZl9wYXRoLmRlbnRyeTtcXG4rXFx0XFx0XFx0XFx0ZGVudHJ5ID0gcmVwbGFjZWQ7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0aWYgKHVubGlrZWx5KGRfaXNfbmVnYXRpdmUoZGVudHJ5KSkpXFxuIFxcdFxcdFxcdFxcdGVycm9yID0gLUVOT0VOVDtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0Y29uc3QgY2hhciAqZnNuYW1lID0gZGVudHJ5LVxcdTAwM2VkX3NiLVxcdTAwM2VzX3R5cGUtXFx1MDAzZW5hbWU7XFxuK1xcdFxcdFxcdFdBUk4oMSwgXFxcIiVzOiAtXFx1MDAzZWF0b21pY19vcGVuKCkgbGVmdCBmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5IHVuc2V0IVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgICAgICBmc25hbWUpO1xcbitcXHRcXHRcXHRlcnJvciA9IC1FSU87XFxuIFxcdFxcdH1cXG4gXFx0fVxcbitcXG4gXFx0aWYgKGVycm9yKSB7XFxuK1xcdFxcdGlmICh1bmxpa2VseShjcmVhdGVfZXJyb3IpIFxcdTAwMjZcXHUwMDI2IGVycm9yID09IC1FTk9FTlQpIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogU2hvdWxkIGhhdmUgZG9uZSBhIGNyZWF0ZSwgYnV0IGVycm9yZWQgYmVmb3JlLlxcbitcXHRcXHRcXHQgKiBTb21lIGZpbGVzeXN0ZW1zIHJldHVybiAtRU5PRU5UIGRpcmVjdGx5IGluc3RlYWQgb2ZcXG4rXFx0XFx0XFx0ICogY2FsbGluZyBmaW5pc2hfbm9fb3BlbigpIHdpdGggYSBuZWdhdGl2ZSBkZW50cnk7XFxuK1xcdFxcdFxcdCAqIGVpdGhlciB3YXkgaXQgc2hvdWxkIG9ubHkgbWVhbiB0aGUgY2hpbGQgZG9lc24ndCBleGlzdCxcXG4rXFx0XFx0XFx0ICogc28gYSByZWZ1c2VkIGNyZWF0ZSBpcyBzYWZlIHRvIHJlY29yZCBoZXJlLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcXG4rXFx0XFx0XFx0ZXJyb3IgPSBjcmVhdGVfZXJyb3I7XFxuK1xcdFxcdH1cXG4gXFx0XFx0ZHB1dChkZW50cnkpO1xcbiBcXHRcXHRkZW50cnkgPSBFUlJfUFRSKGVycm9yKTtcXG4gXFx0fVxcbkBAIC00NDM3LDcgKzQ0NjUsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRcXHRkZW50cnkgPSBOVUxMO1xcbiBcXHR9XFxuIFxcdGlmIChkZW50cnktXFx1MDAzZWRfaW5vZGUpIHtcXG4tXFx0XFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGZfb3AtXFx1MDAzZW9wZW4gKi9cXG4rXFx0XFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGRvX29wZW4oKS4gKi9cXG4gXFx0XFx0cmV0dXJuIGRlbnRyeTtcXG4gXFx0fVxcbiBcXG5AQCAtNDQ3MSwxMCArNDQ5OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdGlmIChkaXJfaW5vZGUtXFx1MDAzZWlfb3AtXFx1MDAzZWF0b21pY19vcGVuKSB7XFxuIFxcdFxcdGlmIChuZC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMT09LVVBfRElSRUNUT1JZKVxcbiBcXHRcXHRcXHRvcGVuX2ZsYWcgfD0gT19ESVJFQ1RPUlk7XFxuLVxcdFxcdGRlbnRyeSA9IGF0b21pY19vcGVuKFxcdTAwMjZuZC1cXHUwMDNlcGF0aCwgZGVudHJ5LCBmaWxlLCBvcGVuX2ZsYWcsIG1vZGUpO1xcbi1cXHRcXHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcXHUwMDI2XFx1MDAyNiBkZW50cnkgPT0gRVJSX1BUUigtRU5PRU5UKSlcXG4tXFx0XFx0XFx0ZGVudHJ5ID0gRVJSX1BUUihjcmVhdGVfZXJyb3IpO1xcbi1cXHRcXHRyZXR1cm4gZGVudHJ5O1xcbitcXHRcXHRyZXR1cm4gYXRvbWljX29wZW4oXFx1MDAyNm5kLVxcdTAwM2VwYXRoLCBkZW50cnksIGZpbGUsIG9wZW5fZmxhZywgbW9kZSwgY3JlYXRlX2Vycm9yKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGRfaW5fbG9va3VwKGRlbnRyeSkpIHtcXG5AQCAtNDQ5MCwzMCArNDUxNSwzNiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRcXHRcXHRkZW50cnkgPSByZXM7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbitcXHRpZiAoZGVudHJ5LVxcdTAwM2VkX2lub2RlIHx8ICEob3AtXFx1MDAzZW9wZW5fZmxhZyBcXHUwMDI2IE9fQ1JFQVQpKSB7XFxuK1xcdFxcdC8qIE5vIG5lZWQgdG8gY3JlYXRlIGEgZmlsZS4gSWYgbG9va3VwIHJldHVybmVkIGEgcG9zaXRpdmVcXG4rXFx0XFx0ICogZGVudHJ5LCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBkb19vcGVuKCkuICovXFxuK1xcdFxcdHJldHVybiBkZW50cnk7XFxuK1xcdH1cXG4gXFxuLVxcdC8qIE5lZ2F0aXZlIGRlbnRyeSwganVzdCBjcmVhdGUgdGhlIGZpbGUgKi9cXG4tXFx0aWYgKCFkZW50cnktXFx1MDAzZWRfaW5vZGUgXFx1MDAyNlxcdTAwMjYgKG9wZW5fZmxhZyBcXHUwMDI2IE9fQ1JFQVQpKSB7XFxuLVxcdFxcdC8qIGJ1dCBicmVhayB0aGUgZGlyZWN0b3J5IGxlYXNlIGZpcnN0ISAqL1xcbi1cXHRcXHRlcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIGRlbGVnYXRlZF9pbm9kZSk7XFxuLVxcdFxcdGlmIChlcnJvcilcXG4tXFx0XFx0XFx0Z290byBvdXRfZHB1dDtcXG4tXFxuLVxcdFxcdGZpbGUtXFx1MDAzZWZfbW9kZSB8PSBGTU9ERV9DUkVBVEVEO1xcbi1cXHRcXHRhdWRpdF9pbm9kZV9jaGlsZChkaXJfaW5vZGUsIGRlbnRyeSwgQVVESVRfVFlQRV9DSElMRF9DUkVBVEUpO1xcbi1cXHRcXHRpZiAoIWRpcl9pbm9kZS1cXHUwMDNlaV9vcC1cXHUwMDNlY3JlYXRlKSB7XFxuLVxcdFxcdFxcdGVycm9yID0gLUVBQ0NFUztcXG4tXFx0XFx0XFx0Z290byBvdXRfZHB1dDtcXG4tXFx0XFx0fVxcbitcXHQvKiBOZWdhdGl2ZSBkZW50cnkgd2l0aCBPX0NSRUFUIGZsYWcgc2V0ICovXFxuK1xcdGF1ZGl0X2lub2RlX2NoaWxkKGRpcl9pbm9kZSwgZGVudHJ5LCBBVURJVF9UWVBFX0NISUxEX0NSRUFURSk7XFxuIFxcbi1cXHRcXHRlcnJvciA9IGRpcl9pbm9kZS1cXHUwMDNlaV9vcC1cXHUwMDNlY3JlYXRlKGlkbWFwLCBkaXJfaW5vZGUsIGRlbnRyeSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0bW9kZSwgb3Blbl9mbGFnIFxcdTAwMjYgT19FWENMKTtcXG4tXFx0XFx0aWYgKGVycm9yKVxcbi1cXHRcXHRcXHRnb3RvIG91dF9kcHV0O1xcbi1cXHR9XFxuLVxcdGlmICh1bmxpa2VseShjcmVhdGVfZXJyb3IpIFxcdTAwMjZcXHUwMDI2ICFkZW50cnktXFx1MDAzZWRfaW5vZGUpIHtcXG4rXFx0aWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikpIHtcXG4rXFx0XFx0Lyogc2hvdWxkIGhhdmUgZG9uZSBhIGNyZWF0ZSwgYnV0IHdlIGFscmVhZHkgZXJyb3JlZCAqL1xcbiBcXHRcXHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcXG4gXFx0XFx0Z290byBvdXRfZHB1dDtcXG4gXFx0fVxcbitcXG4rXFx0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBkZWxlZ2F0ZWRfaW5vZGUpO1xcbitcXHRpZiAoZXJyb3IpXFxuK1xcdFxcdGdvdG8gb3V0X2RwdXQ7XFxuK1xcbitcXHRmaWxlLVxcdTAwM2VmX21vZGUgfD0gRk1PREVfQ1JFQVRFRDtcXG4rXFx0aWYgKCFkaXJfaW5vZGUtXFx1MDAzZWlfb3AtXFx1MDAzZWNyZWF0ZSkge1xcbitcXHRcXHRlcnJvciA9IC1FQUNDRVM7XFxuK1xcdFxcdGdvdG8gb3V0X2RwdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGVycm9yID0gZGlyX2lub2RlLVxcdTAwM2VpX29wLVxcdTAwM2VjcmVhdGUoaWRtYXAsIGRpcl9pbm9kZSwgZGVudHJ5LFxcbitcXHRcXHRcXHRcXHRcXHRtb2RlLCBvcGVuX2ZsYWcgXFx1MDAyNiBPX0VYQ0wpO1xcbitcXHRpZiAoZXJyb3IpXFxuK1xcdFxcdGdvdG8gb3V0X2RwdXQ7XFxuK1xcbiBcXHRyZXR1cm4gZGVudHJ5O1xcbiBcXG4gb3V0X2RwdXQ6XFxuQEAgLTUwNTEsNyArNTA4Miw3IEBAIHN0cnVjdCBmaWxlICpkZW50cnlfY3JlYXRlKHN0cnVjdCBwYXRoICpwYXRoLCBpbnQgZmxhZ3MsIHVtb2RlX3QgbW9kZSxcXG4gXFxuIFxcdFxcdC8qIGF0b21pY19vcGVuIHdpbGwgZHB1dChkZW50cnkpIG9uIGVycm9yICovXFxuIFxcdFxcdGRnZXQob3JpZ19kZW50cnkpO1xcbi1cXHRcXHRkZW50cnkgPSBhdG9taWNfb3BlbihwYXRoLCBkZW50cnksIGZpbGUsIGZsYWdzLCBtb2RlKTtcXG4rXFx0XFx0ZGVudHJ5ID0gYXRvbWljX29wZW4ocGF0aCwgZGVudHJ5LCBmaWxlLCBmbGFncywgbW9kZSwgY3JlYXRlX2Vycm9yKTtcXG4gXFx0XFx0ZXJyb3IgPSBQVFJfRVJSX09SX1pFUk8oZGVudHJ5KTtcXG4gXFxuIFxcdFxcdGlmIChJU19FUlIoZGVudHJ5KSlcXG5AQCAtNTA2MSw5ICs1MDkyLDYgQEAgc3RydWN0IGZpbGUgKmRlbnRyeV9jcmVhdGUoc3RydWN0IHBhdGggKnBhdGgsIGludCBmbGFncywgdW1vZGVfdCBtb2RlLFxcbiBcXHRcXHRcXHQvKiBEcm9wIHRoZSBleHRyYSByZWZlcmVuY2UgKi9cXG4gXFx0XFx0XFx0ZHB1dChvcmlnX2RlbnRyeSk7XFxuIFxcbi1cXHRcXHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcXHUwMDI2XFx1MDAyNiBlcnJvciA9PSAtRU5PRU5UKVxcbi1cXHRcXHRcXHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcXG4tXFxuIFxcdFxcdGlmICghZXJyb3IpIHtcXG4gXFx0XFx0XFx0aWYgKGZpbGUtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IEZNT0RFX0NSRUFURUQpXFxuIFxcdFxcdFxcdFxcdGZzbm90aWZ5X2NyZWF0ZShkaXItXFx1MDAzZWRfaW5vZGUsIGRlbnRyeSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjE1Ljg4ODc0NDA3OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYyMjI5Nzg4NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRvbWljX29wZW5cIixcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJkZW50cnlfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBWRlMgbG9naWMgaW4gZnMvbmFtZWkuYywgc3BlY2lmaWNhbGx5IHJlZmFjdG9yaW5nIGF0b21pY19vcGVuKCkgYW5kIGxvb2t1cF9vcGVuKCkgdG8gY2hhbmdlIGhvdyBjcmVhdGVfZXJyb3IgaXMgaGFuZGxlZCBkdXJpbmcgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWFlMjBlMzUyNGVmYzg3NjdkOWRmNDJjYjU2ZmJhZDM3NzYwYzVjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDE0OjE3OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbmFtZWkuYyBiL2ZzL25hbWVpLmNcbmluZGV4IDE5Y2U0M2M5YTZlNjYyLi4yZWVmMmE0OWQzZjQxZSAxMDA2NDRcbi0tLSBhL2ZzL25hbWVpLmNcbisrKyBiL2ZzL25hbWVpLmNcbkBAIC00MzM2LDUwICs0MzM2LDc4IEBAIHN0YXRpYyBpbnQgbWF5X29fY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxuIFx0cmV0dXJuIHNlY3VyaXR5X2lub2RlX2NyZWF0ZShkaXItXHUwMDNlZGVudHJ5LVx1MDAzZWRfaW5vZGUsIGRlbnRyeSwgbW9kZSk7XG4gfVxuIFxuLS8qXG4tICogQXR0ZW1wdCB0byBhdG9taWNhbGx5IGxvb2sgdXAsIGNyZWF0ZSBhbmQgb3BlbiBhIGZpbGUgZnJvbSBhIG5lZ2F0aXZlXG4tICogZGVudHJ5LlxuLSAqXG4tICogUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwuICBUaGUgZmlsZSB3aWxsIGhhdmUgYmVlbiBjcmVhdGVkIGFuZCBhdHRhY2hlZCB0b1xuLSAqIEBmaWxlIGJ5IHRoZSBmaWxlc3lzdGVtIGNhbGxpbmcgZmluaXNoX29wZW4oKS5cbi0gKlxuLSAqIElmIHRoZSBmaWxlIHdhcyBsb29rZWQgdXAgb25seSBvciBkaWRuJ3QgbmVlZCBjcmVhdGluZywgRk1PREVfT1BFTkVEIHdvbid0XG4tICogYmUgc2V0LiAgVGhlIGNhbGxlciB3aWxsIG5lZWQgdG8gcGVyZm9ybSB0aGUgb3BlbiB0aGVtc2VsdmVzLiAgQHBhdGggd2lsbFxuLSAqIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHBvaW50IHRvIHRoZSBuZXcgZGVudHJ5LiAgVGhpcyBtYXkgYmUgbmVnYXRpdmUuXG4tICpcbi0gKiBSZXR1cm5zIGFuIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuKy8qKlxuKyAqIGF0b21pY19vcGVuKCkgLSBhdHRlbXB0IHRvIGF0b21pY2FsbHkgbG9vayB1cCwgY3JlYXRlIGFuZCBvcGVuIGEgZmlsZVxuKyAqIGZyb20gYSBuZWdhdGl2ZSBkZW50cnkuXG4rICogQHBhdGg6ICAgICAgICAgIHBhcmVudCBkaXJlY3RvcnkgcGF0aFxuKyAqIEBkZW50cnk6ICAgICAgICBjaGlsZCB0byAtXHUwMDNlYXRvbWljX29wZW4oKVxuKyAqIEBmaWxlOiAgICAgICAgICBmaWxlIHRvIGF0dGFjaCBjaGlsZCB0b1xuKyAqIEBvcGVuX2ZsYWc6ICAgICBvcGVuIGZsYWdzXG4rICogQG1vZGU6ICAgICAgICAgIGNyZWF0ZSBtb2RlXG4rICogQGNyZWF0ZV9lcnJvcjogIHJldHVybiB2YWx1ZSBmcm9tIG1heV9vX2NyZWF0ZSgpXG4rICpcbisgKiBJZiBhIG5vbi1lcnJvciBkZW50cnkgaXMgcmV0dXJuZWQgdGhlbjogd2hlbiBGTU9ERV9PUEVORUQgaXMgc2V0LFxuKyAqIHRoZSBmaWxlIHdpbGwgaGF2ZSBiZWVuIGF0dGFjaGVkIHRvIEBmaWxlIGJ5IHRoZSBmaWxlc3lzdGVtIGNhbGxpbmdcbisgKiBmaW5pc2hfb3BlbigpLiBJZiBGTU9ERV9PUEVORUQgaXNuJ3Qgc2V0LCB0aGUgZmlsZXN5c3RlbSBpbnN0ZWFkIGNhbGxlZFxuKyAqIGZpbmlzaF9ub19vcGVuKCkgYW5kIHRoZSBjYWxsZXIgd2lsbCBuZWVkIHRvIHBlcmZvcm0gdGhlIG9wZW4gdGhlbXNlbHZlcy5cbisgKlxuKyAqIEZNT0RFX0NSRUFURUQgaXMgc2V0IHdoZW4gdGhlIGNhbGwgdG8gLVx1MDAzZWF0b21pY19vcGVuKCkgYWN0dWFsbHkgY3JlYXRlZFxuKyAqIHRoZSBmaWxlLlxuKyAqXG4rICogUmV0dXJucyB0aGUgb3BlbmVkL2xvb2tlZC11cCBkZW50cnkgb24gc3VjY2VzcyBvciBFUlJfUFRSKC1FKSBvbiBmYWlsdXJlLlxuKyAqIE9uIGVycm9yLCBhdG9taWNfb3BlbigpIGNvbnN1bWVzIEBkZW50cnkuXG4gICovXG4gc3RhdGljIHN0cnVjdCBkZW50cnkgKmF0b21pY19vcGVuKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4gXHRcdFx0XHQgIHN0cnVjdCBmaWxlICpmaWxlLFxuLVx0XHRcdFx0ICBpbnQgb3Blbl9mbGFnLCB1bW9kZV90IG1vZGUpXG4rXHRcdFx0XHQgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSwgaW50IGNyZWF0ZV9lcnJvcilcbiB7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpjb25zdCBERU5UUllfTk9UX1NFVCA9ICh2b2lkICopIC0xVUw7XG4tXHRzdHJ1Y3QgaW5vZGUgKmRpciA9ICBwYXRoLVx1MDAzZWRlbnRyeS1cdTAwM2VkX2lub2RlO1xuK1x0c3RydWN0IGlub2RlICpkaXJfaW5vZGUgPSBwYXRoLVx1MDAzZWRlbnRyeS1cdTAwM2VkX2lub2RlO1xuIFx0aW50IGVycm9yO1xuIFxuIFx0ZmlsZS1cdTAwM2VfX2ZfcGF0aC5kZW50cnkgPSBERU5UUllfTk9UX1NFVDtcbiBcdGZpbGUtXHUwMDNlX19mX3BhdGgubW50ID0gcGF0aC1cdTAwM2VtbnQ7XG4tXHRlcnJvciA9IGRpci1cdTAwM2VpX29wLVx1MDAzZWF0b21pY19vcGVuKGRpciwgZGVudHJ5LCBmaWxlLFxuK1x0ZXJyb3IgPSBkaXJfaW5vZGUtXHUwMDNlaV9vcC1cdTAwM2VhdG9taWNfb3BlbihkaXJfaW5vZGUsIGRlbnRyeSwgZmlsZSxcbiBcdFx0XHRcdCAgICAgICBvcGVuX3RvX25hbWVpX2ZsYWdzKG9wZW5fZmxhZyksIG1vZGUpO1xuIFx0ZF9sb29rdXBfZG9uZShkZW50cnkpO1xuK1xuIFx0aWYgKCFlcnJvcikge1xuIFx0XHRpZiAoZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2IEZNT0RFX09QRU5FRCkge1xuLVx0XHRcdGlmICh1bmxpa2VseShkZW50cnkgIT0gZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5KSkge1xuK1x0XHRcdC8qIGZpbmlzaF9vcGVuKCkgY2FsbGVkICovXG4rXHRcdFx0c3RydWN0IGRlbnRyeSAqb3BlbmVkID0gZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5O1xuK1x0XHRcdGlmICh1bmxpa2VseShvcGVuZWQgIT0gZGVudHJ5KSkge1xuIFx0XHRcdFx0ZHB1dChkZW50cnkpO1xuLVx0XHRcdFx0ZGVudHJ5ID0gZGdldChmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnkpO1xuK1x0XHRcdFx0ZGVudHJ5ID0gZGdldChvcGVuZWQpO1xuIFx0XHRcdH1cbi1cdFx0fSBlbHNlIGlmIChXQVJOX09OKGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeSA9PSBERU5UUllfTk9UX1NFVCkpIHtcbi1cdFx0XHRlcnJvciA9IC1FSU87XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0aWYgKGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeSkge1xuK1x0XHR9IGVsc2UgaWYgKGxpa2VseShmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnkgIT0gREVOVFJZX05PVF9TRVQpKSB7XG4rXHRcdFx0LyogZmluaXNoX25vX29wZW4oKSBjYWxsZWQgKi9cbitcdFx0XHRzdHJ1Y3QgZGVudHJ5ICpyZXBsYWNlZCA9IGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeTtcbitcdFx0XHRpZiAocmVwbGFjZWQpIHtcbiBcdFx0XHRcdGRwdXQoZGVudHJ5KTtcbi1cdFx0XHRcdGRlbnRyeSA9IGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeTtcbitcdFx0XHRcdGRlbnRyeSA9IHJlcGxhY2VkO1xuIFx0XHRcdH1cbiBcdFx0XHRpZiAodW5saWtlbHkoZF9pc19uZWdhdGl2ZShkZW50cnkpKSlcbiBcdFx0XHRcdGVycm9yID0gLUVOT0VOVDtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRjb25zdCBjaGFyICpmc25hbWUgPSBkZW50cnktXHUwMDNlZF9zYi1cdTAwM2VzX3R5cGUtXHUwMDNlbmFtZTtcbitcdFx0XHRXQVJOKDEsIFwiJXM6IC1cdTAwM2VhdG9taWNfb3BlbigpIGxlZnQgZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5IHVuc2V0IVxcblwiLFxuK1x0XHRcdCAgICAgICAgZnNuYW1lKTtcbitcdFx0XHRlcnJvciA9IC1FSU87XG4gXHRcdH1cbiBcdH1cbitcbiBcdGlmIChlcnJvcikge1xuK1x0XHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcdTAwMjZcdTAwMjYgZXJyb3IgPT0gLUVOT0VOVCkge1xuK1x0XHRcdC8qXG4rXHRcdFx0ICogU2hvdWxkIGhhdmUgZG9uZSBhIGNyZWF0ZSwgYnV0IGVycm9yZWQgYmVmb3JlLlxuK1x0XHRcdCAqIFNvbWUgZmlsZXN5c3RlbXMgcmV0dXJuIC1FTk9FTlQgZGlyZWN0bHkgaW5zdGVhZCBvZlxuK1x0XHRcdCAqIGNhbGxpbmcgZmluaXNoX25vX29wZW4oKSB3aXRoIGEgbmVnYXRpdmUgZGVudHJ5O1xuK1x0XHRcdCAqIGVpdGhlciB3YXkgaXQgc2hvdWxkIG9ubHkgbWVhbiB0aGUgY2hpbGQgZG9lc24ndCBleGlzdCxcbitcdFx0XHQgKiBzbyBhIHJlZnVzZWQgY3JlYXRlIGlzIHNhZmUgdG8gcmVjb3JkIGhlcmUuXG4rXHRcdFx0ICovXG4rXHRcdFx0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcbitcdFx0XHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcbitcdFx0fVxuIFx0XHRkcHV0KGRlbnRyeSk7XG4gXHRcdGRlbnRyeSA9IEVSUl9QVFIoZXJyb3IpO1xuIFx0fVxuQEAgLTQ0MzcsNyArNDQ2NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdGRlbnRyeSA9IE5VTEw7XG4gXHR9XG4gXHRpZiAoZGVudHJ5LVx1MDAzZWRfaW5vZGUpIHtcbi1cdFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGZfb3AtXHUwMDNlb3BlbiAqL1xuK1x0XHQvKiBDYWNoZWQgcG9zaXRpdmUgZGVudHJ5OiB3aWxsIG9wZW4gaW4gZG9fb3BlbigpLiAqL1xuIFx0XHRyZXR1cm4gZGVudHJ5O1xuIFx0fVxuIFxuQEAgLTQ0NzEsMTAgKzQ0OTksNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0aWYgKGRpcl9pbm9kZS1cdTAwM2VpX29wLVx1MDAzZWF0b21pY19vcGVuKSB7XG4gXHRcdGlmIChuZC1cdTAwM2VmbGFncyBcdTAwMjYgTE9PS1VQX0RJUkVDVE9SWSlcbiBcdFx0XHRvcGVuX2ZsYWcgfD0gT19ESVJFQ1RPUlk7XG4tXHRcdGRlbnRyeSA9IGF0b21pY19vcGVuKFx1MDAyNm5kLVx1MDAzZXBhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlKTtcbi1cdFx0aWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikgXHUwMDI2XHUwMDI2IGRlbnRyeSA9PSBFUlJfUFRSKC1FTk9FTlQpKVxuLVx0XHRcdGRlbnRyeSA9IEVSUl9QVFIoY3JlYXRlX2Vycm9yKTtcbi1cdFx0cmV0dXJuIGRlbnRyeTtcbitcdFx0cmV0dXJuIGF0b21pY19vcGVuKFx1MDAyNm5kLVx1MDAzZXBhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlLCBjcmVhdGVfZXJyb3IpO1xuIFx0fVxuIFxuIFx0aWYgKGRfaW5fbG9va3VwKGRlbnRyeSkpIHtcbkBAIC00NDkwLDMwICs0NTE1LDM2IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdFx0ZGVudHJ5ID0gcmVzO1xuIFx0XHR9XG4gXHR9XG4rXHRpZiAoZGVudHJ5LVx1MDAzZWRfaW5vZGUgfHwgIShvcC1cdTAwM2VvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpKSB7XG4rXHRcdC8qIE5vIG5lZWQgdG8gY3JlYXRlIGEgZmlsZS4gSWYgbG9va3VwIHJldHVybmVkIGEgcG9zaXRpdmVcbitcdFx0ICogZGVudHJ5LCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBkb19vcGVuKCkuICovXG4rXHRcdHJldHVybiBkZW50cnk7XG4rXHR9XG4gXG4tXHQvKiBOZWdhdGl2ZSBkZW50cnksIGp1c3QgY3JlYXRlIHRoZSBmaWxlICovXG4tXHRpZiAoIWRlbnRyeS1cdTAwM2VkX2lub2RlIFx1MDAyNlx1MDAyNiAob3Blbl9mbGFnIFx1MDAyNiBPX0NSRUFUKSkge1xuLVx0XHQvKiBidXQgYnJlYWsgdGhlIGRpcmVjdG9yeSBsZWFzZSBmaXJzdCEgKi9cbi1cdFx0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBkZWxlZ2F0ZWRfaW5vZGUpO1xuLVx0XHRpZiAoZXJyb3IpXG4tXHRcdFx0Z290byBvdXRfZHB1dDtcbi1cbi1cdFx0ZmlsZS1cdTAwM2VmX21vZGUgfD0gRk1PREVfQ1JFQVRFRDtcbi1cdFx0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcbi1cdFx0aWYgKCFkaXJfaW5vZGUtXHUwMDNlaV9vcC1cdTAwM2VjcmVhdGUpIHtcbi1cdFx0XHRlcnJvciA9IC1FQUNDRVM7XG4tXHRcdFx0Z290byBvdXRfZHB1dDtcbi1cdFx0fVxuK1x0LyogTmVnYXRpdmUgZGVudHJ5IHdpdGggT19DUkVBVCBmbGFnIHNldCAqL1xuK1x0YXVkaXRfaW5vZGVfY2hpbGQoZGlyX2lub2RlLCBkZW50cnksIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRFKTtcbiBcbi1cdFx0ZXJyb3IgPSBkaXJfaW5vZGUtXHUwMDNlaV9vcC1cdTAwM2VjcmVhdGUoaWRtYXAsIGRpcl9pbm9kZSwgZGVudHJ5LFxuLVx0XHRcdFx0XHRcdG1vZGUsIG9wZW5fZmxhZyBcdTAwMjYgT19FWENMKTtcbi1cdFx0aWYgKGVycm9yKVxuLVx0XHRcdGdvdG8gb3V0X2RwdXQ7XG4tXHR9XG4tXHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSBcdTAwMjZcdTAwMjYgIWRlbnRyeS1cdTAwM2VkX2lub2RlKSB7XG4rXHRpZiAodW5saWtlbHkoY3JlYXRlX2Vycm9yKSkge1xuK1x0XHQvKiBzaG91bGQgaGF2ZSBkb25lIGEgY3JlYXRlLCBidXQgd2UgYWxyZWFkeSBlcnJvcmVkICovXG4gXHRcdGVycm9yID0gY3JlYXRlX2Vycm9yO1xuIFx0XHRnb3RvIG91dF9kcHV0O1xuIFx0fVxuK1xuK1x0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBkZWxlZ2F0ZWRfaW5vZGUpO1xuK1x0aWYgKGVycm9yKVxuK1x0XHRnb3RvIG91dF9kcHV0O1xuK1xuK1x0ZmlsZS1cdTAwM2VmX21vZGUgfD0gRk1PREVfQ1JFQVRFRDtcbitcdGlmICghZGlyX2lub2RlLVx1MDAzZWlfb3AtXHUwMDNlY3JlYXRlKSB7XG4rXHRcdGVycm9yID0gLUVBQ0NFUztcbitcdFx0Z290byBvdXRfZHB1dDtcbitcdH1cbitcbitcdGVycm9yID0gZGlyX2lub2RlLVx1MDAzZWlfb3AtXHUwMDNlY3JlYXRlKGlkbWFwLCBkaXJfaW5vZGUsIGRlbnRyeSxcbitcdFx0XHRcdFx0bW9kZSwgb3Blbl9mbGFnIFx1MDAyNiBPX0VYQ0wpO1xuK1x0aWYgKGVycm9yKVxuK1x0XHRnb3RvIG91dF9kcHV0O1xuK1xuIFx0cmV0dXJuIGRlbnRyeTtcbiBcbiBvdXRfZHB1dDpcbkBAIC01MDUxLDcgKzUwODIsNyBAQCBzdHJ1Y3QgZmlsZSAqZGVudHJ5X2NyZWF0ZShzdHJ1Y3QgcGF0aCAqcGF0aCwgaW50IGZsYWdzLCB1bW9kZV90IG1vZGUsXG4gXG4gXHRcdC8qIGF0b21pY19vcGVuIHdpbGwgZHB1dChkZW50cnkpIG9uIGVycm9yICovXG4gXHRcdGRnZXQob3JpZ19kZW50cnkpO1xuLVx0XHRkZW50cnkgPSBhdG9taWNfb3BlbihwYXRoLCBkZW50cnksIGZpbGUsIGZsYWdzLCBtb2RlKTtcbitcdFx0ZGVudHJ5ID0gYXRvbWljX29wZW4ocGF0aCwgZGVudHJ5LCBmaWxlLCBmbGFncywgbW9kZSwgY3JlYXRlX2Vycm9yKTtcbiBcdFx0ZXJyb3IgPSBQVFJfRVJSX09SX1pFUk8oZGVudHJ5KTtcbiBcbiBcdFx0aWYgKElTX0VSUihkZW50cnkpKVxuQEAgLTUwNjEsOSArNTA5Miw2IEBAIHN0cnVjdCBmaWxlICpkZW50cnlfY3JlYXRlKHN0cnVjdCBwYXRoICpwYXRoLCBpbnQgZmxhZ3MsIHVtb2RlX3QgbW9kZSxcbiBcdFx0XHQvKiBEcm9wIHRoZSBleHRyYSByZWZlcmVuY2UgKi9cbiBcdFx0XHRkcHV0KG9yaWdfZGVudHJ5KTtcbiBcbi1cdFx0aWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikgXHUwMDI2XHUwMDI2IGVycm9yID09IC1FTk9FTlQpXG4tXHRcdFx0ZXJyb3IgPSBjcmVhdGVfZXJyb3I7XG4tXG4gXHRcdGlmICghZXJyb3IpIHtcbiBcdFx0XHRpZiAoZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2IEZNT0RFX0NSRUFURUQpXG4gXHRcdFx0XHRmc25vdGlmeV9jcmVhdGUoZGlyLVx1MDAzZWRfaW5vZGUsIGRlbnRyeSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNDoxNzoxNS44ODg3NDYwNjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDUwODI1NjU4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZGUyBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgZnMvbmFtZWkuY2AuICBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBJdCBzZWVtcyB0byBiZSByZWZhY3RvcmluZyBgYXRvbWljX29wZW4oKWAgYW5kIGBsb29rdXBfb3BlbigpYCwgd2hpY2ggYXJlIGNvcmUgY29tcG9uZW50cyBvZiB0aGUgVkZTJ3MgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4gbG9naWMg4oCTIGFsd2F5cyBhIGdvb2QgYXJlYSB0byBzY3J1dGluaXplLlxuXG5TcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBjcmVhdGVfZXJyb3JgIGludG8gYGF0b21pY19vcGVuKClgLiAgVGhpcyBzdWdnZXN0cyBhIHNoaWZ0IGluIGhvdyBlcnJvcnMgZnJvbSB0aGUgY3JlYXRpb24gcHJvY2VzcyBhcmUgaGFuZGxlZCwgcGFydGljdWxhcmx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBgbWF5X29fY3JlYXRlKClgIGNoZWNrcy4gIGBjcmVhdGVfZXJyb3JgIGlzIG5vdyBjb25zdW1lZCB3aXRoaW4gYGF0b21pY19vcGVuKClgLiBUaGlzIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgZXllIGFzIGEgcG90ZW50aWFsIGFyZWEgZm9yIGZ1enppbmcg4oCTIGVycm9yIGhhbmRsaW5nIGlzIG9mdGVuIHdoZXJlIGludGVyZXN0aW5nIGFuZCB1bmV4cGVjdGVkIGJlaGF2aW9yIGFyaXNlcy5cblxuSSBhbHNvIHNlZSB0aGF0IGl0J3MgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIGBsb29rdXBfb3BlbigpYCB3aGVuIGEgbmVnYXRpdmUgZGVudHJ5IGlzIGVuY291bnRlcmVkIGFuZCB0aGUgYE9fQ1JFQVRgIGZsYWcgaXMgc2V0LiAgVGhpcyBzZWN0aW9uIGFsc28gaGFzIGBhdWRpdF9pbm9kZV9jaGlsZCgpYCBjYWxscyBiZWluZyBhZGRlZCBvciBtb3ZlZCBhcm91bmQsIGZ1cnRoZXIgaW5kaWNhdGluZyBhIGNoYW5nZSBpbiB0aGUgY3JlYXRpb24gcGF0aC4gIFRoaXMgY291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlIGFzIHdlbGwuXG5cblRoZSBmdW5jdGlvbnMgbW9kaWZpZWQgYXJlOiBgYXRvbWljX29wZW5gLCBgbG9va3VwX29wZW5gLCBhbmQgYGRlbnRyeV9jcmVhdGVgLiBTbywgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGxvdy1sZXZlbCBWRlMgc3R1ZmYuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoZSBleGFjdCBjaGFuZ2VzLiBJbiBgYXRvbWljX29wZW5gLCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG5vdyBpbmNsdWRlcyBgaW50IGNyZWF0ZV9lcnJvcmAuICBUaGUgY29kZSB3aXRoaW4gY2hlY2tzIGZvciBhIHNwZWNpZmljIGVycm9yIChgLUVOT0VOVGApIGFuZCwgaWYgYGNyZWF0ZV9lcnJvcmAgaXMgc2V0LCBpdCBwZXJmb3JtcyBhbiBhdWRpdCBmb3IgYSBjaGlsZCBjcmVhdGlvbi4gVGhlIGltcG9ydGFudCB0aGluZyB0byBjb25zaWRlciBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoICpjb25zdW1lcyogYGNyZWF0ZV9lcnJvcmAgYW5kIHBvc3NpYmx5IGNoYW5nZXMgdGhlIGVycm9yIHJldHVybmVkLlxuXG5JbiBgbG9va3VwX29wZW5gLCB0aGUgcGF0Y2ggaGFzIGNoYW5nZWQgdG8gY2FsbCB0aGUgbmV3IGBhdG9taWNfb3BlbigpYCB0aGF0IG5vdyB0YWtlcyBgY3JlYXRlX2Vycm9yYC4gSW4gdGhlIGxhdGVyIHBhcnRzIG9mIGBsb29rdXBfb3BlbmAgdGhlIGNvZGUgaGFzIGJlZW4gcmVvcmdhbml6ZWQgdG8gY29uc29saWRhdGUgZXJyb3IgaGFuZGxpbmcgYW5kIHRoZSBgYXVkaXRfaW5vZGVfY2hpbGQoKWAgY2FsbC4gVGhpcyBjaGFuZ2VzIHRoZSBmbG93LlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBWRlMuXG5cbk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHllcywgdGhpcyBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIHRhcmdldCBmb3IgZnV6emluZy4gIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gYGF0b21pY19vcGVuYCwgYGxvb2t1cF9vcGVuYCwgYW5kIGBkZW50cnlfY3JlYXRlYCBiZWNhdXNlIHRoZXNlIGFyZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRoYXQgYXJlIGNlbnRyYWwgdG8gdGhlIHBhdGNoLiBIb3dldmVyLCBgYXRvbWljX29wZW5gIGFuZCBgbG9va3VwX29wZW5gIGFyZSBkZWZpbmVkIGFzICpzdGF0aWMqIGluIGBmcy9uYW1laS5jYC4gIEkgd2lsbCBjaGVjayBpZiB0aGV5IGFyZSBkaXJlY3RseSBjYWxsYWJsZS4gSWYgdGhleSBhcmUgbm90IGRpcmVjdGx5IGNhbGxhYmxlLCBJIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgZW50cnkgcG9pbnRzLiBMZXQgbWUgZXhhbWluZSBgZnMvbmFtZWkuY2AgdG8gY29uZmlybSBteSBmaW5kaW5ncyBvbiBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjI3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjMwLjM5NzAwNDcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTg5ODk3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApP3N0cnVjdCBkZW50cnkgXFxcXCphdG9taWNfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uYW1laS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25hbWVpLmM9NDMyMD1zdGF0aWMgaW50IG1heV9vX2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcXG4tLVxcbmZzL25hbWVpLmMtNDM1OS0gKi9cXG5mcy9uYW1laS5jOjQzNjA6c3RhdGljIHN0cnVjdCBkZW50cnkgKmF0b21pY19vcGVuKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuZnMvbmFtZWkuYy00MzYxLVxcdFxcdFxcdFxcdCAgc3RydWN0IGZpbGUgKmZpbGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjMwLjUxODkwOTYyM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjIwMzU1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLi4uXG5cbioqRGlnZ2luZyBpbnRvIHRoZSBGaWxlc3lzdGVtIEludGVybmFscyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZm9jdXMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBoYXBwZW5pbmcgd2l0aCBmaWxlIGNyZWF0aW9uIGFuZCBsb29rdXBzIHVuZGVyIHRoZSBob29kLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRvIGV4YW1pbmUgYSBzcGVjaWZpYyBwYWlyIG9mIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBrZXkgcGxheWVycyBpbiB0aGlzIHByb2Nlc3MuIEknbSBnb2luZyB0byBzdGFydCBieSBjbG9zZWx5IGluc3BlY3RpbmcgYGxvb2t1cF9vcGVuYCBhbmQgYGRlbnRyeV9jcmVhdGVgLiBUaGVzZSBhcmUgbGlrZWx5IHRvIGJlIGludm9sdmVkIGRpcmVjdGx5IGluIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYm90aCB0aGUgaW5pdGlhbCBsb29rdXAgYW5kIHRoZSBldmVudHVhbCBjcmVhdGlvbiBvZiBhIG5ldyBmaWxlIHN5c3RlbSBlbnRyeSwgcmlnaHQ/IFVuZGVyc3RhbmRpbmcgdGhlaXIgaW50ZXJhY3Rpb24gd2lsbCBwcm9iYWJseSBwcm92aWRlIHNvbWUgY3JpdGljYWwgaW5zaWdodC4gTGV0J3Mgc2VlIHdoYXQgdGhlc2UgZnVuY3Rpb25zIGhhdmUgdG8gdGVhY2ggdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MzQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNDoxNzozMy41NDA5NDcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjk2MjI4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApP3N0cnVjdCBkZW50cnkgXFxcXCpsb29rdXBfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uYW1laS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25hbWVpLmM9NDM2MD1zdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmZzL25hbWVpLmMtNDQzMS0gKi9cXG5mcy9uYW1laS5jOjQ0MzI6c3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5mcy9uYW1laS5jLTQ0MzMtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgb3Blbl9mbGFncyAqb3AsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjMzLjY1NzkxNTM1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NTcxODQyODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVudHJ5IENyZWF0aW9uIENvbnVuZHJ1bXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgZGVudHJ5X2NyZWF0ZWAgYWdhaW4uIEknbSBmb2N1c2luZyBpbiBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gaG93IHdlIHN0cnVjdHVyZSB0aGUgZmlsZXN5c3RlbSBuYW1lc3BhY2UsIGFuZCB0aGVyZWZvcmUgcGVyZm9ybWFuY2UgYW5kIGNvbmN1cnJlbmN5LiBJdCdzIHRoZSBwb2ludCBvZiBpbnNlcnRpb24gb2YgbmV3IGRpcmVjdG9yeSBlbnRyaWVzLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3VyLlxuXG5JJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4gSG93IGRvZXMgdGhlIFZGUyBoYW5kbGUgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIGEgbmV3IGBkZW50cnlgIHN0cnVjdHVyZT8gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGJleW9uZCB0aGUgb2J2aW91cyBwYXJlbnQgYGRlbnRyeWAgYW5kIHRoZSBuYW1lPyBBcmUgd2UgZGVhbGluZyB3aXRoIGFueSBsb2NraW5nIGhlcmUsIGFuZCBpZiBzbywgd2hhdCdzIHRoZSBncmFudWxhcml0eSBhbmQgcG90ZW50aWFsIGZvciBjb250ZW50aW9uPyBJJ20gc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHN1YnRsZSBjb25jdXJyZW5jeSBpc3N1ZXMuIFdoYXQgaXMgdGhlIGxpZmVjeWNsZSBvZiB0aGlzIG5ld2x5IGNyZWF0ZWQgZGVudHJ5IHdpdGhpbiB0aGUgZmlsZXN5c3RlbS4gQW5kIGlzIHRoaXMgZGVudHJ5IGJlaW5nIGluaXRpYWxpemVkIGluIHRoZSBjb3JyZWN0IGZvcm1hdD9cblxuSSBuZWVkIHRvIHRyYWNlIHRoZSBhbGxvY2F0aW9uIHBhdGgsIGVuc3VyaW5nIHRoYXQgbWVtb3J5IG1hbmFnZW1lbnQgaXMgZWZmaWNpZW50IGFuZCB0aGF0IHdlIGFyZW4ndCBpbnRyb2R1Y2luZyBhbnkgZnJhZ21lbnRhdGlvbiBpc3N1ZXMuIEFsc28sIEknbSBnb2luZyB0byBsb29rIGNhcmVmdWxseSBhdCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgZXNwZWNpYWxseSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgdGhyZWFkcyBjcmVhdGluZyBkZW50cmllcyBzaW11bHRhbmVvdXNseSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgdGhlc2UgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGlub2RlIGFyZSBiZWluZyBoYW5kbGVkLCBhbmQgbG9vayBmb3IgYW55IGluY29uc2lzdGVuY2llcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYW5kIGhvdyB0aGUgYGRlbnRyeWAgaXMgbGlua2VkIGludG8gdGhlIGRlbnRyeSBjYWNoZSwgYW5kIGhvdyBpdCBpcyBwcm90ZWN0ZWQuIEZpbmFsbHksIEknbSB0aGlua2luZyBJIG1heSBuZWVkIHRvIGxvb2sgYXQgbWVtb3J5IHJlY2xhbWF0aW9uIGFuZCBob3cgd2UgcHJldmVudCBhbnkgbGVha3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NDksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjM3LjMxNTEwMzk3MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDgzNjU5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApP3N0cnVjdCBmaWxlIFxcXFwqZGVudHJ5X2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uYW1laS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25hbWVpLmM9NTAzOT1FWFBPUlRfU1lNQk9MKHN0YXJ0X2NyZWF0aW5nX3VzZXJfcGF0aCk7XFxuLS1cXG5mcy9uYW1laS5jLTUwNTctICovXFxuZnMvbmFtZWkuYzo1MDU4OnN0cnVjdCBmaWxlICpkZW50cnlfY3JlYXRlKHN0cnVjdCBwYXRoICpwYXRoLCBpbnQgZmxhZ3MsIHVtb2RlX3QgbW9kZSxcXG5mcy9uYW1laS5jLTUwNTktXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjM3LjM5NTk0NjkyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTU3MzM5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgVkZTIENvcmUqKlxuXG5Pa2F5LCB0aGVzZSBhcmUgc29saWQgY2hvaWNlcyBmb3IgZm9jdXMgc3ltYm9scyDigJMgYGF0b21pY19vcGVuYCwgYGxvb2t1cF9vcGVuYCwgYW5kIGBkZW50cnlfY3JlYXRlYC4gVGhvc2UgZGVmaW5pdGVseSBoaXQgdGhlIGNvcmUgb2Ygd2hhdCdzIGJlaW5nIHRvdWNoZWQgaGVyZS4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFyZWE/IEdpdmVuIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgY29yZSBWRlMsIEkgZG9u4oCZdCB0aGluayBhbnkgc3BlY2lmaWMgY29uZmlncyBhcmUgbmVlZGVkLiBJdCdzIGZ1bmRhbWVudGFsIGVub3VnaCB0aGF0IHRoZSBzdGFuZGFyZCBmdXp6aW5nIHNldHVwIHNob3VsZCBzdWZmaWNlLlxuXG5BbHJpZ2h0LCBJJ2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgVkZTLCBzcGVjaWZpY2FsbHkgaW4gYGZzL25hbWVpLmNgLCBhbmQgY2hhbmdpbmcgaG93IGBjcmVhdGVfZXJyb3JgIGlzIGhhbmRsZWQgaW4gZmlsZSBjcmVhdGlvbiBhbmQgdGhlIGF0b21pYyBvcGVuIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsJ3MgY3JpdGljYWwgcGF0aC4gR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3QsIGl0ICphYnNvbHV0ZWx5KiB3YXJyYW50cyBmdXp6aW5nLiBUaGUgcGF0Y2ggZWZmZWN0aXZlbHkgcmVmYWN0b3JzIGBhdG9taWNfb3BlbmAgYW5kIGBsb29rdXBfb3BlbmAsIHdoaWNoIGlzIGNvcmUgbG9naWMsIHNvIGZ1enppbmcgaXMgYXBwcm9wcmlhdGUuIEFuZCwgRW5hYmxlQ29uZmlncyBzaG91bGQgYmUgZW1wdHkgZm9yIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMzMsIk91dHB1dFRva2VucyI6MTA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjE3OjQyLjExMTY4MzM5MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRvbWljX29wZW5cIixcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJkZW50cnlfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBWRlMgbG9naWMgaW4gZnMvbmFtZWkuYywgc3BlY2lmaWNhbGx5IHJlZmFjdG9yaW5nIGF0b21pY19vcGVuKCkgYW5kIGxvb2t1cF9vcGVuKCkgdG8gY2hhbmdlIGhvdyBjcmVhdGVfZXJyb3IgaXMgaGFuZGxlZCBkdXJpbmcgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRvbWljX29wZW5cIixcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJkZW50cnlfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBWRlMgbG9naWMgaW4gZnMvbmFtZWkuYywgc3BlY2lmaWNhbGx5IHJlZmFjdG9yaW5nIGF0b21pY19vcGVuKCkgYW5kIGxvb2t1cF9vcGVuKCkgdG8gY2hhbmdlIGhvdyBjcmVhdGVfZXJyb3IgaXMgaGFuZGxlZCBkdXJpbmcgZmlsZSBjcmVhdGlvbiBhbmQgYXRvbWljIG9wZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowx5smx[1] Phase: Succeeded StartedAt: 2026-07-11 14:17:54 +0000 UTC FinishedAt: 2026-07-11 14:17:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-11 14:17:54 +0000 UTC FinishedAt: 2026-07-11 14:17:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2] Phase: Succeeded StartedAt: 2026-07-11 14:17:54 +0000 UTC FinishedAt: 2026-07-11 18:26:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:17:54 +0000 UTC FinishedAt: 2026-07-11 18:26:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:17:54 +0000 UTC FinishedAt: 2026-07-11 14:18:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:17:54 +0000 UTC FinishedAt: 2026-07-11 14:18:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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-workflowx5smx/series-workflowx5smx-convert-artifact-2352236156/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:18:04 +0000 UTC FinishedAt: 2026-07-11 14:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:18:04 +0000 UTC FinishedAt: 2026-07-11 14:45:14 +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:*4f4c793d-a80d-4252-a426-95a85be5d33f,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-workflowx5smx/series-workflowx5smx-convert-artifact-2352236156/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": "aaf4ed15-71f8-4df1-b794-0a972fb4a989", "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-workflowx5smx/series-workflowx5smx-build-action-249577898/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:18:04 +0000 UTC FinishedAt: 2026-07-11 14:45:04 +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:*4f4c793d-a80d-4252-a426-95a85be5d33f,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-workflowx5smx/series-workflowx5smx-convert-artifact-2352236156/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": "aaf4ed15-71f8-4df1-b794-0a972fb4a989", "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-workflowx5smx/series-workflowx5smx-build-action-249577898/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:45:14 +0000 UTC FinishedAt: 2026-07-11 14:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:45:14 +0000 UTC FinishedAt: 2026-07-11 14:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:45:14 +0000 UTC FinishedAt: 2026-07-11 14:45:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:45:14 +0000 UTC FinishedAt: 2026-07-11 14:45:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-workflowx5smx/series-workflowx5smx-convert-artifact-3377274043/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:45:35 +0000 UTC FinishedAt: 2026-07-11 14:47:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:45:35 +0000 UTC FinishedAt: 2026-07-11 14:47:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aaf4ed15-71f8-4df1-b794-0a972fb4a989,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-workflowx5smx/series-workflowx5smx-build-action-249577898/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-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:47:30 +0000 UTC FinishedAt: 2026-07-11 14:47:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:47:30 +0000 UTC FinishedAt: 2026-07-11 14:47:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:47:30 +0000 UTC FinishedAt: 2026-07-11 15:20:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:47:30 +0000 UTC FinishedAt: 2026-07-11 15:20:19 +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:*4f4c793d-a80d-4252-a426-95a85be5d33f,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-workflowx5smx/series-workflowx5smx-convert-artifact-3377274043/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": "608b279d-88cf-4bda-b204-5518967a772a", "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-workflowx5smx/series-workflowx5smx-build-action-2691012575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 14:47:30 +0000 UTC FinishedAt: 2026-07-11 15:20: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:*4f4c793d-a80d-4252-a426-95a85be5d33f,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-workflowx5smx/series-workflowx5smx-convert-artifact-3377274043/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": "608b279d-88cf-4bda-b204-5518967a772a", "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-workflowx5smx/series-workflowx5smx-build-action-2691012575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:20:19 +0000 UTC FinishedAt: 2026-07-11 15:20:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:20:19 +0000 UTC FinishedAt: 2026-07-11 15:20:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:20:19 +0000 UTC FinishedAt: 2026-07-11 15:22:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:20:19 +0000 UTC FinishedAt: 2026-07-11 15:22:21 +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:*608b279d-88cf-4bda-b204-5518967a772a,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-workflowx5smx/series-workflowx5smx-build-action-2691012575/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-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:22:31 +0000 UTC FinishedAt: 2026-07-11 18:26:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:22:31 +0000 UTC FinishedAt: 2026-07-11 18:26:09 +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":["atomic_open","lookup_open","dentry_create"],"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:*aaf4ed15-71f8-4df1-b794-0a972fb4a989,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*608b279d-88cf-4bda-b204-5518967a772a,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-workflowx5smx/series-workflowx5smx-build-action-249577898/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-workflowx5smx/series-workflowx5smx-build-action-2691012575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:22:31 +0000 UTC FinishedAt: 2026-07-11 15:23:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:22:31 +0000 UTC FinishedAt: 2026-07-11 15:22:53 +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":["atomic_open","lookup_open","dentry_create"],"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-workflowx5smx/series-workflowx5smx-convert-artifact-2274683316/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:22:31 +0000 UTC FinishedAt: 2026-07-11 15:22:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:22:31 +0000 UTC FinishedAt: 2026-07-11 15:22:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:22:31 +0000 UTC FinishedAt: 2026-07-11 15:22:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:23:00 +0000 UTC FinishedAt: 2026-07-11 18:26:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5smx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","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":["atomic_open","lookup_open","dentry_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","series_id":"45bc106c-0f9b-4d2a-8b15-e85fc3101a48","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-11 15:23:00 +0000 UTC FinishedAt: 2026-07-11 18:25:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aaf4ed15-71f8-4df1-b794-0a972fb4a989,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*608b279d-88cf-4bda-b204-5518967a772a,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-workflowx5smx/series-workflowx5smx-build-action-249577898/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-workflowx5smx/series-workflowx5smx-build-action-2691012575/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-workflowx5smx/series-workflowx5smx-convert-artifact-2274683316/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,}