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.94.2) (envelope-from ) id 1uPQux-007tlt-Bt for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Jun 2025 19:15:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uPQuv-005eI4-GY for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Jun 2025 19:15:22 +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.94.2) (envelope-from ) id 1uPQuu-005eHq-Nj for pgsql-hackers@lists.postgresql.org; Wed, 11 Jun 2025 19:15:21 +0000 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uPQur-001Th0-2k for pgsql-hackers@postgresql.org; Wed, 11 Jun 2025 19:15:20 +0000 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-747fba9f962so187205b3a.0 for ; Wed, 11 Jun 2025 12:15:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1749669317; x=1750274117; 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=u0n7E6oFsi5xy90hvmoGtSu4QXPfsbloG2dkHoUM5IM=; b=0er8vFrPzm33n3P7TIDZdT7uxnufk/gfcd4wE3lp2cdDsBSyzlrCD4bcijXfU0cvfY uyW/2EpxafTD3aN4t6R6UYePzW0Hl7xCTY1SCg7qOl0q11LxQQXnjM7UIov5MAbYuk7T DNPRQ92WYi1AkCxnXLQ3lnwgUF+OaW0/IKD7GZKuMJhiJ46RRLR+OiAOA86srxklrkG/ jOqXmEw7y2m+MyoUrrlm6xy6jDuPbhPmg/5iJA5xsVpyvr/BQEWKY/ahLym45SD4GZHT JXf5V/x1Oos7z1Dq76yGucfMUbZNPyQ4KYWQs5puGieoVkN9rH0ReZoqy9OXFppBA/s4 hHaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749669317; x=1750274117; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=u0n7E6oFsi5xy90hvmoGtSu4QXPfsbloG2dkHoUM5IM=; b=kAJwvRTYEjcP8Ptvp2mut/BItvpeYaQzW3bT03CvETuhzuvGJrUwQYCS7KZZCWWhSY KmHw/ce4fQOSbQJhbryaaPW0tC58Td1UuzlL5oflHwJDOmDz+wXdAG+DiSd1siiJDU5Q on59YegUwIvA8rLIpF8NwFU14FtF9zqMWlaW/t3Cb6q3mTdEIKNPU2rs7jWeYszJq4gX 4f15jHuE0Z/aDMntvCoNq0+G1tqf/sbvrqpIYxaoNHC7yvps4+gtdkmsRTbvUQ/KHx9z Ao2QaOekT/pKD64xdU4nXSFL0vKIWCLbAb4vii8SMSY4o6VxjG3o5JHeSEaDL2ZWFcd3 4O9g== X-Forwarded-Encrypted: i=1; AJvYcCX1+HZzQVLBlHG5SBcjIMvcBIm4xGBmGG7+b0IamNx5rCCPHjUY9v9SXXi8BW0+pFq90fAS07V6ZTZCQnX9@postgresql.org X-Gm-Message-State: AOJu0Ywz11rg070WtMFsNc7A0BX/rKw8CcmVsLJyoxnL/Wi/m8tmswL7 21xeLQO4ML5Ly7fq29l48rrWvwsmcqZnAnfSC+gjDMWrYQS4mwLeKpc4W3kqo3NYQQ== X-Gm-Gg: ASbGncu1PGZWkufwwJDngZlASsrKSfn0npwsAn1b48oRTplxQJdZzbESsve3rtvDOgG KS1tbb4eoZ0WQGG1Msn7dJ10TJTYsdM9PNWgiSZXvTYC4sKZzsbxQIUE+kA0IET5DwH9P8F3Rz+ ZmbfZDF6qq4TbkOUzl2NHBjfPgkmA5R4YnQPE9BVIvuN46xaMdDpjsxcvKAUIOvyOrPOgJc6m2d aoelUWDCA5DynaUQ8Xk0cbnYIXYjKpSqwH0iLTE1uyHKkY+XTVdJnPVvwkUvJp7Pikrdki8c/nd eFdq6/BukFWiEjeVquWhOa9fAnF46zaJqVEwu8MiFuh3o6RjfHJrfF5znXG2h7w5kmSyKIwPuUq KwcYCReZGxrPP1KXYnW6S7qmHaDpVkBKm X-Google-Smtp-Source: AGHT+IFnoC5+HaH/AeYybuAYttSzjmSgZEjOwB3NLAZK+p6cpxbT2ULhMZHPg2lo6ou9dLuJTH/euA== X-Received: by 2002:a05:6a00:8c8b:b0:736:b400:b58f with SMTP id d2e1a72fcca58-7487c7d02f8mr608101b3a.0.1749669316480; Wed, 11 Jun 2025 12:15:16 -0700 (PDT) Received: from jeff-ws-bridge.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7482b0cadcasm9890427b3a.143.2025.06.11.12.15.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Jun 2025 12:15:15 -0700 (PDT) Message-ID: Subject: Re: Remaining dependency on setlocale() From: Jeff Davis To: Peter Eisentraut , Thomas Munro Cc: Tom Lane , pgsql-hackers@postgresql.org Date: Wed, 11 Jun 2025 12:15:14 -0700 In-Reply-To: <9875f7f9-50f1-4b5d-86fc-ee8b03e8c162@eisentraut.org> References: <4c5da86af36a0d5e430eee3f60ce5e06f1b5cd34.camel@j-davis.com> <1841102.1722982989@sss.pgh.pa.us> <9875f7f9-50f1-4b5d-86fc-ee8b03e8c162@eisentraut.org> Content-Type: multipart/mixed; boundary="=-Nua2bFD2H3UIWb6nI5sB" User-Agent: Evolution 3.52.3-0ubuntu1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-Nua2bFD2H3UIWb6nI5sB Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2025-06-10 at 17:32 +0200, Peter Eisentraut wrote: > v1-0001-copyfromparse.c-use-pg_ascii_tolower-rather-than-.patch > v1-0002-contrib-spi-refint.c-use-pg_ascii_tolower-instead.patch > v1-0003-isn.c-use-pg_ascii_toupper-instead-of-toupper.patch > v1-0004-inet_net_pton.c-use-pg_ascii_tolower-rather-than-.patch >=20 > These look good to me. Committed. (That means they're in 18, which was not my intention, but others seemed to think it was harmless enough, so I didn't revert. I will wait for the branch before I commit any more of these.) > v1-0005-Add-global_lc_ctype-to-hold-locale_t-for-datctype.patch >=20 > This looks ok (but might depend on how patch 0006 turns out). I changed this to a global_libc_locale that includes both LC_COLLATE and LC_CTYPE (from datcollate and datctype), in case an extension is relying on strcoll for some reason. > v1-0006-Use-global_lc_ctype-for-callers-of-locale-aware-f.patch >=20 > I think these need further individual analysis and explanation why > these=20 > should use the global lc_ctype setting. This patch series, at least so far, is designed to have zero behavior changes. Anything with a potential for a behavior change should be a separate commit, so that if we need to revert it, we can revert the behavior change without reintroducing a setlocale() dependency. > =C2=A0 For example, you could argue > that the SQL-callable soundex(text) function should use the collation > object of its input value, not the global locale. That would be a behavior change. > =C2=A0 But furthermore,=20 > soundex_code() could actually just use pg_ascii_toupper() instead.=C2=A0= =20 Is that a behavior change? > And=20 > in ts_locale.c, the isalnum_l() call should use mylocale that already > exists in that function.=C2=A0 The problem to solve it getting a good > value=20 > into mylocale.=C2=A0 Using the global setting confuses the issue a bit, I > think. I reworked it to be less confusing by changing wchar2char/char2wchar to take a locale_t instead of pg_locale_t. Hopefully it's an improvement. In get_iso_localename(), there's a comment saying that it doesn't matter which locale is used (because it's ASCII), but to use the "_l" variants, we need to pick some locale. At that point it's not clear to me that global_libc_locale will be set yet, so I used LC_C_LOCALE. I'm not sure whether we can rely on LC_C_LOCALE being available, but it passed in CI, and if it's not available somewhere it might be a good idea to create it on those platforms anyway. > v1-0007-Fix-the-last-remaining-callers-relying-on-setloca.patch >=20 > Do we have any data what platforms we'd need these checks for? https://cirrus-ci.com/build/5167600088383488 Looks like windows doesn't have iswxdigit_l or isxdigit_l. > Also, if you look into wparser_def.c what p_isxdigit is used for, > it's=20 > used for parsing XML (presumably HTML) files, so we just need ASCII- > only=20 > behavior and no locale dependency. iswxdigit() does seem to be dependent on locale, so this could be a subtle behavior change. > v1-0008-Set-process-LC_COLLATE-C-and-LC_CTYPE-C.patch >=20 > As I mentioned earlier in the thread, I don't think we can do this > for=20 > LC_CTYPE, because otherwise system error messages would not come out > in=20 > the right encoding. Changed it so that it only sets LC_COLLATE to C, and leaves LC_CTYPE set to datctype. Unfortunately, as long as LC_CTYPE is set to a real locale, there's a danger of accidentally depending on that setting. Can the encoding be controlled with LC_MESSAGES instead of LC_CTYPE? Do you have an example of how things can go wrong? > =C2=A0 For the LC_COLLATE settings, I think we could just=20 > do the setting in main(), where the other non-database-specific > locale=20 > categories are set. Done. Regards, Jeff Davis --=-Nua2bFD2H3UIWb6nI5sB Content-Disposition: attachment; filename="v2-0001-Hold-datcollate-datctype-in-global_libc_locale.patch" Content-Type: text/x-patch; name="v2-0001-Hold-datcollate-datctype-in-global_libc_locale.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA1MmEyYmUzYWM4NTMxNDIxMmUwY2U3OTQ5ZTEzNDFlNmE4NTYwZjdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDYgSnVuIDIwMjUgMTQ6MTM6MTYgLTA3MDAKU3ViamVjdDogW1BBVENIIHYyIDEvN10gSG9s ZCBkYXRjb2xsYXRlL2RhdGN0eXBlIGluIGdsb2JhbF9saWJjX2xvY2FsZS4KCkNhbGxlcnMgb2Yg bG9jYWxlLWF3YXJlIGN0eXBlIG9wZXJhdGlvbnMgc2hvdWxkIHVzZSB0aGUgIl9sIiB2YXJpYW50 cwpvZiB0aGUgZnVuY3Rpb25zIGFuZCBwYXNzIGdsb2JhbF9saWJjX2xvY2FsZSBmb3IgdGhlIGxv Y2FsZS4gRG9pbmcgc28KYXZvaWRzIGRlcGVuZGluZyBvbiBzZXRsb2NhbGUoKS4KCkRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vOTg3NWY3ZjktNTBmMS00YjVkLTg2ZmMtZWU4YjAzZThj MTYyQGVpc2VudHJhdXQub3JnCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9s aWJjLmMgfCA3NyArKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9wb3N0aW5pdC5jICAgICAgfCAgMiArCiBzcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUu aCAgICAgICAgICB8ICA3ICsrKwogMyBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYwppbmRleCAxOTk4NTdlMjJkYi4uZDZl ZWY4ODVjZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGli Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jCkBAIC04NSw2 ICs4NSwxMiBAQCBzdGF0aWMgc2l6ZV90IHN0cnVwcGVyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6 ZV90IGRlc3RzaXplLAogCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4s CiAJCQkJCQkJICAgcGdfbG9jYWxlX3QgbG9jYWxlKTsKIAorLyoKKyAqIFJlcHJlc2VudHMgZGF0 Y29sbGF0ZSBhbmQgZGF0Y3R5cGUgbG9jYWxlcyBpbiBhIGdsb2JhbCB2YXJpYWJsZSwgc28gdGhh dCB3ZQorICogZG9uJ3QgbmVlZCB0byByZWx5IG9uIHNldGxvY2FsZSgpIGFueXdoZXJlLgorICov Citsb2NhbGVfdAlnbG9iYWxfbGliY19sb2NhbGUgPSBOVUxMOworCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IGNvbGxhdGVfbWV0aG9kcyBjb2xsYXRlX21ldGhvZHNfbGliYyA9IHsKIAkuc3RybmNvbGwg PSBzdHJuY29sbF9saWJjLAogCS5zdHJueGZybSA9IHN0cm54ZnJtX2xpYmMsCkBAIC00MTcsNiAr NDIzLDc3IEBAIHN0cnVwcGVyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBj b25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCXJldHVybiByZXN1bHRfc2l6ZTsKIH0K IAorLyoKKyAqIEluaXRpYWxpemUgZ2xvYmFsIGxvY2FsZSBmb3IgTENfQ09MTEFURSBhbmQgTENf Q1RZUEUgZnJvbSBkYXRjb2xsYXRlIGFuZAorICogZGF0Y3R5cGUsIHJlc3BlY3RpdmVseS4KKyAq CisgKiBOQjogc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBtYWtlX2xpYmNfY29sbGF0b3IoKSwg ZXhjZXB0IHRoYXQgaXQgbXVzdAorICogY3JlYXRlIHRoZSBsb2NhbGUgZXZlbiBmb3IgIkMiIGFu ZCAiUE9TSVgiLgorICovCit2b2lkCitpbml0X2dsb2JhbF9saWJjX2xvY2FsZShjb25zdCBjaGFy ICpjb2xsYXRlLCBjb25zdCBjaGFyICpjdHlwZSkKK3sKKwlsb2NhbGVfdAlsb2MgPSAwOworCisJ aWYgKHN0cmNtcChjb2xsYXRlLCBjdHlwZSkgPT0gMCkKKwl7CisJCS8qIE5vcm1hbCBjYXNlIHdo ZXJlIHRoZXkncmUgdGhlIHNhbWUgKi8KKwkJZXJybm8gPSAwOworI2lmbmRlZiBXSU4zMgorCQls b2MgPSBuZXdsb2NhbGUoTENfQ09MTEFURV9NQVNLIHwgTENfQ1RZUEVfTUFTSywgY29sbGF0ZSwg TlVMTCk7CisjZWxzZQorCQlsb2MgPSBfY3JlYXRlX2xvY2FsZShMQ19BTEwsIGNvbGxhdGUpOwor I2VuZGlmCisJCWlmICghbG9jKQorCQkJZXJlcG9ydChGQVRBTCwKKwkJCQkJKGVycm1zZygiZGF0 YWJhc2UgbG9jYWxlIGlzIGluY29tcGF0aWJsZSB3aXRoIG9wZXJhdGluZyBzeXN0ZW0iKSwKKwkJ CQkJIGVycmRldGFpbCgiVGhlIGRhdGFiYXNlIHdhcyBpbml0aWFsaXplZCB3aXRoIExDX0NPTExB VEUgXCIlc1wiLCAiCisJCQkJCQkJICAgIiB3aGljaCBpcyBub3QgcmVjb2duaXplZCBieSBzZXRs b2NhbGUoKS4iLCBjb2xsYXRlKSwKKwkJCQkJIGVycmhpbnQoIlJlY3JlYXRlIHRoZSBkYXRhYmFz ZSB3aXRoIGFub3RoZXIgbG9jYWxlIG9yIGluc3RhbGwgdGhlIG1pc3NpbmcgbG9jYWxlLiIpKSk7 CisJfQorCWVsc2UKKwl7CisjaWZuZGVmIFdJTjMyCisJCS8qIFdlIG5lZWQgdHdvIG5ld2xvY2Fs ZSgpIHN0ZXBzICovCisJCWxvY2FsZV90CWxvYzEgPSAwOworCisJCWVycm5vID0gMDsKKwkJbG9j MSA9IG5ld2xvY2FsZShMQ19DT0xMQVRFX01BU0ssIGNvbGxhdGUsIE5VTEwpOworCQlpZiAoIWxv YzEpCisJCQllcmVwb3J0KEZBVEFMLAorCQkJCQkoZXJybXNnKCJkYXRhYmFzZSBsb2NhbGUgaXMg aW5jb21wYXRpYmxlIHdpdGggb3BlcmF0aW5nIHN5c3RlbSIpLAorCQkJCQkgZXJyZGV0YWlsKCJU aGUgZGF0YWJhc2Ugd2FzIGluaXRpYWxpemVkIHdpdGggTENfQ09MTEFURSBcIiVzXCIsICIKKwkJ CQkJCQkgICAiIHdoaWNoIGlzIG5vdCByZWNvZ25pemVkIGJ5IHNldGxvY2FsZSgpLiIsIGNvbGxh dGUpLAorCQkJCQkgZXJyaGludCgiUmVjcmVhdGUgdGhlIGRhdGFiYXNlIHdpdGggYW5vdGhlciBs b2NhbGUgb3IgaW5zdGFsbCB0aGUgbWlzc2luZyBsb2NhbGUuIikpKTsKKworCQllcnJubyA9IDA7 CisJCWxvYyA9IG5ld2xvY2FsZShMQ19DVFlQRV9NQVNLLCBjdHlwZSwgbG9jMSk7CisJCWlmICgh bG9jKQorCQl7CisJCQlpZiAobG9jMSkKKwkJCQlmcmVlbG9jYWxlKGxvYzEpOworCQkJZXJlcG9y dChGQVRBTCwKKwkJCQkJKGVycm1zZygiZGF0YWJhc2UgbG9jYWxlIGlzIGluY29tcGF0aWJsZSB3 aXRoIG9wZXJhdGluZyBzeXN0ZW0iKSwKKwkJCQkJIGVycmRldGFpbCgiVGhlIGRhdGFiYXNlIHdh cyBpbml0aWFsaXplZCB3aXRoIExDX0NUWVBFIFwiJXNcIiwgIgorCQkJCQkJCSAgICIgd2hpY2gg aXMgbm90IHJlY29nbml6ZWQgYnkgc2V0bG9jYWxlKCkuIiwgY3R5cGUpLAorCQkJCQkgZXJyaGlu dCgiUmVjcmVhdGUgdGhlIGRhdGFiYXNlIHdpdGggYW5vdGhlciBsb2NhbGUgb3IgaW5zdGFsbCB0 aGUgbWlzc2luZyBsb2NhbGUuIikpKTsKKwkJfQorI2Vsc2UKKworCQkvKgorCQkgKiBYWFggVGhl IF9jcmVhdGVfbG9jYWxlKCkgQVBJIGRvZXNuJ3QgYXBwZWFyIHRvIHN1cHBvcnQgdGhpcy4gQ291 bGQKKwkJICogcGVyaGFwcyBiZSB3b3JrZWQgYXJvdW5kIGJ5IGNoYW5naW5nIHBnX2xvY2FsZV90 IHRvIGNvbnRhaW4gdHdvCisJCSAqIHNlcGFyYXRlIGZpZWxkcy4KKwkJICovCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJ CSBlcnJtc2coImNvbGxhdGlvbnMgd2l0aCBkaWZmZXJlbnQgY29sbGF0ZSBhbmQgY3R5cGUgdmFs dWVzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkpOworI2VuZGlmCisJfQor CisJZ2xvYmFsX2xpYmNfbG9jYWxlID0gbG9jOworfQorCiBwZ19sb2NhbGVfdAogY3JlYXRlX3Bn X2xvY2FsZV9saWJjKE9pZCBjb2xsaWQsIE1lbW9yeUNvbnRleHQgY29udGV4dCkKIHsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvcG9zdGluaXQuYwppbmRleCBjODZjZWVmZGE5NC4uNzRmOWRmODRmZGUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTQzMSw2ICs0MzEsOCBAQCBDaGVja015RGF0YWJh c2UoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbV9zdXBlcnVzZXIsIGJvb2wgb3ZlcnJpZGVfYWxs b3dfY29ubmVjdAogCQkJCQkJICAgIiB3aGljaCBpcyBub3QgcmVjb2duaXplZCBieSBzZXRsb2Nh bGUoKS4iLCBjdHlwZSksCiAJCQkJIGVycmhpbnQoIlJlY3JlYXRlIHRoZSBkYXRhYmFzZSB3aXRo IGFub3RoZXIgbG9jYWxlIG9yIGluc3RhbGwgdGhlIG1pc3NpbmcgbG9jYWxlLiIpKSk7CiAKKwlp bml0X2dsb2JhbF9saWJjX2xvY2FsZShjb2xsYXRlLCBjdHlwZSk7CisKIAlpZiAoc3RyY21wKGN0 eXBlLCAiQyIpID09IDAgfHwKIAkJc3RyY21wKGN0eXBlLCAiUE9TSVgiKSA9PSAwKQogCQlkYXRh YmFzZV9jdHlwZV9pc19jID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3Bn X2xvY2FsZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKaW5kZXggN2I4Y2JmNThk MmMuLjNlYTE2ZTgzZWUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaApAQCAtMzIsNiArMzIsMTIgQEAg ZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKmxvY2FsaXplZF9mdWxsX2RheXNbXTsKIGV4dGVybiBQ R0RMTElNUE9SVCBjaGFyICpsb2NhbGl6ZWRfYWJicmV2X21vbnRoc1tdOwogZXh0ZXJuIFBHRExM SU1QT1JUIGNoYXIgKmxvY2FsaXplZF9mdWxsX21vbnRoc1tdOwogCisvKgorICogUmVwcmVzZW50 cyBkYXRjb2xsYXRlIGFuZCBkYXRjdHlwZSBsb2NhbGVzIGluIGEgZ2xvYmFsIHZhcmlhYmxlLCBz byB0aGF0IHdlCisgKiBkb24ndCBuZWVkIHRvIHJlbHkgb24gc2V0bG9jYWxlKCkgYW55d2hlcmUu CisgKi8KK2V4dGVybiBQR0RMTElNUE9SVCBsb2NhbGVfdCBnbG9iYWxfbGliY19sb2NhbGU7CisK IC8qIGlzIHRoZSBkYXRhYmFzZXMncyBMQ19DVFlQRSB0aGUgQyBsb2NhbGU/ICovCiBleHRlcm4g UEdETExJTVBPUlQgYm9vbCBkYXRhYmFzZV9jdHlwZV9pc19jOwogCkBAIC0xMjEsNiArMTI3LDcg QEAgc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3QKIAl9CQkJaW5mbzsKIH07CiAKK2V4dGVybiB2b2lk IGluaXRfZ2xvYmFsX2xpYmNfbG9jYWxlKGNvbnN0IGNoYXIgKmNvbGxhdGUsIGNvbnN0IGNoYXIg KmN0eXBlKTsKIGV4dGVybiB2b2lkIGluaXRfZGF0YWJhc2VfY29sbGF0aW9uKHZvaWQpOwogZXh0 ZXJuIHBnX2xvY2FsZV90IHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihPaWQgY29sbGlkKTsK IAotLSAKMi40My4wCgo= --=-Nua2bFD2H3UIWb6nI5sB Content-Disposition: attachment; filename="v2-0002-fuzzystrmatch-use-global_libc_locale.patch" Content-Type: text/x-patch; name="v2-0002-fuzzystrmatch-use-global_libc_locale.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA1NjEyOTY5NzI3ZWFhYjk1M2MyOWMxZTk0MzI0YjlhZmMyYmNjYTE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDEwIEp1biAyMDI1IDIwOjA2OjM0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MiAyLzddIGZ1 enp5c3RybWF0Y2g6IHVzZSBnbG9iYWxfbGliY19sb2NhbGUuCgotLS0KIGNvbnRyaWIvZnV6enlz dHJtYXRjaC9kbWV0YXBob25lLmMgICAgfCAgMyArKy0KIGNvbnRyaWIvZnV6enlzdHJtYXRjaC9m dXp6eXN0cm1hdGNoLmMgfCAxOSArKysrKysrKysrKy0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9m dXp6eXN0cm1hdGNoL2RtZXRhcGhvbmUuYyBiL2NvbnRyaWIvZnV6enlzdHJtYXRjaC9kbWV0YXBo b25lLmMKaW5kZXggNjYyN2IyYjg5NDMuLjg3NzdjMWY1YzA0IDEwMDY0NAotLS0gYS9jb250cmli L2Z1enp5c3RybWF0Y2gvZG1ldGFwaG9uZS5jCisrKyBiL2NvbnRyaWIvZnV6enlzdHJtYXRjaC9k bWV0YXBob25lLmMKQEAgLTk5LDYgKzk5LDcgQEAgVGhlIHJlbWFpbmluZyBjb2RlIGlzIGF1dGhv cmVkIGJ5IEFuZHJldyBEdW5zdGFuIDxhbWR1bnN0YW5AbmNzaHAub3JnPiBhbmQKICNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1 dGlscy9wZ19sb2NhbGUuaCIKIAogLyogdHVybiBvZmYgYXNzZXJ0aW9ucyBmb3IgZW1iZWRkZWQg ZnVuY3Rpb24gKi8KICNkZWZpbmUgTkRFQlVHCkBAIC0yODQsNyArMjg1LDcgQEAgTWFrZVVwcGVy KG1ldGFzdHJpbmcgKnMpCiAJY2hhcgkgICAqaTsKIAogCWZvciAoaSA9IHMtPnN0cjsgKmk7IGkr KykKLQkJKmkgPSB0b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSAqaSk7CisJCSppID0gdG91cHBlcl9s KCh1bnNpZ25lZCBjaGFyKSAqaSwgZ2xvYmFsX2xpYmNfbG9jYWxlKTsKIH0KIAogCmRpZmYgLS1n aXQgYS9jb250cmliL2Z1enp5c3RybWF0Y2gvZnV6enlzdHJtYXRjaC5jIGIvY29udHJpYi9mdXp6 eXN0cm1hdGNoL2Z1enp5c3RybWF0Y2guYwppbmRleCBlN2NjMzE0Yjc2My4uMTAzZGQwNzIyMGMg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZnV6enlzdHJtYXRjaC9mdXp6eXN0cm1hdGNoLmMKKysrIGIv Y29udHJpYi9mdXp6eXN0cm1hdGNoL2Z1enp5c3RybWF0Y2guYwpAQCAtNDEsNiArNDEsNyBAQAog I2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1 ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgogI2luY2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIKICNpbmNs dWRlICJ2YXJhdHQuaCIKIApAQCAtNTYsMTMgKzU3LDE1IEBAIHN0YXRpYyB2b2lkIF9zb3VuZGV4 KGNvbnN0IGNoYXIgKmluc3RyLCBjaGFyICpvdXRzdHIpOwogCiAjZGVmaW5lIFNPVU5ERVhfTEVO IDQKIAorI2RlZmluZSBUT1VQUEVSKHgpIHRvdXBwZXJfbCgodW5zaWduZWQgY2hhcikgKHgpLCBn bG9iYWxfbGliY19sb2NhbGUpCisKIC8qCQkJCQkJCQkJQUJDREVGR0hJSktMTU5PUFFSU1RVVldY WVogKi8KIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzb3VuZGV4X3RhYmxlID0gIjAxMjMwMTIw MDIyNDU1MDEyNjIzMDEwMjAyIjsKIAogc3RhdGljIGNoYXIKIHNvdW5kZXhfY29kZShjaGFyIGxl dHRlcikKIHsKLQlsZXR0ZXIgPSB0b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSBsZXR0ZXIpOworCWxl dHRlciA9IFRPVVBQRVIoKHVuc2lnbmVkIGNoYXIpIGxldHRlcik7CiAJLyogRGVmZW5kIGFnYWlu c3Qgbm9uLUFTQ0lJIGxldHRlcnMgKi8KIAlpZiAobGV0dGVyID49ICdBJyAmJiBsZXR0ZXIgPD0g J1onKQogCQlyZXR1cm4gc291bmRleF90YWJsZVtsZXR0ZXIgLSAnQSddOwpAQCAtMTI0LDcgKzEy Nyw3IEBAIGdldGNvZGUoY2hhciBjKQogewogCWlmIChpc2FscGhhKCh1bnNpZ25lZCBjaGFyKSBj KSkKIAl7Ci0JCWMgPSB0b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSBjKTsKKwkJYyA9IFRPVVBQRVIo KHVuc2lnbmVkIGNoYXIpIGMpOwogCQkvKiBEZWZlbmQgYWdhaW5zdCBub24tQVNDSUkgbGV0dGVy cyAqLwogCQlpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpCiAJCQlyZXR1cm4gX2NvZGVzW2MgLSAn QSddOwpAQCAtMzAxLDE4ICszMDQsMTggQEAgbWV0YXBob25lKFBHX0ZVTkNUSU9OX0FSR1MpCiAg KiBhY2Nlc3NpbmcgdGhlIGFycmF5IGRpcmVjdGx5Li4uICovCiAKIC8qIExvb2sgYXQgdGhlIG5l eHQgbGV0dGVyIGluIHRoZSB3b3JkICovCi0jZGVmaW5lIE5leHRfTGV0dGVyICh0b3VwcGVyKCh1 bnNpZ25lZCBjaGFyKSB3b3JkW3dfaWR4KzFdKSkKKyNkZWZpbmUgTmV4dF9MZXR0ZXIgKFRPVVBQ RVIoKHVuc2lnbmVkIGNoYXIpIHdvcmRbd19pZHgrMV0pKQogLyogTG9vayBhdCB0aGUgY3VycmVu dCBsZXR0ZXIgaW4gdGhlIHdvcmQgKi8KLSNkZWZpbmUgQ3Vycl9MZXR0ZXIgKHRvdXBwZXIoKHVu c2lnbmVkIGNoYXIpIHdvcmRbd19pZHhdKSkKKyNkZWZpbmUgQ3Vycl9MZXR0ZXIgKFRPVVBQRVIo KHVuc2lnbmVkIGNoYXIpIHdvcmRbd19pZHhdKSkKIC8qIEdvIE4gbGV0dGVycyBiYWNrLiAqLwog I2RlZmluZSBMb29rX0JhY2tfTGV0dGVyKG4pIFwKLQkod19pZHggPj0gKG4pID8gdG91cHBlcigo dW5zaWduZWQgY2hhcikgd29yZFt3X2lkeC0obildKSA6ICdcMCcpCisJKHdfaWR4ID49IChuKSA/ IFRPVVBQRVIoKHVuc2lnbmVkIGNoYXIpIHdvcmRbd19pZHgtKG4pXSkgOiAnXDAnKQogLyogUHJl dmlvdXMgbGV0dGVyLiAgSSBkdW5ubywgc2hvdWxkIHRoaXMgcmV0dXJuIG51bGwgb24gZmFpbHVy ZT8gKi8KICNkZWZpbmUgUHJldl9MZXR0ZXIgKExvb2tfQmFja19MZXR0ZXIoMSkpCiAvKiBMb29r IHR3byBsZXR0ZXJzIGRvd24uICBJdCBtYWtlcyBzdXJlIHlvdSBkb24ndCB3YWxrIG9mZiB0aGUg c3RyaW5nLiAqLwogI2RlZmluZSBBZnRlcl9OZXh0X0xldHRlciBcCi0JKE5leHRfTGV0dGVyICE9 ICdcMCcgPyB0b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSB3b3JkW3dfaWR4KzJdKSA6ICdcMCcpCi0j ZGVmaW5lIExvb2tfQWhlYWRfTGV0dGVyKG4pIHRvdXBwZXIoKHVuc2lnbmVkIGNoYXIpIExvb2th aGVhZCh3b3JkK3dfaWR4LCBuKSkKKwkoTmV4dF9MZXR0ZXIgIT0gJ1wwJyA/IFRPVVBQRVIoKHVu c2lnbmVkIGNoYXIpIHdvcmRbd19pZHgrMl0pIDogJ1wwJykKKyNkZWZpbmUgTG9va19BaGVhZF9M ZXR0ZXIobikgVE9VUFBFUigodW5zaWduZWQgY2hhcikgTG9va2FoZWFkKHdvcmQrd19pZHgsIG4p KQogCiAKIC8qIEFsbG93cyB1cyB0byBzYWZlbHkgbG9vayBhaGVhZCBhbiBhcmJpdHJhcnkgIyBv ZiBsZXR0ZXJzICovCkBAIC03NDIsNyArNzQ1LDcgQEAgX3NvdW5kZXgoY29uc3QgY2hhciAqaW5z dHIsIGNoYXIgKm91dHN0cikKIAl9CiAKIAkvKiBUYWtlIHRoZSBmaXJzdCBsZXR0ZXIgYXMgaXMg Ki8KLQkqb3V0c3RyKysgPSAoY2hhcikgdG91cHBlcigodW5zaWduZWQgY2hhcikgKmluc3RyKysp OworCSpvdXRzdHIrKyA9IChjaGFyKSBUT1VQUEVSKCh1bnNpZ25lZCBjaGFyKSAqaW5zdHIrKyk7 CiAKIAljb3VudCA9IDE7CiAJd2hpbGUgKCppbnN0ciAmJiBjb3VudCA8IFNPVU5ERVhfTEVOKQot LSAKMi40My4wCgo= --=-Nua2bFD2H3UIWb6nI5sB Content-Disposition: attachment; filename="v2-0003-ltree-use-global_libc_locale.patch" Content-Type: text/x-patch; name="v2-0003-ltree-use-global_libc_locale.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA1YjI1ZGNmMmU3NWEwNWU0ZWRmZjcyYTgzNzgxODNmMzkwOTcwMzI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDEwIEp1biAyMDI1IDIwOjA2OjUwIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MiAzLzddIGx0 cmVlOiB1c2UgZ2xvYmFsX2xpYmNfbG9jYWxlLgoKLS0tCiBjb250cmliL2x0cmVlL2NyYzMyLmMg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9jb250cmliL2x0cmVlL2NyYzMyLmMgYi9jb250cmliL2x0cmVlL2NyYzMyLmMK aW5kZXggMTM0ZjQ2YTgwNWUuLjVmNWM1NjM0NzFlIDEwMDY0NAotLS0gYS9jb250cmliL2x0cmVl L2NyYzMyLmMKKysrIGIvY29udHJpYi9sdHJlZS9jcmMzMi5jCkBAIC0xMiw3ICsxMiw3IEBACiAK ICNpZmRlZiBMT1dFUl9OT0RFCiAjaW5jbHVkZSA8Y3R5cGUuaD4KLSNkZWZpbmUgVE9MT1dFUih4 KQl0b2xvd2VyKCh1bnNpZ25lZCBjaGFyKSAoeCkpCisjZGVmaW5lIFRPTE9XRVIoeCkJdG9sb3dl cl9sKCh1bnNpZ25lZCBjaGFyKSAoeCksIGdsb2JhbF9saWJjX2xvY2FsZSkKICNlbHNlCiAjZGVm aW5lIFRPTE9XRVIoeCkJKHgpCiAjZW5kaWYKLS0gCjIuNDMuMAoK --=-Nua2bFD2H3UIWb6nI5sB Content-Disposition: attachment; filename*0=v2-0004-Use-global_libc_locale-for-downcase_identifier-an.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0004-Use-global_libc_locale-for-downcase_identifier-an.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBiY2IzMzkyMzgzYzMyZDU3Yzc0ZjFmYjMzNGU2YzM1MTU1OThiNmQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDEwIEp1biAyMDI1IDIwOjA3OjAxIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MiA0LzddIFVz ZSBnbG9iYWxfbGliY19sb2NhbGUgZm9yIGRvd25jYXNlX2lkZW50aWZpZXIoKSBhbmQKIHBnX3N0 cmNhc2VjbXAoKS4KCi0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3NjYW5zdXAuYyB8ICAzICsrLQog c3JjL3BvcnQvcGdzdHJjYXNlY21wLmMgICAgICB8IDIwICsrKysrKysrKysrKysrLS0tLS0tCiAy IGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3NjYW5zdXAuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9z Y2Fuc3VwLmMKaW5kZXggMmZlYjJiNmNmNWEuLmQ0NWJmMjc1ZTQyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvc2NhbnN1cC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9zY2Fuc3Vw LmMKQEAgLTE4LDYgKzE4LDcgQEAKIAogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVk ZSAicGFyc2VyL3NjYW5zdXAuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sb2NhbGUuaCIKIAogCiAv KgpAQCAtNjgsNyArNjksNyBAQCBkb3duY2FzZV9pZGVudGlmaWVyKGNvbnN0IGNoYXIgKmlkZW50 LCBpbnQgbGVuLCBib29sIHdhcm4sIGJvb2wgdHJ1bmNhdGUpCiAJCWlmIChjaCA+PSAnQScgJiYg Y2ggPD0gJ1onKQogCQkJY2ggKz0gJ2EnIC0gJ0EnOwogCQllbHNlIGlmIChlbmNfaXNfc2luZ2xl X2J5dGUgJiYgSVNfSElHSEJJVF9TRVQoY2gpICYmIGlzdXBwZXIoY2gpKQotCQkJY2ggPSB0b2xv d2VyKGNoKTsKKwkJCWNoID0gdG9sb3dlcl9sKGNoLCBnbG9iYWxfbGliY19sb2NhbGUpOwogCQly ZXN1bHRbaV0gPSAoY2hhcikgY2g7CiAJfQogCXJlc3VsdFtpXSA9ICdcMCc7CmRpZmYgLS1naXQg YS9zcmMvcG9ydC9wZ3N0cmNhc2VjbXAuYyBiL3NyYy9wb3J0L3Bnc3RyY2FzZWNtcC5jCmluZGV4 IGVjMmIzYTc1YzNkLi44MTIwNTA1OThlNyAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvcGdzdHJjYXNl Y21wLmMKKysrIGIvc3JjL3BvcnQvcGdzdHJjYXNlY21wLmMKQEAgLTI4LDYgKzI4LDE0IEBACiAK ICNpbmNsdWRlIDxjdHlwZS5oPgogCisjaWZuZGVmIEZST05URU5ECitleHRlcm4gUEdETExJTVBP UlQgbG9jYWxlX3QgZ2xvYmFsX2xpYmNfbG9jYWxlOworI2RlZmluZSBUT1VQUEVSKHgpIHRvdXBw ZXJfbCgodW5zaWduZWQgY2hhcikgKHgpLCBnbG9iYWxfbGliY19sb2NhbGUpCisjZGVmaW5lIFRP TE9XRVIoeCkgdG9sb3dlcl9sKCh1bnNpZ25lZCBjaGFyKSAoeCksIGdsb2JhbF9saWJjX2xvY2Fs ZSkKKyNlbHNlCisjZGVmaW5lIFRPVVBQRVIoeCkgdG91cHBlcih4KQorI2RlZmluZSBUT0xPV0VS KHgpIHRvbG93ZXIoeCkKKyNlbmRpZgogCiAvKgogICogQ2FzZS1pbmRlcGVuZGVudCBjb21wYXJp c29uIG9mIHR3byBudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncy4KQEAgLTQ1LDEyICs1MywxMiBAQCBw Z19zdHJjYXNlY21wKGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMikKIAkJCWlmIChjaDEg Pj0gJ0EnICYmIGNoMSA8PSAnWicpCiAJCQkJY2gxICs9ICdhJyAtICdBJzsKIAkJCWVsc2UgaWYg KElTX0hJR0hCSVRfU0VUKGNoMSkgJiYgaXN1cHBlcihjaDEpKQotCQkJCWNoMSA9IHRvbG93ZXIo Y2gxKTsKKwkJCQljaDEgPSBUT0xPV0VSKGNoMSk7CiAKIAkJCWlmIChjaDIgPj0gJ0EnICYmIGNo MiA8PSAnWicpCiAJCQkJY2gyICs9ICdhJyAtICdBJzsKIAkJCWVsc2UgaWYgKElTX0hJR0hCSVRf U0VUKGNoMikgJiYgaXN1cHBlcihjaDIpKQotCQkJCWNoMiA9IHRvbG93ZXIoY2gyKTsKKwkJCQlj aDIgPSBUT0xPV0VSKGNoMik7CiAKIAkJCWlmIChjaDEgIT0gY2gyKQogCQkJCXJldHVybiAoaW50 KSBjaDEgLSAoaW50KSBjaDI7CkBAIC03OCwxMiArODYsMTIgQEAgcGdfc3RybmNhc2VjbXAoY29u c3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBzaXplX3QgbikKIAkJCWlmIChjaDEgPj0gJ0En ICYmIGNoMSA8PSAnWicpCiAJCQkJY2gxICs9ICdhJyAtICdBJzsKIAkJCWVsc2UgaWYgKElTX0hJ R0hCSVRfU0VUKGNoMSkgJiYgaXN1cHBlcihjaDEpKQotCQkJCWNoMSA9IHRvbG93ZXIoY2gxKTsK KwkJCQljaDEgPSBUT0xPV0VSKGNoMSk7CiAKIAkJCWlmIChjaDIgPj0gJ0EnICYmIGNoMiA8PSAn WicpCiAJCQkJY2gyICs9ICdhJyAtICdBJzsKIAkJCWVsc2UgaWYgKElTX0hJR0hCSVRfU0VUKGNo MikgJiYgaXN1cHBlcihjaDIpKQotCQkJCWNoMiA9IHRvbG93ZXIoY2gyKTsKKwkJCQljaDIgPSBU T0xPV0VSKGNoMik7CiAKIAkJCWlmIChjaDEgIT0gY2gyKQogCQkJCXJldHVybiAoaW50KSBjaDEg LSAoaW50KSBjaDI7CkBAIC0xMDcsNyArMTE1LDcgQEAgcGdfdG91cHBlcih1bnNpZ25lZCBjaGFy IGNoKQogCWlmIChjaCA+PSAnYScgJiYgY2ggPD0gJ3onKQogCQljaCArPSAnQScgLSAnYSc7CiAJ ZWxzZSBpZiAoSVNfSElHSEJJVF9TRVQoY2gpICYmIGlzbG93ZXIoY2gpKQotCQljaCA9IHRvdXBw ZXIoY2gpOworCQljaCA9IFRPVVBQRVIoY2gpOwogCXJldHVybiBjaDsKIH0KIApAQCAtMTI0LDcg KzEzMiw3IEBAIHBnX3RvbG93ZXIodW5zaWduZWQgY2hhciBjaCkKIAlpZiAoY2ggPj0gJ0EnICYm IGNoIDw9ICdaJykKIAkJY2ggKz0gJ2EnIC0gJ0EnOwogCWVsc2UgaWYgKElTX0hJR0hCSVRfU0VU KGNoKSAmJiBpc3VwcGVyKGNoKSkKLQkJY2ggPSB0b2xvd2VyKGNoKTsKKwkJY2ggPSBUT0xPV0VS KGNoKTsKIAlyZXR1cm4gY2g7CiB9CiAKLS0gCjIuNDMuMAoK --=-Nua2bFD2H3UIWb6nI5sB Content-Disposition: attachment; filename*0=v2-0005-Change-wchar2char-and-char2wchar-to-accept-a-loca.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0005-Change-wchar2char-and-char2wchar-to-accept-a-loca.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA3OTczZWFhMWJkYjQ4M2IwYzU3ZTgyYjZiZTkwYTRlNzhjNDdlM2FmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDExIEp1biAyMDI1IDEwOjExOjE2IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MiA1LzddIENo YW5nZSB3Y2hhcjJjaGFyKCkgYW5kIGNoYXIyd2NoYXIoKSB0byBhY2NlcHQgYQogbG9jYWxlX3Qu CgpUaGVzZSBhcmUgbGliYy1zcGVjaWZpYyBmdW5jdGlvbnMsIHNvIGFjY2VwdGluZyBhIGxvY2Fs ZV90IG1ha2VzIG1vcmUKc2Vuc2UgdGhhbiBhY2NlcHRpbmcgYSBwZ19sb2NhbGVfdCAod2hpY2gg Y291bGQgdXNlIGFub3RoZXIgcHJvdmlkZXIpLgoKQWxzbywgbm8gbG9uZ2VyIGFjY2VwdCBOVUxM LgotLS0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvdHNfbG9jYWxlLmMgICAgICAgIHwgIDQgKy0tCiBz cmMvYmFja2VuZC90c2VhcmNoL3dwYXJzZXJfZGVmLmMgICAgICB8ICAyICstCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvcGdfbG9jYWxlX2xpYmMuYyB8IDQyICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBzcmMv aW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaCAgICAgICAgICB8ICA0ICstLQogNSBmaWxlcyBjaGFu Z2VkLCAyMCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90c2VhcmNoL3RzX2xvY2FsZS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c19sb2Nh bGUuYwppbmRleCBiNzdkOGMyM2QzNi4uNDgwMWZlOTAwODkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3RzZWFyY2gvdHNfbG9jYWxlLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c19sb2Nh bGUuYwpAQCAtMzYsNyArMzYsNyBAQCB0X2lzYWxwaGEoY29uc3QgY2hhciAqcHRyKQogewogCWlu dAkJCWNsZW4gPSBwZ19tYmxlbihwdHIpOwogCXdjaGFyX3QJCWNoYXJhY3RlcltXQ19CVUZfTEVO XTsKLQlwZ19sb2NhbGVfdCBteWxvY2FsZSA9IDA7CS8qIFRPRE8gKi8KKwlsb2NhbGVfdAlteWxv Y2FsZSA9IDA7CS8qIFRPRE8gKi8KIAogCWlmIChjbGVuID09IDEgfHwgZGF0YWJhc2VfY3R5cGVf aXNfYykKIAkJcmV0dXJuIGlzYWxwaGEoVE9VQ0hBUihwdHIpKTsKQEAgLTUxLDcgKzUxLDcgQEAg dF9pc2FsbnVtKGNvbnN0IGNoYXIgKnB0cikKIHsKIAlpbnQJCQljbGVuID0gcGdfbWJsZW4ocHRy KTsKIAl3Y2hhcl90CQljaGFyYWN0ZXJbV0NfQlVGX0xFTl07Ci0JcGdfbG9jYWxlX3QgbXlsb2Nh bGUgPSAwOwkvKiBUT0RPICovCisJbG9jYWxlX3QJbXlsb2NhbGUgPSAwOwkvKiBUT0RPICovCiAK IAlpZiAoY2xlbiA9PSAxIHx8IGRhdGFiYXNlX2N0eXBlX2lzX2MpCiAJCXJldHVybiBpc2FsbnVt KFRPVUNIQVIocHRyKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90c2VhcmNoL3dwYXJzZXJf ZGVmLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3dwYXJzZXJfZGVmLmMKaW5kZXggNzliY2QzMmEw NjMuLmUyZGQzZGEzYWEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3dwYXJzZXJf ZGVmLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC93cGFyc2VyX2RlZi5jCkBAIC0yOTksNyAr Mjk5LDcgQEAgVFBhcnNlckluaXQoY2hhciAqc3RyLCBpbnQgbGVuKQogCSAqLwogCWlmIChwcnMt PmNoYXJtYXhsZW4gPiAxKQogCXsKLQkJcGdfbG9jYWxlX3QgbXlsb2NhbGUgPSAwOwkvKiBUT0RP ICovCisJCWxvY2FsZV90CW15bG9jYWxlID0gMDsJLyogVE9ETyAqLwogCiAJCXBycy0+dXNld2lk ZSA9IHRydWU7CiAJCWlmIChkYXRhYmFzZV9jdHlwZV9pc19jKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xv Y2FsZS5jCmluZGV4IGY1ZTMxYzQzM2EwLi42ZDYzZDA4YzhhZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGUuYwpAQCAtMTAyNCw3ICsxMDI0LDcgQEAgZ2V0X2lzb19sb2NhbGVuYW1lKGNvbnN0 IGNoYXIgKndpbmxvY25hbWUpCiAJCWNoYXIJICAgKmh5cGhlbjsKIAogCQkvKiBMb2NhbGUgbmFt ZXMgdXNlIG9ubHkgQVNDSUksIGFueSBjb252ZXJzaW9uIGxvY2FsZSBzdWZmaWNlcy4gKi8KLQkJ cmMgPSB3Y2hhcjJjaGFyKGlzb19sY19tZXNzYWdlcywgYnVmZmVyLCBzaXplb2YoaXNvX2xjX21l c3NhZ2VzKSwgTlVMTCk7CisJCXJjID0gd2NoYXIyY2hhcihpc29fbGNfbWVzc2FnZXMsIGJ1ZmZl ciwgc2l6ZW9mKGlzb19sY19tZXNzYWdlcyksIExDX0NfTE9DQUxFKTsKIAkJaWYgKHJjID09IC0x IHx8IHJjID09IHNpemVvZihpc29fbGNfbWVzc2FnZXMpKQogCQkJcmV0dXJuIE5VTEw7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMKaW5kZXggZDZlZWY4ODVjZTAuLmNjZWIy OGY5YTcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYwpAQCAtMjE1LDcg KzIxNSw3IEBAIHN0cmxvd2VyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBj b25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCS8qIE91dHB1dCB3b3Jrc3BhY2UgY2Fu bm90IGhhdmUgbW9yZSBjb2RlcyB0aGFuIGlucHV0IGJ5dGVzICovCiAJd29ya3NwYWNlID0gKHdj aGFyX3QgKikgcGFsbG9jKChzcmNsZW4gKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CiAKLQljaGFy MndjaGFyKHdvcmtzcGFjZSwgc3JjbGVuICsgMSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7CisJY2hh cjJ3Y2hhcih3b3Jrc3BhY2UsIHNyY2xlbiArIDEsIHNyYywgc3JjbGVuLCBsb2MpOwogCiAJZm9y IChjdXJyX2NoYXIgPSAwOyB3b3Jrc3BhY2VbY3Vycl9jaGFyXSAhPSAwOyBjdXJyX2NoYXIrKykK IAkJd29ya3NwYWNlW2N1cnJfY2hhcl0gPSB0b3dsb3dlcl9sKHdvcmtzcGFjZVtjdXJyX2NoYXJd LCBsb2MpOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHN0cmxvd2VyX2xpYmNfbWIoY2hhciAqZGVzdCwg c2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCW1heF9z aXplID0gY3Vycl9jaGFyICogcGdfZGF0YWJhc2VfZW5jb2RpbmdfbWF4X2xlbmd0aCgpOwogCXJl c3VsdCA9IHBhbGxvYyhtYXhfc2l6ZSArIDEpOwogCi0JcmVzdWx0X3NpemUgPSB3Y2hhcjJjaGFy KHJlc3VsdCwgd29ya3NwYWNlLCBtYXhfc2l6ZSArIDEsIGxvY2FsZSk7CisJcmVzdWx0X3NpemUg PSB3Y2hhcjJjaGFyKHJlc3VsdCwgd29ya3NwYWNlLCBtYXhfc2l6ZSArIDEsIGxvYyk7CiAKIAlp ZiAocmVzdWx0X3NpemUgKyAxID4gZGVzdHNpemUpCiAJCXJldHVybiByZXN1bHRfc2l6ZTsKQEAg LTMxMCw3ICszMTAsNyBAQCBzdHJ0aXRsZV9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0 c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkvKiBPdXRwdXQgd29ya3Nw YWNlIGNhbm5vdCBoYXZlIG1vcmUgY29kZXMgdGhhbiBpbnB1dCBieXRlcyAqLwogCXdvcmtzcGFj ZSA9ICh3Y2hhcl90ICopIHBhbGxvYygoc3JjbGVuICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwog Ci0JY2hhcjJ3Y2hhcih3b3Jrc3BhY2UsIHNyY2xlbiArIDEsIHNyYywgc3JjbGVuLCBsb2NhbGUp OworCWNoYXIyd2NoYXIod29ya3NwYWNlLCBzcmNsZW4gKyAxLCBzcmMsIHNyY2xlbiwgbG9jKTsK IAogCWZvciAoY3Vycl9jaGFyID0gMDsgd29ya3NwYWNlW2N1cnJfY2hhcl0gIT0gMDsgY3Vycl9j aGFyKyspCiAJewpAQCAtMzI3LDcgKzMyNyw3IEBAIHN0cnRpdGxlX2xpYmNfbWIoY2hhciAqZGVz dCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCW1h eF9zaXplID0gY3Vycl9jaGFyICogcGdfZGF0YWJhc2VfZW5jb2RpbmdfbWF4X2xlbmd0aCgpOwog CXJlc3VsdCA9IHBhbGxvYyhtYXhfc2l6ZSArIDEpOwogCi0JcmVzdWx0X3NpemUgPSB3Y2hhcjJj aGFyKHJlc3VsdCwgd29ya3NwYWNlLCBtYXhfc2l6ZSArIDEsIGxvY2FsZSk7CisJcmVzdWx0X3Np emUgPSB3Y2hhcjJjaGFyKHJlc3VsdCwgd29ya3NwYWNlLCBtYXhfc2l6ZSArIDEsIGxvYyk7CiAK IAlpZiAocmVzdWx0X3NpemUgKyAxID4gZGVzdHNpemUpCiAJCXJldHVybiByZXN1bHRfc2l6ZTsK QEAgLTM5OCw3ICszOTgsNyBAQCBzdHJ1cHBlcl9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBk ZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkvKiBPdXRwdXQgd29y a3NwYWNlIGNhbm5vdCBoYXZlIG1vcmUgY29kZXMgdGhhbiBpbnB1dCBieXRlcyAqLwogCXdvcmtz cGFjZSA9ICh3Y2hhcl90ICopIHBhbGxvYygoc3JjbGVuICsgMSkgKiBzaXplb2Yod2NoYXJfdCkp OwogCi0JY2hhcjJ3Y2hhcih3b3Jrc3BhY2UsIHNyY2xlbiArIDEsIHNyYywgc3JjbGVuLCBsb2Nh bGUpOworCWNoYXIyd2NoYXIod29ya3NwYWNlLCBzcmNsZW4gKyAxLCBzcmMsIHNyY2xlbiwgbG9j KTsKIAogCWZvciAoY3Vycl9jaGFyID0gMDsgd29ya3NwYWNlW2N1cnJfY2hhcl0gIT0gMDsgY3Vy cl9jaGFyKyspCiAJCXdvcmtzcGFjZVtjdXJyX2NoYXJdID0gdG93dXBwZXJfbCh3b3Jrc3BhY2Vb Y3Vycl9jaGFyXSwgbG9jKTsKQEAgLTQwOSw3ICs0MDksNyBAQCBzdHJ1cHBlcl9saWJjX21iKGNo YXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xl biwKIAltYXhfc2l6ZSA9IGN1cnJfY2hhciAqIHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5n dGgoKTsKIAlyZXN1bHQgPSBwYWxsb2MobWF4X3NpemUgKyAxKTsKIAotCXJlc3VsdF9zaXplID0g d2NoYXIyY2hhcihyZXN1bHQsIHdvcmtzcGFjZSwgbWF4X3NpemUgKyAxLCBsb2NhbGUpOworCXJl c3VsdF9zaXplID0gd2NoYXIyY2hhcihyZXN1bHQsIHdvcmtzcGFjZSwgbWF4X3NpemUgKyAxLCBs b2MpOwogCiAJaWYgKHJlc3VsdF9zaXplICsgMSA+IGRlc3RzaXplKQogCQlyZXR1cm4gcmVzdWx0 X3NpemU7CkBAIC05NTYsMTAgKzk1NiwxMiBAQCB3Y3N0b21ic19sKGNoYXIgKmRlc3QsIGNvbnN0 IHdjaGFyX3QgKnNyYywgc2l6ZV90IG4sIGxvY2FsZV90IGxvYykKICAqIHplcm8tdGVybWluYXRl ZC4gIFRoZSBvdXRwdXQgd2lsbCBiZSB6ZXJvLXRlcm1pbmF0ZWQgaWZmIHRoZXJlIGlzIHJvb20u CiAgKi8KIHNpemVfdAotd2NoYXIyY2hhcihjaGFyICp0bywgY29uc3Qgd2NoYXJfdCAqZnJvbSwg c2l6ZV90IHRvbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpCit3Y2hhcjJjaGFyKGNoYXIgKnRvLCBj b25zdCB3Y2hhcl90ICpmcm9tLCBzaXplX3QgdG9sZW4sIGxvY2FsZV90IGxvYykKIHsKIAlzaXpl X3QJCXJlc3VsdDsKIAorCUFzc2VydChsb2MgIT0gTlVMTCk7CisKIAlpZiAodG9sZW4gPT0gMCkK IAkJcmV0dXJuIDA7CiAKQEAgLTk4NiwxNiArOTg4LDcgQEAgd2NoYXIyY2hhcihjaGFyICp0bywg Y29uc3Qgd2NoYXJfdCAqZnJvbSwgc2l6ZV90IHRvbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiAJ fQogCWVsc2UKICNlbmRpZgkJCQkJCQkvKiBXSU4zMiAqLwotCWlmIChsb2NhbGUgPT0gKHBnX2xv Y2FsZV90KSAwKQotCXsKLQkJLyogVXNlIHdjc3RvbWJzIGRpcmVjdGx5IGZvciB0aGUgZGVmYXVs dCBsb2NhbGUgKi8KLQkJcmVzdWx0ID0gd2NzdG9tYnModG8sIGZyb20sIHRvbGVuKTsKLQl9Ci0J ZWxzZQotCXsKLQkJLyogVXNlIHdjc3RvbWJzX2wgZm9yIG5vbmRlZmF1bHQgbG9jYWxlcyAqLwot CQlyZXN1bHQgPSB3Y3N0b21ic19sKHRvLCBmcm9tLCB0b2xlbiwgbG9jYWxlLT5pbmZvLmx0KTsK LQl9CisJCXJlc3VsdCA9IHdjc3RvbWJzX2wodG8sIGZyb20sIHRvbGVuLCBsb2MpOwogCiAJcmV0 dXJuIHJlc3VsdDsKIH0KQEAgLTEwMTEsMTAgKzEwMDQsMTIgQEAgd2NoYXIyY2hhcihjaGFyICp0 bywgY29uc3Qgd2NoYXJfdCAqZnJvbSwgc2l6ZV90IHRvbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUp CiAgKi8KIHNpemVfdAogY2hhcjJ3Y2hhcih3Y2hhcl90ICp0bywgc2l6ZV90IHRvbGVuLCBjb25z dCBjaGFyICpmcm9tLCBzaXplX3QgZnJvbWxlbiwKLQkJICAgcGdfbG9jYWxlX3QgbG9jYWxlKQor CQkgICBsb2NhbGVfdCBsb2MpCiB7CiAJc2l6ZV90CQlyZXN1bHQ7CiAKKwlBc3NlcnQobG9jICE9 IE5VTEwpOworCiAJaWYgKHRvbGVuID09IDApCiAJCXJldHVybiAwOwogCkBAIC0xMDQ2LDE2ICsx MDQxLDcgQEAgY2hhcjJ3Y2hhcih3Y2hhcl90ICp0bywgc2l6ZV90IHRvbGVuLCBjb25zdCBjaGFy ICpmcm9tLCBzaXplX3QgZnJvbWxlbiwKIAkJLyogbWJzdG93Y3MgcmVxdWlyZXMgZW5kaW5nICdc MCcgKi8KIAkJY2hhcgkgICAqc3RyID0gcG5zdHJkdXAoZnJvbSwgZnJvbWxlbik7CiAKLQkJaWYg KGxvY2FsZSA9PSAocGdfbG9jYWxlX3QpIDApCi0JCXsKLQkJCS8qIFVzZSBtYnN0b3djcyBkaXJl Y3RseSBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlICovCi0JCQlyZXN1bHQgPSBtYnN0b3djcyh0bywg c3RyLCB0b2xlbik7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKiBVc2UgbWJzdG93Y3NfbCBmb3Ig bm9uZGVmYXVsdCBsb2NhbGVzICovCi0JCQlyZXN1bHQgPSBtYnN0b3djc19sKHRvLCBzdHIsIHRv bGVuLCBsb2NhbGUtPmluZm8ubHQpOwotCQl9CisJCXJlc3VsdCA9IG1ic3Rvd2NzX2wodG8sIHN0 ciwgdG9sZW4sIGxvYyk7CiAKIAkJcGZyZWUoc3RyKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9wZ19sb2NhbGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oCmlu ZGV4IDNlYTE2ZTgzZWUxLi42NTY1YTUyM2Y4OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvcGdfbG9jYWxlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKQEAgLTE2 Niw4ICsxNjYsOCBAQCBleHRlcm4gdm9pZCByZXBvcnRfbmV3bG9jYWxlX2ZhaWx1cmUoY29uc3Qg Y2hhciAqbG9jYWxlbmFtZSk7CiAKIC8qIFRoZXNlIGZ1bmN0aW9ucyBjb252ZXJ0IGZyb20vdG8g bGliYydzIHdjaGFyX3QsICpub3QqIHBnX3djaGFyX3QgKi8KIGV4dGVybiBzaXplX3Qgd2NoYXIy Y2hhcihjaGFyICp0bywgY29uc3Qgd2NoYXJfdCAqZnJvbSwgc2l6ZV90IHRvbGVuLAotCQkJCQkJ IHBnX2xvY2FsZV90IGxvY2FsZSk7CisJCQkJCQkgbG9jYWxlX3QgbG9jKTsKIGV4dGVybiBzaXpl X3QgY2hhcjJ3Y2hhcih3Y2hhcl90ICp0bywgc2l6ZV90IHRvbGVuLAotCQkJCQkJIGNvbnN0IGNo YXIgKmZyb20sIHNpemVfdCBmcm9tbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpOworCQkJCQkJIGNv bnN0IGNoYXIgKmZyb20sIHNpemVfdCBmcm9tbGVuLCBsb2NhbGVfdCBsb2MpOwogCiAjZW5kaWYJ CQkJCQkJLyogX1BHX0xPQ0FMRV8gKi8KLS0gCjIuNDMuMAoK --=-Nua2bFD2H3UIWb6nI5sB Content-Disposition: attachment; filename="v2-0006-tsearch-use-global_libc_locale.patch" Content-Type: text/x-patch; name="v2-0006-tsearch-use-global_libc_locale.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAyMjlkOWVjMjJhNmM4ZGM1MGE3MDlhZTUwMzI4OTZlNzkzMmQyMTliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDExIEp1biAyMDI1IDEwOjA3OjI5IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MiA2LzddIHRz ZWFyY2g6IHVzZSBnbG9iYWxfbGliY19sb2NhbGUuCgotLS0KIGNvbmZpZ3VyZSAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAg fCAgMiArKwogbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKysKIHNyYy9i YWNrZW5kL3RzZWFyY2gvdHNfbG9jYWxlLmMgICB8ICA4ICsrKy0tLQogc3JjL2JhY2tlbmQvdHNl YXJjaC93cGFyc2VyX2RlZi5jIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQog c3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gICAgICAgIHwgIDYgKysrKysKIDYgZmlsZXMgY2hh bmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb25m aWd1cmUgYi9jb25maWd1cmUKaW5kZXggNGYxNTM0N2NjOTUuLjI2NjBjMjllMGQyIDEwMDc1NQot LS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xNTYxNiw3ICsxNTYxNiw3IEBAIGZp CiBMSUJTX2luY2x1ZGluZ19yZWFkbGluZT0iJExJQlMiCiBMSUJTPWBlY2hvICIkTElCUyIgfCBz ZWQgLWUgJ3MvLWxlZGl0Ly9nJyAtZSAncy8tbHJlYWRsaW5lLy9nJ2AKIAotZm9yIGFjX2Z1bmMg aW4gYmFja3RyYWNlX3N5bWJvbHMgY29weWZpbGUgY29weV9maWxlX3JhbmdlIGVsZl9hdXhfaW5m byBnZXRhdXh2YWwgZ2V0aWZhZGRycyBnZXRwZWVydWNyZWQgaW5ldF9wdG9uIGtxdWV1ZSBsb2Nh bGVjb252X2wgbWJzdG93Y3NfbCBwb3NpeF9mYWxsb2NhdGUgcHBvbGwgcHRocmVhZF9pc190aHJl YWRlZF9ucCBzZXRwcm9jdGl0bGUgc2V0cHJvY3RpdGxlX2Zhc3Qgc3Ryc2lnbmFsIHN5bmNmcyBz eW5jX2ZpbGVfcmFuZ2UgdXNlbG9jYWxlIHdjc3RvbWJzX2wKK2ZvciBhY19mdW5jIGluIGJhY2t0 cmFjZV9zeW1ib2xzIGNvcHlmaWxlIGNvcHlfZmlsZV9yYW5nZSBlbGZfYXV4X2luZm8gZ2V0YXV4 dmFsIGdldGlmYWRkcnMgZ2V0cGVlcnVjcmVkIGluZXRfcHRvbiBpc3d4ZGlnaXRfbCBpc3hkaWdp dF9sIGtxdWV1ZSBsb2NhbGVjb252X2wgbWJzdG93Y3NfbCBwb3NpeF9mYWxsb2NhdGUgcHBvbGwg cHRocmVhZF9pc190aHJlYWRlZF9ucCBzZXRwcm9jdGl0bGUgc2V0cHJvY3RpdGxlX2Zhc3Qgc3Ry c2lnbmFsIHN5bmNmcyBzeW5jX2ZpbGVfcmFuZ2UgdXNlbG9jYWxlIHdjc3RvbWJzX2wKIGRvIDoK ICAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hg CiBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCmRp ZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggNGI4MzM1ZGM2MTMu LjJkMTZjNWZkNDNmIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFj CkBAIC0xNzg5LDYgKzE3ODksOCBAQCBBQ19DSEVDS19GVU5DUyhtNF9ub3JtYWxpemUoWwogCWdl dGlmYWRkcnMKIAlnZXRwZWVydWNyZWQKIAlpbmV0X3B0b24KKwlpc3d4ZGlnaXRfbAorCWlzeGRp Z2l0X2wKIAlrcXVldWUKIAlsb2NhbGVjb252X2wKIAltYnN0b3djc19sCmRpZmYgLS1naXQgYS9t ZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IGQxNDJlM2U0MDhiLi4wYmQ2ZjlmMjA3NiAx MDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTI4ODAsNiArMjg4 MCw4IEBAIGZ1bmNfY2hlY2tzID0gWwogICBbJ2dldHBlZXJ1Y3JlZCddLAogICBbJ2luZXRfYXRv biddLAogICBbJ2luZXRfcHRvbiddLAorICBbJ2lzd3hkaWdpdF9sJ10sCisgIFsnaXN4ZGlnaXRf bCddLAogICBbJ2txdWV1ZSddLAogICBbJ2xvY2FsZWNvbnZfbCddLAogICBbJ21ic3Rvd2NzX2wn XSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfbG9jYWxlLmMgYi9zcmMvYmFj a2VuZC90c2VhcmNoL3RzX2xvY2FsZS5jCmluZGV4IDQ4MDFmZTkwMDg5Li42YjY2ZmQxYzA1YiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90c19sb2NhbGUuYworKysgYi9zcmMvYmFj a2VuZC90c2VhcmNoL3RzX2xvY2FsZS5jCkBAIC0zNiwxNCArMzYsMTQgQEAgdF9pc2FscGhhKGNv bnN0IGNoYXIgKnB0cikKIHsKIAlpbnQJCQljbGVuID0gcGdfbWJsZW4ocHRyKTsKIAl3Y2hhcl90 CQljaGFyYWN0ZXJbV0NfQlVGX0xFTl07Ci0JbG9jYWxlX3QJbXlsb2NhbGUgPSAwOwkvKiBUT0RP ICovCisJbG9jYWxlX3QJbXlsb2NhbGUgPSBnbG9iYWxfbGliY19sb2NhbGU7CS8qIFRPRE8gKi8K IAogCWlmIChjbGVuID09IDEgfHwgZGF0YWJhc2VfY3R5cGVfaXNfYykKIAkJcmV0dXJuIGlzYWxw aGEoVE9VQ0hBUihwdHIpKTsKIAogCWNoYXIyd2NoYXIoY2hhcmFjdGVyLCBXQ19CVUZfTEVOLCBw dHIsIGNsZW4sIG15bG9jYWxlKTsKIAotCXJldHVybiBpc3dhbHBoYSgod2ludF90KSBjaGFyYWN0 ZXJbMF0pOworCXJldHVybiBpc3dhbHBoYV9sKCh3aW50X3QpIGNoYXJhY3RlclswXSwgbXlsb2Nh bGUpOwogfQogCiBpbnQKQEAgLTUxLDE0ICs1MSwxNCBAQCB0X2lzYWxudW0oY29uc3QgY2hhciAq cHRyKQogewogCWludAkJCWNsZW4gPSBwZ19tYmxlbihwdHIpOwogCXdjaGFyX3QJCWNoYXJhY3Rl cltXQ19CVUZfTEVOXTsKLQlsb2NhbGVfdAlteWxvY2FsZSA9IDA7CS8qIFRPRE8gKi8KKwlsb2Nh bGVfdAlteWxvY2FsZSA9IGdsb2JhbF9saWJjX2xvY2FsZTsJLyogVE9ETyAqLwogCiAJaWYgKGNs ZW4gPT0gMSB8fCBkYXRhYmFzZV9jdHlwZV9pc19jKQogCQlyZXR1cm4gaXNhbG51bShUT1VDSEFS KHB0cikpOwogCiAJY2hhcjJ3Y2hhcihjaGFyYWN0ZXIsIFdDX0JVRl9MRU4sIHB0ciwgY2xlbiwg bXlsb2NhbGUpOwogCi0JcmV0dXJuIGlzd2FsbnVtKCh3aW50X3QpIGNoYXJhY3RlclswXSk7CisJ cmV0dXJuIGlzd2FsbnVtX2woKHdpbnRfdCkgY2hhcmFjdGVyWzBdLCBteWxvY2FsZSk7CiB9CiAK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJjaC93cGFyc2VyX2RlZi5jIGIvc3JjL2Jh Y2tlbmQvdHNlYXJjaC93cGFyc2VyX2RlZi5jCmluZGV4IGUyZGQzZGEzYWEzLi45YTgwZDMyYjQ0 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJjaC93cGFyc2VyX2RlZi5jCisrKyBiL3Ny Yy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlcl9kZWYuYwpAQCAtMjk5LDcgKzI5OSw3IEBAIFRQYXJz ZXJJbml0KGNoYXIgKnN0ciwgaW50IGxlbikKIAkgKi8KIAlpZiAocHJzLT5jaGFybWF4bGVuID4g MSkKIAl7Ci0JCWxvY2FsZV90CW15bG9jYWxlID0gMDsJLyogVE9ETyAqLworCQlsb2NhbGVfdAlt eWxvY2FsZSA9IGdsb2JhbF9saWJjX2xvY2FsZTsJLyogVE9ETyAqLwogCiAJCXBycy0+dXNld2lk ZSA9IHRydWU7CiAJCWlmIChkYXRhYmFzZV9jdHlwZV9pc19jKQpAQCAtNDExLDYgKzQxMSw0MCBA QCBUUGFyc2VyQ29weUNsb3NlKFRQYXJzZXIgKnBycykKIH0KIAogCisjaWZuZGVmIEhBVkVfSVNY RElHSVRfTAorc3RhdGljIGludAoraXN4ZGlnaXRfbCh3aW50X3Qgd2MsIGxvY2FsZV90IGxvYykK K3sKKyNpZmRlZiBXSU4zMgorCXJldHVybiBfaXN4ZGlnaXRfbCh3YywgbG9jKTsKKyNlbHNlCisJ c2l6ZV90CQlyZXN1bHQ7CisJbG9jYWxlX3QJc2F2ZV9sb2NhbGUgPSB1c2Vsb2NhbGUobG9jKTsK KworCXJlc3VsdCA9IGlzeGRpZ2l0KHdjKTsKKwl1c2Vsb2NhbGUoc2F2ZV9sb2NhbGUpOworCXJl dHVybiByZXN1bHQ7CisjZW5kaWYKK30KKyNlbmRpZgorI2lmbmRlZiBIQVZFX0lTV1hESUdJVF9M CitzdGF0aWMgaW50Citpc3d4ZGlnaXRfbCh3aW50X3Qgd2MsIGxvY2FsZV90IGxvYykKK3sKKyNp ZmRlZiBXSU4zMgorCXJldHVybiBfaXN3eGRpZ2l0X2wod2MsIGxvYyk7CisjZWxzZQorCXNpemVf dAkJcmVzdWx0OworCWxvY2FsZV90CXNhdmVfbG9jYWxlID0gdXNlbG9jYWxlKGxvYyk7CisKKwly ZXN1bHQgPSBpc3d4ZGlnaXQod2MpOworCXVzZWxvY2FsZShzYXZlX2xvY2FsZSk7CisJcmV0dXJu IHJlc3VsdDsKKyNlbmRpZgorfQorI2VuZGlmCisKKwogLyoKICAqIENoYXJhY3Rlci10eXBlIHN1 cHBvcnQgZnVuY3Rpb25zLCBlcXVpdmFsZW50IHRvIGlzKiBtYWNyb3MsIGJ1dAogICogd29ya2lu ZyB3aXRoIGFueSBwb3NzaWJsZSBlbmNvZGluZ3MgYW5kIGxvY2FsZXMuIE5vdGVzOgpAQCAtNDM0 LDExICs0NjgsMTMgQEAgcF9pcyMjdHlwZShUUGFyc2VyICpwcnMpCQkJCQkJCQkJCQkJCVwKIAkJ CXVuc2lnbmVkIGludCBjID0gKihwcnMtPnBnd3N0ciArIHBycy0+c3RhdGUtPnBvc2NoYXIpOwkJ CVwKIAkJCWlmIChjID4gMHg3ZikJCQkJCQkJCQkJCQkJXAogCQkJCXJldHVybiBub25hc2NpaTsJ CQkJCQkJCQkJCVwKLQkJCXJldHVybiBpcyMjdHlwZShjKTsJCQkJCQkJCQkJCQlcCisJCQlyZXR1 cm4gaXMjI3R5cGUjI19sKGMsIGdsb2JhbF9saWJjX2xvY2FsZSk7CQkJCQkJXAogCQl9CQkJCQkJ CQkJCQkJCQkJCQlcCi0JCXJldHVybiBpc3cjI3R5cGUoKihwcnMtPndzdHIgKyBwcnMtPnN0YXRl LT5wb3NjaGFyKSk7CQkJCVwKKwkJcmV0dXJuIGlzdyMjdHlwZSMjX2woKihwcnMtPndzdHIgKyBw cnMtPnN0YXRlLT5wb3NjaGFyKSwJCQlcCisJCQkJCQkJIGdsb2JhbF9saWJjX2xvY2FsZSk7CQkJ CQkJCVwKIAl9CQkJCQkJCQkJCQkJCQkJCQkJXAotCXJldHVybiBpcyMjdHlwZSgqKHVuc2lnbmVk IGNoYXIgKikgKHBycy0+c3RyICsgcHJzLT5zdGF0ZS0+cG9zYnl0ZSkpOwlcCisJcmV0dXJuIGlz IyN0eXBlIyNfbCgqKHVuc2lnbmVkIGNoYXIgKikgKHBycy0+c3RyICsgcHJzLT5zdGF0ZS0+cG9z Ynl0ZSksCVwKKwkJCQkJCWdsb2JhbF9saWJjX2xvY2FsZSk7CQkJCQkJCQlcCiB9CQkJCQkJCQkJ CQkJCQkJCQkJCVwKIAkJCQkJCQkJCQkJCQkJCQkJCQlcCiBzdGF0aWMgaW50CQkJCQkJCQkJCQkJ CQkJCQlcCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiBiL3NyYy9pbmNs dWRlL3BnX2NvbmZpZy5oLmluCmluZGV4IDcyNmE3YzFiZTFmLi5mMDYzOTZjOTRmNCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KKysrIGIvc3JjL2luY2x1ZGUvcGdfY29u ZmlnLmguaW4KQEAgLTIyOSw2ICsyMjksMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl IHRoZSBnbG9iYWwgdmFyaWFibGUgJ2ludCB0aW1lem9uZScuICovCiAjdW5kZWYgSEFWRV9JTlRf VElNRVpPTkUKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpc3d4ZGlnaXRfbCcg ZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9JU1dYRElHSVRfTAorCisvKiBEZWZpbmUgdG8gMSBp ZiB5b3UgaGF2ZSB0aGUgYGlzeGRpZ2l0X2wnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfSVNY RElHSVRfTAorCiAvKiBEZWZpbmUgdG8gMSBpZiBfX2J1aWx0aW5fY29uc3RhbnRfcCh4KSBpbXBs aWVzICJpIih4KSBhY2NlcHRhbmNlLiAqLwogI3VuZGVmIEhBVkVfSV9DT05TVFJBSU5UX19CVUlM VElOX0NPTlNUQU5UX1AKIAotLSAKMi40My4wCgo= --=-Nua2bFD2H3UIWb6nI5sB Content-Disposition: attachment; filename="v2-0007-Force-LC_COLLATE-to-C-in-postmaster.patch" Content-Type: text/x-patch; name="v2-0007-Force-LC_COLLATE-to-C-in-postmaster.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBiMmM4Y2Q2YTY5NTMwZjQ4Yzc2MGUwOWMxMmYxNmMyYzMzZTMyMWY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDEwIEp1biAyMDI1IDExOjMyOjAxIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MiA3LzddIEZv cmNlIExDX0NPTExBVEUgdG8gQyBpbiBwb3N0bWFzdGVyLgoKQXZvaWQgZGVwZW5kZW5jZSBvbiBz ZXRsb2NhbGUoKS4KCnN0cmNvbGwoKSwgZXRjLiwgaXMgbm90IGNhbGxlZCBkaXJlY3RseTsgYWxs IHN1Y2ggY2FsbHMgc2hvdWxkIGdvCnRocm91Z2ggcGdfbG9jYWxlLmMgYW5kIHVzZSB0aGUgYXBw cm9wcmlhdGUgcHJvdmlkZXIuIEJ5IHNldHRpbmcKTENfQ09MTEFURSB0byBDLCB3ZSBhdm9pZCBh Y2NpZGVudGFsbHkgZGVwZW5kaW5nIG9uIGxpYmMgYmVoYXZpb3Igd2hlbgp1c2luZyBhIGRpZmZl cmVudCBwcm92aWRlci4KCk5vIGJlaGF2aW9yIGNoYW5nZSBpbiB0aGUgYmFja2VuZCwgYnV0IGl0 J3MgcG9zc2libGUgdGhhdCBzb21lCmV4dGVuc2lvbnMgd2lsbCBiZSBhZmZlY3RlZC4gU3VjaCBl eHRlbnNpb25zIHNob3VsZCBvcmRpbmFyaWx5IGJlCnVwZGF0ZWQgdG8gdXNlIHRoZSBwZ19sb2Nh bGVfdCBBUElzLiBJZiB0aGUgZXh0ZW5zaW9uIG11c3QgdXNlIGxpYmMKYmVoYXZpb3IsIGl0IGNh biBpbnN0ZWFkIHVzZSB0aGUgIl9sIiB2YXJpYW50cyBvZiBmdW5jdGlvbnMgYWxvbmcgd2l0aApn bG9iYWxfbGliY19sb2NhbGUuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzk4NzVm N2Y5LTUwZjEtNGI1ZC04NmZjLWVlOGIwM2U4YzE2MkBlaXNlbnRyYXV0Lm9yZwpSZXZpZXdlZC1i eTogUGV0ZXIgRWlzZW50cmF1dCA8cGV0ZXJAZWlzZW50cmF1dC5vcmc+Ci0tLQogc3JjL2JhY2tl bmQvbWFpbi9tYWluLmMgICAgICAgICAgIHwgMTYgKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tl bmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIHwgMTAgKysrKy0tLS0tLQogMiBmaWxlcyBjaGFuZ2Vk LCAxNCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9tYWluL21haW4uYyBiL3NyYy9iYWNrZW5kL21haW4vbWFpbi5jCmluZGV4IDdkNjNjZjk0 YTZiLi45ZTExNTU3ZDkxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbWFpbi9tYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvbWFpbi9tYWluLmMKQEAgLTEyNSwxMyArMTI1LDE3IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBH X1RFWFRET01BSU4oInBvc3RncmVzIikpOwogCiAJLyoKLQkgKiBJbiB0aGUgcG9zdG1hc3Rlciwg YWJzb3JiIHRoZSBlbnZpcm9ubWVudCB2YWx1ZXMgZm9yIExDX0NPTExBVEUgYW5kCi0JICogTENf Q1RZUEUuICBJbmRpdmlkdWFsIGJhY2tlbmRzIHdpbGwgY2hhbmdlIHRoZXNlIGxhdGVyIHRvIHNl dHRpbmdzCi0JICogdGFrZW4gZnJvbSBwZ19kYXRhYmFzZSwgYnV0IHRoZSBwb3N0bWFzdGVyIGNh bm5vdCBkbyB0aGF0LiAgSWYgd2UgbGVhdmUKLQkgKiB0aGVzZSBzZXQgdG8gIkMiIHRoZW4gbWVz c2FnZSBsb2NhbGl6YXRpb24gbWlnaHQgbm90IHdvcmsgd2VsbCBpbiB0aGUKLQkgKiBwb3N0bWFz dGVyLgorCSAqIENvbGxhdGlvbiBpcyBoYW5kbGVkIGJ5IHBnX2xvY2FsZS5jLCBhbmQgdGhlIGJl aGF2aW9yIGlzIGRlcGVuZGVudCBvbgorCSAqIHRoZSBwcm92aWRlci4gc3RyY29sbCgpLCBldGMu LCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseS4KKwkgKi8KKwlpbml0X2xvY2FsZSgiTENf Q09MTEFURSIsIExDX0NPTExBVEUsICJDIik7CisKKwkvKgorCSAqIEluIHRoZSBwb3N0bWFzdGVy LCBhYnNvcmIgdGhlIGVudmlyb25tZW50IHZhbHVlcyBmb3IgTENfQ1RZUEUuCisJICogSW5kaXZp ZHVhbCBiYWNrZW5kcyB3aWxsIGNoYW5nZSBpdCBsYXRlciB0byBwZ19kYXRhYmFzZS5kYXRjdHlw ZSwgYnV0CisJICogdGhlIHBvc3RtYXN0ZXIgY2Fubm90IGRvIHRoYXQuICBJZiB3ZSBsZWF2ZSBp dCBzZXQgdG8gIkMiIHRoZW4gbWVzc2FnZQorCSAqIGxvY2FsaXphdGlvbiBtaWdodCBub3Qgd29y ayB3ZWxsIGluIHRoZSBwb3N0bWFzdGVyLgogCSAqLwotCWluaXRfbG9jYWxlKCJMQ19DT0xMQVRF IiwgTENfQ09MTEFURSwgIiIpOwogCWluaXRfbG9jYWxlKCJMQ19DVFlQRSIsIExDX0NUWVBFLCAi Iik7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IDc0ZjlkZjg0ZmRlLi42 ZGVhYmY3NDc0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwpAQCAtNDE3LDEyICs0MTcs MTAgQEAgQ2hlY2tNeURhdGFiYXNlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgYW1fc3VwZXJ1c2Vy LCBib29sIG92ZXJyaWRlX2FsbG93X2Nvbm5lY3QKIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5v dE51bGwoREFUQUJBU0VPSUQsIHR1cCwgQW51bV9wZ19kYXRhYmFzZV9kYXRjdHlwZSk7CiAJY3R5 cGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKIAotCWlmIChwZ19wZXJtX3NldGxvY2Fs ZShMQ19DT0xMQVRFLCBjb2xsYXRlKSA9PSBOVUxMKQotCQllcmVwb3J0KEZBVEFMLAotCQkJCShl cnJtc2coImRhdGFiYXNlIGxvY2FsZSBpcyBpbmNvbXBhdGlibGUgd2l0aCBvcGVyYXRpbmcgc3lz dGVtIiksCi0JCQkJIGVycmRldGFpbCgiVGhlIGRhdGFiYXNlIHdhcyBpbml0aWFsaXplZCB3aXRo IExDX0NPTExBVEUgXCIlc1wiLCAiCi0JCQkJCQkgICAiIHdoaWNoIGlzIG5vdCByZWNvZ25pemVk IGJ5IHNldGxvY2FsZSgpLiIsIGNvbGxhdGUpLAotCQkJCSBlcnJoaW50KCJSZWNyZWF0ZSB0aGUg ZGF0YWJhc2Ugd2l0aCBhbm90aGVyIGxvY2FsZSBvciBpbnN0YWxsIHRoZSBtaXNzaW5nIGxvY2Fs ZS4iKSkpOworCS8qCisJICogSGlzdG9yY2FsbHksIHdlIHNldCBMQ19DT0xMQVRFIGZyb20gZGF0 Y29sbGF0ZSwgYXMgd2VsbCwgYnV0IHRoYXQncyBubworCSAqIGxvbmdlciBuZWNlc3NhcnkuCisJ ICovCiAKIAlpZiAocGdfcGVybV9zZXRsb2NhbGUoTENfQ1RZUEUsIGN0eXBlKSA9PSBOVUxMKQog CQllcmVwb3J0KEZBVEFMLAotLSAKMi40My4wCgo= --=-Nua2bFD2H3UIWb6nI5sB--