Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wKMIb-000tFe-36 for pgsql-hackers@arkaria.postgresql.org; Tue, 05 May 2026 20:23:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wKMIa-00Dn49-21 for pgsql-hackers@arkaria.postgresql.org; Tue, 05 May 2026 20:23:20 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wKMIZ-00Dn3z-2b for pgsql-hackers@lists.postgresql.org; Tue, 05 May 2026 20:23:20 +0000 Received: from mail-dy1-x1330.google.com ([2607:f8b0:4864:20::1330]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wKMIU-00000000NZK-2AR8 for pgsql-hackers@postgresql.org; Tue, 05 May 2026 20:23:18 +0000 Received: by mail-dy1-x1330.google.com with SMTP id 5a478bee46e88-2ef84d016d9so8819291eec.0 for ; Tue, 05 May 2026 13:23:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20251104.gappssmtp.com; s=20251104; t=1778012594; x=1778617394; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=aB4rG0AHz+14IyjUpGeC+F/UdGWmhZIUqWIL7sZxfHc=; b=djZGqvMo9HzGqT0sXikf+ziPi/JxK8Z0bZNKBTO/SJgegPYPQegoBGOtiNwAOB91Ee Uv9czAawhj1YhCqkyOoDcbfzhuTx0pY7Z7BdDOwiyWQ4kDTcG82CTFem5DMhsMYllJs8 X1cEo/o8rLtRJnPnbAgjLvB+RmZlPeuxYtnZlzg74qF3G71OKwlySI2kMvSKC1XNBQSo dpg0c2zm5+0JbN3kUn7HzNxlSLxQlJ9mQjH5nyjMhMn6UvIhJK40HUvAFtMURgS+zBdF ZSyLeRZ3lx100g9ZcqLX0Q2dHLMgnJxQuDTbOIStorWoAjBE1M5F40TtzmtDsO0I/XYT maMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778012594; x=1778617394; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=aB4rG0AHz+14IyjUpGeC+F/UdGWmhZIUqWIL7sZxfHc=; b=g3k3LNx0bIOVtY3uB7r0EGJzNZFyjxM15T+Y7OZh66Wl9FAuYha+W5VZmzNp4xXOc8 4fyEeFUOVLdDCmPVAxDQ2Gj43c+uFTFlef35Hk1ydcyJHsf7MiF4tWxXC/lHybXjgUYR Z/xT6BebkSJqYCZRcTUl+nuXEHzqBNL5w4sd3yKbLlEhaGte0Kc8KnFsJqHW9GQOpIqw zQoQcrA6Mj86sIMP6a3ZyEXbIOz29v6KUpeQNiGtk2FeeBtdBPZbvfQkoVtiDR2/ow+I 78yCFT+KhDTPbPr80aV4ioxsKp44aeK8tziS14DUsaeYU9vTerg5sPEHMuSoUvbHWONi 1fKw== X-Gm-Message-State: AOJu0YwIwutO3pQ22A2bKGsnj1nYd77G7/H9nlOq8pywpLyxB7kwtmzu JhsH/WxnMC8/UYSmUuyVyMm/CnAvH0HAdO708P/G60KcxQ3IXrOQdm5gGfzgwfcN2J8BOji2CF3 ECQk= X-Gm-Gg: AeBDievR6d6iwZN0H+Z5viYa3pL3DtUEaG86S4jJKjjU0MqY2YevdwtDozrU6CYkZZ5 Mh12QmeYBNQIjDtqyA06unrktj7zfwuUTx/kAi9l3ArcykDFWhms0t6zXK9bTsKgPSobSAVhCC5 VmhKb0kiPw6Hpq5dxWg9wY+NeQEUYl/k9CmuDiWnN9akhEOs173PHiCtsVahndqaO/2LGGjlIba XkQXD6hGXPxWIZAJx0Do1Qn59UqQUVutjN1tDMhUY/fRQeFvhukaYGi39d1vDq64MoF7DQns2W2 TiJin/SH6lfxeWAgelfx0AV6KTrV2I8LLNZs1SCHuDLJ2X+3TijS8pmdhaBwk6NIpvL2VGByXKN vMASvPKPOed3ZiSsx1cn6vdasRN//mU305YHI1g/mQGlcYXBtzI4CBn2BoxgjFZVMNe59auJXk6 K3VdjJl8f9DeTb8PLDRXR90ogky78bCS+1vw== X-Received: by 2002:a05:7301:6786:b0:2dd:405f:89b3 with SMTP id 5a478bee46e88-2f545f95879mr512042eec.0.1778012593852; Tue, 05 May 2026 13:23:13 -0700 (PDT) Received: from [10.10.244.216] ([12.63.242.122]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f569f89b3bsm559623eec.0.2026.05.05.13.23.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 13:23:13 -0700 (PDT) Message-ID: <56d386147d2f0a269c7b8644eee05d1dce4aa80d.camel@j-davis.com> Subject: Re: Refactor: allow pg_strncoll(), etc., to accept -1 length for NUL-terminated cstrings. From: Jeff Davis To: Andres Freund Cc: pgsql-hackers@postgresql.org Date: Tue, 05 May 2026 13:23:12 -0700 In-Reply-To: References: <2d758e07dff26bcc7cbe2aec57431329bfe3679a.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-KH5uh44GA+3uIEZS520b" User-Agent: Evolution 3.52.3-0ubuntu1.1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-KH5uh44GA+3uIEZS520b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 2026-05-01 at 12:40 -0400, Andres Freund wrote: > Hi, >=20 > On 2024-08-22 11:00:54 -0700, Jeff Davis wrote: > > Like ICU, allow -1 length to mean that the input string is NUL- > > terminated for pg_strncoll(), pg_strnxfrm(), and > > pg_strnxfrm_prefix(). > >=20 > > This simplifies the API and code a bit. >=20 > I don't really like this. Agreed. I did this to match up with the ICU API a bit better, but if it's interfering with useful tools, then the special cases aren't worth it. Patch attached. It causes a bit of churn, so one disadvantage is that it will complicate future backports in this area. Regards, Jeff Davis --=-KH5uh44GA+3uIEZS520b Content-Disposition: attachment; filename="v1-0001-Don-t-accept-length-of-1-in-pg_locale.h-APIs.patch" Content-Type: text/x-patch; name="v1-0001-Don-t-accept-length-of-1-in-pg_locale.h-APIs.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA3NDgxMzRjMjA5MzQxMjA0MmY2ZGI0MjVjOWYwMTFhZWJmMGM4MmQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDUgTWF5IDIwMjYgMTA6NTU6MDYgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxXSBEb24ndCBh Y2NlcHQgbGVuZ3RoIG9mIC0xIGluIHBnX2xvY2FsZS5oIEFQSXMuCgpSZXZlcnRzIGFjMzAwMjEz NTYuIFBlciBkaXNjdXNzaW9uLCB0aGF0IGNvbW1pdCBpbnRlcmZlcmVkIHdpdGggdXNlZnVsCnRv b2xpbmcsIGFuZCB3YXMgbm90IHdvcnRoIHRoZSBzcGVjaWFsIGNhc2VzLgoKU3VnZ2VzdGVkLWJ5 OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vczMybjN0bTJtamgyNDdmM3hra3hrZGs3Y2Y3N2hnbGJyM2lhM2hyc2RqeWxh am91N3lAbmxsZHBhZzN0amQ1Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5j ICAgICAgICAgfCAgNDIgKysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfYnVp bHRpbi5jIHwgIDEzICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2ljdS5jICAg ICB8IDE4NyArKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdf bG9jYWxlX2xpYmMuYyAgICB8IDE1OSArKysrKysrKystLS0tLS0tLS0KIHNyYy9jb21tb24vdW5p Y29kZS9jYXNlX3Rlc3QuYyAgICAgICAgICAgIHwgIDY5ICsrLS0tLS0tCiBzcmMvY29tbW9uL3Vu aWNvZGVfY2FzZS5jICAgICAgICAgICAgICAgICB8ICAyNiArKy0KIHNyYy9pbmNsdWRlL2NvbW1v bi91bmljb2RlX2Nhc2UuaCAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS91dGlscy9wZ19s b2NhbGUuaCAgICAgICAgICAgICB8ICA0NSArKystLS0KIDggZmlsZXMgY2hhbmdlZCwgMjk2IGlu c2VydGlvbnMoKyksIDI1MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMK aW5kZXggNmM1YzEwMTllMWUuLjNmMWZiOWZhZmQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2Fs ZS5jCkBAIC0xMjYyLDExICsxMjYyLDEwIEBAIGdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24o Y2hhciBjb2xscHJvdmlkZXIsIGNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlKQogCiAvKiBsb3dlcmNh c2luZy9jYXNlZm9sZGluZyBpbiBDIGxvY2FsZSAqLwogc3RhdGljIHNpemVfdAotc3RybG93ZXJf YyhjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3Jj bGVuKQorc3RybG93ZXJfYyhjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpz cmMsIHNpemVfdCBzcmNsZW4pCiB7CiAJaW50CQkJaTsKIAotCXNyY2xlbiA9IChzcmNsZW4gPj0g MCkgPyBzcmNsZW4gOiBzdHJsZW4oc3JjKTsKIAlmb3IgKGkgPSAwOyBpIDwgc3JjbGVuICYmIGkg PCBkc3RzaXplOyBpKyspCiAJCWRzdFtpXSA9IHBnX2FzY2lpX3RvbG93ZXIoc3JjW2ldKTsKIAlp ZiAoaSA8IGRzdHNpemUpCkBAIC0xMjc2LDEyICsxMjc1LDExIEBAIHN0cmxvd2VyX2MoY2hhciAq ZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbikKIAog LyogdGl0bGVjYXNpbmcgaW4gQyBsb2NhbGUgKi8KIHN0YXRpYyBzaXplX3QKLXN0cnRpdGxlX2Mo Y2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xl bikKK3N0cnRpdGxlX2MoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3Jj LCBzaXplX3Qgc3JjbGVuKQogewogCWJvb2wJCXdhc2FsbnVtID0gZmFsc2U7CiAJaW50CQkJaTsK IAotCXNyY2xlbiA9IChzcmNsZW4gPj0gMCkgPyBzcmNsZW4gOiBzdHJsZW4oc3JjKTsKIAlmb3Ig KGkgPSAwOyBpIDwgc3JjbGVuICYmIGkgPCBkc3RzaXplOyBpKyspCiAJewogCQljaGFyCQljID0g c3JjW2ldOwpAQCAtMTMwMiwxMSArMTMwMCwxMCBAQCBzdHJ0aXRsZV9jKGNoYXIgKmRzdCwgc2l6 ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4pCiAKIC8qIHVwcGVy Y2FzaW5nIGluIEMgbG9jYWxlICovCiBzdGF0aWMgc2l6ZV90Ci1zdHJ1cHBlcl9jKGNoYXIgKmRz dCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4pCitzdHJ1 cHBlcl9jKGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90 IHNyY2xlbikKIHsKIAlpbnQJCQlpOwogCi0Jc3JjbGVuID0gKHNyY2xlbiA+PSAwKSA/IHNyY2xl biA6IHN0cmxlbihzcmMpOwogCWZvciAoaSA9IDA7IGkgPCBzcmNsZW4gJiYgaSA8IGRzdHNpemU7 IGkrKykKIAkJZHN0W2ldID0gcGdfYXNjaWlfdG91cHBlcihzcmNbaV0pOwogCWlmIChpIDwgZHN0 c2l6ZSkKQEAgLTEzMTUsNyArMTMxMiw3IEBAIHN0cnVwcGVyX2MoY2hhciAqZHN0LCBzaXplX3Qg ZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbikKIH0KIAogc2l6ZV90Ci1w Z19zdHJsb3dlcihjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNz aXplX3Qgc3JjbGVuLAorcGdfc3RybG93ZXIoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29u c3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJcGdfbG9jYWxlX3QgbG9jYWxlKQogewog CWlmIChsb2NhbGUtPmN0eXBlID09IE5VTEwpCkBAIC0xMzI1LDcgKzEzMjIsNyBAQCBwZ19zdHJs b3dlcihjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qg c3JjbGVuLAogfQogCiBzaXplX3QKLXBnX3N0cnRpdGxlKGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNp emUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCitwZ19zdHJ0aXRsZShjaGFyICpk c3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQlw Z19sb2NhbGVfdCBsb2NhbGUpCiB7CiAJaWYgKGxvY2FsZS0+Y3R5cGUgPT0gTlVMTCkKQEAgLTEz MzUsNyArMTMzMiw3IEBAIHBnX3N0cnRpdGxlKGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNv bnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiB9CiAKIHNpemVfdAotcGdfc3RydXBwZXIo Y2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xl biwKK3BnX3N0cnVwcGVyKGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNy Yywgc2l6ZV90IHNyY2xlbiwKIAkJCXBnX2xvY2FsZV90IGxvY2FsZSkKIHsKIAlpZiAobG9jYWxl LT5jdHlwZSA9PSBOVUxMKQpAQCAtMTM0NSw3ICsxMzQyLDcgQEAgcGdfc3RydXBwZXIoY2hhciAq ZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIH0K IAogc2l6ZV90Ci1wZ19zdHJmb2xkKGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNo YXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCitwZ19zdHJmb2xkKGNoYXIgKmRzdCwgc2l6ZV90IGRz dHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJICAgcGdfbG9jYWxlX3Qg bG9jYWxlKQogewogCS8qIGluIHRoZSBDIGxvY2FsZSwgY2FzZWZvbGRpbmcgaXMgdGhlIHNhbWUg YXMgbG93ZXJjYXNpbmcgKi8KQEAgLTEzNjMsNyArMTM2MCw3IEBAIHBnX3N0cmZvbGQoY2hhciAq ZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKICAq IHBnX3N0cmZvbGQoLi4uLCBkZWZhdWx0X2xvY2FsZSk/CiAgKi8KIHNpemVfdAotcGdfZG93bmNh c2VfaWRlbnQoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6 ZV90IHNyY2xlbikKK3BnX2Rvd25jYXNlX2lkZW50KGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUs IGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbikKIHsKIAlwZ19sb2NhbGVfdCBsb2NhbGUg PSBkZWZhdWx0X2xvY2FsZTsKIApAQCAtMTM4Myw3ICsxMzgwLDcgQEAgcGdfZG93bmNhc2VfaWRl bnQoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNy Y2xlbikKIGludAogcGdfc3RyY29sbChjb25zdCBjaGFyICphcmcxLCBjb25zdCBjaGFyICphcmcy LCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGxvY2FsZS0+Y29sbGF0ZS0+c3RybmNv bGwoYXJnMSwgLTEsIGFyZzIsIC0xLCBsb2NhbGUpOworCXJldHVybiBsb2NhbGUtPmNvbGxhdGUt PnN0cmNvbGwoYXJnMSwgYXJnMiwgbG9jYWxlKTsKIH0KIAogLyoKQEAgLTEzOTMsMTUgKzEzOTAs MTQgQEAgcGdfc3RyY29sbChjb25zdCBjaGFyICphcmcxLCBjb25zdCBjaGFyICphcmcyLCBwZ19s b2NhbGVfdCBsb2NhbGUpCiAgKiBhcHByb3ByaWF0ZSBmb3IgdGhlIGdpdmVuIGxvY2FsZSwgcGxh dGZvcm0sIGFuZCBkYXRhYmFzZSBlbmNvZGluZy4gSWYgdGhlCiAgKiBsb2NhbGUgaXMgbm90IHNw ZWNpZmllZCwgdXNlIHRoZSBkYXRhYmFzZSBjb2xsYXRpb24uCiAgKgotICogVGhlIGlucHV0IHN0 cmluZ3MgbXVzdCBiZSBlbmNvZGVkIGluIHRoZSBkYXRhYmFzZSBlbmNvZGluZy4gSWYgYW4gaW5w dXQKLSAqIHN0cmluZyBpcyBOVUwtdGVybWluYXRlZCwgaXRzIGxlbmd0aCBtYXkgYmUgc3BlY2lm aWVkIGFzIC0xLgorICogVGhlIGlucHV0IHN0cmluZ3MgbXVzdCBiZSBlbmNvZGVkIGluIHRoZSBk YXRhYmFzZSBlbmNvZGluZy4KICAqCiAgKiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBi cmVha2luZyB0aWVzIGlmIHRoZSBjb2xsYXRpb24gaXMKICAqIGRldGVybWluaXN0aWM7IHRoaXMg bWFpbnRhaW5zIGNvbnNpc3RlbmN5IHdpdGggcGdfc3Rybnhmcm0oKSwgd2hpY2ggY2Fubm90CiAg KiBlYXNpbHkgYWNjb3VudCBmb3IgZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zLgogICovCiBpbnQK LXBnX3N0cm5jb2xsKGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwgY29uc3QgY2hhciAq YXJnMiwgc3NpemVfdCBsZW4yLAorcGdfc3RybmNvbGwoY29uc3QgY2hhciAqYXJnMSwgc2l6ZV90 IGxlbjEsIGNvbnN0IGNoYXIgKmFyZzIsIHNpemVfdCBsZW4yLAogCQkJcGdfbG9jYWxlX3QgbG9j YWxlKQogewogCXJldHVybiBsb2NhbGUtPmNvbGxhdGUtPnN0cm5jb2xsKGFyZzEsIGxlbjEsIGFy ZzIsIGxlbjIsIGxvY2FsZSk7CkBAIC0xNDMzLDcgKzE0MjksNyBAQCBwZ19zdHJ4ZnJtX2VuYWJs ZWQocGdfbG9jYWxlX3QgbG9jYWxlKQogc2l6ZV90CiBwZ19zdHJ4ZnJtKGNoYXIgKmRlc3QsIGNv bnN0IGNoYXIgKnNyYywgc2l6ZV90IGRlc3RzaXplLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0J cmV0dXJuIGxvY2FsZS0+Y29sbGF0ZS0+c3Rybnhmcm0oZGVzdCwgZGVzdHNpemUsIHNyYywgLTEs IGxvY2FsZSk7CisJcmV0dXJuIGxvY2FsZS0+Y29sbGF0ZS0+c3RyeGZybShkZXN0LCBkZXN0c2l6 ZSwgc3JjLCBsb2NhbGUpOwogfQogCiAvKgpAQCAtMTQ0Myw5ICsxNDM5LDggQEAgcGdfc3RyeGZy bShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBkZXN0c2l6ZSwgcGdfbG9jYWxl X3QgbG9jYWxlKQogICogb3JkaW5hcnkgc3RyY21wKCkgb24gdHJhbnNmb3JtZWQgc3RyaW5ncyBp cyBlcXVpdmFsZW50IHRvIHBnX3N0cmNvbGwoKSBvbgogICogdW50cmFuc2Zvcm1lZCBzdHJpbmdz LgogICoKLSAqIFRoZSBpbnB1dCBzdHJpbmcgbXVzdCBiZSBlbmNvZGVkIGluIHRoZSBkYXRhYmFz ZSBlbmNvZGluZy4gSWYgdGhlIGlucHV0Ci0gKiBzdHJpbmcgaXMgTlVMLXRlcm1pbmF0ZWQsIGl0 cyBsZW5ndGggbWF5IGJlIHNwZWNpZmllZCBhcyAtMS4gSWYgJ2Rlc3RzaXplJwotICogaXMgemVy bywgJ2Rlc3QnIG1heSBiZSBOVUxMLgorICogVGhlIGlucHV0IHN0cmluZyBtdXN0IGJlIGVuY29k ZWQgaW4gdGhlIGRhdGFiYXNlIGVuY29kaW5nLiBJZiAnZGVzdHNpemUnIGlzCisgKiB6ZXJvLCAn ZGVzdCcgbWF5IGJlIE5VTEwuCiAgKgogICogTm90IGFsbCBwcm92aWRlcnMgc3VwcG9ydCBwZ19z dHJueGZybSgpIHNhZmVseS4gVGhlIGNhbGxlciBzaG91bGQgY2hlY2sKICAqIHBnX3N0cnhmcm1f ZW5hYmxlZCgpIGZpcnN0LCBvdGhlcndpc2UgdGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuIHdyb25n CkBAIC0xNDU2LDcgKzE0NTEsNyBAQCBwZ19zdHJ4ZnJtKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIg KnNyYywgc2l6ZV90IGRlc3RzaXplLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiAgKiAnZGVzdHNpemUn IG9yIGdyZWF0ZXIsIHRoZSByZXN1bHRpbmcgY29udGVudHMgb2YgJ2Rlc3QnIGFyZSB1bmRlZmlu ZWQuCiAgKi8KIHNpemVfdAotcGdfc3Rybnhmcm0oY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXpl LCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAorcGdfc3Rybnhmcm0oY2hhciAqZGVz dCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQlw Z19sb2NhbGVfdCBsb2NhbGUpCiB7CiAJcmV0dXJuIGxvY2FsZS0+Y29sbGF0ZS0+c3Rybnhmcm0o ZGVzdCwgZGVzdHNpemUsIHNyYywgc3JjbGVuLCBsb2NhbGUpOwpAQCAtMTQ4MSw3ICsxNDc2LDcg QEAgc2l6ZV90CiBwZ19zdHJ4ZnJtX3ByZWZpeChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMs IHNpemVfdCBkZXN0c2l6ZSwKIAkJCQkgIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQlyZXR1cm4g bG9jYWxlLT5jb2xsYXRlLT5zdHJueGZybV9wcmVmaXgoZGVzdCwgZGVzdHNpemUsIHNyYywgLTEs IGxvY2FsZSk7CisJcmV0dXJuIGxvY2FsZS0+Y29sbGF0ZS0+c3RyeGZybV9wcmVmaXgoZGVzdCwg ZGVzdHNpemUsIHNyYywgbG9jYWxlKTsKIH0KIAogLyoKQEAgLTE0OTEsOCArMTQ4Niw3IEBAIHBn X3N0cnhmcm1fcHJlZml4KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IGRlc3Rz aXplLAogICogbWVtY21wKCkgb24gdGhlIGJ5dGUgc2VxdWVuY2UgaXMgZXF1aXZhbGVudCB0byBw Z19zdHJuY29sbCgpIG9uCiAgKiB1bnRyYW5zZm9ybWVkIHN0cmluZ3MuIFRoZSByZXN1bHQgaXMg bm90IG51bC10ZXJtaW5hdGVkLgogICoKLSAqIFRoZSBpbnB1dCBzdHJpbmcgbXVzdCBiZSBlbmNv ZGVkIGluIHRoZSBkYXRhYmFzZSBlbmNvZGluZy4gSWYgdGhlIGlucHV0Ci0gKiBzdHJpbmcgaXMg TlVMLXRlcm1pbmF0ZWQsIGl0cyBsZW5ndGggbWF5IGJlIHNwZWNpZmllZCBhcyAtMS4KKyAqIFRo ZSBpbnB1dCBzdHJpbmcgbXVzdCBiZSBlbmNvZGVkIGluIHRoZSBkYXRhYmFzZSBlbmNvZGluZy4K ICAqCiAgKiBOb3QgYWxsIHByb3ZpZGVycyBzdXBwb3J0IHBnX3N0cm54ZnJtX3ByZWZpeCgpIHNh ZmVseS4gVGhlIGNhbGxlciBzaG91bGQKICAqIGNoZWNrIHBnX3N0cnhmcm1fcHJlZml4X2VuYWJs ZWQoKSBmaXJzdCwgb3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gbWF5IHJldHVybgpAQCAtMTUwNCw3 ICsxNDk4LDcgQEAgcGdfc3RyeGZybV9wcmVmaXgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3Jj LCBzaXplX3QgZGVzdHNpemUsCiAgKi8KIHNpemVfdAogcGdfc3Rybnhmcm1fcHJlZml4KGNoYXIg KmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJCSAgIHNzaXplX3Qg c3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpCisJCQkJICAgc2l6ZV90IHNyY2xlbiwgcGdfbG9j YWxlX3QgbG9jYWxlKQogewogCXJldHVybiBsb2NhbGUtPmNvbGxhdGUtPnN0cm54ZnJtX3ByZWZp eChkZXN0LCBkZXN0c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2J1aWx0aW4uYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9wZ19sb2NhbGVfYnVpbHRpbi5jCmluZGV4IDc5NGFhMzdkZjc2Li4wMWQ0ZjU1YjA3 ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMKQEAgLTYwLDgg KzYwLDcgQEAgaW5pdGNhcF93Ym5leHQodm9pZCAqc3RhdGUpCiB7CiAJc3RydWN0IFdvcmRCb3Vu ZGFyeVN0YXRlICp3YnN0YXRlID0gKHN0cnVjdCBXb3JkQm91bmRhcnlTdGF0ZSAqKSBzdGF0ZTsK IAotCXdoaWxlICh3YnN0YXRlLT5vZmZzZXQgPCB3YnN0YXRlLT5sZW4gJiYKLQkJICAgd2JzdGF0 ZS0+c3RyW3dic3RhdGUtPm9mZnNldF0gIT0gJ1wwJykKKwl3aGlsZSAod2JzdGF0ZS0+b2Zmc2V0 IDwgd2JzdGF0ZS0+bGVuKQogCXsKIAkJY2hhcjMyX3QJdSA9IHV0ZjhfdG9fdW5pY29kZSgoY29u c3QgdW5zaWduZWQgY2hhciAqKSB3YnN0YXRlLT5zdHIgKwogCQkJCQkJCQkJCXdic3RhdGUtPm9m ZnNldCk7CkBAIC04NCw3ICs4Myw3IEBAIGluaXRjYXBfd2JuZXh0KHZvaWQgKnN0YXRlKQogfQog CiBzdGF0aWMgc2l6ZV90Ci1zdHJsb3dlcl9idWlsdGluKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0 c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKK3N0cmxvd2VyX2J1aWx0aW4o Y2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNs ZW4sCiAJCQkJIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKIAlyZXR1cm4gdW5pY29kZV9zdHJsb3dl cihkZXN0LCBkZXN0c2l6ZSwgc3JjLCBzcmNsZW4sCkBAIC05MiwxMiArOTEsMTIgQEAgc3RybG93 ZXJfYnVpbHRpbihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywg c3NpemVfdCBzcmNsZW4sCiB9CiAKIHN0YXRpYyBzaXplX3QKLXN0cnRpdGxlX2J1aWx0aW4oY2hh ciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVu LAorc3RydGl0bGVfYnVpbHRpbihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNo YXIgKnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJCQkgcGdfbG9jYWxlX3QgbG9jYWxlKQogewogCXN0 cnVjdCBXb3JkQm91bmRhcnlTdGF0ZSB3YnN0YXRlID0gewogCQkuc3RyID0gc3JjLAotCQkubGVu ID0gKHNyY2xlbiA8IDApID8gc3RybGVuKHNyYykgOiBzcmNsZW4sCisJCS5sZW4gPSBzcmNsZW4s CiAJCS5vZmZzZXQgPSAwLAogCQkucG9zaXggPSAhbG9jYWxlLT5idWlsdGluLmNhc2VtYXBfZnVs bCwKIAkJLmluaXQgPSBmYWxzZSwKQEAgLTExMCw3ICsxMDksNyBAQCBzdHJ0aXRsZV9idWlsdGlu KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNy Y2xlbiwKIH0KIAogc3RhdGljIHNpemVfdAotc3RydXBwZXJfYnVpbHRpbihjaGFyICpkZXN0LCBz aXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCitzdHJ1cHBl cl9idWlsdGluKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBz aXplX3Qgc3JjbGVuLAogCQkJCSBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7CiAJcmV0dXJuIHVuaWNv ZGVfc3RydXBwZXIoZGVzdCwgZGVzdHNpemUsIHNyYywgc3JjbGVuLApAQCAtMTE4LDcgKzExNyw3 IEBAIHN0cnVwcGVyX2J1aWx0aW4oY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBj aGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogfQogCiBzdGF0aWMgc2l6ZV90Ci1zdHJmb2xkX2J1 aWx0aW4oY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXpl X3Qgc3JjbGVuLAorc3RyZm9sZF9idWlsdGluKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwg Y29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJCXBnX2xvY2FsZV90IGxvY2FsZSkK IHsKIAlyZXR1cm4gdW5pY29kZV9zdHJmb2xkKGRlc3QsIGRlc3RzaXplLCBzcmMsIHNyY2xlbiwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfaWN1LmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2ljdS5jCmluZGV4IGE0YTRlODJlYjllLi45OWIx ZjI2NmM1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9pY3Uu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2ljdS5jCkBAIC01NywyOSAr NTcsMzMgQEAgZXh0ZXJuIFVDb2xsYXRvciAqcGdfdWNvbF9vcGVuKGNvbnN0IGNoYXIgKmxvY19z dHIpOwogc3RhdGljIFVDYXNlTWFwICpwZ191Y2FzZW1hcF9vcGVuKGNvbnN0IGNoYXIgKmxvY19z dHIpOwogCiBzdGF0aWMgc2l6ZV90IHN0cmxvd2VyX2ljdShjaGFyICpkZXN0LCBzaXplX3QgZGVz dHNpemUsIGNvbnN0IGNoYXIgKnNyYywKLQkJCQkJCSAgIHNzaXplX3Qgc3JjbGVuLCBwZ19sb2Nh bGVfdCBsb2NhbGUpOworCQkJCQkJICAgc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxl KTsKIHN0YXRpYyBzaXplX3Qgc3RydGl0bGVfaWN1KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6 ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJCQkJICAgc3NpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90 IGxvY2FsZSk7CisJCQkJCQkgICBzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpOwog c3RhdGljIHNpemVfdCBzdHJ1cHBlcl9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBj b25zdCBjaGFyICpzcmMsCi0JCQkJCQkgICBzc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3QgbG9j YWxlKTsKKwkJCQkJCSAgIHNpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2FsZSk7CiBzdGF0 aWMgc2l6ZV90IHN0cmZvbGRfaWN1KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3Qg Y2hhciAqc3JjLAotCQkJCQkJICBzc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKTsK KwkJCQkJCSAgc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKTsKIHN0YXRpYyBzaXpl X3Qgc3RybG93ZXJfaWN1X3V0ZjgoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBj aGFyICpzcmMsCi0JCQkJCQkJCXNzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpOwor CQkJCQkJCQlzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpOwogc3RhdGljIHNpemVf dCBzdHJ0aXRsZV9pY3VfdXRmOChjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNo YXIgKnNyYywKLQkJCQkJCQkJc3NpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2FsZSk7CisJ CQkJCQkJCXNpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2FsZSk7CiBzdGF0aWMgc2l6ZV90 IHN0cnVwcGVyX2ljdV91dGY4KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hh ciAqc3JjLAotCQkJCQkJCQlzc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKTsKKwkJ CQkJCQkJc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKTsKIHN0YXRpYyBzaXplX3Qg c3RyZm9sZF9pY3VfdXRmOChjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIg KnNyYywKLQkJCQkJCQkgICBzc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKTsKKwkJ CQkJCQkgICBzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpOwogc3RhdGljIHNpemVf dCBkb3duY2FzZV9pZGVudF9pY3UoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hh ciAqc3JjLAotCQkJCQkJCQkgc3NpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2FsZSk7Ci1z dGF0aWMgaW50CXN0cm5jb2xsX2ljdShjb25zdCBjaGFyICphcmcxLCBzc2l6ZV90IGxlbjEsCi0J CQkJCQkgY29uc3QgY2hhciAqYXJnMiwgc3NpemVfdCBsZW4yLAorCQkJCQkJCQkgc2l6ZV90IHNy Y2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKTsKK3N0YXRpYyBpbnQJc3RybmNvbGxfaWN1KGNvbnN0 IGNoYXIgKmFyZzEsIHNpemVfdCBsZW4xLAorCQkJCQkJIGNvbnN0IGNoYXIgKmFyZzIsIHNpemVf dCBsZW4yLAogCQkJCQkJIHBnX2xvY2FsZV90IGxvY2FsZSk7CitzdGF0aWMgaW50CXN0cmNvbGxf aWN1KGNvbnN0IGNoYXIgKmFyZzEsIGNvbnN0IGNoYXIgKmFyZzIsCisJCQkJCQlwZ19sb2NhbGVf dCBsb2NhbGUpOwogc3RhdGljIHNpemVfdCBzdHJueGZybV9pY3UoY2hhciAqZGVzdCwgc2l6ZV90 IGRlc3RzaXplLAotCQkJCQkJICAgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKKwkJ CQkJCSAgIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJCQkJCSAgIHBnX2xvY2Fs ZV90IGxvY2FsZSk7CitzdGF0aWMgc2l6ZV90IHN0cnhmcm1faWN1KGNoYXIgKmRlc3QsIHNpemVf dCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAorCQkJCQkJICBwZ19sb2NhbGVfdCBsb2NhbGUp OwogZXh0ZXJuIGNoYXIgKmdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb25faWN1KGNvbnN0IGNo YXIgKmNvbGxjb2xsYXRlKTsKIAogdHlwZWRlZiBpbnQzMl90ICgqSUNVX0NvbnZlcnRfRnVuYykg KFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKQEAgLTk2LDIwICsxMDAsMjQgQEAg c3RhdGljIFVDb252ZXJ0ZXIgKmljdV9jb252ZXJ0ZXIgPSBOVUxMOwogCiBzdGF0aWMgVUNvbGxh dG9yICptYWtlX2ljdV9jb2xsYXRvcihjb25zdCBjaGFyICppY3Vsb2NzdHIsCiAJCQkJCQkJCQlj b25zdCBjaGFyICppY3VydWxlcyk7Ci1zdGF0aWMgaW50CXN0cm5jb2xsX2ljdShjb25zdCBjaGFy ICphcmcxLCBzc2l6ZV90IGxlbjEsCi0JCQkJCQkgY29uc3QgY2hhciAqYXJnMiwgc3NpemVfdCBs ZW4yLAotCQkJCQkJIHBnX2xvY2FsZV90IGxvY2FsZSk7CiBzdGF0aWMgc2l6ZV90IHN0cm54ZnJt X3ByZWZpeF9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLAotCQkJCQkJCQkgIGNvbnN0 IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCisJCQkJCQkJCSAgY29uc3QgY2hhciAqc3JjLCBz aXplX3Qgc3JjbGVuLAogCQkJCQkJCQkgIHBnX2xvY2FsZV90IGxvY2FsZSk7CitzdGF0aWMgc2l6 ZV90IHN0cnhmcm1fcHJlZml4X2ljdShjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0 IGNoYXIgKnNyYywKKwkJCQkJCQkJIHBnX2xvY2FsZV90IGxvY2FsZSk7CiAjaWZkZWYgSEFWRV9V Q09MX1NUUkNPTExVVEY4Ci1zdGF0aWMgaW50CXN0cm5jb2xsX2ljdV91dGY4KGNvbnN0IGNoYXIg KmFyZzEsIHNzaXplX3QgbGVuMSwKLQkJCQkJCQkgIGNvbnN0IGNoYXIgKmFyZzIsIHNzaXplX3Qg bGVuMiwKK3N0YXRpYyBpbnQJc3RybmNvbGxfaWN1X3V0ZjgoY29uc3QgY2hhciAqYXJnMSwgc2l6 ZV90IGxlbjEsCisJCQkJCQkJICBjb25zdCBjaGFyICphcmcyLCBzaXplX3QgbGVuMiwKIAkJCQkJ CQkgIHBnX2xvY2FsZV90IGxvY2FsZSk7CitzdGF0aWMgaW50CXN0cmNvbGxfaWN1X3V0ZjgoY29u c3QgY2hhciAqYXJnMSwKKwkJCQkJCQkgY29uc3QgY2hhciAqYXJnMiwKKwkJCQkJCQkgcGdfbG9j YWxlX3QgbG9jYWxlKTsKICNlbmRpZgogc3RhdGljIHNpemVfdCBzdHJueGZybV9wcmVmaXhfaWN1 X3V0ZjgoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLAotCQkJCQkJCQkJICAgY29uc3QgY2hh ciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKKwkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnNyYywgc2l6 ZV90IHNyY2xlbiwKIAkJCQkJCQkJCSAgIHBnX2xvY2FsZV90IGxvY2FsZSk7CitzdGF0aWMgc2l6 ZV90IHN0cnhmcm1fcHJlZml4X2ljdV91dGY4KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwg Y29uc3QgY2hhciAqc3JjLAorCQkJCQkJCQkJICBwZ19sb2NhbGVfdCBsb2NhbGUpOwogc3RhdGlj IHZvaWQgaW5pdF9pY3VfY29udmVydGVyKHZvaWQpOwogc3RhdGljIHNpemVfdCB1Y2hhcl9sZW5n dGgoVUNvbnZlcnRlciAqY29udmVydGVyLAogCQkJCQkJICAgY29uc3QgY2hhciAqc3RyLCBpbnQz Ml90IGxlbik7CkBAIC0xMjQsNyArMTMyLDcgQEAgc3RhdGljIHZvaWQgaWN1X3NldF9jb2xsYXRp b25fYXR0cmlidXRlcyhVQ29sbGF0b3IgKmNvbGxhdG9yLCBjb25zdCBjaGFyICpsb2MsCiAJCQkJ CQkJCQkJIFVFcnJvckNvZGUgKnN0YXR1cyk7CiBzdGF0aWMgaW50MzJfdCBpY3VfY29udmVydF9j YXNlKElDVV9Db252ZXJ0X0Z1bmMgZnVuYywgY2hhciAqZGVzdCwKIAkJCQkJCQkJc2l6ZV90IGRl c3RzaXplLCBjb25zdCBjaGFyICpzcmMsCi0JCQkJCQkJCXNzaXplX3Qgc3JjbGVuLCBwZ19sb2Nh bGVfdCBsb2NhbGUpOworCQkJCQkJCQlzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUp Owogc3RhdGljIGludDMyX3QgdV9zdHJUb1RpdGxlX2RlZmF1bHRfQkkoVUNoYXIgKmRlc3QsIGlu dDMyX3QgZGVzdENhcGFjaXR5LAogCQkJCQkJCQkJICAgY29uc3QgVUNoYXIgKnNyYywgaW50MzJf dCBzcmNMZW5ndGgsCiAJCQkJCQkJCQkgICBjb25zdCBjaGFyICpsb2NhbGUsCkBAIC0xNTQsMTkg KzE2MiwyNiBAQCB0b2xvd2VyX2ljdShwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQog CiBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbGxhdGVfbWV0aG9kcyBjb2xsYXRlX21ldGhvZHNfaWN1 ID0gewogCS5zdHJuY29sbCA9IHN0cm5jb2xsX2ljdSwKKwkuc3RyY29sbCA9IHN0cmNvbGxfaWN1 LAogCS5zdHJueGZybSA9IHN0cm54ZnJtX2ljdSwKKwkuc3RyeGZybSA9IHN0cnhmcm1faWN1LAog CS5zdHJueGZybV9wcmVmaXggPSBzdHJueGZybV9wcmVmaXhfaWN1LAorCS5zdHJ4ZnJtX3ByZWZp eCA9IHN0cnhmcm1fcHJlZml4X2ljdSwKIAkuc3RyeGZybV9pc19zYWZlID0gdHJ1ZSwKIH07CiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29sbGF0ZV9tZXRob2RzIGNvbGxhdGVfbWV0aG9kc19pY3Vf dXRmOCA9IHsKICNpZmRlZiBIQVZFX1VDT0xfU1RSQ09MTFVURjgKIAkuc3RybmNvbGwgPSBzdHJu Y29sbF9pY3VfdXRmOCwKKwkuc3RyY29sbCA9IHN0cmNvbGxfaWN1X3V0ZjgsCiAjZWxzZQogCS5z dHJuY29sbCA9IHN0cm5jb2xsX2ljdSwKKwkuc3RyY29sbCA9IHN0cmNvbGxfaWN1LAogI2VuZGlm CiAJLnN0cm54ZnJtID0gc3Rybnhmcm1faWN1LAorCS5zdHJ4ZnJtID0gc3RyeGZybV9pY3UsCiAJ LnN0cm54ZnJtX3ByZWZpeCA9IHN0cm54ZnJtX3ByZWZpeF9pY3VfdXRmOCwKKwkuc3RyeGZybV9w cmVmaXggPSBzdHJ4ZnJtX3ByZWZpeF9pY3VfdXRmOCwKIAkuc3RyeGZybV9pc19zYWZlID0gdHJ1 ZSwKIH07CiAKQEAgLTYwNCwzNSArNjE5LDM1IEBAIG1ha2VfaWN1X2NvbGxhdG9yKGNvbnN0IGNo YXIgKmljdWxvY3N0ciwgY29uc3QgY2hhciAqaWN1cnVsZXMpCiB9CiAKIHN0YXRpYyBzaXplX3QK LXN0cmxvd2VyX2ljdShjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNy Yywgc3NpemVfdCBzcmNsZW4sCitzdHJsb3dlcl9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3Rz aXplLCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQkgcGdfbG9jYWxlX3QgbG9j YWxlKQogewogCXJldHVybiBpY3VfY29udmVydF9jYXNlKHVfc3RyVG9Mb3dlciwgZGVzdCwgZGVz dHNpemUsIHNyYywgc3JjbGVuLCBsb2NhbGUpOwogfQogCiBzdGF0aWMgc2l6ZV90Ci1zdHJ0aXRs ZV9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXpl X3Qgc3JjbGVuLAorc3RydGl0bGVfaWN1KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29u c3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsK IAlyZXR1cm4gaWN1X2NvbnZlcnRfY2FzZSh1X3N0clRvVGl0bGVfZGVmYXVsdF9CSSwgZGVzdCwg ZGVzdHNpemUsIHNyYywgc3JjbGVuLCBsb2NhbGUpOwogfQogCiBzdGF0aWMgc2l6ZV90Ci1zdHJ1 cHBlcl9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNz aXplX3Qgc3JjbGVuLAorc3RydXBwZXJfaWN1KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwg Y29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJIHBnX2xvY2FsZV90IGxvY2FsZSkK IHsKIAlyZXR1cm4gaWN1X2NvbnZlcnRfY2FzZSh1X3N0clRvVXBwZXIsIGRlc3QsIGRlc3RzaXpl LCBzcmMsIHNyY2xlbiwgbG9jYWxlKTsKIH0KIAogc3RhdGljIHNpemVfdAotc3RyZm9sZF9pY3Uo Y2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3Jj bGVuLAorc3RyZm9sZF9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFy ICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQlwZ19sb2NhbGVfdCBsb2NhbGUpCiB7CiAJcmV0dXJu IGljdV9jb252ZXJ0X2Nhc2UodV9zdHJGb2xkQ2FzZV9kZWZhdWx0LCBkZXN0LCBkZXN0c2l6ZSwg c3JjLCBzcmNsZW4sIGxvY2FsZSk7CiB9CiAKIHN0YXRpYyBzaXplX3QKLXN0cmxvd2VyX2ljdV91 dGY4KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90 IHNyY2xlbiwKK3N0cmxvd2VyX2ljdV91dGY4KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwg Y29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJCSAgcGdfbG9jYWxlX3QgbG9jYWxl KQogewogCVVFcnJvckNvZGUJc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtNjQ2LDcgKzY2MSw3 IEBAIHN0cmxvd2VyX2ljdV91dGY4KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3Qg Y2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIH0KIAogc3RhdGljIHNpemVfdAotc3RydGl0bGVf aWN1X3V0ZjgoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNz aXplX3Qgc3JjbGVuLAorc3RydGl0bGVfaWN1X3V0ZjgoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3Rz aXplLCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQkJICBwZ19sb2NhbGVfdCBs b2NhbGUpCiB7CiAJVUVycm9yQ29kZQlzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC02NjAsNyAr Njc1LDcgQEAgc3RydGl0bGVfaWN1X3V0ZjgoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBj b25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogfQogCiBzdGF0aWMgc2l6ZV90Ci1zdHJ1 cHBlcl9pY3VfdXRmOChjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNy Yywgc3NpemVfdCBzcmNsZW4sCitzdHJ1cHBlcl9pY3VfdXRmOChjaGFyICpkZXN0LCBzaXplX3Qg ZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJCQkgIHBnX2xvY2Fs ZV90IGxvY2FsZSkKIHsKIAlVRXJyb3JDb2RlCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKQEAgLTY3 NCw3ICs2ODksNyBAQCBzdHJ1cHBlcl9pY3VfdXRmOChjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNp emUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiB9CiAKIHN0YXRpYyBzaXplX3QK LXN0cmZvbGRfaWN1X3V0ZjgoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFy ICpzcmMsIHNzaXplX3Qgc3JjbGVuLAorc3RyZm9sZF9pY3VfdXRmOChjaGFyICpkZXN0LCBzaXpl X3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJCQkgcGdfbG9j YWxlX3QgbG9jYWxlKQogewogCVVFcnJvckNvZGUJc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAt Njk1LDcgKzcxMCw3IEBAIHN0cmZvbGRfaWN1X3V0ZjgoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3Rz aXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogICovCiBzdGF0aWMgc2l6ZV90 CiBkb3duY2FzZV9pZGVudF9pY3UoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hh ciAqc3JjLAotCQkJCSAgIHNzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpCisJCQkJ ICAgc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKQogewogCWludAkJCWk7CiAJYm9v bAkJbGliY19sb3dlcjsKQEAgLTcyNCwxMiArNzM5LDExIEBAIGRvd25jYXNlX2lkZW50X2ljdShj aGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsCiAgKiBzdHJuY29sbF9p Y3VfdXRmOAogICoKICAqIENhbGwgdWNvbF9zdHJjb2xsVVRGOCgpIG9yIHVjb2xfc3RyY29sbCgp IGFzIGFwcHJvcHJpYXRlIGZvciB0aGUgZ2l2ZW4KLSAqIGRhdGFiYXNlIGVuY29kaW5nLiBBbiBh cmd1bWVudCBsZW5ndGggb2YgLTEgbWVhbnMgdGhlIHN0cmluZyBpcwotICogTlVMLXRlcm1pbmF0 ZWQuCisgKiBkYXRhYmFzZSBlbmNvZGluZy4KICAqLwogI2lmZGVmIEhBVkVfVUNPTF9TVFJDT0xM VVRGOAogaW50Ci1zdHJuY29sbF9pY3VfdXRmOChjb25zdCBjaGFyICphcmcxLCBzc2l6ZV90IGxl bjEsIGNvbnN0IGNoYXIgKmFyZzIsIHNzaXplX3QgbGVuMiwKK3N0cm5jb2xsX2ljdV91dGY4KGNv bnN0IGNoYXIgKmFyZzEsIHNpemVfdCBsZW4xLCBjb25zdCBjaGFyICphcmcyLCBzaXplX3QgbGVu MiwKIAkJCQkgIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKIAlpbnQJCQlyZXN1bHQ7CkBAIC03NDgs MTIgKzc2MiwzMSBAQCBzdHJuY29sbF9pY3VfdXRmOChjb25zdCBjaGFyICphcmcxLCBzc2l6ZV90 IGxlbjEsIGNvbnN0IGNoYXIgKmFyZzIsIHNzaXplX3QgbGVuMgogCiAJcmV0dXJuIHJlc3VsdDsK IH0KKworaW50CitzdHJjb2xsX2ljdV91dGY4KGNvbnN0IGNoYXIgKmFyZzEsIGNvbnN0IGNoYXIg KmFyZzIsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlpbnQJCQlyZXN1bHQ7CisJVUVycm9yQ29k ZQlzdGF0dXM7CisKKwlBc3NlcnQoR2V0RGF0YWJhc2VFbmNvZGluZygpID09IFBHX1VURjgpOwor CisJc3RhdHVzID0gVV9aRVJPX0VSUk9SOworCXJlc3VsdCA9IHVjb2xfc3RyY29sbFVURjgobG9j YWxlLT5pY3UudWNvbCwKKwkJCQkJCQkgIGFyZzEsIC0xLAorCQkJCQkJCSAgYXJnMiwgLTEsCisJ CQkJCQkJICAmc3RhdHVzKTsKKwlpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycm1zZygiY29sbGF0aW9uIGZhaWxlZDogJXMiLCB1X2Vycm9yTmFtZShzdGF0 dXMpKSkpOworCisJcmV0dXJuIHJlc3VsdDsKK30KICNlbmRpZgogCi0vKiAnc3JjbGVuJyBvZiAt MSBtZWFucyB0aGUgc3RyaW5ncyBhcmUgTlVMLXRlcm1pbmF0ZWQgKi8KLXNpemVfdAotc3Rybnhm cm1faWN1KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6 ZV90IHNyY2xlbiwKLQkJCSBwZ19sb2NhbGVfdCBsb2NhbGUpCitzdGF0aWMgc2l6ZV90CitzdHJu eGZybV9pY3VfaW50ZXJuYWwoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFy ICpzcmMsIHNzaXplX3Qgc3JjbGVuLAorCQkJCQkgIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKIAlj aGFyCQlzYnVmW1RFWFRCVUZMRU5dOwogCWNoYXIJICAgKmJ1ZiA9IHNidWY7CkBAIC03OTUsMTEg KzgyOCwyNCBAQCBzdHJueGZybV9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25z dCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCXJldHVybiByZXN1bHRfYnNpemU7CiB9CiAK LS8qICdzcmNsZW4nIG9mIC0xIG1lYW5zIHRoZSBzdHJpbmdzIGFyZSBOVUwtdGVybWluYXRlZCAq Lwotc2l6ZV90Ci1zdHJueGZybV9wcmVmaXhfaWN1X3V0ZjgoY2hhciAqZGVzdCwgc2l6ZV90IGRl c3RzaXplLAotCQkJCQkJIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCi0JCQkJCQkg cGdfbG9jYWxlX3QgbG9jYWxlKQorc3RhdGljIHNpemVfdAorc3Rybnhmcm1faWN1KGNoYXIgKmRl c3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAorCQkJ IHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gc3Rybnhmcm1faWN1X2ludGVybmFsKGRl c3QsIGRlc3RzaXplLCBzcmMsIHNyY2xlbiwgbG9jYWxlKTsKK30KKworc3RhdGljIHNpemVfdAor c3RyeGZybV9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMs CisJCQlwZ19sb2NhbGVfdCBsb2NhbGUpCit7CisJcmV0dXJuIHN0cm54ZnJtX2ljdV9pbnRlcm5h bChkZXN0LCBkZXN0c2l6ZSwgc3JjLCAtMSwgbG9jYWxlKTsKK30KKworc3RhdGljIHNpemVfdAor c3Rybnhmcm1fcHJlZml4X2ljdV91dGY4X2ludGVybmFsKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0 c2l6ZSwKKwkJCQkJCQkJICBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAorCQkJCQkJ CQkgIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKIAlzaXplX3QJCXJlc3VsdDsKIAlVQ2hhckl0ZXJh dG9yIGl0ZXI7CkBAIC04MjUsNiArODcxLDIxIEBAIHN0cm54ZnJtX3ByZWZpeF9pY3VfdXRmOChj aGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGlj IHNpemVfdAorc3Rybnhmcm1fcHJlZml4X2ljdV91dGY4KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0 c2l6ZSwKKwkJCQkJCSBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCisJCQkJCQkgcGdf bG9jYWxlX3QgbG9jYWxlKQoreworCXJldHVybiBzdHJueGZybV9wcmVmaXhfaWN1X3V0ZjhfaW50 ZXJuYWwoZGVzdCwgZGVzdHNpemUsIHNyYywgc3JjbGVuLCBsb2NhbGUpOworfQorCitzdGF0aWMg c2l6ZV90CitzdHJ4ZnJtX3ByZWZpeF9pY3VfdXRmOChjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNp emUsIGNvbnN0IGNoYXIgKnNyYywKKwkJCQkJCXBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1 cm4gc3Rybnhmcm1fcHJlZml4X2ljdV91dGY4X2ludGVybmFsKGRlc3QsIGRlc3RzaXplLCBzcmMs IC0xLCBsb2NhbGUpOworfQorCiBjaGFyICoKIGdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb25f aWN1KGNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlKQogewpAQCAtOTQwLDcgKzEwMDEsNyBAQCBjb252 ZXJ0X2Nhc2VfdWNoYXIoSUNVX0NvbnZlcnRfRnVuYyBmdW5jLCBwZ19sb2NhbGVfdCBteWxvY2Fs ZSwKIAogc3RhdGljIGludDMyX3QKIGljdV9jb252ZXJ0X2Nhc2UoSUNVX0NvbnZlcnRfRnVuYyBm dW5jLCBjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsCi0JCQkJIGNvbnN0IGNoYXIgKnNyYywg c3NpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2FsZSkKKwkJCQkgY29uc3QgY2hhciAqc3Jj LCBzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7CiAJaW50MzJfdAkJbGVuX3Vj aGFyOwogCWludDMyX3QJCWxlbl9jb252OwpAQCAtMTAxMCwxNSArMTA3MSwxNSBAQCBmb2xkY2Fz ZV9vcHRpb25zKGNvbnN0IGNoYXIgKmxvY2FsZSkKICAqIHN0cm5jb2xsX2ljdQogICoKICAqIENv bnZlcnQgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBkYXRhYmFzZSBlbmNvZGluZyB0byBVQ2hhciBz dHJpbmdzLCB0aGVuCi0gKiBjYWxsIHVjb2xfc3RyY29sbCgpLiBBbiBhcmd1bWVudCBsZW5ndGgg b2YgLTEgbWVhbnMgdGhhdCB0aGUgc3RyaW5nIGlzCi0gKiBOVUwtdGVybWluYXRlZC4KKyAqIGNh bGwgdWNvbF9zdHJjb2xsKCkuCiAgKgogICogV2hlbiB0aGUgZGF0YWJhc2UgZW5jb2RpbmcgaXMg VVRGLTgsIGFuZCBJQ1Ugc3VwcG9ydHMgdWNvbF9zdHJjb2xsVVRGOCgpLAogICogY2FsbGVyIHNo b3VsZCBjYWxsIHRoYXQgaW5zdGVhZC4KICAqLwogc3RhdGljIGludAotc3RybmNvbGxfaWN1KGNv bnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwKLQkJCSBjb25zdCBjaGFyICphcmcyLCBzc2l6 ZV90IGxlbjIsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3N0cm5jb2xsX2ljdV9pbnRlcm5hbChjb25z dCBjaGFyICphcmcxLCBzc2l6ZV90IGxlbjEsCisJCQkJCSAgY29uc3QgY2hhciAqYXJnMiwgc3Np emVfdCBsZW4yLAorCQkJCQkgIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKIAljaGFyCQlzYnVmW1RF WFRCVUZMRU5dOwogCWNoYXIJICAgKmJ1ZiA9IHNidWY7CkBAIC0xMDYyLDExICsxMTIzLDIzIEBA IHN0cm5jb2xsX2ljdShjb25zdCBjaGFyICphcmcxLCBzc2l6ZV90IGxlbjEsCiAJcmV0dXJuIHJl c3VsdDsKIH0KIAotLyogJ3NyY2xlbicgb2YgLTEgbWVhbnMgdGhlIHN0cmluZ3MgYXJlIE5VTC10 ZXJtaW5hdGVkICovCitzdGF0aWMgaW50CitzdHJuY29sbF9pY3UoY29uc3QgY2hhciAqYXJnMSwg c2l6ZV90IGxlbjEsIGNvbnN0IGNoYXIgKmFyZzIsIHNpemVfdCBsZW4yLAorCQkJIHBnX2xvY2Fs ZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gc3RybmNvbGxfaWN1X2ludGVybmFsKGFyZzEsIGxlbjEs IGFyZzIsIGxlbjIsIGxvY2FsZSk7Cit9CisKK3N0YXRpYyBpbnQKK3N0cmNvbGxfaWN1KGNvbnN0 IGNoYXIgKmFyZzEsIGNvbnN0IGNoYXIgKmFyZzIsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwly ZXR1cm4gc3RybmNvbGxfaWN1X2ludGVybmFsKGFyZzEsIC0xLCBhcmcyLCAtMSwgbG9jYWxlKTsK K30KKwogc3RhdGljIHNpemVfdAotc3Rybnhmcm1fcHJlZml4X2ljdShjaGFyICpkZXN0LCBzaXpl X3QgZGVzdHNpemUsCi0JCQkJCWNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCi0JCQkJ CXBnX2xvY2FsZV90IGxvY2FsZSkKK3N0cm54ZnJtX3ByZWZpeF9pY3VfaW50ZXJuYWwoY2hhciAq ZGVzdCwgc2l6ZV90IGRlc3RzaXplLAorCQkJCQkJCSBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qg c3JjbGVuLAorCQkJCQkJCSBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7CiAJY2hhcgkJc2J1ZltURVhU QlVGTEVOXTsKIAljaGFyCSAgICpidWYgPSBzYnVmOwpAQCAtMTExNCw2ICsxMTg3LDIwIEBAIHN0 cm54ZnJtX3ByZWZpeF9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLAogCXJldHVybiBy ZXN1bHRfYnNpemU7CiB9CiAKK3N0YXRpYyBzaXplX3QKK3N0cm54ZnJtX3ByZWZpeF9pY3UoY2hh ciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4s CisJCQkJCXBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gc3Rybnhmcm1fcHJlZml4X2lj dV9pbnRlcm5hbChkZXN0LCBkZXN0c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7Cit9CisKK3N0 YXRpYyBzaXplX3QKK3N0cnhmcm1fcHJlZml4X2ljdShjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNp emUsIGNvbnN0IGNoYXIgKnNyYywKKwkJCQkgICBwZ19sb2NhbGVfdCBsb2NhbGUpCit7CisJcmV0 dXJuIHN0cm54ZnJtX3ByZWZpeF9pY3VfaW50ZXJuYWwoZGVzdCwgZGVzdHNpemUsIHNyYywgLTEs IGxvY2FsZSk7Cit9CisKIHN0YXRpYyB2b2lkCiBpbml0X2ljdV9jb252ZXJ0ZXIodm9pZCkKIHsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMKaW5kZXggNzhmNmVhMTYxYTAuLjBi NTJkNmY4ZmUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xp YmMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYwpAQCAtODIs NDIgKzgyLDQ4IEBACiAKIGV4dGVybiBwZ19sb2NhbGVfdCBjcmVhdGVfcGdfbG9jYWxlX2xpYmMo T2lkIGNvbGxpZCwgTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKIAotc3RhdGljIGludAlzdHJuY29s bF9saWJjKGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwKLQkJCQkJCSAgY29uc3QgY2hh ciAqYXJnMiwgc3NpemVfdCBsZW4yLAorc3RhdGljIGludAlzdHJuY29sbF9saWJjKGNvbnN0IGNo YXIgKmFyZzEsIHNpemVfdCBsZW4xLAorCQkJCQkJICBjb25zdCBjaGFyICphcmcyLCBzaXplX3Qg bGVuMiwKIAkJCQkJCSAgcGdfbG9jYWxlX3QgbG9jYWxlKTsKK3N0YXRpYyBpbnQJc3RyY29sbF9s aWJjKGNvbnN0IGNoYXIgKmFyZzEsIGNvbnN0IGNoYXIgKmFyZzIsCisJCQkJCQkgcGdfbG9jYWxl X3QgbG9jYWxlKTsKIHN0YXRpYyBzaXplX3Qgc3Rybnhmcm1fbGliYyhjaGFyICpkZXN0LCBzaXpl X3QgZGVzdHNpemUsCi0JCQkJCQkJY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKKwkJ CQkJCQljb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQkJCQkJcGdfbG9jYWxlX3Qg bG9jYWxlKTsKK3N0YXRpYyBzaXplX3Qgc3RyeGZybV9saWJjKGNoYXIgKmRlc3QsIHNpemVfdCBk ZXN0c2l6ZSwKKwkJCQkJCSAgIGNvbnN0IGNoYXIgKnNyYywgcGdfbG9jYWxlX3QgbG9jYWxlKTsK IGV4dGVybiBjaGFyICpnZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uX2xpYmMoY29uc3QgY2hh ciAqY29sbGNvbGxhdGUpOwogc3RhdGljIGxvY2FsZV90IG1ha2VfbGliY19jb2xsYXRvcihjb25z dCBjaGFyICpjb2xsYXRlLAogCQkJCQkJCQkgICBjb25zdCBjaGFyICpjdHlwZSk7CiAKICNpZmRl ZiBXSU4zMgotc3RhdGljIGludAlzdHJuY29sbF9saWJjX3dpbjMyX3V0ZjgoY29uc3QgY2hhciAq YXJnMSwgc3NpemVfdCBsZW4xLAotCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmFyZzIsIHNzaXplX3Qg bGVuMiwKK3N0YXRpYyBpbnQJc3RybmNvbGxfbGliY193aW4zMl91dGY4KGNvbnN0IGNoYXIgKmFy ZzEsIHNpemVfdCBsZW4xLAorCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmFyZzIsIHNpemVfdCBsZW4y LAogCQkJCQkJCQkJIHBnX2xvY2FsZV90IGxvY2FsZSk7CitzdGF0aWMgaW50CXN0cmNvbGxfbGli Y193aW4zMl91dGY4KGNvbnN0IGNoYXIgKmFyZzEsIGNvbnN0IGNoYXIgKmFyZzIsCisJCQkJCQkJ CQlwZ19sb2NhbGVfdCBsb2NhbGUpOwogI2VuZGlmCiAKIHN0YXRpYyBzaXplX3QgY2hhcjJ3Y2hh cih3Y2hhcl90ICp0bywgc2l6ZV90IHRvbGVuLCBjb25zdCBjaGFyICpmcm9tLAogCQkJCQkJIHNp emVfdCBmcm9tbGVuLCBsb2NhbGVfdCBsb2MpOwogCiBzdGF0aWMgc2l6ZV90IHN0cmxvd2VyX2xp YmNfc2IoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLAotCQkJCQkJCSAgIGNvbnN0IGNoYXIg KnNyYywgc3NpemVfdCBzcmNsZW4sCisJCQkJCQkJICAgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qg c3JjbGVuLAogCQkJCQkJCSAgIHBnX2xvY2FsZV90IGxvY2FsZSk7CiBzdGF0aWMgc2l6ZV90IHN0 cmxvd2VyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLAotCQkJCQkJCSAgIGNv bnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCisJCQkJCQkJICAgY29uc3QgY2hhciAqc3Jj LCBzaXplX3Qgc3JjbGVuLAogCQkJCQkJCSAgIHBnX2xvY2FsZV90IGxvY2FsZSk7CiBzdGF0aWMg c2l6ZV90IHN0cnRpdGxlX2xpYmNfc2IoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLAotCQkJ CQkJCSAgIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCisJCQkJCQkJICAgY29uc3Qg Y2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJCQkJCSAgIHBnX2xvY2FsZV90IGxvY2FsZSk7 CiBzdGF0aWMgc2l6ZV90IHN0cnRpdGxlX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3Rz aXplLAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCisJCQkJCQkJ ICAgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJCQkJCSAgIHBnX2xvY2FsZV90 IGxvY2FsZSk7CiBzdGF0aWMgc2l6ZV90IHN0cnVwcGVyX2xpYmNfc2IoY2hhciAqZGVzdCwgc2l6 ZV90IGRlc3RzaXplLAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4s CisJCQkJCQkJICAgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJCQkJCSAgIHBn X2xvY2FsZV90IGxvY2FsZSk7CiBzdGF0aWMgc2l6ZV90IHN0cnVwcGVyX2xpYmNfbWIoY2hhciAq ZGVzdCwgc2l6ZV90IGRlc3RzaXplLAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnNyYywgc3NpemVf dCBzcmNsZW4sCisJCQkJCQkJICAgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJ CQkJCSAgIHBnX2xvY2FsZV90IGxvY2FsZSk7CiAKIHN0YXRpYyBib29sCkBAIC0zMjQsNyArMzMw LDcgQEAgdG9sb3dlcl9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiAg Ki8KIHN0YXRpYyBzaXplX3QKIGRvd25jYXNlX2lkZW50X2xpYmNfc2IoY2hhciAqZHN0LCBzaXpl X3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJCQkgICBzc2l6ZV90IHNyY2xlbiwgcGdf bG9jYWxlX3QgbG9jYWxlKQorCQkJCQkgICBzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2Nh bGUpCiB7CiAJbG9jYWxlX3QJbG9jID0gbG9jYWxlLT5sdDsKIAlpbnQJCQlpOwpAQCAtNDIwLDgg KzQyNiwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGN0eXBlX21ldGhvZHMgY3R5cGVfbWV0aG9k c19saWJjX3V0ZjggPSB7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29sbGF0ZV9tZXRob2RzIGNv bGxhdGVfbWV0aG9kc19saWJjID0gewogCS5zdHJuY29sbCA9IHN0cm5jb2xsX2xpYmMsCisJLnN0 cmNvbGwgPSBzdHJjb2xsX2xpYmMsCiAJLnN0cm54ZnJtID0gc3Rybnhmcm1fbGliYywKKwkuc3Ry eGZybSA9IHN0cnhmcm1fbGliYywKIAkuc3Rybnhmcm1fcHJlZml4ID0gTlVMTCwKKwkuc3RyeGZy bV9wcmVmaXggPSBOVUxMLAogCiAJLyoKIAkgKiBVbmZvcnR1bmF0ZWx5LCBpdCBzZWVtcyB0aGF0 IHN0cnhmcm0oKSBmb3Igbm9uLUMgY29sbGF0aW9ucyBpcyBicm9rZW4KQEAgLTQ0Miw3ICs0NTEs OSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbGxhdGVfbWV0aG9kcyBjb2xsYXRlX21ldGhvZHNf bGliYyA9IHsKICNpZmRlZiBXSU4zMgogc3RhdGljIGNvbnN0IHN0cnVjdCBjb2xsYXRlX21ldGhv ZHMgY29sbGF0ZV9tZXRob2RzX2xpYmNfd2luMzJfdXRmOCA9IHsKIAkuc3RybmNvbGwgPSBzdHJu Y29sbF9saWJjX3dpbjMyX3V0ZjgsCisJLnN0cmNvbGwgPSBzdHJjb2xsX2xpYmNfd2luMzJfdXRm OCwKIAkuc3Rybnhmcm0gPSBzdHJueGZybV9saWJjLAorCS5zdHJ4ZnJtID0gc3RyeGZybV9saWJj LAogCS5zdHJueGZybV9wcmVmaXggPSBOVUxMLAogI2lmZGVmIFRSVVNUX1NUUlhGUk0KIAkuc3Ry eGZybV9pc19zYWZlID0gdHJ1ZSwKQEAgLTQ1MywxMiArNDY0LDkgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBjb2xsYXRlX21ldGhvZHMgY29sbGF0ZV9tZXRob2RzX2xpYmNfd2luMzJfdXRmOCA9IHsK ICNlbmRpZgogCiBzdGF0aWMgc2l6ZV90Ci1zdHJsb3dlcl9saWJjX3NiKGNoYXIgKmRlc3QsIHNp emVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKK3N0cmxvd2Vy X2xpYmNfc2IoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNp emVfdCBzcmNsZW4sCiAJCQkJIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQlpZiAoc3JjbGVuIDwg MCkKLQkJc3JjbGVuID0gc3RybGVuKHNyYyk7Ci0KIAlpZiAoc3JjbGVuICsgMSA8PSBkZXN0c2l6 ZSkKIAl7CiAJCWxvY2FsZV90CWxvYyA9IGxvY2FsZS0+bHQ7CkBAIC00OTIsNyArNTAwLDcgQEAg c3RybG93ZXJfbGliY19zYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIg KnNyYywgc3NpemVfdCBzcmNsZW4sCiB9CiAKIHN0YXRpYyBzaXplX3QKLXN0cmxvd2VyX2xpYmNf bWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qg c3JjbGVuLAorc3RybG93ZXJfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNv bnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJCQkgcGdfbG9jYWxlX3QgbG9jYWxlKQog ewogCWxvY2FsZV90CWxvYyA9IGxvY2FsZS0+bHQ7CkBAIC01MDIsOSArNTEwLDYgQEAgc3RybG93 ZXJfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywg c3NpemVfdCBzcmNsZW4sCiAJc2l6ZV90CQljdXJyX2NoYXI7CiAJc2l6ZV90CQltYXhfc2l6ZTsK IAotCWlmIChzcmNsZW4gPCAwKQotCQlzcmNsZW4gPSBzdHJsZW4oc3JjKTsKLQogCS8qIE92ZXJm bG93IHBhcmFub2lhICovCiAJaWYgKChzcmNsZW4gKyAxKSA+IChJTlRfTUFYIC8gc2l6ZW9mKHdj aGFyX3QpKSkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTU0MCwxMiArNTQ1LDkgQEAgc3RybG93ZXJf bGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3Np emVfdCBzcmNsZW4sCiB9CiAKIHN0YXRpYyBzaXplX3QKLXN0cnRpdGxlX2xpYmNfc2IoY2hhciAq ZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAor c3RydGl0bGVfbGliY19zYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIg KnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJCQkgcGdfbG9jYWxlX3QgbG9jYWxlKQogewotCWlmIChz cmNsZW4gPCAwKQotCQlzcmNsZW4gPSBzdHJsZW4oc3JjKTsKLQogCWlmIChzcmNsZW4gKyAxIDw9 IGRlc3RzaXplKQogCXsKIAkJbG9jYWxlX3QJbG9jID0gbG9jYWxlLT5sdDsKQEAgLTU5Niw3ICs1 OTgsNyBAQCBzdHJ0aXRsZV9saWJjX3NiKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29u c3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIH0KIAogc3RhdGljIHNpemVfdAotc3RydGl0 bGVfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywg c3NpemVfdCBzcmNsZW4sCitzdHJ0aXRsZV9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0 c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJCSBwZ19sb2NhbGVfdCBs b2NhbGUpCiB7CiAJbG9jYWxlX3QJbG9jID0gbG9jYWxlLT5sdDsKQEAgLTYwNyw5ICs2MDksNiBA QCBzdHJ0aXRsZV9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hh ciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAlzaXplX3QJCWN1cnJfY2hhcjsKIAlzaXplX3QJCW1h eF9zaXplOwogCi0JaWYgKHNyY2xlbiA8IDApCi0JCXNyY2xlbiA9IHN0cmxlbihzcmMpOwotCiAJ LyogT3ZlcmZsb3cgcGFyYW5vaWEgKi8KIAlpZiAoKHNyY2xlbiArIDEpID4gKElOVF9NQVggLyBz aXplb2Yod2NoYXJfdCkpKQogCQllcmVwb3J0KEVSUk9SLApAQCAtNjUxLDEyICs2NTAsOSBAQCBz dHJ0aXRsZV9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAq c3JjLCBzc2l6ZV90IHNyY2xlbiwKIH0KIAogc3RhdGljIHNpemVfdAotc3RydXBwZXJfbGliY19z YihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBz cmNsZW4sCitzdHJ1cHBlcl9saWJjX3NiKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29u c3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJCSBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7 Ci0JaWYgKHNyY2xlbiA8IDApCi0JCXNyY2xlbiA9IHN0cmxlbihzcmMpOwotCiAJaWYgKHNyY2xl biArIDEgPD0gZGVzdHNpemUpCiAJewogCQlsb2NhbGVfdAlsb2MgPSBsb2NhbGUtPmx0OwpAQCAt NjkwLDcgKzY4Niw3IEBAIHN0cnVwcGVyX2xpYmNfc2IoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3Rz aXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogfQogCiBzdGF0aWMgc2l6ZV90 Ci1zdHJ1cHBlcl9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hh ciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKK3N0cnVwcGVyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6 ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQkJIHBnX2xv Y2FsZV90IGxvY2FsZSkKIHsKIAlsb2NhbGVfdAlsb2MgPSBsb2NhbGUtPmx0OwpAQCAtNzAwLDkg KzY5Niw2IEBAIHN0cnVwcGVyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBj b25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCXNpemVfdAkJY3Vycl9jaGFyOwogCXNp emVfdAkJbWF4X3NpemU7CiAKLQlpZiAoc3JjbGVuIDwgMCkKLQkJc3JjbGVuID0gc3RybGVuKHNy Yyk7Ci0KIAkvKiBPdmVyZmxvdyBwYXJhbm9pYSAqLwogCWlmICgoc3JjbGVuICsgMSkgPiAoSU5U X01BWCAvIHNpemVvZih3Y2hhcl90KSkpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC04ODksMTcgKzg4 MiwxNyBAQCBtYWtlX2xpYmNfY29sbGF0b3IoY29uc3QgY2hhciAqY29sbGF0ZSwgY29uc3QgY2hh ciAqY3R5cGUpCiAgKiBzdHJuY29sbF9saWJjCiAgKgogICogTlVMLXRlcm1pbmF0ZSBhcmd1bWVu dHMsIGlmIG5lY2Vzc2FyeSwgYW5kIHBhc3MgdG8gc3RyY29sbF9sKCkuCi0gKgotICogQW4gaW5w dXQgc3RyaW5nIGxlbmd0aCBvZiAtMSBtZWFucyB0aGF0IGl0J3MgYWxyZWFkeSBOVUwtdGVybWlu YXRlZC4KICAqLwotaW50Ci1zdHJuY29sbF9saWJjKGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3Qg bGVuMSwgY29uc3QgY2hhciAqYXJnMiwgc3NpemVfdCBsZW4yLAorc3RhdGljIGludAorc3RybmNv bGxfbGliYyhjb25zdCBjaGFyICphcmcxLCBzaXplX3QgbGVuMSwgY29uc3QgY2hhciAqYXJnMiwg c2l6ZV90IGxlbjIsCiAJCQkgIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKIAljaGFyCQlzYnVmW1RF WFRCVUZMRU5dOwogCWNoYXIJICAgKmJ1ZiA9IHNidWY7Ci0Jc2l6ZV90CQlidWZzaXplMSA9IChs ZW4xID09IC0xKSA/IDAgOiBsZW4xICsgMTsKLQlzaXplX3QJCWJ1ZnNpemUyID0gKGxlbjIgPT0g LTEpID8gMCA6IGxlbjIgKyAxOworCXNpemVfdAkJYnVmc2l6ZTEgPSBsZW4xICsgMTsKKwlzaXpl X3QJCWJ1ZnNpemUyID0gbGVuMiArIDE7CisJY2hhcgkgICAqYnVmMTsKKwljaGFyCSAgICpidWYy OwogCWNvbnN0IGNoYXIgKmFyZzFuOwogCWNvbnN0IGNoYXIgKmFyZzJuOwogCWludAkJCXJlc3Vs dDsKQEAgLTkwNywzMiArOTAwLDE2IEBAIHN0cm5jb2xsX2xpYmMoY29uc3QgY2hhciAqYXJnMSwg c3NpemVfdCBsZW4xLCBjb25zdCBjaGFyICphcmcyLCBzc2l6ZV90IGxlbjIsCiAJaWYgKGJ1ZnNp emUxICsgYnVmc2l6ZTIgPiBURVhUQlVGTEVOKQogCQlidWYgPSBwYWxsb2MoYnVmc2l6ZTEgKyBi dWZzaXplMik7CiAKLQkvKiBudWwtdGVybWluYXRlIGFyZ3VtZW50cyBpZiBuZWNlc3NhcnkgKi8K LQlpZiAobGVuMSA9PSAtMSkKLQl7Ci0JCWFyZzFuID0gYXJnMTsKLQl9Ci0JZWxzZQotCXsKLQkJ Y2hhcgkgICAqYnVmMSA9IGJ1ZjsKLQotCQltZW1jcHkoYnVmMSwgYXJnMSwgbGVuMSk7Ci0JCWJ1 ZjFbbGVuMV0gPSAnXDAnOwotCQlhcmcxbiA9IGJ1ZjE7Ci0JfQorCWJ1ZjEgPSBidWY7CisJYnVm MiA9IGJ1ZiArIGJ1ZnNpemUxOwogCi0JaWYgKGxlbjIgPT0gLTEpCi0JewotCQlhcmcybiA9IGFy ZzI7Ci0JfQotCWVsc2UKLQl7Ci0JCWNoYXIJICAgKmJ1ZjIgPSBidWYgKyBidWZzaXplMTsKKwlt ZW1jcHkoYnVmMSwgYXJnMSwgbGVuMSk7CisJYnVmMVtsZW4xXSA9ICdcMCc7CisJYXJnMW4gPSBi dWYxOwogCi0JCW1lbWNweShidWYyLCBhcmcyLCBsZW4yKTsKLQkJYnVmMltsZW4yXSA9ICdcMCc7 Ci0JCWFyZzJuID0gYnVmMjsKLQl9CisJbWVtY3B5KGJ1ZjIsIGFyZzIsIGxlbjIpOworCWJ1ZjJb bGVuMl0gPSAnXDAnOworCWFyZzJuID0gYnVmMjsKIAogCXJlc3VsdCA9IHN0cmNvbGxfbChhcmcx biwgYXJnMm4sIGxvY2FsZS0+bHQpOwogCkBAIC05NDIsMTUgKzkxOSwyMiBAQCBzdHJuY29sbF9s aWJjKGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwgY29uc3QgY2hhciAqYXJnMiwgc3Np emVfdCBsZW4yLAogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBzdHJjb2xsX2xpYmMKKyAq Lworc3RhdGljIGludAorc3RyY29sbF9saWJjKGNvbnN0IGNoYXIgKmFyZzEsIGNvbnN0IGNoYXIg KmFyZzIsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gc3RyY29sbF9sKGFyZzEsIGFy ZzIsIGxvY2FsZS0+bHQpOworfQorCiAvKgogICogc3Rybnhmcm1fbGliYwogICoKLSAqIE5VTC10 ZXJtaW5hdGUgc3JjLCBpZiBuZWNlc3NhcnksIGFuZCBwYXNzIHRvIHN0cnhmcm1fbCgpLgotICoK LSAqIEEgc291cmNlIGxlbmd0aCBvZiAtMSBtZWFucyB0aGF0IGl0J3MgYWxyZWFkeSBOVUwtdGVy bWluYXRlZC4KKyAqIE5VTC10ZXJtaW5hdGUgc3JjIGFuZCBwYXNzIHRvIHN0cnhmcm1fbCgpLgog ICovCi1zaXplX3QKLXN0cm54ZnJtX2xpYmMoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBj b25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAorc3RhdGljIHNpemVfdAorc3Rybnhmcm1f bGliYyhjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90 IHNyY2xlbiwKIAkJCSAgcGdfbG9jYWxlX3QgbG9jYWxlKQogewogCWNoYXIJCXNidWZbVEVYVEJV RkxFTl07CkBAIC05NTgsOSArOTQyLDYgQEAgc3Rybnhmcm1fbGliYyhjaGFyICpkZXN0LCBzaXpl X3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJc2l6ZV90CQli dWZzaXplID0gc3JjbGVuICsgMTsKIAlzaXplX3QJCXJlc3VsdDsKIAotCWlmIChzcmNsZW4gPT0g LTEpCi0JCXJldHVybiBzdHJ4ZnJtX2woZGVzdCwgc3JjLCBkZXN0c2l6ZSwgbG9jYWxlLT5sdCk7 Ci0KIAlpZiAoYnVmc2l6ZSA+IFRFWFRCVUZMRU4pCiAJCWJ1ZiA9IHBhbGxvYyhidWZzaXplKTsK IApAQCAtOTc5LDYgKzk2MCwxNSBAQCBzdHJueGZybV9saWJjKGNoYXIgKmRlc3QsIHNpemVfdCBk ZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAlyZXR1cm4gcmVzdWx0 OwogfQogCisvKgorICogc3RyeGZybV9saWJjCisgKi8KK3N0YXRpYyBzaXplX3QKK3N0cnhmcm1f bGliYyhjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgcGdfbG9j YWxlX3QgbG9jYWxlKQoreworCXJldHVybiBzdHJ4ZnJtX2woZGVzdCwgc3JjLCBkZXN0c2l6ZSwg bG9jYWxlLT5sdCk7Cit9CisKIGNoYXIgKgogZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbl9s aWJjKGNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlKQogewpAQCAtMTA0OSwxMyArMTAzOSwxMSBAQCBn ZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uX2xpYmMoY29uc3QgY2hhciAqY29sbGNvbGxhdGUp CiAgKgogICogV2luMzIgZG9lcyBub3QgaGF2ZSBVVEYtOC4gQ29udmVydCBVVEY4IGFyZ3VtZW50 cyB0byB3aWRlIGNoYXJhY3RlcnMgYW5kCiAgKiBpbnZva2Ugd2NzY29sbF9sKCkuCi0gKgotICog QW4gaW5wdXQgc3RyaW5nIGxlbmd0aCBvZiAtMSBtZWFucyB0aGF0IGl0J3MgTlVMLXRlcm1pbmF0 ZWQuCiAgKi8KICNpZmRlZiBXSU4zMgogc3RhdGljIGludAotc3RybmNvbGxfbGliY193aW4zMl91 dGY4KGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwgY29uc3QgY2hhciAqYXJnMiwKLQkJ CQkJCSBzc2l6ZV90IGxlbjIsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3N0cm5jb2xsX2xpYmNfd2lu MzJfdXRmOChjb25zdCBjaGFyICphcmcxLCBzaXplX3QgbGVuMSwgY29uc3QgY2hhciAqYXJnMiwK KwkJCQkJCSBzaXplX3QgbGVuMiwgcGdfbG9jYWxlX3QgbG9jYWxlKQogewogCWNoYXIJCXNidWZb VEVYVEJVRkxFTl07CiAJY2hhcgkgICAqYnVmID0gc2J1ZjsKQEAgLTEwNjgsMTEgKzEwNTYsNiBA QCBzdHJuY29sbF9saWJjX3dpbjMyX3V0ZjgoY29uc3QgY2hhciAqYXJnMSwgc3NpemVfdCBsZW4x LCBjb25zdCBjaGFyICphcmcyLAogCiAJQXNzZXJ0KEdldERhdGFiYXNlRW5jb2RpbmcoKSA9PSBQ R19VVEY4KTsKIAotCWlmIChsZW4xID09IC0xKQotCQlsZW4xID0gc3RybGVuKGFyZzEpOwotCWlm IChsZW4yID09IC0xKQotCQlsZW4yID0gc3RybGVuKGFyZzIpOwotCiAJYTFsZW4gPSBsZW4xICog MiArIDI7CiAJYTJsZW4gPSBsZW4yICogMiArIDI7CiAKQEAgLTExMjAsNiArMTEwMywxNiBAQCBz dHJuY29sbF9saWJjX3dpbjMyX3V0ZjgoY29uc3QgY2hhciAqYXJnMSwgc3NpemVfdCBsZW4xLCBj b25zdCBjaGFyICphcmcyLAogCiAJcmV0dXJuIHJlc3VsdDsKIH0KKworc3RhdGljIGludAorc3Ry Y29sbF9saWJjX3dpbjMyX3V0ZjgoY29uc3QgY2hhciAqYXJnMSwgY29uc3QgY2hhciAqYXJnMiwK KwkJCQkJCXBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlzaXplX3QJCWxlbjEgPSBzdHJsZW4oYXJn MSk7CisJc2l6ZV90CQlsZW4yID0gc3RybGVuKGFyZzIpOworCisJcmV0dXJuIHN0cm5jb2xsX2xp YmNfd2luMzJfdXRmOChhcmcxLCBsZW4xLCBhcmcyLCBsZW4yLCBsb2NhbGUpOworfQogI2VuZGlm CQkJCQkJCS8qIFdJTjMyICovCiAKIC8qIHNpbXBsZSBzdWJyb3V0aW5lIGZvciByZXBvcnRpbmcg ZXJyb3JzIGZyb20gbmV3bG9jYWxlKCkgKi8KZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vdW5pY29k ZS9jYXNlX3Rlc3QuYyBiL3NyYy9jb21tb24vdW5pY29kZS9jYXNlX3Rlc3QuYwppbmRleCAwOTk1 MzBjMWVhZC4uYTBkYmYwMGI2NzEgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vdW5pY29kZS9jYXNl X3Rlc3QuYworKysgYi9zcmMvY29tbW9uL3VuaWNvZGUvY2FzZV90ZXN0LmMKQEAgLTM0LDcgKzM0 LDcgQEAgc3RhdGljIFVDYXNlTWFwICpjYXNlbWFwID0gTlVMTDsKICNlbmRpZgogCiB0eXBlZGVm IHNpemVfdCAoKlRlc3RGdW5jKSAoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hh ciAqc3JjLAotCQkJCQkJCXNzaXplX3Qgc3JjbGVuKTsKKwkJCQkJCQlzaXplX3Qgc3JjbGVuKTsK IAogLyogc2ltcGxlIGJvdW5kYXJ5IGl0ZXJhdG9yIGNvcGllZCBmcm9tIHBnX2xvY2FsZV9idWls dGluLmMgKi8KIHN0cnVjdCBXb3JkQm91bmRhcnlTdGF0ZQpAQCAtMTE0LDYgKzExNCw3IEBAIGlj dV90ZXN0X2Z1bGwoY2hhciAqc3RyKQogCWNoYXIJCWljdV91cHBlcltCVUZTWl07CiAJY2hhcgkJ aWN1X2ZvbGRbQlVGU1pdOwogCVVFcnJvckNvZGUJc3RhdHVzOworCXNpemVfdAkJbGVuID0gc3Ry bGVuKHN0cik7CiAKIAkvKiBmdWxsIGNhc2UgbWFwcGluZyBkb2Vzbid0IHVzZSBwb3NpeCBzZW1h bnRpY3MgKi8KIAlzdHJ1Y3QgV29yZEJvdW5kYXJ5U3RhdGUgd2JzdGF0ZSA9IHsKQEAgLTEyNSwx OCArMTI2LDE4IEBAIGljdV90ZXN0X2Z1bGwoY2hhciAqc3RyKQogCQkucHJldl9hbG51bSA9IGZh bHNlLAogCX07CiAKLQl1bmljb2RlX3N0cmxvd2VyKGxvd2VyLCBCVUZTWiwgc3RyLCAtMSwgdHJ1 ZSk7Ci0JdW5pY29kZV9zdHJ0aXRsZSh0aXRsZSwgQlVGU1osIHN0ciwgLTEsIHRydWUsIGluaXRj YXBfd2JuZXh0LCAmd2JzdGF0ZSk7Ci0JdW5pY29kZV9zdHJ1cHBlcih1cHBlciwgQlVGU1osIHN0 ciwgLTEsIHRydWUpOwotCXVuaWNvZGVfc3RyZm9sZChmb2xkLCBCVUZTWiwgc3RyLCAtMSwgdHJ1 ZSk7CisJdW5pY29kZV9zdHJsb3dlcihsb3dlciwgQlVGU1osIHN0ciwgbGVuLCB0cnVlKTsKKwl1 bmljb2RlX3N0cnRpdGxlKHRpdGxlLCBCVUZTWiwgc3RyLCBsZW4sIHRydWUsIGluaXRjYXBfd2Ju ZXh0LCAmd2JzdGF0ZSk7CisJdW5pY29kZV9zdHJ1cHBlcih1cHBlciwgQlVGU1osIHN0ciwgbGVu LCB0cnVlKTsKKwl1bmljb2RlX3N0cmZvbGQoZm9sZCwgQlVGU1osIHN0ciwgbGVuLCB0cnVlKTsK IAlzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0JdWNhc2VtYXBfdXRmOFRvTG93ZXIoY2FzZW1hcCwg aWN1X2xvd2VyLCBCVUZTWiwgc3RyLCAtMSwgJnN0YXR1cyk7CisJdWNhc2VtYXBfdXRmOFRvTG93 ZXIoY2FzZW1hcCwgaWN1X2xvd2VyLCBCVUZTWiwgc3RyLCBsZW4sICZzdGF0dXMpOwogCXN0YXR1 cyA9IFVfWkVST19FUlJPUjsKLQl1Y2FzZW1hcF91dGY4VG9UaXRsZShjYXNlbWFwLCBpY3VfdGl0 bGUsIEJVRlNaLCBzdHIsIC0xLCAmc3RhdHVzKTsKKwl1Y2FzZW1hcF91dGY4VG9UaXRsZShjYXNl bWFwLCBpY3VfdGl0bGUsIEJVRlNaLCBzdHIsIGxlbiwgJnN0YXR1cyk7CiAJc3RhdHVzID0gVV9a RVJPX0VSUk9SOwotCXVjYXNlbWFwX3V0ZjhUb1VwcGVyKGNhc2VtYXAsIGljdV91cHBlciwgQlVG U1osIHN0ciwgLTEsICZzdGF0dXMpOworCXVjYXNlbWFwX3V0ZjhUb1VwcGVyKGNhc2VtYXAsIGlj dV91cHBlciwgQlVGU1osIHN0ciwgbGVuLCAmc3RhdHVzKTsKIAlzdGF0dXMgPSBVX1pFUk9fRVJS T1I7Ci0JdWNhc2VtYXBfdXRmOEZvbGRDYXNlKGNhc2VtYXAsIGljdV9mb2xkLCBCVUZTWiwgc3Ry LCAtMSwgJnN0YXR1cyk7CisJdWNhc2VtYXBfdXRmOEZvbGRDYXNlKGNhc2VtYXAsIGljdV9mb2xk LCBCVUZTWiwgc3RyLCBsZW4sICZzdGF0dXMpOwogCiAJaWYgKHN0cmNtcChsb3dlciwgaWN1X2xv d2VyKSAhPSAwKQogCXsKQEAgLTIwOSwxOCArMjEwLDE2IEBAIHN0YXRpYyB2b2lkCiB0ZXN0X2Nv bnZlcnQoVGVzdEZ1bmMgdGZ1bmMsIGNvbnN0IGNoYXIgKnRlc3Rfc3RyaW5nLCBjb25zdCBjaGFy ICpleHBlY3RlZCkKIHsKIAlzaXplX3QJCXNyYzFsZW4gPSBzdHJsZW4odGVzdF9zdHJpbmcpOwot CXNpemVfdAkJc3JjMmxlbiA9IC0xOwkvKiBOVUwtdGVybWluYXRlZCAqLwogCXNpemVfdAkJZHN0 MWxlbiA9IHN0cmxlbihleHBlY3RlZCk7CiAJc2l6ZV90CQlkc3QybGVuID0gc3RybGVuKGV4cGVj dGVkKSArIDE7IC8qIE5VTC10ZXJtaW5hdGVkICovCiAJY2hhcgkgICAqc3JjMSA9IG1hbGxvYyhz cmMxbGVuKTsKIAljaGFyCSAgICpkc3QxID0gbWFsbG9jKGRzdDFsZW4pOwotCWNoYXIJICAgKnNy YzIgPSBzdHJkdXAodGVzdF9zdHJpbmcpOwogCWNoYXIJICAgKmRzdDIgPSBtYWxsb2MoZHN0Mmxl bik7CiAJc2l6ZV90CQluZWVkZWQ7CiAKIAltZW1jcHkoc3JjMSwgdGVzdF9zdHJpbmcsIHNyYzFs ZW4pOyAvKiBub3QgTlVMLXRlcm1pbmF0ZWQgKi8KIAotCS8qIG5laXRoZXIgc291cmNlIG5vciBk ZXN0aW5hdGlvbiBhcmUgTlVMLXRlcm1pbmF0ZWQgKi8KKwkvKiBkZXN0aW5hdGlvbiBpcyBub3Qg TlVMLXRlcm1pbmF0ZWQgKi8KIAltZW1zZXQoZHN0MSwgMHg3RiwgZHN0MWxlbik7CiAJbmVlZGVk ID0gdGZ1bmMoZHN0MSwgZHN0MWxlbiwgc3JjMSwgc3JjMWxlbik7CiAJaWYgKG5lZWRlZCAhPSBz dHJsZW4oZXhwZWN0ZWQpKQpAQCAtMjM2LDcgKzIzNSw3IEBAIHRlc3RfY29udmVydChUZXN0RnVu YyB0ZnVuYywgY29uc3QgY2hhciAqdGVzdF9zdHJpbmcsIGNvbnN0IGNoYXIgKmV4cGVjdGVkKQog CQlleGl0KDEpOwogCX0KIAotCS8qIGRlc3RpbmF0aW9uIGlzIE5VTC10ZXJtaW5hdGVkIGFuZCBz b3VyY2UgaXMgbm90ICovCisJLyogZGVzdGluYXRpb24gaXMgTlVMLXRlcm1pbmF0ZWQgKi8KIAlt ZW1zZXQoZHN0MiwgMHg3RiwgZHN0Mmxlbik7CiAJbmVlZGVkID0gdGZ1bmMoZHN0MiwgZHN0Mmxl biwgc3JjMSwgc3JjMWxlbik7CiAJaWYgKG5lZWRlZCAhPSBzdHJsZW4oZXhwZWN0ZWQpKQpAQCAt MjUyLDU5ICsyNTEsMjUgQEAgdGVzdF9jb252ZXJ0KFRlc3RGdW5jIHRmdW5jLCBjb25zdCBjaGFy ICp0ZXN0X3N0cmluZywgY29uc3QgY2hhciAqZXhwZWN0ZWQpCiAJCWV4aXQoMSk7CiAJfQogCi0J Lyogc291cmNlIGlzIE5VTC10ZXJtaW5hdGVkIGFuZCBkZXN0aW5hdGlvbiBpcyBub3QgKi8KLQlt ZW1zZXQoZHN0MSwgMHg3RiwgZHN0MWxlbik7Ci0JbmVlZGVkID0gdGZ1bmMoZHN0MSwgZHN0MWxl biwgc3JjMiwgc3JjMmxlbik7Ci0JaWYgKG5lZWRlZCAhPSBzdHJsZW4oZXhwZWN0ZWQpKQotCXsK LQkJcHJpbnRmKCJjYXNlX3Rlc3Q6IGNvbnZlcnRfY2FzZSB0ZXN0MyBGQUlMVVJFOiAnJXMnIG5l ZWRlZCAlenUgZXhwZWN0ZWQgJXp1XG4iLAotCQkJICAgdGVzdF9zdHJpbmcsIG5lZWRlZCwgc3Ry bGVuKGV4cGVjdGVkKSk7Ci0JCXByaW50ZigiY2FzZV90ZXN0OiBjb252ZXJ0X2Nhc2UgdGVzdDMg RkFJTFVSRTogbmVlZGVkICV6dVxuIiwgbmVlZGVkKTsKLQkJZXhpdCgxKTsKLQl9Ci0JaWYgKG1l bWNtcChkc3QxLCBleHBlY3RlZCwgZHN0MWxlbikgIT0gMCkKLQl7Ci0JCXByaW50ZigiY2FzZV90 ZXN0OiBjb252ZXJ0X2Nhc2UgdGVzdDMgRkFJTFVSRTogdGVzdDogJyVzJyByZXN1bHQ6ICclLipz JyBleHBlY3RlZDogJyVzJ1xuIiwKLQkJCSAgIHRlc3Rfc3RyaW5nLCAoaW50KSBkc3QxbGVuLCBk c3QxLCBleHBlY3RlZCk7Ci0JCWV4aXQoMSk7Ci0JfQotCi0JLyogYm90aCBzb3VyY2UgYW5kIGRl c3RpbmF0aW9uIGFyZSBOVUwtdGVybWluYXRlZCAqLwotCW1lbXNldChkc3QyLCAweDdGLCBkc3Qy bGVuKTsKLQluZWVkZWQgPSB0ZnVuYyhkc3QyLCBkc3QybGVuLCBzcmMyLCBzcmMybGVuKTsKLQlp ZiAobmVlZGVkICE9IHN0cmxlbihleHBlY3RlZCkpCi0JewotCQlwcmludGYoImNhc2VfdGVzdDog Y29udmVydF9jYXNlIHRlc3Q0IEZBSUxVUkU6ICclcycgbmVlZGVkICV6dSBleHBlY3RlZCAlenVc biIsCi0JCQkgICB0ZXN0X3N0cmluZywgbmVlZGVkLCBzdHJsZW4oZXhwZWN0ZWQpKTsKLQkJZXhp dCgxKTsKLQl9Ci0JaWYgKHN0cmNtcChkc3QyLCBleHBlY3RlZCkgIT0gMCkKLQl7Ci0JCXByaW50 ZigiY2FzZV90ZXN0OiBjb252ZXJ0X2Nhc2UgdGVzdDQgRkFJTFVSRTogdGVzdDogJyVzJyByZXN1 bHQ6ICclcycgZXhwZWN0ZWQ6ICclcydcbiIsCi0JCQkgICB0ZXN0X3N0cmluZywgZHN0MiwgZXhw ZWN0ZWQpOwotCQlleGl0KDEpOwotCX0KLQogCWZyZWUoc3JjMSk7CiAJZnJlZShkc3QxKTsKLQlm cmVlKHNyYzIpOwogCWZyZWUoZHN0Mik7CiB9CiAKIHN0YXRpYyBzaXplX3QKIHRmdW5jX2xvd2Vy KGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywKLQkJCXNzaXplX3Qg c3JjbGVuKQorCQkJc2l6ZV90IHNyY2xlbikKIHsKIAlyZXR1cm4gdW5pY29kZV9zdHJsb3dlcihk c3QsIGRzdHNpemUsIHNyYywgc3JjbGVuLCB0cnVlKTsKIH0KIAogc3RhdGljIHNpemVfdAogdGZ1 bmNfdGl0bGUoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJ c3NpemVfdCBzcmNsZW4pCisJCQlzaXplX3Qgc3JjbGVuKQogewogCXN0cnVjdCBXb3JkQm91bmRh cnlTdGF0ZSB3YnN0YXRlID0gewogCQkuc3RyID0gc3JjLAotCQkubGVuID0gKHNyY2xlbiA8IDAp ID8gc3RybGVuKHNyYykgOiBzcmNsZW4sCisJCS5sZW4gPSBzcmNsZW4sCiAJCS5vZmZzZXQgPSAw LAogCQkuaW5pdCA9IGZhbHNlLAogCQkucHJldl9hbG51bSA9IGZhbHNlLApAQCAtMzE2LDE0ICsy ODEsMTQgQEAgdGZ1bmNfdGl0bGUoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hh ciAqc3JjLAogCiBzdGF0aWMgc2l6ZV90CiB0ZnVuY191cHBlcihjaGFyICpkc3QsIHNpemVfdCBk c3RzaXplLCBjb25zdCBjaGFyICpzcmMsCi0JCQlzc2l6ZV90IHNyY2xlbikKKwkJCXNpemVfdCBz cmNsZW4pCiB7CiAJcmV0dXJuIHVuaWNvZGVfc3RydXBwZXIoZHN0LCBkc3RzaXplLCBzcmMsIHNy Y2xlbiwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyBzaXplX3QKIHRmdW5jX2ZvbGQoY2hhciAqZHN0LCBz aXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkgICBzc2l6ZV90IHNyY2xlbikKKwkJ ICAgc2l6ZV90IHNyY2xlbikKIHsKIAlyZXR1cm4gdW5pY29kZV9zdHJmb2xkKGRzdCwgZHN0c2l6 ZSwgc3JjLCBzcmNsZW4sIHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi91bmljb2Rl X2Nhc2UuYyBiL3NyYy9jb21tb24vdW5pY29kZV9jYXNlLmMKaW5kZXggMGI4ZDNmZmMwYjQuLmQ2 ZWUwMGI3ZDljIDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL3VuaWNvZGVfY2FzZS5jCisrKyBiL3Ny Yy9jb21tb24vdW5pY29kZV9jYXNlLmMKQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIGNvbnN0IGNo YXIzMl90ICpjb25zdCBjYXNla2luZF9tYXBbTkNhc2VLaW5kXSA9CiB9OwogCiBzdGF0aWMgY2hh cjMyX3QgZmluZF9jYXNlX21hcChjaGFyMzJfdCB1Y3MsIGNvbnN0IGNoYXIzMl90ICptYXApOwot c3RhdGljIHNpemVfdCBjb252ZXJ0X2Nhc2UoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29u c3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKK3N0YXRpYyBzaXplX3QgY29udmVydF9jYXNl KGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xl biwKIAkJCQkJCSAgIENhc2VLaW5kIHN0cl9jYXNla2luZCwgYm9vbCBmdWxsLCBXb3JkQm91bmRh cnlOZXh0IHdibmV4dCwKIAkJCQkJCSAgIHZvaWQgKndic3RhdGUpOwogc3RhdGljIGVudW0gQ2Fz ZU1hcFJlc3VsdCBjYXNlbWFwKGNoYXIzMl90IHUxLCBDYXNlS2luZCBjYXNla2luZCwgYm9vbCBm dWxsLApAQCAtODQsOCArODQsNyBAQCB1bmljb2RlX2Nhc2Vmb2xkX3NpbXBsZShjaGFyMzJfdCBj b2RlKQogICogQ29udmVydCBzcmMgdG8gbG93ZXJjYXNlLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQg bGVuZ3RoIChub3QgaW5jbHVkaW5nCiAgKiB0ZXJtaW5hdGluZyBOVUwpLgogICoKLSAqIFN0cmlu ZyBzcmMgbXVzdCBiZSBlbmNvZGVkIGluIFVURi04LiBJZiBzcmNsZW4gPCAwLCBzcmMgbXVzdCBi ZQotICogTlVMLXRlcm1pbmF0ZWQuCisgKiBTdHJpbmcgc3JjIG11c3QgYmUgZW5jb2RlZCBpbiBV VEYtOC4KICAqCiAgKiBSZXN1bHQgc3RyaW5nIGlzIHN0b3JlZCBpbiBkc3QsIHRydW5jYXRpbmcg aWYgbGFyZ2VyIHRoYW4gZHN0c2l6ZS4gSWYKICAqIGRzdHNpemUgaXMgZ3JlYXRlciB0aGFuIHRo ZSByZXN1bHQgbGVuZ3RoLCBkc3Qgd2lsbCBiZSBOVUwtdGVybWluYXRlZDsKQEAgLTk4LDcgKzk3 LDcgQEAgdW5pY29kZV9jYXNlZm9sZF9zaW1wbGUoY2hhcjMyX3QgY29kZSkKICAqIGNvbmRpdGlv bnMgYXJlIHNhdGlzZmllZC4KICAqLwogc2l6ZV90Ci11bmljb2RlX3N0cmxvd2VyKGNoYXIgKmRz dCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCit1bmlj b2RlX3N0cmxvd2VyKGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywg c2l6ZV90IHNyY2xlbiwKIAkJCQkgYm9vbCBmdWxsKQogewogCXJldHVybiBjb252ZXJ0X2Nhc2Uo ZHN0LCBkc3RzaXplLCBzcmMsIHNyY2xlbiwgQ2FzZUxvd2VyLCBmdWxsLCBOVUxMLApAQCAtMTEx LDggKzExMCw3IEBAIHVuaWNvZGVfc3RybG93ZXIoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwg Y29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKICAqIENvbnZlcnQgc3JjIHRvIHRpdGxl Y2FzZSwgYW5kIHJldHVybiB0aGUgcmVzdWx0IGxlbmd0aCAobm90IGluY2x1ZGluZwogICogdGVy bWluYXRpbmcgTlVMKS4KICAqCi0gKiBTdHJpbmcgc3JjIG11c3QgYmUgZW5jb2RlZCBpbiBVVEYt OC4gSWYgc3JjbGVuIDwgMCwgc3JjIG11c3QgYmUKLSAqIE5VTC10ZXJtaW5hdGVkLgorICogU3Ry aW5nIHNyYyBtdXN0IGJlIGVuY29kZWQgaW4gVVRGLTguCiAgKgogICogUmVzdWx0IHN0cmluZyBp cyBzdG9yZWQgaW4gZHN0LCB0cnVuY2F0aW5nIGlmIGxhcmdlciB0aGFuIGRzdHNpemUuIElmCiAg KiBkc3RzaXplIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcmVzdWx0IGxlbmd0aCwgZHN0IHdpbGwgYmUg TlVMLXRlcm1pbmF0ZWQ7CkBAIC0xMzUsNyArMTMzLDcgQEAgdW5pY29kZV9zdHJsb3dlcihjaGFy ICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAog ICogdGhlIHN0cmluZyB0byBpbmRpY2F0ZSB0aGUgZmluYWwgYm91bmRhcnkuCiAgKi8KIHNpemVf dAotdW5pY29kZV9zdHJ0aXRsZShjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFy ICpzcmMsIHNzaXplX3Qgc3JjbGVuLAordW5pY29kZV9zdHJ0aXRsZShjaGFyICpkc3QsIHNpemVf dCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQkJIGJvb2wgZnVs bCwgV29yZEJvdW5kYXJ5TmV4dCB3Ym5leHQsIHZvaWQgKndic3RhdGUpCiB7CiAJcmV0dXJuIGNv bnZlcnRfY2FzZShkc3QsIGRzdHNpemUsIHNyYywgc3JjbGVuLCBDYXNlVGl0bGUsIGZ1bGwsIHdi bmV4dCwKQEAgLTE0OCw4ICsxNDYsNyBAQCB1bmljb2RlX3N0cnRpdGxlKGNoYXIgKmRzdCwgc2l6 ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAgKiBDb252ZXJ0 IHNyYyB0byB1cHBlcmNhc2UsIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBsZW5ndGggKG5vdCBpbmNs dWRpbmcKICAqIHRlcm1pbmF0aW5nIE5VTCkuCiAgKgotICogU3RyaW5nIHNyYyBtdXN0IGJlIGVu Y29kZWQgaW4gVVRGLTguIElmIHNyY2xlbiA8IDAsIHNyYyBtdXN0IGJlCi0gKiBOVUwtdGVybWlu YXRlZC4KKyAqIFN0cmluZyBzcmMgbXVzdCBiZSBlbmNvZGVkIGluIFVURi04LgogICoKICAqIFJl c3VsdCBzdHJpbmcgaXMgc3RvcmVkIGluIGRzdCwgdHJ1bmNhdGluZyBpZiBsYXJnZXIgdGhhbiBk c3RzaXplLiBJZgogICogZHN0c2l6ZSBpcyBncmVhdGVyIHRoYW4gdGhlIHJlc3VsdCBsZW5ndGgs IGRzdCB3aWxsIGJlIE5VTC10ZXJtaW5hdGVkOwpAQCAtMTYyLDcgKzE1OSw3IEBAIHVuaWNvZGVf c3RydGl0bGUoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6 ZV90IHNyY2xlbiwKICAqIGNvbmRpdGlvbnMgYXJlIHNhdGlzZmllZC4KICAqLwogc2l6ZV90Ci11 bmljb2RlX3N0cnVwcGVyKGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNy Yywgc3NpemVfdCBzcmNsZW4sCit1bmljb2RlX3N0cnVwcGVyKGNoYXIgKmRzdCwgc2l6ZV90IGRz dHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJCQkgYm9vbCBmdWxsKQog ewogCXJldHVybiBjb252ZXJ0X2Nhc2UoZHN0LCBkc3RzaXplLCBzcmMsIHNyY2xlbiwgQ2FzZVVw cGVyLCBmdWxsLCBOVUxMLApAQCAtMTc1LDggKzE3Miw3IEBAIHVuaWNvZGVfc3RydXBwZXIoY2hh ciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwK ICAqIENhc2UgZm9sZCBzcmMsIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBsZW5ndGggKG5vdCBpbmNs dWRpbmcgdGVybWluYXRpbmcKICAqIE5VTCkuCiAgKgotICogU3RyaW5nIHNyYyBtdXN0IGJlIGVu Y29kZWQgaW4gVVRGLTguIElmIHNyY2xlbiA8IDAsIHNyYyBtdXN0IGJlCi0gKiBOVUwtdGVybWlu YXRlZC4KKyAqIFN0cmluZyBzcmMgbXVzdCBiZSBlbmNvZGVkIGluIFVURi04LgogICoKICAqIFJl c3VsdCBzdHJpbmcgaXMgc3RvcmVkIGluIGRzdCwgdHJ1bmNhdGluZyBpZiBsYXJnZXIgdGhhbiBk c3RzaXplLiBJZgogICogZHN0c2l6ZSBpcyBncmVhdGVyIHRoYW4gdGhlIHJlc3VsdCBsZW5ndGgs IGRzdCB3aWxsIGJlIE5VTC10ZXJtaW5hdGVkOwpAQCAtMTg2LDcgKzE4Miw3IEBAIHVuaWNvZGVf c3RydXBwZXIoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6 ZV90IHNyY2xlbiwKICAqIHJlcXVpcmVkIGJ1ZmZlciBzaXplIGJlZm9yZSBhbGxvY2F0aW5nLgog ICovCiBzaXplX3QKLXVuaWNvZGVfc3RyZm9sZChjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBj b25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAordW5pY29kZV9zdHJmb2xkKGNoYXIgKmRz dCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJCQli b29sIGZ1bGwpCiB7CiAJcmV0dXJuIGNvbnZlcnRfY2FzZShkc3QsIGRzdHNpemUsIHNyYywgc3Jj bGVuLCBDYXNlRm9sZCwgZnVsbCwgTlVMTCwKQEAgLTIxMCw3ICsyMDYsNyBAQCB1bmljb2RlX3N0 cmZvbGQoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90 IHNyY2xlbiwKICAqIG1hcCBhIHNpbmdsZSBjb2RlcG9pbnQgdG8gbXVsdGlwbGUgY29kZXBvaW50 cywgb3IgZGVwZW5kIG9uIGNvbmRpdGlvbnMuCiAgKi8KIHN0YXRpYyBzaXplX3QKLWNvbnZlcnRf Y2FzZShjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qg c3JjbGVuLAorY29udmVydF9jYXNlKGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNo YXIgKnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJCSBDYXNlS2luZCBzdHJfY2FzZWtpbmQsIGJvb2wg ZnVsbCwgV29yZEJvdW5kYXJ5TmV4dCB3Ym5leHQsCiAJCQkgdm9pZCAqd2JzdGF0ZSkKIHsKQEAg LTIyOSw3ICsyMjUsNyBAQCBjb252ZXJ0X2Nhc2UoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwg Y29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJQXNzZXJ0KGJvdW5kYXJ5ID09IDAp OwkvKiBzdGFydCBvZiB0ZXh0IGlzIGFsd2F5cyBhIGJvdW5kYXJ5ICovCiAJfQogCi0Jd2hpbGUg KChzcmNsZW4gPCAwIHx8IHNyY29mZiA8IHNyY2xlbikgJiYgc3JjW3NyY29mZl0gIT0gJ1wwJykK Kwl3aGlsZSAoc3Jjb2ZmIDwgc3JjbGVuKQogCXsKIAkJY2hhcjMyX3QJdTEgPSB1dGY4X3RvX3Vu aWNvZGUoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgc3JjICsgc3Jjb2ZmKTsKIAkJaW50CQkJdTFs ZW4gPSB1bmljb2RlX3V0ZjhsZW4odTEpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbW9u L3VuaWNvZGVfY2FzZS5oIGIvc3JjL2luY2x1ZGUvY29tbW9uL3VuaWNvZGVfY2FzZS5oCmluZGV4 IDI3MzdjMTM4MmQ0Li4wM2FkZDc4Y2FiZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbW9u L3VuaWNvZGVfY2FzZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1vbi91bmljb2RlX2Nhc2UuaApA QCAtMjEsMTMgKzIxLDEzIEBAIGNoYXIzMl90CXVuaWNvZGVfdGl0bGVjYXNlX3NpbXBsZShjaGFy MzJfdCBjb2RlKTsKIGNoYXIzMl90CXVuaWNvZGVfdXBwZXJjYXNlX3NpbXBsZShjaGFyMzJfdCBj b2RlKTsKIGNoYXIzMl90CXVuaWNvZGVfY2FzZWZvbGRfc2ltcGxlKGNoYXIzMl90IGNvZGUpOwog c2l6ZV90CQl1bmljb2RlX3N0cmxvd2VyKGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0 IGNoYXIgKnNyYywKLQkJCQkJCQkgc3NpemVfdCBzcmNsZW4sIGJvb2wgZnVsbCk7CisJCQkJCQkJ IHNpemVfdCBzcmNsZW4sIGJvb2wgZnVsbCk7CiBzaXplX3QJCXVuaWNvZGVfc3RydGl0bGUoY2hh ciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJCQkJCSBzc2l6ZV90 IHNyY2xlbiwgYm9vbCBmdWxsLAorCQkJCQkJCSBzaXplX3Qgc3JjbGVuLCBib29sIGZ1bGwsCiAJ CQkJCQkJIFdvcmRCb3VuZGFyeU5leHQgd2JuZXh0LCB2b2lkICp3YnN0YXRlKTsKIHNpemVfdAkJ dW5pY29kZV9zdHJ1cHBlcihjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpz cmMsCi0JCQkJCQkJIHNzaXplX3Qgc3JjbGVuLCBib29sIGZ1bGwpOworCQkJCQkJCSBzaXplX3Qg c3JjbGVuLCBib29sIGZ1bGwpOwogc2l6ZV90CQl1bmljb2RlX3N0cmZvbGQoY2hhciAqZHN0LCBz aXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJCQkJCXNzaXplX3Qgc3JjbGVuLCBi b29sIGZ1bGwpOworCQkJCQkJCXNpemVfdCBzcmNsZW4sIGJvb2wgZnVsbCk7CiAKICNlbmRpZgkJ CQkJCQkvKiBVTklDT0RFX0NBU0VfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv cGdfbG9jYWxlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaAppbmRleCA0NDQzNTBi YjgwMy4uYjc0ODIxZmRmYTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2Fs ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oCkBAIC02MywyMCArNjMsMjkg QEAgdHlwZWRlZiBzdHJ1Y3QgcGdfbG9jYWxlX3N0cnVjdCAqcGdfbG9jYWxlX3Q7CiBzdHJ1Y3Qg Y29sbGF0ZV9tZXRob2RzCiB7CiAJLyogcmVxdWlyZWQgKi8KLQlpbnQJCQkoKnN0cm5jb2xsKSAo Y29uc3QgY2hhciAqYXJnMSwgc3NpemVfdCBsZW4xLAotCQkJCQkJCSBjb25zdCBjaGFyICphcmcy LCBzc2l6ZV90IGxlbjIsCisJaW50CQkJKCpzdHJuY29sbCkgKGNvbnN0IGNoYXIgKmFyZzEsIHNp emVfdCBsZW4xLAorCQkJCQkJCSBjb25zdCBjaGFyICphcmcyLCBzaXplX3QgbGVuMiwKIAkJCQkJ CQkgcGdfbG9jYWxlX3QgbG9jYWxlKTsKIAorCWludAkJCSgqc3RyY29sbCkgKGNvbnN0IGNoYXIg KmFyZzEsIGNvbnN0IGNoYXIgKmFyZzIsCisJCQkJCQkJcGdfbG9jYWxlX3QgbG9jYWxlKTsKKwog CS8qIHJlcXVpcmVkICovCiAJc2l6ZV90CQkoKnN0cm54ZnJtKSAoY2hhciAqZGVzdCwgc2l6ZV90 IGRlc3RzaXplLAotCQkJCQkJCSBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAorCQkJ CQkJCSBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQkJCQkJIHBnX2xvY2FsZV90 IGxvY2FsZSk7CiAKKwlzaXplX3QJCSgqc3RyeGZybSkgKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0 c2l6ZSwKKwkJCQkJCQljb25zdCBjaGFyICpzcmMsIHBnX2xvY2FsZV90IGxvY2FsZSk7CisKIAkv KiBvcHRpb25hbCAqLwogCXNpemVfdAkJKCpzdHJueGZybV9wcmVmaXgpIChjaGFyICpkZXN0LCBz aXplX3QgZGVzdHNpemUsCi0JCQkJCQkJCQljb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVu LAorCQkJCQkJCQkJY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJCQkJCQkJcGdf bG9jYWxlX3QgbG9jYWxlKTsKIAorCXNpemVfdAkJKCpzdHJ4ZnJtX3ByZWZpeCkgKGNoYXIgKmRl c3QsIHNpemVfdCBkZXN0c2l6ZSwKKwkJCQkJCQkJICAgY29uc3QgY2hhciAqc3JjLCBwZ19sb2Nh bGVfdCBsb2NhbGUpOworCiAJLyoKIAkgKiBJZiB0aGUgc3Rybnhmcm0gbWV0aG9kIGlzIG5vdCB0 cnVzdGVkIHRvIHJldHVybiB0aGUgY29ycmVjdCByZXN1bHRzLAogCSAqIHNldCBzdHJ4ZnJtX2lz X3NhZmUgdG8gZmFsc2UuIEl0IHNldCB0byBmYWxzZSwgdGhlIG1ldGhvZCB3aWxsIG5vdCBiZQpA QCAtOTAsMTkgKzk5LDE5IEBAIHN0cnVjdCBjdHlwZV9tZXRob2RzCiB7CiAJLyogY2FzZSBtYXBw aW5nOiBMT1dFUigpL0lOSVRDQVAoKS9VUFBFUigpICovCiAJc2l6ZV90CQkoKnN0cmxvd2VyKSAo Y2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLAotCQkJCQkJCSBjb25zdCBjaGFyICpzcmMsIHNz aXplX3Qgc3JjbGVuLAorCQkJCQkJCSBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJ CQkJCQkJIHBnX2xvY2FsZV90IGxvY2FsZSk7CiAJc2l6ZV90CQkoKnN0cnRpdGxlKSAoY2hhciAq ZGVzdCwgc2l6ZV90IGRlc3RzaXplLAotCQkJCQkJCSBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qg c3JjbGVuLAorCQkJCQkJCSBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQkJCQkJ IHBnX2xvY2FsZV90IGxvY2FsZSk7CiAJc2l6ZV90CQkoKnN0cnVwcGVyKSAoY2hhciAqZGVzdCwg c2l6ZV90IGRlc3RzaXplLAotCQkJCQkJCSBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVu LAorCQkJCQkJCSBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQkJCQkJIHBnX2xv Y2FsZV90IGxvY2FsZSk7CiAJc2l6ZV90CQkoKnN0cmZvbGQpIChjaGFyICpkZXN0LCBzaXplX3Qg ZGVzdHNpemUsCi0JCQkJCQkJY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKKwkJCQkJ CQljb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQkJCQkJcGdfbG9jYWxlX3QgbG9j YWxlKTsKIAlzaXplX3QJCSgqZG93bmNhc2VfaWRlbnQpIChjaGFyICpkZXN0LCBzaXplX3QgZGVz dHNpemUsCi0JCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCisJCQkJ CQkJCSAgIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJCQkJCQkJICAgcGdfbG9j YWxlX3QgbG9jYWxlKTsKIAogCS8qIHJlcXVpcmVkICovCkBAIC0xNzIsMzIgKzE4MSwzMiBAQCBl eHRlcm4gcGdfbG9jYWxlX3QgcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKE9pZCBjb2xsaWQp OwogZXh0ZXJuIGNoYXIgKmdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oY2hhciBjb2xscHJv dmlkZXIsIGNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlKTsKIAogZXh0ZXJuIHNpemVfdCBwZ19zdHJs b3dlcihjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLAotCQkJCQkJICBjb25zdCBjaGFyICpzcmMs IHNzaXplX3Qgc3JjbGVuLAorCQkJCQkJICBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4s CiAJCQkJCQkgIHBnX2xvY2FsZV90IGxvY2FsZSk7CiBleHRlcm4gc2l6ZV90IHBnX3N0cnRpdGxl KGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsCi0JCQkJCQkgIGNvbnN0IGNoYXIgKnNyYywgc3Np emVfdCBzcmNsZW4sCisJCQkJCQkgIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwKIAkJ CQkJCSAgcGdfbG9jYWxlX3QgbG9jYWxlKTsKIGV4dGVybiBzaXplX3QgcGdfc3RydXBwZXIoY2hh ciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwKLQkJCQkJCSAgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90 IHNyY2xlbiwKKwkJCQkJCSAgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLAogCQkJCQkJ ICBwZ19sb2NhbGVfdCBsb2NhbGUpOwogZXh0ZXJuIHNpemVfdCBwZ19zdHJmb2xkKGNoYXIgKmRz dCwgc2l6ZV90IGRzdHNpemUsCi0JCQkJCQkgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xl biwKKwkJCQkJCSBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQkJCQkgcGdfbG9j YWxlX3QgbG9jYWxlKTsKIGV4dGVybiBzaXplX3QgcGdfZG93bmNhc2VfaWRlbnQoY2hhciAqZHN0 LCBzaXplX3QgZHN0c2l6ZSwKLQkJCQkJCQkJY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xl bik7CisJCQkJCQkJCWNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbik7CiBleHRlcm4gaW50 CXBnX3N0cmNvbGwoY29uc3QgY2hhciAqYXJnMSwgY29uc3QgY2hhciAqYXJnMiwgcGdfbG9jYWxl X3QgbG9jYWxlKTsKLWV4dGVybiBpbnQJcGdfc3RybmNvbGwoY29uc3QgY2hhciAqYXJnMSwgc3Np emVfdCBsZW4xLAotCQkJCQkJY29uc3QgY2hhciAqYXJnMiwgc3NpemVfdCBsZW4yLCBwZ19sb2Nh bGVfdCBsb2NhbGUpOworZXh0ZXJuIGludAlwZ19zdHJuY29sbChjb25zdCBjaGFyICphcmcxLCBz aXplX3QgbGVuMSwKKwkJCQkJCWNvbnN0IGNoYXIgKmFyZzIsIHNpemVfdCBsZW4yLCBwZ19sb2Nh bGVfdCBsb2NhbGUpOwogZXh0ZXJuIGJvb2wgcGdfc3RyeGZybV9lbmFibGVkKHBnX2xvY2FsZV90 IGxvY2FsZSk7CiBleHRlcm4gc2l6ZV90IHBnX3N0cnhmcm0oY2hhciAqZGVzdCwgY29uc3QgY2hh ciAqc3JjLCBzaXplX3QgZGVzdHNpemUsCiAJCQkJCQkgcGdfbG9jYWxlX3QgbG9jYWxlKTsKIGV4 dGVybiBzaXplX3QgcGdfc3Rybnhmcm0oY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25z dCBjaGFyICpzcmMsCi0JCQkJCQkgIHNzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUp OworCQkJCQkJICBzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpOwogZXh0ZXJuIGJv b2wgcGdfc3RyeGZybV9wcmVmaXhfZW5hYmxlZChwZ19sb2NhbGVfdCBsb2NhbGUpOwogZXh0ZXJu IHNpemVfdCBwZ19zdHJ4ZnJtX3ByZWZpeChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNp emVfdCBkZXN0c2l6ZSwKIAkJCQkJCQkJcGdfbG9jYWxlX3QgbG9jYWxlKTsKIGV4dGVybiBzaXpl X3QgcGdfc3Rybnhmcm1fcHJlZml4KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3Qg Y2hhciAqc3JjLAotCQkJCQkJCQkgc3NpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2FsZSk7 CisJCQkJCQkJCSBzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpOwogCiBleHRlcm4g Ym9vbCBwZ19pc3dkaWdpdChwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKTsKIGV4dGVy biBib29sIHBnX2lzd2FscGhhKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpOwotLSAK Mi40My4wCgo= --=-KH5uh44GA+3uIEZS520b--