bug#81444: chown, chmod, chgrp, chcon, ls: --recursive walk does not ignore ENOENT errors
Pádraig Brady <[email protected]> Wed, 22 Jul 2026 20:51:13 +0100
| Newsgroups | gmane.comp.gnu.core-utils.bugs |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------EqjuCzz7zfjzHt7XDD46Bmu3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 20/07/2026 18:12, Paul Holzinger via GNU coreutils Bug Reports wrote: > Hi, > > I noticed that when chown'ing a directory tree recursively with many > files sometimes chown will exit 1 and report ENOENT errors. This happens > when looping over the directory results from readdir() and in a parallel > another process removes a file before the code then calls stat(), > chmod() or whatever syscalls the command has to do for the given filename. > > Since such race is expected the coreutils should not treat this as error > and just ignore them instead. That way a parallel removal of a file will > not make the commands return exit code 1 and thus possibility break > scripts. Of course this should only apply to files or directories under > the main path given as input, i.e. chmod -R dest should still fail with > ENOENT when dest does not exists. > > Below is a reproducer for the commands, might needs to run a few times > until it triggers the race condition, I am not sure if there are more > commands in coreutils which are affected by this. Thanks for the repro, it works well. I agree, these commands shouldn't warn or fail for files being added, replaced, removed in the tree being traversed. I also notice that du is affected. The attached should hopefully address this issue. thanks, Padraig --------------EqjuCzz7zfjzHt7XDD46Bmu3 Content-Type: text/x-patch; charset=UTF-8; name="ignore-traversed-missing.patch" Content-Disposition: attachment; filename="ignore-traversed-missing.patch" Content-Transfer-Encoding: base64 RnJvbSA5NDg3NWI0ZjFiYWI0N2JhNWFjOGNjMjM0ZmU3MGQyMTVkY2ZiOWQxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/UD1DMz1BMWRyYWlnPTIwQnJhZHk/ PSA8UEBkcmFpZ0JyYWR5LmNvbT4KRGF0ZTogV2VkLCAyMiBKdWwgMjAyNiAxOToyMzoyNiAr MDEwMApTdWJqZWN0OiBbUEFUQ0hdIGNoY29uLGNoZ3JwLGNobW9kLGNob3duLGR1LGxzOiBp Z25vcmUgbWlzc2luZyBmaWxlcyB3aGlsZQogdHJhdmVyc2luZwoKKiBzcmMvZnRzLW1pc3Np bmcuaDogQWRkIGhlbHBlciByb3V0aW5lcyB0byBkZXRlcm1pbmUKaWYgYW4gRlRTIGVudHJ5 IGlzIHNraXBwYWJsZS4gIEkuZS4sIHRoYXQgaXMgdHJhdmVyc2VkCmFuZCBub3Qgc3BlY2lm aWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCiogc3JjL2NoY29uLmMgKHByb2Nlc3NfZmlsZSk6 IFNldHVwIHRvIGlnbm9yZSBza2lwcGFibGUgZmlsZXMuCihjaGFuZ2VfZmlsZV9jb250ZXh0 KTogSWdub3JlIG1pc3NpbmcgZmlsZXMgaWYgYXBwcm9wcmlhdGUuCiogc3JjL2NobW9kLmMg KHByb2Nlc3NfZmlsZSk6IFNldHVwIHRvIGlnbm9yZSBza2lwcGFibGUgZmlsZXMuCklnbm9y ZSBtaXNzaW5nIGZpbGVzIGlmIGFwcHJvcHJpYXRlLgoobW9kZV9jaGFuZ2VkKTogSWdub3Jl IG1pc3NpbmcgZmlsZXMgaWYgYXBwcm9wcmlhdGUuCiogc3JjL2Nob3duLWNvcmUuYyAoY2hh bmdlX2ZpbGVfb3duZXIpOiBTZXR1cCB0byBpZ25vcmUgc2tpcHBhYmxlIGZpbGVzLgpJZ25v cmUgbWlzc2luZyBmaWxlcyBpZiBhcHByb3ByaWF0ZS4KKiBzcmMvZHUuYyAocHJvY2Vzc19m aWxlKTogTGlrZXdpc2UuCiogc3JjL2xzLmMgKHByaW50X2Rpcik6IElnbm9yZSBtaXNzaW5n IGZpbGVzIGlmIGFwcHJvcHJpYXRlLgooZ2V0X2xpbmtfbmFtZSk6IExpa2V3aXNlLgooZ29i YmxlX2ZpbGUpOiBMaWtld2lzZS4gIEFsc28gaGFuZGxlIHRoZSBkYW5nbGluZyBzeW1saW5r IGNhc2UuCiogc3JjL3N5c3RlbS5oIChpZ25vcmFibGVfdHJhdmVyc2FsX2Vycm5vKTogTWF0 Y2ggRU5PRU5UIGFuZCBFTk9URElSLApmb3IgbWlzc2luZyBhbmQgcmVwbGFjZWQgZmlsZXMu CiogdGVzdHMvY2hjb24vdHJhdmVyc2FsLW1pc3Npbmcuc2g6IEEgbmV3IHRlc3QuCiogdGVz dHMvbWlzYy90cmF2ZXJzYWwtbWlzc2luZy5zaDogTGlrZXdpc2UuCiogdGVzdHMvbG9jYWwu bWs6IFJlZmVyZW5jZSB0aGUgbmV3IHRlc3RzLgoqIE5FV1M6IE1lbnRpb24gdGhlIGJ1ZyBm aXguCkZpeGVzIGh0dHBzOi8vYnVncy5nbnUub3JnLzgxNDQ0Ci0tLQogTkVXUyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgNCArKwogc3JjL2NoY29uLmMgICAgICAgICAgICAg ICAgICAgICAgfCAyMCArKysrKysrLS0tCiBzcmMvY2htb2QuYyAgICAgICAgICAgICAgICAg ICAgICB8IDI5ICsrKysrKysrKysrKy0tCiBzcmMvY2hvd24tY29yZS5jICAgICAgICAgICAg ICAgICB8IDI0ICsrKysrKysrLS0tCiBzcmMvZHUuYyAgICAgICAgICAgICAgICAgICAgICAg ICB8ICA4ICsrKysKIHNyYy9mdHMtbWlzc2luZy5oICAgICAgICAgICAgICAgIHwgMzkgKysr KysrKysrKysrKysrKysrCiBzcmMvbG9jYWwubWsgICAgICAgICAgICAgICAgICAgICB8ICAx ICsKIHNyYy9scy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjIgKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0KIHNyYy9zeXN0ZW0uaCAgICAgICAgICAgICAgICAgICAgIHwg IDggKysrKwogdGVzdHMvY2hjb24vdHJhdmVyc2FsLW1pc3Npbmcuc2ggfCA0OCArKysrKysr KysrKysrKysrKysrKysrCiB0ZXN0cy9sb2NhbC5tayAgICAgICAgICAgICAgICAgICB8ICAy ICsKIHRlc3RzL21pc2MvdHJhdmVyc2FsLW1pc3Npbmcuc2ggIHwgNjggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDI4MyBpbnNlcnRpb25z KCspLCAzMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZnRzLW1pc3Np bmcuaAogY3JlYXRlIG1vZGUgMTAwNzU1IHRlc3RzL2NoY29uL3RyYXZlcnNhbC1taXNzaW5n LnNoCiBjcmVhdGUgbW9kZSAxMDA3NTUgdGVzdHMvbWlzYy90cmF2ZXJzYWwtbWlzc2luZy5z aAoKZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCmluZGV4IDczYzdhZjlkMS4uNzYzNTRlOWU5 IDEwMDY0NAotLS0gYS9ORVdTCisrKyBiL05FV1MKQEAgLTQsNiArNCwxMCBAQCBHTlUgY29y ZXV0aWxzIE5FV1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gb3V0 bGluZSAtKi0KIAogKiogQnVnIGZpeGVzCiAKKyAgJ2NoY29uJywgJ2NoZ3JwJywgJ2NobW9k JywgJ2Nob3duJywgJ2R1JywgJ2xzJyB3aGljaCB0cmF2ZXJzZSBoaWVyYXJjaGllcyB3aXRo CisgIC1SLCAgbm8gbG9uZ2VyIGZhaWwgbWVyZWx5IGJlY2F1c2UgZmlsZXMgbWF5IGJlIGJl aW5nIHJlbW92ZWQgaW4gcGFyYWxsZWwuCisgIFtUaGlzIGJ1ZyB3YXMgcHJlc2VudCBpbiAi dGhlIGJlZ2lubmluZyIuXQorCiAgICdjb21tIC0gLScgbm8gbG9uZ2VyIGNsb3NlcyBzdGFu ZGFyZCBpbnB1dCB0d2ljZS4gIFByZXZpb3VzbHkgaXQgd291bGQKICAgbWlzdGFrZW5seSBl eGl0IHdpdGggYSBub256ZXJvIHN0YXR1cy4KICAgW1RoaXMgYnVnIHdhcyBwcmVzZW50IGlu ICJ0aGUgYmVnaW5uaW5nIi5dCmRpZmYgLS1naXQgYS9zcmMvY2hjb24uYyBiL3NyYy9jaGNv bi5jCmluZGV4IDkxYjc4MTQ4ZC4uNGFiMmQ3NTcwIDEwMDY0NAotLS0gYS9zcmMvY2hjb24u YworKysgYi9zcmMvY2hjb24uYwpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAic3lz dGVtLmgiCiAjaW5jbHVkZSAiZGV2LWluby5oIgorI2luY2x1ZGUgImZ0cy1taXNzaW5nLmgi CiAjaW5jbHVkZSAiaWdub3JlLXZhbHVlLmgiCiAjaW5jbHVkZSAicXVvdGUuaCIKICNpbmNs dWRlICJyb290LWRldi1pbm8uaCIKQEAgLTEzNyw3ICsxMzgsNyBAQCBjb21wdXRlX2NvbnRl eHRfZnJvbV9tYXNrIChjaGFyIGNvbnN0ICpjb250ZXh0LCBjb250ZXh0X3QgKnJldCkKICAg IFJldHVybiAwIGlmIHN1Y2Nlc3NmdWwsIDEgaWYgZXJyb3JzIG9jY3VycmVkLiAqLwogCiBz dGF0aWMgaW50Ci1jaGFuZ2VfZmlsZV9jb250ZXh0IChpbnQgZmQsIGNoYXIgY29uc3QgKmZp bGUpCitjaGFuZ2VfZmlsZV9jb250ZXh0IChpbnQgZmQsIGNoYXIgY29uc3QgKmZpbGUsIGJv b2wgaWdub3JlX21pc3NpbmcpCiB7CiAgIGNoYXIgKmZpbGVfY29udGV4dCA9IE5VTEw7CiAg IGNvbnRleHRfdCBjb250ZXh0IElGX0xJTlQgKD0gTlVMTCk7CkBAIC0xNTIsNiArMTUzLDgg QEAgY2hhbmdlX2ZpbGVfY29udGV4dCAoaW50IGZkLCBjaGFyIGNvbnN0ICpmaWxlKQogCiAg ICAgICBpZiAoc3RhdHVzIDwgMCAmJiBlcnJubyAhPSBFTk9EQVRBKQogICAgICAgICB7Cisg ICAgICAgICAgaWYgKGlnbm9yZV9taXNzaW5nICYmIGlnbm9yYWJsZV90cmF2ZXJzYWxfZXJy bm8gKGVycm5vKSkKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgIGVycm9yICgw LCBlcnJubywgXygiZmFpbGVkIHRvIGdldCBzZWN1cml0eSBjb250ZXh0IG9mICVzIiksCiAg ICAgICAgICAgICAgICAgIHF1b3RlYWYgKGZpbGUpKTsKICAgICAgICAgICByZXR1cm4gMTsK QEAgLTE4OCw5ICsxOTEsMTIgQEAgY2hhbmdlX2ZpbGVfY29udGV4dCAoaW50IGZkLCBjaGFy IGNvbnN0ICpmaWxlKQogCiAgICAgICBpZiAoZmFpbCkKICAgICAgICAgewotICAgICAgICAg IGVycm9ycyA9IDE7Ci0gICAgICAgICAgZXJyb3IgKDAsIGVycm5vLCBfKCJmYWlsZWQgdG8g Y2hhbmdlIGNvbnRleHQgb2YgJXMgdG8gJXMiKSwKLSAgICAgICAgICAgICAgICAgcXVvdGVh Zl9uICgwLCBmaWxlKSwgcXVvdGVfbiAoMSwgY29udGV4dF9zdHJpbmcpKTsKKyAgICAgICAg ICBpZiAoISAoaWdub3JlX21pc3NpbmcgJiYgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAo ZXJybm8pKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZXJyb3JzID0gMTsKKyAg ICAgICAgICAgICAgZXJyb3IgKDAsIGVycm5vLCBfKCJmYWlsZWQgdG8gY2hhbmdlIGNvbnRl eHQgb2YgJXMgdG8gJXMiKSwKKyAgICAgICAgICAgICAgICAgICAgIHF1b3RlYWZfbiAoMCwg ZmlsZSksIHF1b3RlX24gKDEsIGNvbnRleHRfc3RyaW5nKSk7CisgICAgICAgICAgICB9CiAg ICAgICAgIH0KICAgICB9CiAKQEAgLTIxNCw2ICsyMjAsMTAgQEAgcHJvY2Vzc19maWxlIChG VFMgKmZ0cywgRlRTRU5UICplbnQpCiAgIGNoYXIgY29uc3QgKmZpbGUgPSBlbnQtPmZ0c19h Y2NwYXRoOwogICBjb25zdCBzdHJ1Y3Qgc3RhdCAqZmlsZV9zdGF0cyA9IGVudC0+ZnRzX3N0 YXRwOwogICBib29sIG9rID0gdHJ1ZTsKKyAgYm9vbCBpZ25vcmVfbWlzc2luZyA9IGlnbm9y ZV9taXNzaW5nX2Z0c19lbnRyeSAoZW50KTsKKworICBpZiAoaWdub3JlX21pc3NpbmcgJiYg aWdub3JhYmxlX2Z0c19lcnJvciAoZW50KSkKKyAgICByZXR1cm4gdHJ1ZTsKIAogICBzd2l0 Y2ggKGVudC0+ZnRzX2luZm8pCiAgICAgewpAQCAtMjk1LDcgKzMwNSw3IEBAIHByb2Nlc3Nf ZmlsZSAoRlRTICpmdHMsIEZUU0VOVCAqZW50KQogICAgICAgICBwcmludGYgKF8oImNoYW5n aW5nIHNlY3VyaXR5IGNvbnRleHQgb2YgJXNcbiIpLAogICAgICAgICAgICAgICAgIHF1b3Rl YWYgKGZpbGVfZnVsbF9uYW1lKSk7CiAKLSAgICAgIGlmIChjaGFuZ2VfZmlsZV9jb250ZXh0 IChmdHMtPmZ0c19jd2RfZmQsIGZpbGUpICE9IDApCisgICAgICBpZiAoY2hhbmdlX2ZpbGVf Y29udGV4dCAoZnRzLT5mdHNfY3dkX2ZkLCBmaWxlLCBpZ25vcmVfbWlzc2luZykgIT0gMCkK ICAgICAgICAgb2sgPSBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3NyYy9jaG1vZC5j IGIvc3JjL2NobW9kLmMKaW5kZXggOGI1NzE3MjcwLi42OGYzN2UxODEgMTAwNjQ0Ci0tLSBh L3NyYy9jaG1vZC5jCisrKyBiL3NyYy9jaG1vZC5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5j bHVkZSAiYXNzdXJlLmgiCiAjaW5jbHVkZSAiZGV2LWluby5oIgogI2luY2x1ZGUgImZpbGVt b2RlLmgiCisjaW5jbHVkZSAiZnRzLW1pc3NpbmcuaCIKICNpbmNsdWRlICJpZ25vcmUtdmFs dWUuaCIKICNpbmNsdWRlICJtb2RlY2hhbmdlLmgiCiAjaW5jbHVkZSAicXVvdGUuaCIKQEAg LTEyNSw4ICsxMjYsMTAgQEAgc3RhdGljIHN0cnVjdCBvcHRpb24gY29uc3QgbG9uZ19vcHRp b25zW10gPQogCiBzdGF0aWMgYm9vbAogbW9kZV9jaGFuZ2VkIChpbnQgZGlyX2ZkLCBjaGFy IGNvbnN0ICpmaWxlLCBjaGFyIGNvbnN0ICpmaWxlX2Z1bGxfbmFtZSwKLSAgICAgICAgICAg ICAgbW9kZV90IG9sZF9tb2RlLCBtb2RlX3QgbmV3X21vZGUpCisgICAgICAgICAgICAgIG1v ZGVfdCBvbGRfbW9kZSwgbW9kZV90IG5ld19tb2RlLCBib29sIGlnbm9yZV9taXNzaW5nLAor ICAgICAgICAgICAgICBib29sICpmaWxlX21pc3NpbmcpCiB7CisgICpmaWxlX21pc3Npbmcg PSBmYWxzZTsKICAgaWYgKG5ld19tb2RlICYgKFNfSVNVSUQgfCBTX0lTR0lEIHwgU19JU1ZU WCkpCiAgICAgewogICAgICAgLyogVGhlIG5ldyBtb2RlIGNvbnRhaW5zIHVudXN1YWwgYml0 cyB0aGF0IHRoZSBjYWxsIHRvIGNobW9kIG1heQpAQCAtMTM2LDcgKzEzOSw5IEBAIG1vZGVf Y2hhbmdlZCAoaW50IGRpcl9mZCwgY2hhciBjb25zdCAqZmlsZSwgY2hhciBjb25zdCAqZmls ZV9mdWxsX25hbWUsCiAKICAgICAgIGlmIChmc3RhdGF0IChkaXJfZmQsIGZpbGUsICZuZXdf c3RhdHMsIDApICE9IDApCiAgICAgICAgIHsKLSAgICAgICAgICBpZiAoISBmb3JjZV9zaWxl bnQpCisgICAgICAgICAgKmZpbGVfbWlzc2luZyA9IChpZ25vcmVfbWlzc2luZworICAgICAg ICAgICAgICAgICAgICAgICAgICAgJiYgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoZXJy bm8pKTsKKyAgICAgICAgICBpZiAoISAqZmlsZV9taXNzaW5nICYmICEgZm9yY2Vfc2lsZW50 KQogICAgICAgICAgICAgZXJyb3IgKDAsIGVycm5vLCBfKCJnZXR0aW5nIG5ldyBhdHRyaWJ1 dGVzIG9mICVzIiksCiAgICAgICAgICAgICAgICAgICAgcXVvdGVhZiAoZmlsZV9mdWxsX25h bWUpKTsKICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTUsNiArMjIwLDEwIEBAIHBy b2Nlc3NfZmlsZSAoRlRTICpmdHMsIEZUU0VOVCAqZW50KQogICBzdHJ1Y3QgY2hhbmdlX3N0 YXR1cyBjaCA9IHswfTsKICAgY2guc3RhdHVzID0gQ0hfTk9fU1RBVDsKICAgc3RydWN0IHN0 YXQgc3RhdF9idWY7CisgIGJvb2wgaWdub3JlX21pc3NpbmcgPSBpZ25vcmVfbWlzc2luZ19m dHNfZW50cnkgKGVudCk7CisKKyAgaWYgKGlnbm9yZV9taXNzaW5nICYmIGlnbm9yYWJsZV9m dHNfZXJyb3IgKGVudCkpCisgICAgcmV0dXJuIHRydWU7CiAKICAgc3dpdGNoIChlbnQtPmZ0 c19pbmZvKQogICAgIHsKQEAgLTI2Nyw2ICsyNzYsOSBAQCBwcm9jZXNzX2ZpbGUgKEZUUyAq ZnRzLCBGVFNFTlQgKmVudCkKICAgICAgICAgewogICAgICAgICAgIGlmIChmc3RhdGF0IChm dHMtPmZ0c19jd2RfZmQsIGZpbGUsICZzdGF0X2J1ZiwgMCkgIT0gMCkKICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgaWYgKGlnbm9yZV9taXNzaW5nCisgICAgICAgICAgICAgICAg ICAmJiBpZ25vcmFibGVfdHJhdmVyc2FsX2Vycm5vIChlcnJubykpCisgICAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgIGlmICghIGZvcmNlX3NpbGVudCkKICAg ICAgICAgICAgICAgICBlcnJvciAoMCwgZXJybm8sIF8oImNhbm5vdCBkZXJlZmVyZW5jZSAl cyIpLAogICAgICAgICAgICAgICAgICAgICAgICBxdW90ZWFmIChmaWxlX2Z1bGxfbmFtZSkp OwpAQCAtMzE0LDYgKzMyNiw5IEBAIHByb2Nlc3NfZmlsZSAoRlRTICpmdHMsIEZUU0VOVCAq ZW50KQogICAgICAgICBjaC5zdGF0dXMgPSBDSF9TVUNDRUVERUQ7CiAgICAgICBlbHNlCiAg ICAgICAgIHsKKyAgICAgICAgICBpZiAoaWdub3JlX21pc3NpbmcKKyAgICAgICAgICAgICAg JiYgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoZXJybm8pKQorICAgICAgICAgICAgcmV0 dXJuIHRydWU7CiAgICAgICAgICAgaWYgKCEgaXNfRU5PVFNVUCAoZXJybm8pKQogICAgICAg ICAgICAgewogICAgICAgICAgICAgICBpZiAoISBmb3JjZV9zaWxlbnQpCkBAIC0zMjgsMTAg KzM0MywxNiBAQCBwcm9jZXNzX2ZpbGUgKEZUUyAqZnRzLCBGVFNFTlQgKmVudCkKIAogICBp ZiAodmVyYm9zaXR5ICE9IFZfb2ZmKQogICAgIHsKKyAgICAgIGJvb2wgZmlsZV9taXNzaW5n OwogICAgICAgaWYgKGNoLnN0YXR1cyA9PSBDSF9TVUNDRUVERUQKICAgICAgICAgICAmJiAh bW9kZV9jaGFuZ2VkIChmdHMtPmZ0c19jd2RfZmQsIGZpbGUsIGZpbGVfZnVsbF9uYW1lLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoLm9sZF9tb2RlLCBjaC5uZXdfbW9kZSkp Ci0gICAgICAgIGNoLnN0YXR1cyA9IENIX05PX0NIQU5HRV9SRVFVRVNURUQ7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2gub2xkX21vZGUsIGNoLm5ld19tb2RlLCBpZ25vcmVf bWlzc2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlsZV9taXNzaW5nKSkK KyAgICAgICAgeworICAgICAgICAgIGlmIChmaWxlX21pc3NpbmcpCisgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjaC5zdGF0dXMgPSBDSF9OT19DSEFOR0VfUkVRVUVT VEVEOworICAgICAgICB9CiAKICAgICAgIGlmIChjaC5zdGF0dXMgPT0gQ0hfU1VDQ0VFREVE IHx8IHZlcmJvc2l0eSA9PSBWX2hpZ2gpCiAgICAgICAgIGRlc2NyaWJlX2NoYW5nZSAoZmls ZV9mdWxsX25hbWUsICZjaCk7CmRpZmYgLS1naXQgYS9zcmMvY2hvd24tY29yZS5jIGIvc3Jj L2Nob3duLWNvcmUuYwppbmRleCBlNWUzNTVmZGIuLjIxZjFlM2Q5NyAxMDA2NDQKLS0tIGEv c3JjL2Nob3duLWNvcmUuYworKysgYi9zcmMvY2hvd24tY29yZS5jCkBAIC0yNSw2ICsyNSw3 IEBACiAjaW5jbHVkZSAic3lzdGVtLmgiCiAjaW5jbHVkZSAiYXNzdXJlLmgiCiAjaW5jbHVk ZSAiY2hvd24tY29yZS5oIgorI2luY2x1ZGUgImZ0cy1taXNzaW5nLmgiCiAjaW5jbHVkZSAi aWdub3JlLXZhbHVlLmgiCiAjaW5jbHVkZSAicm9vdC1kZXYtaW5vLmgiCiAjaW5jbHVkZSAi eGZ0cy5oIgpAQCAtMjg0LDYgKzI4NSwxMCBAQCBjaGFuZ2VfZmlsZV9vd25lciAoRlRTICpm dHMsIEZUU0VOVCAqZW50LAogICBjaGFyIGNvbnN0ICpmaWxlX2Z1bGxfbmFtZSA9IGVudC0+ ZnRzX3BhdGg7CiAgIGNoYXIgY29uc3QgKmZpbGUgPSBlbnQtPmZ0c19hY2NwYXRoOwogICBi b29sIG9rID0gdHJ1ZTsKKyAgYm9vbCBpZ25vcmVfbWlzc2luZyA9IGlnbm9yZV9taXNzaW5n X2Z0c19lbnRyeSAoZW50KTsKKworICBpZiAoaWdub3JlX21pc3NpbmcgJiYgaWdub3JhYmxl X2Z0c19lcnJvciAoZW50KSkKKyAgICByZXR1cm4gdHJ1ZTsKIAogICBzd2l0Y2ggKGVudC0+ ZnRzX2luZm8pCiAgICAgewpAQCAtMzgxLDYgKzM4Niw5IEBAIGNoYW5nZV9maWxlX293bmVy IChGVFMgKmZ0cywgRlRTRU5UICplbnQsCiAgICAgICAgIHsKICAgICAgICAgICBpZiAoZnN0 YXRhdCAoZnRzLT5mdHNfY3dkX2ZkLCBmaWxlLCAmc3RhdF9idWYsIDApICE9IDApCiAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgIGlmIChpZ25vcmVfbWlzc2luZworICAgICAgICAg ICAgICAgICAgJiYgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoZXJybm8pKQorICAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICBpZiAoISBjaG9wdC0+Zm9y Y2Vfc2lsZW50KQogICAgICAgICAgICAgICAgIGVycm9yICgwLCBlcnJubywgXygiY2Fubm90 IGRlcmVmZXJlbmNlICVzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlYWYgKGZp bGVfZnVsbF9uYW1lKSk7CkBAIC00NjksMTEgKzQ3NywxNyBAQCBjaGFuZ2VfZmlsZV9vd25l ciAoRlRTICpmdHMsIEZUU0VOVCAqZW50LAogICAgICAgICAgYnkgc29tZSBvdGhlciB1c2Vy IGFuZCBvcGVyYXRpbmcgb24gZmlsZXMgaW4gYSBkaXJlY3RvcnkKICAgICAgICAgIHdoZXJl IE0gaGFzIHdyaXRlIGFjY2Vzcy4gICovCiAKLSAgICAgIGlmIChkb19jaG93biAmJiAhb2sg JiYgISBjaG9wdC0+Zm9yY2Vfc2lsZW50KQotICAgICAgICBlcnJvciAoMCwgZXJybm8sICh1 aWQgIT0gKHVpZF90KSAtMQotICAgICAgICAgICAgICAgICAgICAgICAgICA/IF8oImNoYW5n aW5nIG93bmVyc2hpcCBvZiAlcyIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDogXygi Y2hhbmdpbmcgZ3JvdXAgb2YgJXMiKSksCi0gICAgICAgICAgICAgICBxdW90ZWFmIChmaWxl X2Z1bGxfbmFtZSkpOworICAgICAgaWYgKGRvX2Nob3duICYmICFvaykKKyAgICAgICAgewor ICAgICAgICAgIGlmIChpZ25vcmVfbWlzc2luZworICAgICAgICAgICAgICAmJiBpZ25vcmFi bGVfdHJhdmVyc2FsX2Vycm5vIChlcnJubykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KyAgICAgICAgICBpZiAoISBjaG9wdC0+Zm9yY2Vfc2lsZW50KQorICAgICAgICAgICAgZXJy b3IgKDAsIGVycm5vLCAodWlkICE9ICh1aWRfdCkgLTEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID8gXygiY2hhbmdpbmcgb3duZXJzaGlwIG9mICVzIikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDogXygiY2hhbmdpbmcgZ3JvdXAgb2YgJXMiKSksCisgICAg ICAgICAgICAgICAgICAgcXVvdGVhZiAoZmlsZV9mdWxsX25hbWUpKTsKKyAgICAgICAgfQog ICAgIH0KIAogICBpZiAoY2hvcHQtPnZlcmJvc2l0eSAhPSBWX29mZikKZGlmZiAtLWdpdCBh L3NyYy9kdS5jIGIvc3JjL2R1LmMKaW5kZXggOWI4MDYzMzcxLi5lZWZiMjRmMDUgMTAwNjQ0 Ci0tLSBhL3NyYy9kdS5jCisrKyBiL3NyYy9kdS5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j bHVkZSAiYXNzdXJlLmgiCiAjaW5jbHVkZSAiZGktc2V0LmgiCiAjaW5jbHVkZSAiZXhjbHVk ZS5oIgorI2luY2x1ZGUgImZ0cy1taXNzaW5nLmgiCiAjaW5jbHVkZSAiaHVtYW4uaCIKICNp bmNsdWRlICJtb3VudGxpc3QuaCIKICNpbmNsdWRlICJxdW90ZS5oIgpAQCAtNTU0LDYgKzU1 NSwxMCBAQCBwcm9jZXNzX2ZpbGUgKEZUUyAqZnRzLCBGVFNFTlQgKmVudCkKICAgY2hhciBj b25zdCAqZmlsZSA9IGVudC0+ZnRzX3BhdGg7CiAgIGNvbnN0IHN0cnVjdCBzdGF0ICpzYiA9 IGVudC0+ZnRzX3N0YXRwOwogICBpbnQgaW5mbyA9IGVudC0+ZnRzX2luZm87CisgIGJvb2wg aWdub3JlX21pc3NpbmcgPSBpZ25vcmVfbWlzc2luZ19mdHNfZW50cnkgKGVudCk7CisKKyAg aWYgKGlnbm9yZV9taXNzaW5nICYmIGlnbm9yYWJsZV9mdHNfZXJyb3IgKGVudCkpCisgICAg cmV0dXJuIHRydWU7CiAKICAgaWYgKGluZm8gPT0gRlRTX0ROUikKICAgICB7CkBAIC01NzQs NiArNTc5LDkgQEAgcHJvY2Vzc19maWxlIChGVFMgKmZ0cywgRlRTRU5UICplbnQpCiAgICAg ICAgICAgICAgIE1BWUJFX1VOVVNFRCBGVFNFTlQgY29uc3QgKmUgPSBmdHNfcmVhZCAoZnRz KTsKICAgICAgICAgICAgICAgYWZmaXJtIChlID09IGVudCk7CiAgICAgICAgICAgICAgIGlu Zm8gPSBlbnQtPmZ0c19pbmZvOworCisgICAgICAgICAgICAgIGlmIChpZ25vcmVfbWlzc2lu ZyAmJiBpZ25vcmFibGVfZnRzX2Vycm9yIChlbnQpKQorICAgICAgICAgICAgICAgIHJldHVy biB0cnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgaWYgKGluZm8gPT0gRlRTX05T IHx8IGluZm8gPT0gRlRTX1NMTk9ORSkKZGlmZiAtLWdpdCBhL3NyYy9mdHMtbWlzc2luZy5o IGIvc3JjL2Z0cy1taXNzaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwLi5jYjAwN2JjYTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZnRzLW1pc3NpbmcuaApA QCAtMCwwICsxLDM5IEBACisvKiBmdHMtbWlzc2luZy5oIC0tIGhlbHBlcnMgZm9yIGZpbGVz IG1pc3NpbmcgZHVyaW5nIGFuIEZUUyB0cmF2ZXJzYWwuCisKKyAgIENvcHlyaWdodCAoQykg MjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNp Zm5kZWYgRlRTX01JU1NJTkdfSAorIyBkZWZpbmUgRlRTX01JU1NJTkdfSAorCisjIGluY2x1 ZGUgImZ0c18uaCIKKworc3RhdGljIGlubGluZSBib29sCitpZ25vcmVfbWlzc2luZ19mdHNf ZW50cnkgKEZUU0VOVCBjb25zdCAqZW50KQoreworICByZXR1cm4gKEZUU19ST09UTEVWRUwg PCBlbnQtPmZ0c19sZXZlbAorICAgICAgICAgICYmIGVudC0+ZnRzX2luZm8gIT0gRlRTX1NM CisgICAgICAgICAgJiYgZW50LT5mdHNfaW5mbyAhPSBGVFNfU0xOT05FKTsKK30KKworc3Rh dGljIGlubGluZSBib29sCitpZ25vcmFibGVfZnRzX2Vycm9yIChGVFNFTlQgY29uc3QgKmVu dCkKK3sKKyAgcmV0dXJuIChpZ25vcmFibGVfdHJhdmVyc2FsX2Vycm5vIChlbnQtPmZ0c19l cnJubykKKyAgICAgICAgICAmJiAoZW50LT5mdHNfaW5mbyA9PSBGVFNfTlMgfHwgZW50LT5m dHNfaW5mbyA9PSBGVFNfRVJSCisgICAgICAgICAgICAgIHx8IGVudC0+ZnRzX2luZm8gPT0g RlRTX0ROUikpOworfQorCisjZW5kaWYgLyogRlRTX01JU1NJTkdfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2xvY2FsLm1rIGIvc3JjL2xvY2FsLm1rCmluZGV4IGQ3ZDZhZTUwOS4uZGI4NmNi NWVhIDEwMDY0NAotLS0gYS9zcmMvbG9jYWwubWsKKysrIGIvc3JjL2xvY2FsLm1rCkBAIC01 MCw2ICs1MCw3IEBAIG5vaW5zdF9IRUFERVJTID0JCVwKICAgc3JjL2ZpbmQtbW91bnQtcG9p bnQuaAlcCiAgIHNyYy9mcy5oCQkJXAogICBzcmMvZnMtaXMtbG9jYWwuaAkJXAorICBzcmMv ZnRzLW1pc3NpbmcuaAkJXAogICBzcmMvZ3JvdXAtbGlzdC5oCQlcCiAgIHNyYy9pb2Jsa3Np emUuaAkJXAogICBzcmMvaW9wb2xsLmgJCQlcCmRpZmYgLS1naXQgYS9zcmMvbHMuYyBiL3Ny Yy9scy5jCmluZGV4IDNkNTgzYjg1Zi4uYTRiZTZmY2VhIDEwMDY0NAotLS0gYS9zcmMvbHMu YworKysgYi9zcmMvbHMuYwpAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIGF0dGFj aCAoY2hhciAqZGVzdCwgY2hhciBjb25zdCAqZGlybmFtZSwgY2hhciBjb25zdCAqbmFtZSk7 CiBzdGF0aWMgdm9pZCBjbGVhcl9maWxlcyAodm9pZCk7CiBzdGF0aWMgdm9pZCBleHRyYWN0 X2RpcnNfZnJvbV9maWxlcyAoY2hhciBjb25zdCAqZGlybmFtZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbW1hbmRfbGluZV9hcmcpOwotc3RhdGlj IHZvaWQgZ2V0X2xpbmtfbmFtZSAoY2hhciBjb25zdCAqZmlsZW5hbWUsIHN0cnVjdCBmaWxl aW5mbyAqZiwKK3N0YXRpYyBib29sIGdldF9saW5rX25hbWUgKGNoYXIgY29uc3QgKmZpbGVu YW1lLCBzdHJ1Y3QgZmlsZWluZm8gKmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sIGNvbW1hbmRfbGluZV9hcmcpOwogc3RhdGljIHZvaWQgaW5kZW50IChzaXplX3QgZnJv bSwgc2l6ZV90IHRvKTsKIHN0YXRpYyBpZHhfdCBjYWxjdWxhdGVfY29sdW1ucyAoYm9vbCBi eV9jb2x1bW5zKTsKQEAgLTI5NjEsNyArMjk2MSw4IEBAIHByaW50X2RpciAoY2hhciBjb25z dCAqbmFtZSwgY2hhciBjb25zdCAqcmVhbG5hbWUsIGJvb2wgY29tbWFuZF9saW5lX2FyZykK ICAgZGlycCA9IG9wZW5kaXIgKG5hbWUpOwogICBpZiAoIWRpcnApCiAgICAgewotICAgICAg ZmlsZV9mYWlsdXJlIChjb21tYW5kX2xpbmVfYXJnLCBfKCJjYW5ub3Qgb3BlbiBkaXJlY3Rv cnkgJXMiKSwgbmFtZSk7CisgICAgICBpZiAoY29tbWFuZF9saW5lX2FyZyB8fCAhIGlnbm9y YWJsZV90cmF2ZXJzYWxfZXJybm8gKGVycm5vKSkKKyAgICAgICAgZmlsZV9mYWlsdXJlIChj b21tYW5kX2xpbmVfYXJnLCBfKCJjYW5ub3Qgb3BlbiBkaXJlY3RvcnkgJXMiKSwgbmFtZSk7 CiAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yOTc1LDggKzI5NzYsOSBAQCBwcmludF9k aXIgKGNoYXIgY29uc3QgKm5hbWUsIGNoYXIgY29uc3QgKnJlYWxuYW1lLCBib29sIGNvbW1h bmRfbGluZV9hcmcpCiAgICAgICAgICAgID8gZnN0YXRfZm9yX2lubyAoZmQsICZkaXJfc3Rh dCkKICAgICAgICAgICAgOiBzdGF0X2Zvcl9pbm8gKG5hbWUsICZkaXJfc3RhdCkpIDwgMCkK ICAgICAgICAgewotICAgICAgICAgIGZpbGVfZmFpbHVyZSAoY29tbWFuZF9saW5lX2FyZywK LSAgICAgICAgICAgICAgICAgICAgICAgIF8oImNhbm5vdCBkZXRlcm1pbmUgZGV2aWNlIGFu ZCBpbm9kZSBvZiAlcyIpLCBuYW1lKTsKKyAgICAgICAgICBpZiAoISBpZ25vcmFibGVfdHJh dmVyc2FsX2Vycm5vIChlcnJubykpCisgICAgICAgICAgICBmaWxlX2ZhaWx1cmUgKGNvbW1h bmRfbGluZV9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF8oImNhbm5vdCBkZXRl cm1pbmUgZGV2aWNlIGFuZCBpbm9kZSBvZiAlcyIpLCBuYW1lKTsKICAgICAgICAgICBjbG9z ZWRpciAoZGlycCk7CiAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMDA4LDcg KzMwMTAsOCBAQCBwcmludF9kaXIgKGNoYXIgY29uc3QgKm5hbWUsIGNoYXIgY29uc3QgKnJl YWxuYW1lLCBib29sIGNvbW1hbmRfbGluZV9hcmcpCiAgICAgICBpZiAocHJpbnRfaHlwZXJs aW5rKQogICAgICAgICB7CiAgICAgICAgICAgYWJzb2x1dGVfbmFtZSA9IGNhbm9uaWNhbGl6 ZV9maWxlbmFtZV9tb2RlIChuYW1lLCBDQU5fTUlTU0lORyk7Ci0gICAgICAgICAgaWYgKCEg YWJzb2x1dGVfbmFtZSkKKyAgICAgICAgICBpZiAoISBhYnNvbHV0ZV9uYW1lCisgICAgICAg ICAgICAgICYmICEgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoZXJybm8pKQogICAgICAg ICAgICAgZmlsZV9mYWlsdXJlIChjb21tYW5kX2xpbmVfYXJnLAogICAgICAgICAgICAgICAg ICAgICAgICAgICBfKCJlcnJvciBjYW5vbmljYWxpemluZyAlcyIpLCBuYW1lKTsKICAgICAg ICAgfQpAQCAtMzA2NCwxMiArMzA2Nyw5IEBAIHByaW50X2RpciAoY2hhciBjb25zdCAqbmFt ZSwgY2hhciBjb25zdCAqcmVhbG5hbWUsIGJvb2wgY29tbWFuZF9saW5lX2FyZykKICAgICAg ICAgICBpbnQgZXJyID0gZXJybm87CiAgICAgICAgICAgaWYgKGVyciA9PSAwKQogICAgICAg ICAgICAgYnJlYWs7Ci0gICAgICAgICAgLyogU29tZSByZWFkZGlyKClzIGRvIG5vdCBhYnNv cmIgRU5PRU5UIChkaXIgZGVsZXRlZCBidXQgb3BlbikuCi0gICAgICAgICAgICAgVGhpcyBi dWcgd2FzIGZpeGVkIGluIGdsaWJjIDIuMyAoMjAwMikuICAqLwotI2lmICEgKDIgPCBfX0dM SUJDX18gKyAoMyA8PSBfX0dMSUJDX01JTk9SX18pKQotICAgICAgICAgIGlmIChlcnIgPT0g RU5PRU5UKQorICAgICAgICAgIC8qIElnbm9yZSBlcnJvcnMgaW5kaWNhdGluZyB0aGF0IHRo ZSBkaXJlY3Rvcnkgd2FzIHJlbW92ZWQuICAqLworICAgICAgICAgIGlmIChpZ25vcmFibGVf dHJhdmVyc2FsX2Vycm5vIChlcnIpKQogICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAg ICAgICAgICBmaWxlX2ZhaWx1cmUgKGNvbW1hbmRfbGluZV9hcmcsIF8oInJlYWRpbmcgZGly ZWN0b3J5ICVzIiksIG5hbWUpOwogICAgICAgICAgIGlmIChlcnIgIT0gRU9WRVJGTE9XKQog ICAgICAgICAgICAgYnJlYWs7CkBAIC0zMzkxLDcgKzMzOTEsOSBAQCBnb2JibGVfZmlsZSAo Y2hhciBjb25zdCAqbmFtZSwgZW51bSBmaWxldHlwZSB0eXBlLCBpbm9fdCBpbm9kZSwKICAg ICAgICAgewogICAgICAgICAgIGYtPmFic29sdXRlX25hbWUgPSBjYW5vbmljYWxpemVfZmls ZW5hbWVfbW9kZSAoZnVsbF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOX01JU1NJTkcpOwotICAgICAgICAgIGlm ICghIGYtPmFic29sdXRlX25hbWUpCisgICAgICAgICAgaWYgKCEgZi0+YWJzb2x1dGVfbmFt ZQorICAgICAgICAgICAgICAmJiAoY29tbWFuZF9saW5lX2FyZworICAgICAgICAgICAgICAg ICAgfHwgISBpZ25vcmFibGVfdHJhdmVyc2FsX2Vycm5vIChlcnJubykpKQogICAgICAgICAg ICAgZmlsZV9mYWlsdXJlIChjb21tYW5kX2xpbmVfYXJnLAogICAgICAgICAgICAgICAgICAg ICAgICAgICBfKCJlcnJvciBjYW5vbmljYWxpemluZyAlcyIpLCBmdWxsX25hbWUpOwogICAg ICAgICB9CkBAIC0zNDM5LDYgKzM0NDEsMjIgQEAgZ29iYmxlX2ZpbGUgKGNoYXIgY29uc3Qg Km5hbWUsIGVudW0gZmlsZXR5cGUgdHlwZSwgaW5vX3QgaW5vZGUsCiAKICAgICAgIGlmIChl cnIgIT0gMCkKICAgICAgICAgeworICAgICAgICAgIGlmICghIGNvbW1hbmRfbGluZV9hcmcg JiYgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoZXJybm8pKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICBpbnQgc3RhdF9lcnJubyA9IGVycm5vOworICAgICAgICAgICAgICBz dHJ1Y3Qgc3RhdCBsaW5rc3RhdDsKKyAgICAgICAgICAgICAgYm9vbCBkYW5nbGluZ19saW5r ID0gKGRvX2RlcmVmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAo dHlwZSA9PSBzeW1ib2xpY19saW5rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfHwgdHlwZSA9PSB1bmtub3duKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJiYgZG9fbHN0YXQgKGZ1bGxfbmFtZSwgJmxpbmtzdGF0KSA9PSAwKTsK KyAgICAgICAgICAgICAgZXJybm8gPSBzdGF0X2Vycm5vOworICAgICAgICAgICAgICBpZiAo ISBkYW5nbGluZ19saW5rKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg IGZyZWVfZW50IChmKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgIC8qIEZhaWx1cmUgdG8gc3Rh dCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBsZWFkcyB0bwogICAgICAgICAgICAgIGFuIGV4 aXQgc3RhdHVzIG9mIDIuICBGb3Igb3RoZXIgZmlsZXMsIHN0YXQgZmFpbHVyZQogICAgICAg ICAgICAgIHByb3Zva2VzIGFuIGV4aXQgc3RhdHVzIG9mIDEuICAqLwpAQCAtMzQ4Myw3ICsz NTAxLDggQEAgZ29iYmxlX2ZpbGUgKGNoYXIgY29uc3QgKm5hbWUsIGVudW0gZmlsZXR5cGUg dHlwZSwgaW5vX3QgaW5vZGUsCiAgICAgICAgICBBbHNvIGlmIGEgZmlsZSBpcyByZW1vdmVk IHdoaWxlIHdlJ3JlIHJlYWRpbmcgQUNMIGluZm8sCiAgICAgICAgICBBQ0xfVF9VTktOT1dO IGlzIHN1ZmZpY2llbnQgaW5kaWNhdGlvbiBmb3IgdGhhdCBlZGdlIGNhc2UuICAqLwogICAg ICAgYm9vbCBjYW5ub3RfYWNjZXNzX2FjbCA9IG4gPCAwCi0gICAgICAgICAgICYmIChlcnJu byA9PSBFQUNDRVMgfHwgZXJybm8gPT0gRU5PRU5UKTsKKyAgICAgICAgICAgJiYgKGVycm5v ID09IEVBQ0NFUworICAgICAgICAgICAgICAgfHwgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJu byAoZXJybm8pKTsKIAogICAgICAgZi0+YWNsX3R5cGUgPSAoIWhhdmVfc2NvbnRleHQgJiYg IWhhdmVfYWNsCiAgICAgICAgICAgICAgICAgICAgICA/IChjYW5ub3RfYWNjZXNzX2FjbCA/ IEFDTF9UX1VOS05PV04gOiBBQ0xfVF9OT05FKQpAQCAtMzUwMSw2ICszNTIwLDcgQEAgZ29i YmxlX2ZpbGUgKGNoYXIgY29uc3QgKm5hbWUsIGVudW0gZmlsZXR5cGUgdHlwZSwgaW5vX3Qg aW5vZGUsCiAgICAgICAgICAgICAgaXNuJ3Qgb24gdGhlIHJpZ2h0IHR5cGUgb2YgZmlsZSBz eXN0ZW0uICBJLmUuLCBhIGdldGZpbGVjb24KICAgICAgICAgICAgICBmYWlsdXJlIGlzbid0 IGluIHRoZSBzYW1lIGNsYXNzIGFzIGEgc3RhdCBmYWlsdXJlLiAgKi8KICAgICAgICAgICBp ZiAocHJpbnRfc2NvbnRleHQgJiYgYWkuc2NvbnRleHRfZXJyCisgICAgICAgICAgICAgICYm ICEgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoYWkuc2NvbnRleHRfZXJyKQogICAgICAg ICAgICAgICAmJiAoISAoaXNfRU5PVFNVUCAoYWkuc2NvbnRleHRfZXJyKQogICAgICAgICAg ICAgICAgICAgICAgfHwgYWkuc2NvbnRleHRfZXJyID09IEVOT0RBVEEpKSkKICAgICAgICAg ICAgIGVycm9yICgwLCBhaS5zY29udGV4dF9lcnIsICIlcyIsIHF1b3RlZiAoZnVsbF9uYW1l KSk7CkBAIC0zNTIyLDcgKzM1NDIsMTEgQEAgZ29iYmxlX2ZpbGUgKGNoYXIgY29uc3QgKm5h bWUsIGVudW0gZmlsZXR5cGUgdHlwZSwgaW5vX3QgaW5vZGUsCiAgICAgewogICAgICAgc3Ry dWN0IHN0YXQgbGlua3N0YXRzOwogCi0gICAgICBnZXRfbGlua19uYW1lIChmdWxsX25hbWUs IGYsIGNvbW1hbmRfbGluZV9hcmcpOworICAgICAgaWYgKCEgZ2V0X2xpbmtfbmFtZSAoZnVs bF9uYW1lLCBmLCBjb21tYW5kX2xpbmVfYXJnKSkKKyAgICAgICAgeworICAgICAgICAgIGZy ZWVfZW50IChmKTsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogCiAgICAgICAv KiBVc2UgdGhlIHNsb3dlciBxdW90aW5nIHBhdGggZm9yIHRoaXMgZW50cnksIHRob3VnaAog ICAgICAgICAgZG9uJ3QgdXBkYXRlIENXRF9TT01FX1FVT1RFRCBzaW5jZSBhbGlnbm1lbnQg bm90IGFmZmVjdGVkLiAgKi8KQEAgLTM2NDgsMTMgKzM2NzIsMTkgQEAgaXNfbGlua2VkX2Rp cmVjdG9yeSAoY29uc3Qgc3RydWN0IGZpbGVpbmZvICpmKQogICAgaW50byB0aGUgTElOS05B TUUgZmllbGQgb2YgJ2YnLiAgQ09NTUFORF9MSU5FX0FSRyBpbmRpY2F0ZXMgd2hldGhlcgog ICAgRklMRU5BTUUgaXMgYSBjb21tYW5kLWxpbmUgYXJndW1lbnQuICAqLwogCi1zdGF0aWMg dm9pZAorc3RhdGljIGJvb2wKIGdldF9saW5rX25hbWUgKGNoYXIgY29uc3QgKmZpbGVuYW1l LCBzdHJ1Y3QgZmlsZWluZm8gKmYsIGJvb2wgY29tbWFuZF9saW5lX2FyZykKIHsKICAgZi0+ bGlua25hbWUgPSBhcmVhZGxpbmtfd2l0aF9zaXplIChmaWxlbmFtZSwgZi0+c3RhdC5zdF9z aXplKTsKICAgaWYgKGYtPmxpbmtuYW1lID09IE5VTEwpCi0gICAgZmlsZV9mYWlsdXJlIChj b21tYW5kX2xpbmVfYXJnLCBfKCJjYW5ub3QgcmVhZCBzeW1ib2xpYyBsaW5rICVzIiksCi0g ICAgICAgICAgICAgICAgICBmaWxlbmFtZSk7CisgICAgeworICAgICAgaWYgKCEgY29tbWFu ZF9saW5lX2FyZworICAgICAgICAgICYmIGlnbm9yYWJsZV90cmF2ZXJzYWxfZXJybm8gKGVy cm5vKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZmlsZV9mYWlsdXJlIChjb21t YW5kX2xpbmVfYXJnLCBfKCJjYW5ub3QgcmVhZCBzeW1ib2xpYyBsaW5rICVzIiksCisgICAg ICAgICAgICAgICAgICAgIGZpbGVuYW1lKTsKKyAgICB9CisgIHJldHVybiB0cnVlOwogfQog CiAvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgbGFzdCBjb21wb25lbnQgb2YgTkFNRSBpcyAnLicg b3IgJy4uJwpkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbS5oIGIvc3JjL3N5c3RlbS5oCmluZGV4 IGQwZjJlMGM0NC4uODljZTJhOGFhIDEwMDY0NAotLS0gYS9zcmMvc3lzdGVtLmgKKysrIGIv c3JjL3N5c3RlbS5oCkBAIC04Myw2ICs4MywxNCBAQAogIyBkZWZpbmUgRU5PREFUQSAoLTEp CiAjZW5kaWYKIAorLyogUmV0dXJuIHRydWUgaWYgRVJSTlVNIGluZGljYXRlcyB0aGF0IGEg ZmlsZSBkaXNhcHBlYXJlZCBkdXJpbmcgYQorICAgZGlyZWN0b3J5IHRyYXZlcnNhbC4gICov CitzdGF0aWMgaW5saW5lIGJvb2wKK2lnbm9yYWJsZV90cmF2ZXJzYWxfZXJybm8gKGludCBl cnJudW0pCit7CisgIHJldHVybiBlcnJudW0gPT0gRU5PRU5UIHx8IGVycm51bSA9PSBFTk9U RElSOworfQorCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSAidmVyc2lvbi5oIgog CmRpZmYgLS1naXQgYS90ZXN0cy9jaGNvbi90cmF2ZXJzYWwtbWlzc2luZy5zaCBiL3Rlc3Rz L2NoY29uL3RyYXZlcnNhbC1taXNzaW5nLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4 IDAwMDAwMDAwMC4uMzU2ZDdjZTRkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hjb24v dHJhdmVyc2FsLW1pc3Npbmcuc2gKQEAgLTAsMCArMSw0OCBAQAorIyEvYmluL3NoCisjIFRl c3QgaWdub3JpbmcgdHJhdmVyc2FsIHJhY2VzIHVzaW5nIHN0cmFjZSBmYXVsdCBpbmplY3Rp b24uCisKKyMgQ29weXJpZ2h0IChDKSAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisKKy4gIiR7c3JjZGlyPS59L3Rlc3RzL2luaXQuc2giOyBwYXRoX3ByZXBlbmRfIC4v c3JjCitwcmludF92ZXJfIGNoY29uCityZXF1aXJlX3N0cmFjZV8gZ2V0eGF0dHIKKworbWtk aXIgZCB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KK3RvdWNoIGQvZm9vIHx8IGZyYW1ld29ya19m YWlsdXJlXworeGF0dHJzPWdldHhhdHRyLGxnZXR4YXR0cixzZXR4YXR0cixsc2V0eGF0dHIK KworKGNkIGQgJiYgY2hjb24gLVIgLXQgdXNlcl90bXBfdCAuID4gL2Rldi9udWxsIDI+JjEp IFwKKyAgfHwgc2tpcF8gJ2NoY29uIGRvZXMgbm90IHdvcmsgb24gdGhlIHRlc3QgZmlsZSBz eXN0ZW0nCisKKyMgU2tpcCBpZiBzdHJhY2UgZG9lcyBub3Qgc3VwcG9ydCBwYXRoLWZpbHRl cmVkIHN5c2NhbGwgaW5qZWN0aW9uLgorc3RyYWNlIC0tcXVpZXQ9YWxsIC1vIC9kZXYvbnVs bCAtUCAvcHJvYy9zZWxmL2ZkLzQvZm9vIFwKKyAgLWUgaW5qZWN0PSR4YXR0cnM6ZXJyb3I9 RU5PRU5UIHRydWUgMj4gL2Rldi9udWxsIFwKKyAgfHwgc2tpcF8gJ3N0cmFjZSBkb2VzIG5v dCBzdXBwb3J0IHRoZSByZXF1aXJlZCBvcHRpb25zIGFuZCBzeXNjYWxscycKKworZm9yIGVy cm51bSBpbiBFTk9FTlQgRU5PVERJUjsgZG8KKyAgcm0gLWYgZXJyIHRyYWNlCisgIChjZCBk ICYmIHN0cmFjZSAtLXF1aWV0PWFsbCAtbyAuLi90cmFjZSAtUCAvcHJvYy9zZWxmL2ZkLzQv Zm9vIFwKKyAgICAgLWUgaW5qZWN0PSR4YXR0cnM6ZXJyb3I9JGVycm51bSBjaGNvbiAtUiAt dCB1c2VyX3RtcF90IC4gXAorICAgICA+IC9kZXYvbnVsbCAyPiAuLi9lcnIpCisgIHN0YXR1 cz0kPworCisgIGdyZXAgJyAoSU5KRUNURUQpJyB0cmFjZSA+IC9kZXYvbnVsbCAyPiYxIFwK KyAgICB8fCBza2lwXyAnc3RyYWNlIGRpZCBub3QgaW5qZWN0IHRoZSByZXF1ZXN0ZWQgZmFp bHVyZScKKyAgdGVzdCAkc3RhdHVzIC1lcSAwIHx8IGZhaWw9MQorICB0ZXN0ICEgLXMgZXJy IHx8IHsgY2F0IGVycjsgZmFpbD0xOyB9Citkb25lCisKK0V4aXQgJGZhaWwKZGlmZiAtLWdp dCBhL3Rlc3RzL2xvY2FsLm1rIGIvdGVzdHMvbG9jYWwubWsKaW5kZXggMThiZjc5ODYxLi45 NDE0ZGJmOWQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xvY2FsLm1rCisrKyBiL3Rlc3RzL2xvY2Fs Lm1rCkBAIC0xODUsNiArMTg1LDcgQEAgYWxsX3Rlc3RzID0JCQkJCVwKICAgdGVzdHMvbWlz Yy9pby1lcnJvcnMuc2gJCQlcCiAgIHRlc3RzL21pc2MvcmVhZC1lcnJvcnMuc2gJCQlcCiAg IHRlc3RzL21pc2MvcmVzcG9uc2l2ZS5zaAkJCVwKKyAgdGVzdHMvbWlzYy90cmF2ZXJzYWwt bWlzc2luZy5zaAkJXAogICB0ZXN0cy9taXNjL3dhcm5pbmctZXJyb3JzLnNoCQkJXAogICB0 ZXN0cy9taXNjL3dyaXRlLWVycm9ycy5zaAkJCVwKICAgdGVzdHMvdGFpbC9iYXNpYy1zZWVr LnNoCQkJXApAQCAtMjk3LDYgKzI5OCw3IEBAIGFsbF90ZXN0cyA9CQkJCQlcCiAgIHRlc3Rz L3B3ZC9hcmd1bWVudC5zaAkJCQlcCiAgIHRlc3RzL3B3ZC9wd2Qtb3B0aW9uLnNoCQkJXAog ICB0ZXN0cy9jaGNvbi9jaGNvbi1mYWlsLnNoCQkJXAorICB0ZXN0cy9jaGNvbi90cmF2ZXJz YWwtbWlzc2luZy5zaAkJXAogICB0ZXN0cy9taXNjL2NvcmV1dGlscy5zaAkJCVwKICAgdGVz dHMvY3V0L2N1dC5wbAkJCQlcCiAgIHRlc3RzL2N1dC9tYi1ub24tdXRmOC5zaAkJCVwKZGlm ZiAtLWdpdCBhL3Rlc3RzL21pc2MvdHJhdmVyc2FsLW1pc3Npbmcuc2ggYi90ZXN0cy9taXNj L3RyYXZlcnNhbC1taXNzaW5nLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw MDAwMC4uMWZhN2RkODg4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvbWlzYy90cmF2ZXJz YWwtbWlzc2luZy5zaApAQCAtMCwwICsxLDY4IEBACisjIS9iaW4vc2gKKyMgVGVzdCBpZ25v cmluZyB0cmF2ZXJzYWwgcmFjZXMgdXNpbmcgc3RyYWNlIGZhdWx0IGluamVjdGlvbi4KKwor IyBDb3B5cmlnaHQgKEMpIDIwMjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisK KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKwor LiAiJHtzcmNkaXI9Ln0vdGVzdHMvaW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLi9zcmMKK3By aW50X3Zlcl8gbHMgY2htb2QgY2hvd24gY2hncnAgZHUKK3JlcXVpcmVfc3RyYWNlXyBzdGF0 CisKK21rZGlyIGQgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCit0b3VjaCBkL2ZvbyB8fCBmcmFt ZXdvcmtfZmFpbHVyZV8KK3VpZD0kKGlkIC11KSB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KK2dp ZD0kKGlkIC1nKSB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KKworc3RhdHM9J3N0YXQnCisjIExp c3Qgb3RoZXIgX2ZpbGUgbmFtZV8gc3RhdCBmdW5jdGlvbnMgdG8gaW5jcmVhc2UgY292ZXJh Z2UuCitvdGhlcl9zdGF0cz0nc3RhdHggbHN0YXQgc3RhdDY0IGxzdGF0NjQgbmV3ZnN0YXRh dCBmc3RhdGF0NjQnCitmb3Igc3RhdCBpbiAkb3RoZXJfc3RhdHM7IGRvCisgIHN0cmFjZSAt cWUgIiRzdGF0IiB0cnVlID4gL2Rldi9udWxsIDI+JjEgJiYKKyAgICBzdGF0cz0iJHN0YXRz LCRzdGF0IgorZG9uZQorCitjaG1vZHM9Y2htb2QsZmNobW9kYXQsZmNobW9kYXQyCitjaG93 bnM9Y2hvd24sbGNob3duLGZjaG93bmF0CisKKyMgU2tpcCBpZiBzdHJhY2UgZG9lcyBub3Qg c3VwcG9ydCBwYXRoLWZpbHRlcmVkIHN5c2NhbGwgaW5qZWN0aW9uLgorc3RyYWNlIC0tcXVp ZXQ9YWxsIC1vIC9kZXYvbnVsbCAtUCBmb28gXAorICAtZSBpbmplY3Q9JHN0YXRzOmVycm9y PUVOT0VOVCB0cnVlIDI+IC9kZXYvbnVsbCBcCisgIHx8IHNraXBfICdzdHJhY2UgZG9lcyBu b3Qgc3VwcG9ydCB0aGUgcmVxdWlyZWQgb3B0aW9ucyBhbmQgc3lzY2FsbHMnCisKK3J1bl9p bmplY3RlZF8gKCkKK3sKKyAgcGF0aD0kMQorICBzeXNjYWxscz0kMgorICBzaGlmdCAyCisg IHJtIC1mIGVyciB0cmFjZQorICAoY2QgZCAmJiBzdHJhY2UgLS1xdWlldD1hbGwgLW8gLi4v dHJhY2UgLVAgIiRwYXRoIiBcCisgICAgIC1lIGluamVjdD0iJHN5c2NhbGxzOmVycm9yPSRl cnJudW0iICIkQCIgPiAvZGV2L251bGwgMj4gLi4vZXJyKQorICBzdGF0dXM9JD8KKworICBn cmVwICcgKElOSkVDVEVEKScgdHJhY2UgPiAvZGV2L251bGwgMj4mMSBcCisgICAgfHwgc2tp cF8gJ3N0cmFjZSBkaWQgbm90IGluamVjdCB0aGUgcmVxdWVzdGVkIGZhaWx1cmUnCisgIHRl c3QgJHN0YXR1cyAtZXEgMCB8fCBmYWlsPTEKKyAgdGVzdCAhIC1zIGVyciB8fCB7IGNhdCBl cnI7IGZhaWw9MTsgfQorfQorCitmb3IgZXJybnVtIGluIEVOT0VOVCBFTk9URElSOyBkbwor ICBydW5faW5qZWN0ZWRfIGZvbyAiJHN0YXRzIiBscyAtbCAuCisgIHJ1bl9pbmplY3RlZF8g Zm9vICIkc3RhdHMiIGR1IC1hIC4KKyAgcnVuX2luamVjdGVkXyBmb28gIiRjaG1vZHMiIGNo bW9kIC1SIDA3MDAgLgorICBydW5faW5qZWN0ZWRfIGZvbyAiJGNob3ducyIgY2hvd24gLVIg IiR1aWQiIC4KKyAgcnVuX2luamVjdGVkXyBmb28gIiRjaG93bnMiIGNoZ3JwIC1SICIkZ2lk IiAuCitkb25lCisKK0V4aXQgJGZhaWwKLS0gCjIuNTUuMAoK --------------EqjuCzz7zfjzHt7XDD46Bmu3--