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 1uNfTe-006gtR-4S for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Jun 2025 22:23:54 +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 1uNfTZ-001JCB-RV for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Jun 2025 22:23:50 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uNfTZ-001JC3-Ab for pgsql-hackers@lists.postgresql.org; Fri, 06 Jun 2025 22:23:50 +0000 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uNfTX-000cK1-1l for pgsql-hackers@postgresql.org; Fri, 06 Jun 2025 22:23:49 +0000 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-745fe311741so3073409b3a.0 for ; Fri, 06 Jun 2025 15:23:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1749248624; x=1749853424; 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=f1V4+4afIMm/bEZejT70U2FVx1WvMl4SVVjuBx8b1KE=; b=vEuFp5hqC3ptrjWIP+UneaWUBgwBih7+YUf+rZ6YXD/RNfxpdtXzS4PtWLsI9WyiCN Clu3x+wdGkF4L8+6PfiGh2rjQGYpFTMdSfli1hqTFaF/0ArD79+MV5GTkdfEmDFJKwKF bzxTOkpOcXApk4YPDvSyhYZCUVN9+SW4ozqwUo43mtfIcOOAUSCVwOEBVlCH5EecXn0u +NAQuXqszYjisvW9wQ97Y7oRdRyqMbfEI2BKizsHyAZjneKwcYsOHTfAOpAN9rhJDJXu 2DVPyPAAdOFHngPirq4E3RzLO+i73oaG+kCZogTMy9lTW0Mvz4icW1TcJQedfZIA08cx Emmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749248624; x=1749853424; 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=f1V4+4afIMm/bEZejT70U2FVx1WvMl4SVVjuBx8b1KE=; b=gGPbE52DgoOlOSgbfvZB/TiEhef/gRPXK3aU0bWBS2aGci7u4XeMYuEyOrMAzKXASK hp9XlajbKPxwY2M+hd5Z+hWY4b6OtgBcUvGAzyiSYGmbRClD91jV2z9ewnqIOFnnzQei i8OxibDRh0EmEJ5PB7YjFIGwTU3yQQHAqevMZECy/P4/0wyPl6PXcMa2dyW7mbmfFv9x JouAUIrnd4gM/dVe37BOEo1XXlKbezVJpJS/jOvloCpdlFOoVieFm1SKZYotK468xrcn tdWdPc6iyDDH0lQ09NiMBWxoA4waNRYisYDQ3FWZrHnpFDSIg71mFiyM68zrSKg6gvVJ /Jdw== X-Forwarded-Encrypted: i=1; AJvYcCXUHaQT9/xrWrne7fnqbx0Brg3HCndS+Yme+bvrAYBNdRp3N2PUOUPXSfItUJcb09a6LDAtFeUg1CC0mq2m@postgresql.org X-Gm-Message-State: AOJu0YwvIiAHCMdrrTVUyil14B9/+TZ+MufzKrbHvLG6fFOYeqR8LKdB CqMyWOj9Q3XWFX7IEm/TRIbNIO+g1IRdG/SdnvV9Tc0zYB54y2CC2SF7Efwm/v4YvA== X-Gm-Gg: ASbGnctQtAN3Hr0hyzT4ZOkMT7B28wcqLYQrh3hIsGUQlkMGclRKGIdfrVYox117wOm 2wYaQYyVOWcDDkFBOttFKEsIsr6C1BsO9KfjQUI3uzwCaBto7wHeixr6FjxtJANolwTj32CvIUA Gj6T3y8mPXOsAzztElw5JaWD8z27YGU/1crjc2DQIQKYAJ+hiyA6aV3ooADp8EGgfbD7Tj45eoE b1wzXSWNBuVXRmrwHj4bPDeaGRHQu41I77nwpSsJ9fzM1HI9CQ0bc42m07Cqu8vuxqQ4AsWy8e0 1KwCpN/wEncr2p4zH+1RUBBsy2TV4uE4iy8Q6TuXyqEKAJHRX9SYpT57AJvcZZ7jkg7IhVUxnJF +a7qtWonqhxAw8KSwgVc9vuP9jeCuIvPc X-Google-Smtp-Source: AGHT+IFR1d8gRrLL4AAN/FStSygkVqwI2ocLvFMBPFg8yxLKEP+nW3NvkAw/xyf4CLQyXzXK+AWMpA== X-Received: by 2002:a05:6300:95:b0:215:f913:9368 with SMTP id adf61e73a8af0-21ee25e032cmr7086652637.28.1749248623572; Fri, 06 Jun 2025 15:23:43 -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-7482b0c23f6sm1753393b3a.119.2025.06.06.15.23.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Jun 2025 15:23:42 -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: Fri, 06 Jun 2025 15:23:41 -0700 In-Reply-To: References: <4c5da86af36a0d5e430eee3f60ce5e06f1b5cd34.camel@j-davis.com> <1841102.1722982989@sss.pgh.pa.us> Content-Type: multipart/mixed; boundary="=-FO7LEziNcqAunHvMd/mF" 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 --=-FO7LEziNcqAunHvMd/mF Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, 2025-06-05 at 22:15 -0700, Jeff Davis wrote: > To continue this thread, I did a symbol search in the meson build > directory like (patterns.txt attached): Attached a rough patch series which does what everyone seemed to agree on: * Change some trivial ASCII cases to use pg_ascii_* variants * Set LC_COLLATE and LC_CTYPE to C with pg_perm_setlocale * Introduce a new global_lc_ctype for callers that still need to use operations that depend on datctype There should be no behavior changes in this series. Benefits: * a tiny step toward multithreading, because connections to different databases no longer require different setlocale() settings * easier to identify dependence on datctype, because callers will need to refer to global_lc_ctype. * harder to accidentally depend on datctype or datcollate Ideally, when the database locale provider is not libc, the user shouldn't need to even think about a valid LC_CTYPE locale at all. But that requires more work, and potentially risk of breakage. Regards, Jeff Davis ` --=-FO7LEziNcqAunHvMd/mF Content-Disposition: attachment; filename*0=v1-0001-copyfromparse.c-use-pg_ascii_tolower-rather-than-.pat; filename*1=ch Content-Type: text/x-patch; name="v1-0001-copyfromparse.c-use-pg_ascii_tolower-rather-than-.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAyMWY1Y2MwYmNhNDhlZjhkMmZkYzc0NjM4NWUzYWZkYTU3NWZiZDllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDYgSnVuIDIwMjUgMDk6NTA6NTMgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDEvOF0gY29w eWZyb21wYXJzZS5jOiB1c2UgcGdfYXNjaWlfdG9sb3dlcigpIHJhdGhlciB0aGFuCiB0b2xvd2Vy KCkuCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHlmcm9tcGFyc2UuYwppbmRleCBmNWZjMzQ2ZTIwMS4uZjUyZjI0NzdkZjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKQEAgLTE1MzgsNyArMTUzOCw3IEBAIEdldERl Y2ltYWxGcm9tSGV4KGNoYXIgaGV4KQogCWlmIChpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSBoZXgp KQogCQlyZXR1cm4gaGV4IC0gJzAnOwogCWVsc2UKLQkJcmV0dXJuIHRvbG93ZXIoKHVuc2lnbmVk IGNoYXIpIGhleCkgLSAnYScgKyAxMDsKKwkJcmV0dXJuIHBnX2FzY2lpX3RvbG93ZXIoKHVuc2ln bmVkIGNoYXIpIGhleCkgLSAnYScgKyAxMDsKIH0KIAogLyoKLS0gCjIuNDMuMAoK --=-FO7LEziNcqAunHvMd/mF Content-Disposition: attachment; filename*0=v1-0002-contrib-spi-refint.c-use-pg_ascii_tolower-instead.pat; filename*1=ch Content-Type: text/x-patch; name="v1-0002-contrib-spi-refint.c-use-pg_ascii_tolower-instead.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA1YjYwZmJjNjI5ZjY0NjZjNDM1MDIxYjhkMzk5N2I1NzYzMjY4ZWQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDYgSnVuIDIwMjUgMDk6NTQ6NDAgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDIvOF0gY29u dHJpYi9zcGkvcmVmaW50LmM6IHVzZSBwZ19hc2NpaV90b2xvd2VyKCkgaW5zdGVhZC4KCi0tLQog Y29udHJpYi9zcGkvcmVmaW50LmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3NwaS9yZWZpbnQuYyBiL2Nv bnRyaWIvc3BpL3JlZmludC5jCmluZGV4IGQ1ZTI1ZTA3YWU5Li44OTg5OGNhZDdiMCAxMDA2NDQK LS0tIGEvY29udHJpYi9zcGkvcmVmaW50LmMKKysrIGIvY29udHJpYi9zcGkvcmVmaW50LmMKQEAg LTMyMSw3ICszMjEsNyBAQCBjaGVja19mb3JlaWduX2tleShQR19GVU5DVElPTl9BUkdTKQogCWlm IChucmVmcyA8IDEpCiAJCS8qIGludGVybmFsIGVycm9yICovCiAJCWVsb2coRVJST1IsICJjaGVj a19mb3JlaWduX2tleTogJWQgKDwgMSkgbnVtYmVyIG9mIHJlZmVyZW5jZXMgc3BlY2lmaWVkIiwg bnJlZnMpOwotCWFjdGlvbiA9IHRvbG93ZXIoKHVuc2lnbmVkIGNoYXIpICooYXJnc1sxXSkpOwor CWFjdGlvbiA9IHBnX2FzY2lpX3RvbG93ZXIoKHVuc2lnbmVkIGNoYXIpICooYXJnc1sxXSkpOwog CWlmIChhY3Rpb24gIT0gJ3InICYmIGFjdGlvbiAhPSAnYycgJiYgYWN0aW9uICE9ICdzJykKIAkJ LyogaW50ZXJuYWwgZXJyb3IgKi8KIAkJZWxvZyhFUlJPUiwgImNoZWNrX2ZvcmVpZ25fa2V5OiBp bnZhbGlkIGFjdGlvbiAlcyIsIGFyZ3NbMV0pOwotLSAKMi40My4wCgo= --=-FO7LEziNcqAunHvMd/mF Content-Disposition: attachment; filename="v1-0003-isn.c-use-pg_ascii_toupper-instead-of-toupper.patch" Content-Type: text/x-patch; name="v1-0003-isn.c-use-pg_ascii_toupper-instead-of-toupper.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4ZmNiZmI4ZDVhNWUzOGQ2YmIyZTBkMjE0ODZhODFjZWJmYTQ1NzIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDYgSnVuIDIwMjUgMDk6NTg6MjQgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDMvOF0gaXNu LmM6IHVzZSBwZ19hc2NpaV90b3VwcGVyKCkgaW5zdGVhZCBvZiB0b3VwcGVyKCkuCgotLS0KIGNv bnRyaWIvaXNuL2lzbi5jIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaXNuL2lzbi5jIGIvY29udHJp Yi9pc24vaXNuLmMKaW5kZXggMDM4YzhlZDRkYjcuLjE4ODBjOTE4NDRlIDEwMDY0NAotLS0gYS9j b250cmliL2lzbi9pc24uYworKysgYi9jb250cmliL2lzbi9pc24uYwpAQCAtNzI2LDcgKzcyNiw3 IEBAIHN0cmluZzJlYW4oY29uc3QgY2hhciAqc3RyLCBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0LCBl YW4xMyAqcmVzdWx0LAogCQkJaWYgKHR5cGUgIT0gSU5WQUxJRCkKIAkJCQlnb3RvIGVhbmludmFs aWQ7CiAJCQl0eXBlID0gSVNTTjsKLQkJCSphdXgxKysgPSB0b3VwcGVyKCh1bnNpZ25lZCBjaGFy KSAqYXV4Mik7CisJCQkqYXV4MSsrID0gcGdfYXNjaWlfdG91cHBlcigodW5zaWduZWQgY2hhcikg KmF1eDIpOwogCQkJbGVuZ3RoKys7CiAJCX0KIAkJZWxzZSBpZiAobGVuZ3RoID09IDkgJiYgKGRp Z2l0IHx8ICphdXgyID09ICdYJyB8fCAqYXV4MiA9PSAneCcpICYmIGxhc3QpCkBAIC03MzYsNyAr NzM2LDcgQEAgc3RyaW5nMmVhbihjb25zdCBjaGFyICpzdHIsIHN0cnVjdCBOb2RlICplc2NvbnRl eHQsIGVhbjEzICpyZXN1bHQsCiAJCQkJZ290byBlYW5pbnZhbGlkOwogCQkJaWYgKHR5cGUgPT0g SU5WQUxJRCkKIAkJCQl0eXBlID0gSVNCTjsJLyogSVNNTiBtdXN0IHN0YXJ0IHdpdGggJ00nICov Ci0JCQkqYXV4MSsrID0gdG91cHBlcigodW5zaWduZWQgY2hhcikgKmF1eDIpOworCQkJKmF1eDEr KyA9IHBnX2FzY2lpX3RvdXBwZXIoKHVuc2lnbmVkIGNoYXIpICphdXgyKTsKIAkJCWxlbmd0aCsr OwogCQl9CiAJCWVsc2UgaWYgKGxlbmd0aCA9PSAxMSAmJiBkaWdpdCAmJiBsYXN0KQotLSAKMi40 My4wCgo= --=-FO7LEziNcqAunHvMd/mF Content-Disposition: attachment; filename*0=v1-0004-inet_net_pton.c-use-pg_ascii_tolower-rather-than-.pat; filename*1=ch Content-Type: text/x-patch; name="v1-0004-inet_net_pton.c-use-pg_ascii_tolower-rather-than-.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBkM2JkMmYyNGE5YzQ1MGNiYjJmZjJmODhmOGVmZDRiYTdjNDU1YmUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDYgSnVuIDIwMjUgMTA6MDY6MDEgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDQvOF0gaW5l dF9uZXRfcHRvbi5jOiB1c2UgcGdfYXNjaWlfdG9sb3dlcigpIHJhdGhlciB0aGFuCiB0b2xvd2Vy KCkuCgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbmV0X25ldF9wdG9uLmMgfCAzICstLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbmV0X25ldF9wdG9uLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvaW5ldF9uZXRfcHRvbi5jCmluZGV4IGVmMjIzNmQ5ZjA0Li4zYjBkYjJhMzc5OSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2luZXRfbmV0X3B0b24uYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvaW5ldF9uZXRfcHRvbi5jCkBAIC0xMTUsOCArMTE1LDcgQEAg aW5ldF9jaWRyX3B0b25faXB2NChjb25zdCBjaGFyICpzcmMsIHVfY2hhciAqZHN0LCBzaXplX3Qg c2l6ZSkKIAkJc3JjKys7CQkJCQkvKiBza2lwIHggb3IgWC4gKi8KIAkJd2hpbGUgKChjaCA9ICpz cmMrKykgIT0gJ1wwJyAmJiBpc3hkaWdpdCgodW5zaWduZWQgY2hhcikgY2gpKQogCQl7Ci0JCQlp ZiAoaXN1cHBlcigodW5zaWduZWQgY2hhcikgY2gpKQotCQkJCWNoID0gdG9sb3dlcigodW5zaWdu ZWQgY2hhcikgY2gpOworCQkJY2ggPSBwZ19hc2NpaV90b2xvd2VyKCh1bnNpZ25lZCBjaGFyKSBj aCk7CiAJCQluID0gc3RyY2hyKHhkaWdpdHMsIGNoKSAtIHhkaWdpdHM7CiAJCQlhc3NlcnQobiA+ PSAwICYmIG4gPD0gMTUpOwogCQkJaWYgKGRpcnR5ID09IDApCi0tIAoyLjQzLjAKCg== --=-FO7LEziNcqAunHvMd/mF Content-Disposition: attachment; filename*0=v1-0005-Add-global_lc_ctype-to-hold-locale_t-for-datctype.pat; filename*1=ch Content-Type: text/x-patch; name="v1-0005-Add-global_lc_ctype-to-hold-locale_t-for-datctype.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA2MGU2NTlkZjAyYzMzYjE0ZWUyMzJjNTc4ZDhkZmRiZmUxZmI2ZGM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDYgSnVuIDIwMjUgMTQ6MTM6MTYgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDUvOF0gQWRk IGdsb2JhbF9sY19jdHlwZSB0byBob2xkIGxvY2FsZV90IGZvciBkYXRjdHlwZS4KCkNhbGxlcnMg b2YgbG9jYWxlLWF3YXJlIGN0eXBlIG9wZXJhdGlvbnMgc2hvdWxkIHVzZSB0aGUgIl9sIiB2YXJp YW50cwpvZiB0aGUgZnVuY3Rpb25zIGFuZCBwYXNzIGdsb2JhbF9sY19jdHlwZSBmb3IgdGhlIGxv Y2FsZS4gRG9pbmcgc28KYXZvaWRzIGRlcGVuZGluZyBvbiBzZXRsb2NhbGUoKS4KLS0tCiBzcmMv YmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYyB8IDMyICsrKysrKysrKysrKysrKysr KysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICB8ICAyICsr CiBzcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaCAgICAgICAgICB8ICA3ICsrKysrKwogMyBm aWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMKaW5kZXggMTk5ODU3ZTIyZGIuLmE0NWZiNGRmMzhj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYwpAQCAtODUsNiArODUsMTIg QEAgc3RhdGljIHNpemVfdCBzdHJ1cHBlcl9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0 c2l6ZSwKIAkJCQkJCQkgICBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCQkJCQkJ CSAgIHBnX2xvY2FsZV90IGxvY2FsZSk7CiAKKy8qCisgKiBSZXByZXNlbnRzIGRhdGN0eXBlIGlu IGEgZ2xvYmFsIHZhcmlhYmxlLCBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gcmVseSBvbgorICog c2V0bG9jYWxlKCkuCisgKi8KK2xvY2FsZV90CWdsb2JhbF9sY19jdHlwZSA9IE5VTEw7CisKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgY29sbGF0ZV9tZXRob2RzIGNvbGxhdGVfbWV0aG9kc19saWJjID0g ewogCS5zdHJuY29sbCA9IHN0cm5jb2xsX2xpYmMsCiAJLnN0cm54ZnJtID0gc3Rybnhmcm1fbGli YywKQEAgLTQxNyw2ICs0MjMsMjggQEAgc3RydXBwZXJfbGliY19tYihjaGFyICpkZXN0LCBzaXpl X3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJcmV0dXJuIHJl c3VsdF9zaXplOwogfQogCit2b2lkCitpbml0X2dsb2JhbF9sY19jdHlwZShjb25zdCBjaGFyICpj dHlwZSkKK3sKKwlsb2NhbGVfdAlsb2M7CisKKwllcnJubyA9IDA7CisjaWZuZGVmIFdJTjMyCisJ bG9jID0gbmV3bG9jYWxlKExDX0NUWVBFX01BU0ssIGN0eXBlLCBOVUxMKTsKKyNlbHNlCisJbG9j ID0gX2NyZWF0ZV9sb2NhbGUoTENfQUxMLCBjdHlwZSk7CisjZW5kaWYKKworCWlmICghbG9jKQor CQllcmVwb3J0KEZBVEFMLAorCQkJCShlcnJtc2coImRhdGFiYXNlIGxvY2FsZSBpcyBpbmNvbXBh dGlibGUgd2l0aCBvcGVyYXRpbmcgc3lzdGVtIiksCisJCQkJIGVycmRldGFpbCgiVGhlIGRhdGFi YXNlIHdhcyBpbml0aWFsaXplZCB3aXRoIExDX0NUWVBFIFwiJXNcIiwgIgorCQkJCQkJICAgIiB3 aGljaCBpcyBub3QgcmVjb2duaXplZCBieSBzZXRsb2NhbGUoKS4iLCBjdHlwZSksCisJCQkJIGVy cmhpbnQoIlJlY3JlYXRlIHRoZSBkYXRhYmFzZSB3aXRoIGFub3RoZXIgbG9jYWxlIG9yIGluc3Rh bGwgdGhlIG1pc3NpbmcgbG9jYWxlLiIpKSk7CisKKwlnbG9iYWxfbGNfY3R5cGUgPSBsb2M7Cit9 CisKIHBnX2xvY2FsZV90CiBjcmVhdGVfcGdfbG9jYWxlX2xpYmMoT2lkIGNvbGxpZCwgTWVtb3J5 Q29udGV4dCBjb250ZXh0KQogewpAQCAtOTEyLDcgKzk0MCw3IEBAIHdjaGFyMmNoYXIoY2hhciAq dG8sIGNvbnN0IHdjaGFyX3QgKmZyb20sIHNpemVfdCB0b2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxl KQogCWlmIChsb2NhbGUgPT0gKHBnX2xvY2FsZV90KSAwKQogCXsKIAkJLyogVXNlIHdjc3RvbWJz IGRpcmVjdGx5IGZvciB0aGUgZGVmYXVsdCBsb2NhbGUgKi8KLQkJcmVzdWx0ID0gd2NzdG9tYnMo dG8sIGZyb20sIHRvbGVuKTsKKwkJcmVzdWx0ID0gd2NzdG9tYnNfbCh0bywgZnJvbSwgdG9sZW4s IGdsb2JhbF9sY19jdHlwZSk7CiAJfQogCWVsc2UKIAl7CkBAIC05NzIsNyArMTAwMCw3IEBAIGNo YXIyd2NoYXIod2NoYXJfdCAqdG8sIHNpemVfdCB0b2xlbiwgY29uc3QgY2hhciAqZnJvbSwgc2l6 ZV90IGZyb21sZW4sCiAJCWlmIChsb2NhbGUgPT0gKHBnX2xvY2FsZV90KSAwKQogCQl7CiAJCQkv KiBVc2UgbWJzdG93Y3MgZGlyZWN0bHkgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZSAqLwotCQkJcmVz dWx0ID0gbWJzdG93Y3ModG8sIHN0ciwgdG9sZW4pOworCQkJcmVzdWx0ID0gbWJzdG93Y3NfbCh0 bywgc3RyLCB0b2xlbiwgZ2xvYmFsX2xjX2N0eXBlKTsKIAkJfQogCQllbHNlCiAJCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvcG9zdGluaXQuYwppbmRleCBjODZjZWVmZGE5NC4uM2VhYTE0ODZmNmYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTQzMSw2ICs0MzEsOCBAQCBDaGVja015RGF0YWJh c2UoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbV9zdXBlcnVzZXIsIGJvb2wgb3ZlcnJpZGVfYWxs b3dfY29ubmVjdAogCQkJCQkJICAgIiB3aGljaCBpcyBub3QgcmVjb2duaXplZCBieSBzZXRsb2Nh bGUoKS4iLCBjdHlwZSksCiAJCQkJIGVycmhpbnQoIlJlY3JlYXRlIHRoZSBkYXRhYmFzZSB3aXRo IGFub3RoZXIgbG9jYWxlIG9yIGluc3RhbGwgdGhlIG1pc3NpbmcgbG9jYWxlLiIpKSk7CiAKKwlp bml0X2dsb2JhbF9sY19jdHlwZShjdHlwZSk7CisKIAlpZiAoc3RyY21wKGN0eXBlLCAiQyIpID09 IDAgfHwKIAkJc3RyY21wKGN0eXBlLCAiUE9TSVgiKSA9PSAwKQogCQlkYXRhYmFzZV9jdHlwZV9p c19jID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKaW5kZXggN2I4Y2JmNThkMmMuLjdmZGY0MjBk ZDdhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaApAQCAtMzIsNiArMzIsMTIgQEAgZXh0ZXJuIFBHRExM SU1QT1JUIGNoYXIgKmxvY2FsaXplZF9mdWxsX2RheXNbXTsKIGV4dGVybiBQR0RMTElNUE9SVCBj aGFyICpsb2NhbGl6ZWRfYWJicmV2X21vbnRoc1tdOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIg KmxvY2FsaXplZF9mdWxsX21vbnRoc1tdOwogCisvKgorICogUmVwcmVzZW50cyBkYXRjdHlwZSBp biBhIGdsb2JhbCB2YXJpYWJsZSwgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHJlbHkgb24KKyAq IHNldGxvY2FsZSgpLgorICovCitleHRlcm4gUEdETExJTVBPUlQgbG9jYWxlX3QgZ2xvYmFsX2xj X2N0eXBlOworCiAvKiBpcyB0aGUgZGF0YWJhc2VzJ3MgTENfQ1RZUEUgdGhlIEMgbG9jYWxlPyAq LwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZGF0YWJhc2VfY3R5cGVfaXNfYzsKIApAQCAtMTIx LDYgKzEyNyw3IEBAIHN0cnVjdCBwZ19sb2NhbGVfc3RydWN0CiAJfQkJCWluZm87CiB9OwogCitl eHRlcm4gdm9pZCBpbml0X2dsb2JhbF9sY19jdHlwZShjb25zdCBjaGFyICpjdHlwZSk7CiBleHRl cm4gdm9pZCBpbml0X2RhdGFiYXNlX2NvbGxhdGlvbih2b2lkKTsKIGV4dGVybiBwZ19sb2NhbGVf dCBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNvbGxpZCk7CiAKLS0gCjIuNDMuMAoK --=-FO7LEziNcqAunHvMd/mF Content-Disposition: attachment; filename*0=v1-0006-Use-global_lc_ctype-for-callers-of-locale-aware-f.pat; filename*1=ch Content-Type: text/x-patch; name="v1-0006-Use-global_lc_ctype-for-callers-of-locale-aware-f.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjNGVhYTQwOGEwNDVkMGZmOWJhYWE0NDU3MTQ2OWJlMGZmYWJmMmYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDYgSnVuIDIwMjUgMTQ6MTc6MjIgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDYvOF0gVXNl IGdsb2JhbF9sY19jdHlwZSBmb3IgY2FsbGVycyBvZiBsb2NhbGUtYXdhcmUKIGZ1bmN0aW9ucy4K ClJhdGhlciB0aGFuIHJlbHlpbmcgb24gc2V0bG9jYWxlKCkgdG8gc2V0IHRoZSByaWdodCBMQ19D VFlQRSwgdXNlCmdsb2JhbF9sY19jdHlwZSBleHBsaWNpdGx5IHRvIHJlZmVyIHRvIGRhdGN0eXBl LgotLS0KIGNvbnRyaWIvZnV6enlzdHJtYXRjaC9kbWV0YXBob25lLmMgICAgfCAgMyArKy0KIGNv bnRyaWIvZnV6enlzdHJtYXRjaC9mdXp6eXN0cm1hdGNoLmMgfCAxOSArKysrKysrKysrKy0tLS0t LS0tCiBjb250cmliL2x0cmVlL2NyYzMyLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL3BhcnNlci9zY2Fuc3VwLmMgICAgICAgICAgfCAgMyArKy0KIHNyYy9iYWNrZW5kL3Rz ZWFyY2gvdHNfbG9jYWxlLmMgICAgICAgfCAgNCArKy0tCiBzcmMvcG9ydC9wZ3N0cmNhc2VjbXAu YyAgICAgICAgICAgICAgIHwgMjAgKysrKysrKysrKysrKystLS0tLS0KIDYgZmlsZXMgY2hhbmdl ZCwgMzIgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJp Yi9mdXp6eXN0cm1hdGNoL2RtZXRhcGhvbmUuYyBiL2NvbnRyaWIvZnV6enlzdHJtYXRjaC9kbWV0 YXBob25lLmMKaW5kZXggNjYyN2IyYjg5NDMuLjA3ZDg3ODFjZDJhIDEwMDY0NAotLS0gYS9jb250 cmliL2Z1enp5c3RybWF0Y2gvZG1ldGFwaG9uZS5jCisrKyBiL2NvbnRyaWIvZnV6enlzdHJtYXRj aC9kbWV0YXBob25lLmMKQEAgLTk5LDYgKzk5LDcgQEAgVGhlIHJlbWFpbmluZyBjb2RlIGlzIGF1 dGhvcmVkIGJ5IEFuZHJldyBEdW5zdGFuIDxhbWR1bnN0YW5AbmNzaHAub3JnPiBhbmQKICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRl ICJ1dGlscy9wZ19sb2NhbGUuaCIKIAogLyogdHVybiBvZmYgYXNzZXJ0aW9ucyBmb3IgZW1iZWRk ZWQgZnVuY3Rpb24gKi8KICNkZWZpbmUgTkRFQlVHCkBAIC0yODQsNyArMjg1LDcgQEAgTWFrZVVw cGVyKG1ldGFzdHJpbmcgKnMpCiAJY2hhcgkgICAqaTsKIAogCWZvciAoaSA9IHMtPnN0cjsgKmk7 IGkrKykKLQkJKmkgPSB0b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSAqaSk7CisJCSppID0gdG91cHBl cl9sKCh1bnNpZ25lZCBjaGFyKSAqaSwgZ2xvYmFsX2xjX2N0eXBlKTsKIH0KIAogCmRpZmYgLS1n aXQgYS9jb250cmliL2Z1enp5c3RybWF0Y2gvZnV6enlzdHJtYXRjaC5jIGIvY29udHJpYi9mdXp6 eXN0cm1hdGNoL2Z1enp5c3RybWF0Y2guYwppbmRleCBlN2NjMzE0Yjc2My4uYjYxOTE3OGExZjYg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZnV6enlzdHJtYXRjaC9mdXp6eXN0cm1hdGNoLmMKKysrIGIv Y29udHJpYi9mdXp6eXN0cm1hdGNoL2Z1enp5c3RybWF0Y2guYwpAQCAtNDEsNiArNDEsNyBAQAog I2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1 ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgogI2luY2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIKICNpbmNs dWRlICJ2YXJhdHQuaCIKIApAQCAtNTYsMTMgKzU3LDE1IEBAIHN0YXRpYyB2b2lkIF9zb3VuZGV4 KGNvbnN0IGNoYXIgKmluc3RyLCBjaGFyICpvdXRzdHIpOwogCiAjZGVmaW5lIFNPVU5ERVhfTEVO IDQKIAorI2RlZmluZSBUT1VQUEVSKHgpIHRvdXBwZXJfbCgodW5zaWduZWQgY2hhcikgKHgpLCBn bG9iYWxfbGNfY3R5cGUpCisKIC8qCQkJCQkJCQkJQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVog Ki8KIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzb3VuZGV4X3RhYmxlID0gIjAxMjMwMTIwMDIy NDU1MDEyNjIzMDEwMjAyIjsKIAogc3RhdGljIGNoYXIKIHNvdW5kZXhfY29kZShjaGFyIGxldHRl cikKIHsKLQlsZXR0ZXIgPSB0b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSBsZXR0ZXIpOworCWxldHRl ciA9IFRPVVBQRVIoKHVuc2lnbmVkIGNoYXIpIGxldHRlcik7CiAJLyogRGVmZW5kIGFnYWluc3Qg bm9uLUFTQ0lJIGxldHRlcnMgKi8KIAlpZiAobGV0dGVyID49ICdBJyAmJiBsZXR0ZXIgPD0gJ1on KQogCQlyZXR1cm4gc291bmRleF90YWJsZVtsZXR0ZXIgLSAnQSddOwpAQCAtMTI0LDcgKzEyNyw3 IEBAIGdldGNvZGUoY2hhciBjKQogewogCWlmIChpc2FscGhhKCh1bnNpZ25lZCBjaGFyKSBjKSkK IAl7Ci0JCWMgPSB0b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSBjKTsKKwkJYyA9IFRPVVBQRVIoKHVu c2lnbmVkIGNoYXIpIGMpOwogCQkvKiBEZWZlbmQgYWdhaW5zdCBub24tQVNDSUkgbGV0dGVycyAq LwogCQlpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpCiAJCQlyZXR1cm4gX2NvZGVzW2MgLSAnQSdd OwpAQCAtMzAxLDE4ICszMDQsMTggQEAgbWV0YXBob25lKFBHX0ZVTkNUSU9OX0FSR1MpCiAgKiBh Y2Nlc3NpbmcgdGhlIGFycmF5IGRpcmVjdGx5Li4uICovCiAKIC8qIExvb2sgYXQgdGhlIG5leHQg bGV0dGVyIGluIHRoZSB3b3JkICovCi0jZGVmaW5lIE5leHRfTGV0dGVyICh0b3VwcGVyKCh1bnNp Z25lZCBjaGFyKSB3b3JkW3dfaWR4KzFdKSkKKyNkZWZpbmUgTmV4dF9MZXR0ZXIgKFRPVVBQRVIo KHVuc2lnbmVkIGNoYXIpIHdvcmRbd19pZHgrMV0pKQogLyogTG9vayBhdCB0aGUgY3VycmVudCBs ZXR0ZXIgaW4gdGhlIHdvcmQgKi8KLSNkZWZpbmUgQ3Vycl9MZXR0ZXIgKHRvdXBwZXIoKHVuc2ln bmVkIGNoYXIpIHdvcmRbd19pZHhdKSkKKyNkZWZpbmUgQ3Vycl9MZXR0ZXIgKFRPVVBQRVIoKHVu c2lnbmVkIGNoYXIpIHdvcmRbd19pZHhdKSkKIC8qIEdvIE4gbGV0dGVycyBiYWNrLiAqLwogI2Rl ZmluZSBMb29rX0JhY2tfTGV0dGVyKG4pIFwKLQkod19pZHggPj0gKG4pID8gdG91cHBlcigodW5z aWduZWQgY2hhcikgd29yZFt3X2lkeC0obildKSA6ICdcMCcpCisJKHdfaWR4ID49IChuKSA/IFRP VVBQRVIoKHVuc2lnbmVkIGNoYXIpIHdvcmRbd19pZHgtKG4pXSkgOiAnXDAnKQogLyogUHJldmlv dXMgbGV0dGVyLiAgSSBkdW5ubywgc2hvdWxkIHRoaXMgcmV0dXJuIG51bGwgb24gZmFpbHVyZT8g Ki8KICNkZWZpbmUgUHJldl9MZXR0ZXIgKExvb2tfQmFja19MZXR0ZXIoMSkpCiAvKiBMb29rIHR3 byBsZXR0ZXJzIGRvd24uICBJdCBtYWtlcyBzdXJlIHlvdSBkb24ndCB3YWxrIG9mZiB0aGUgc3Ry aW5nLiAqLwogI2RlZmluZSBBZnRlcl9OZXh0X0xldHRlciBcCi0JKE5leHRfTGV0dGVyICE9ICdc MCcgPyB0b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSB3b3JkW3dfaWR4KzJdKSA6ICdcMCcpCi0jZGVm aW5lIExvb2tfQWhlYWRfTGV0dGVyKG4pIHRvdXBwZXIoKHVuc2lnbmVkIGNoYXIpIExvb2thaGVh ZCh3b3JkK3dfaWR4LCBuKSkKKwkoTmV4dF9MZXR0ZXIgIT0gJ1wwJyA/IFRPVVBQRVIoKHVuc2ln bmVkIGNoYXIpIHdvcmRbd19pZHgrMl0pIDogJ1wwJykKKyNkZWZpbmUgTG9va19BaGVhZF9MZXR0 ZXIobikgVE9VUFBFUigodW5zaWduZWQgY2hhcikgTG9va2FoZWFkKHdvcmQrd19pZHgsIG4pKQog CiAKIC8qIEFsbG93cyB1cyB0byBzYWZlbHkgbG9vayBhaGVhZCBhbiBhcmJpdHJhcnkgIyBvZiBs ZXR0ZXJzICovCkBAIC03NDIsNyArNzQ1LDcgQEAgX3NvdW5kZXgoY29uc3QgY2hhciAqaW5zdHIs IGNoYXIgKm91dHN0cikKIAl9CiAKIAkvKiBUYWtlIHRoZSBmaXJzdCBsZXR0ZXIgYXMgaXMgKi8K LQkqb3V0c3RyKysgPSAoY2hhcikgdG91cHBlcigodW5zaWduZWQgY2hhcikgKmluc3RyKyspOwor CSpvdXRzdHIrKyA9IChjaGFyKSBUT1VQUEVSKCh1bnNpZ25lZCBjaGFyKSAqaW5zdHIrKyk7CiAK IAljb3VudCA9IDE7CiAJd2hpbGUgKCppbnN0ciAmJiBjb3VudCA8IFNPVU5ERVhfTEVOKQpkaWZm IC0tZ2l0IGEvY29udHJpYi9sdHJlZS9jcmMzMi5jIGIvY29udHJpYi9sdHJlZS9jcmMzMi5jCmlu ZGV4IDEzNGY0NmE4MDVlLi4yZWE3YzhhNWVjMCAxMDA2NDQKLS0tIGEvY29udHJpYi9sdHJlZS9j cmMzMi5jCisrKyBiL2NvbnRyaWIvbHRyZWUvY3JjMzIuYwpAQCAtMTIsNyArMTIsNyBAQAogCiAj aWZkZWYgTE9XRVJfTk9ERQogI2luY2x1ZGUgPGN0eXBlLmg+Ci0jZGVmaW5lIFRPTE9XRVIoeCkJ dG9sb3dlcigodW5zaWduZWQgY2hhcikgKHgpKQorI2RlZmluZSBUT0xPV0VSKHgpCXRvbG93ZXJf bCgodW5zaWduZWQgY2hhcikgKHgpLCBnbG9iYWxfbGNfY3R5cGUpCiAjZWxzZQogI2RlZmluZSBU T0xPV0VSKHgpCSh4KQogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvc2Nh bnN1cC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3NjYW5zdXAuYwppbmRleCAyZmViMmI2Y2Y1YS4u OThjMWYzMGQwNGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9zY2Fuc3VwLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3NjYW5zdXAuYwpAQCAtMTgsNiArMTgsNyBAQAogCiAjaW5j bHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJwYXJzZXIvc2NhbnN1cC5oIgorI2luY2x1 ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgogCiAKIC8qCkBAIC02OCw3ICs2OSw3IEBAIGRvd25jYXNl X2lkZW50aWZpZXIoY29uc3QgY2hhciAqaWRlbnQsIGludCBsZW4sIGJvb2wgd2FybiwgYm9vbCB0 cnVuY2F0ZSkKIAkJaWYgKGNoID49ICdBJyAmJiBjaCA8PSAnWicpCiAJCQljaCArPSAnYScgLSAn QSc7CiAJCWVsc2UgaWYgKGVuY19pc19zaW5nbGVfYnl0ZSAmJiBJU19ISUdIQklUX1NFVChjaCkg JiYgaXN1cHBlcihjaCkpCi0JCQljaCA9IHRvbG93ZXIoY2gpOworCQkJY2ggPSB0b2xvd2VyX2wo Y2gsIGdsb2JhbF9sY19jdHlwZSk7CiAJCXJlc3VsdFtpXSA9IChjaGFyKSBjaDsKIAl9CiAJcmVz dWx0W2ldID0gJ1wwJzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfbG9jYWxl LmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX2xvY2FsZS5jCmluZGV4IGI3N2Q4YzIzZDM2Li41 MWJhM2I0MTgxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90c19sb2NhbGUuYwor KysgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX2xvY2FsZS5jCkBAIC00Myw3ICs0Myw3IEBAIHRf aXNhbHBoYShjb25zdCBjaGFyICpwdHIpCiAKIAljaGFyMndjaGFyKGNoYXJhY3RlciwgV0NfQlVG X0xFTiwgcHRyLCBjbGVuLCBteWxvY2FsZSk7CiAKLQlyZXR1cm4gaXN3YWxwaGEoKHdpbnRfdCkg Y2hhcmFjdGVyWzBdKTsKKwlyZXR1cm4gaXN3YWxwaGFfbCgod2ludF90KSBjaGFyYWN0ZXJbMF0s IGdsb2JhbF9sY19jdHlwZSk7CiB9CiAKIGludApAQCAtNTgsNyArNTgsNyBAQCB0X2lzYWxudW0o Y29uc3QgY2hhciAqcHRyKQogCiAJY2hhcjJ3Y2hhcihjaGFyYWN0ZXIsIFdDX0JVRl9MRU4sIHB0 ciwgY2xlbiwgbXlsb2NhbGUpOwogCi0JcmV0dXJuIGlzd2FsbnVtKCh3aW50X3QpIGNoYXJhY3Rl clswXSk7CisJcmV0dXJuIGlzd2FsbnVtX2woKHdpbnRfdCkgY2hhcmFjdGVyWzBdLCBnbG9iYWxf bGNfY3R5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9wb3J0L3Bnc3RyY2FzZWNtcC5jIGIv c3JjL3BvcnQvcGdzdHJjYXNlY21wLmMKaW5kZXggZWMyYjNhNzVjM2QuLmY2ZGM2YjBmZjNiIDEw MDY0NAotLS0gYS9zcmMvcG9ydC9wZ3N0cmNhc2VjbXAuYworKysgYi9zcmMvcG9ydC9wZ3N0cmNh c2VjbXAuYwpAQCAtMjgsNiArMjgsMTQgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKKyNpZm5k ZWYgRlJPTlRFTkQKK2V4dGVybiBQR0RMTElNUE9SVCBsb2NhbGVfdCBnbG9iYWxfbGNfY3R5cGU7 CisjZGVmaW5lIFRPVVBQRVIoeCkgdG91cHBlcl9sKCh1bnNpZ25lZCBjaGFyKSAoeCksIGdsb2Jh bF9sY19jdHlwZSkKKyNkZWZpbmUgVE9MT1dFUih4KSB0b2xvd2VyX2woKHVuc2lnbmVkIGNoYXIp ICh4KSwgZ2xvYmFsX2xjX2N0eXBlKQorI2Vsc2UKKyNkZWZpbmUgVE9VUFBFUih4KSB0b3VwcGVy KHgpCisjZGVmaW5lIFRPTE9XRVIoeCkgdG9sb3dlcih4KQorI2VuZGlmCiAKIC8qCiAgKiBDYXNl LWluZGVwZW5kZW50IGNvbXBhcmlzb24gb2YgdHdvIG51bGwtdGVybWluYXRlZCBzdHJpbmdzLgpA QCAtNDUsMTIgKzUzLDEyIEBAIHBnX3N0cmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNo YXIgKnMyKQogCQkJaWYgKGNoMSA+PSAnQScgJiYgY2gxIDw9ICdaJykKIAkJCQljaDEgKz0gJ2En IC0gJ0EnOwogCQkJZWxzZSBpZiAoSVNfSElHSEJJVF9TRVQoY2gxKSAmJiBpc3VwcGVyKGNoMSkp Ci0JCQkJY2gxID0gdG9sb3dlcihjaDEpOworCQkJCWNoMSA9IFRPTE9XRVIoY2gxKTsKIAogCQkJ aWYgKGNoMiA+PSAnQScgJiYgY2gyIDw9ICdaJykKIAkJCQljaDIgKz0gJ2EnIC0gJ0EnOwogCQkJ ZWxzZSBpZiAoSVNfSElHSEJJVF9TRVQoY2gyKSAmJiBpc3VwcGVyKGNoMikpCi0JCQkJY2gyID0g dG9sb3dlcihjaDIpOworCQkJCWNoMiA9IFRPTE9XRVIoY2gyKTsKIAogCQkJaWYgKGNoMSAhPSBj aDIpCiAJCQkJcmV0dXJuIChpbnQpIGNoMSAtIChpbnQpIGNoMjsKQEAgLTc4LDEyICs4NiwxMiBA QCBwZ19zdHJuY2FzZWNtcChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIsIHNpemVfdCBu KQogCQkJaWYgKGNoMSA+PSAnQScgJiYgY2gxIDw9ICdaJykKIAkJCQljaDEgKz0gJ2EnIC0gJ0En OwogCQkJZWxzZSBpZiAoSVNfSElHSEJJVF9TRVQoY2gxKSAmJiBpc3VwcGVyKGNoMSkpCi0JCQkJ Y2gxID0gdG9sb3dlcihjaDEpOworCQkJCWNoMSA9IFRPTE9XRVIoY2gxKTsKIAogCQkJaWYgKGNo MiA+PSAnQScgJiYgY2gyIDw9ICdaJykKIAkJCQljaDIgKz0gJ2EnIC0gJ0EnOwogCQkJZWxzZSBp ZiAoSVNfSElHSEJJVF9TRVQoY2gyKSAmJiBpc3VwcGVyKGNoMikpCi0JCQkJY2gyID0gdG9sb3dl cihjaDIpOworCQkJCWNoMiA9IFRPTE9XRVIoY2gyKTsKIAogCQkJaWYgKGNoMSAhPSBjaDIpCiAJ CQkJcmV0dXJuIChpbnQpIGNoMSAtIChpbnQpIGNoMjsKQEAgLTEwNyw3ICsxMTUsNyBAQCBwZ190 b3VwcGVyKHVuc2lnbmVkIGNoYXIgY2gpCiAJaWYgKGNoID49ICdhJyAmJiBjaCA8PSAneicpCiAJ CWNoICs9ICdBJyAtICdhJzsKIAllbHNlIGlmIChJU19ISUdIQklUX1NFVChjaCkgJiYgaXNsb3dl cihjaCkpCi0JCWNoID0gdG91cHBlcihjaCk7CisJCWNoID0gVE9VUFBFUihjaCk7CiAJcmV0dXJu IGNoOwogfQogCkBAIC0xMjQsNyArMTMyLDcgQEAgcGdfdG9sb3dlcih1bnNpZ25lZCBjaGFyIGNo KQogCWlmIChjaCA+PSAnQScgJiYgY2ggPD0gJ1onKQogCQljaCArPSAnYScgLSAnQSc7CiAJZWxz ZSBpZiAoSVNfSElHSEJJVF9TRVQoY2gpICYmIGlzdXBwZXIoY2gpKQotCQljaCA9IHRvbG93ZXIo Y2gpOworCQljaCA9IFRPTE9XRVIoY2gpOwogCXJldHVybiBjaDsKIH0KIAotLSAKMi40My4wCgo= --=-FO7LEziNcqAunHvMd/mF Content-Disposition: attachment; filename*0=v1-0007-Fix-the-last-remaining-callers-relying-on-setloca.pat; filename*1=ch Content-Type: text/x-patch; name="v1-0007-Fix-the-last-remaining-callers-relying-on-setloca.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAwZmI0Nzk3NDNkZTYwYTU5YzkxMzlkMjdkOTgxODgxZjMzN2JlY2IyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDYgSnVuIDIwMjUgMTQ6MTc6MzMgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDcvOF0gRml4 IHRoZSBsYXN0IHJlbWFpbmluZyBjYWxsZXJzIHJlbHlpbmcgb24gc2V0bG9jYWxlKCkuCgotLS0K IGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBjb25maWd1cmUuYWMg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArKwogbWVzb24uYnVpbGQgICAgICAgICAgICAgICAg ICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlcl9kZWYuYyB8IDQwICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIHNyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmlu ICAgICAgICB8ICA2ICsrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDRm MTUzNDdjYzk1Li4yNjYwYzI5ZTBkMiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZp Z3VyZQpAQCAtMTU2MTYsNyArMTU2MTYsNyBAQCBmaQogTElCU19pbmNsdWRpbmdfcmVhZGxpbmU9 IiRMSUJTIgogTElCUz1gZWNobyAiJExJQlMiIHwgc2VkIC1lICdzLy1sZWRpdC8vZycgLWUgJ3Mv LWxyZWFkbGluZS8vZydgCiAKLWZvciBhY19mdW5jIGluIGJhY2t0cmFjZV9zeW1ib2xzIGNvcHlm aWxlIGNvcHlfZmlsZV9yYW5nZSBlbGZfYXV4X2luZm8gZ2V0YXV4dmFsIGdldGlmYWRkcnMgZ2V0 cGVlcnVjcmVkIGluZXRfcHRvbiBrcXVldWUgbG9jYWxlY29udl9sIG1ic3Rvd2NzX2wgcG9zaXhf ZmFsbG9jYXRlIHBwb2xsIHB0aHJlYWRfaXNfdGhyZWFkZWRfbnAgc2V0cHJvY3RpdGxlIHNldHBy b2N0aXRsZV9mYXN0IHN0cnNpZ25hbCBzeW5jZnMgc3luY19maWxlX3JhbmdlIHVzZWxvY2FsZSB3 Y3N0b21ic19sCitmb3IgYWNfZnVuYyBpbiBiYWNrdHJhY2Vfc3ltYm9scyBjb3B5ZmlsZSBjb3B5 X2ZpbGVfcmFuZ2UgZWxmX2F1eF9pbmZvIGdldGF1eHZhbCBnZXRpZmFkZHJzIGdldHBlZXJ1Y3Jl ZCBpbmV0X3B0b24gaXN3eGRpZ2l0X2wgaXN4ZGlnaXRfbCBrcXVldWUgbG9jYWxlY29udl9sIG1i c3Rvd2NzX2wgcG9zaXhfZmFsbG9jYXRlIHBwb2xsIHB0aHJlYWRfaXNfdGhyZWFkZWRfbnAgc2V0 cHJvY3RpdGxlIHNldHByb2N0aXRsZV9mYXN0IHN0cnNpZ25hbCBzeW5jZnMgc3luY19maWxlX3Jh bmdlIHVzZWxvY2FsZSB3Y3N0b21ic19sCiBkbyA6CiAgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFj X2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAogYWNfZm5fY19jaGVja19mdW5jICIkTElO RU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIv Y29uZmlndXJlLmFjCmluZGV4IDRiODMzNWRjNjEzLi4yZDE2YzVmZDQzZiAxMDA2NDQKLS0tIGEv Y29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMTc4OSw2ICsxNzg5LDggQEAgQUNf Q0hFQ0tfRlVOQ1MobTRfbm9ybWFsaXplKFsKIAlnZXRpZmFkZHJzCiAJZ2V0cGVlcnVjcmVkCiAJ aW5ldF9wdG9uCisJaXN3eGRpZ2l0X2wKKwlpc3hkaWdpdF9sCiAJa3F1ZXVlCiAJbG9jYWxlY29u dl9sCiAJbWJzdG93Y3NfbApkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZApp bmRleCBkMTQyZTNlNDA4Yi4uMGJkNmY5ZjIwNzYgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisr KyBiL21lc29uLmJ1aWxkCkBAIC0yODgwLDYgKzI4ODAsOCBAQCBmdW5jX2NoZWNrcyA9IFsKICAg WydnZXRwZWVydWNyZWQnXSwKICAgWydpbmV0X2F0b24nXSwKICAgWydpbmV0X3B0b24nXSwKKyAg Wydpc3d4ZGlnaXRfbCddLAorICBbJ2lzeGRpZ2l0X2wnXSwKICAgWydrcXVldWUnXSwKICAgWyds b2NhbGVjb252X2wnXSwKICAgWydtYnN0b3djc19sJ10sCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC90c2VhcmNoL3dwYXJzZXJfZGVmLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3dwYXJzZXJfZGVm LmMKaW5kZXggNzliY2QzMmEwNjMuLjBmZTkwYjdhZDhkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC90c2VhcmNoL3dwYXJzZXJfZGVmLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC93cGFyc2Vy X2RlZi5jCkBAIC00MTEsNiArNDExLDQwIEBAIFRQYXJzZXJDb3B5Q2xvc2UoVFBhcnNlciAqcHJz KQogfQogCiAKKyNpZm5kZWYgSEFWRV9JU1hESUdJVF9MCitzdGF0aWMgaW50Citpc3hkaWdpdF9s KHdpbnRfdCB3YywgbG9jYWxlX3QgbG9jKQoreworI2lmZGVmIFdJTjMyCisJcmV0dXJuIF9pc3hk aWdpdF9sKHdjLCBsb2MpOworI2Vsc2UKKwlzaXplX3QJCXJlc3VsdDsKKwlsb2NhbGVfdAlzYXZl X2xvY2FsZSA9IHVzZWxvY2FsZShsb2MpOworCisJcmVzdWx0ID0gaXN4ZGlnaXQod2MpOworCXVz ZWxvY2FsZShzYXZlX2xvY2FsZSk7CisJcmV0dXJuIHJlc3VsdDsKKyNlbmRpZgorfQorI2VuZGlm CisjaWZuZGVmIEhBVkVfSVNXWERJR0lUX0wKK3N0YXRpYyBpbnQKK2lzd3hkaWdpdF9sKHdpbnRf dCB3YywgbG9jYWxlX3QgbG9jKQoreworI2lmZGVmIFdJTjMyCisJcmV0dXJuIF9pc3d4ZGlnaXRf bCh3YywgbG9jKTsKKyNlbHNlCisJc2l6ZV90CQlyZXN1bHQ7CisJbG9jYWxlX3QJc2F2ZV9sb2Nh bGUgPSB1c2Vsb2NhbGUobG9jKTsKKworCXJlc3VsdCA9IGlzd3hkaWdpdCh3Yyk7CisJdXNlbG9j YWxlKHNhdmVfbG9jYWxlKTsKKwlyZXR1cm4gcmVzdWx0OworI2VuZGlmCit9CisjZW5kaWYKKwor CiAvKgogICogQ2hhcmFjdGVyLXR5cGUgc3VwcG9ydCBmdW5jdGlvbnMsIGVxdWl2YWxlbnQgdG8g aXMqIG1hY3JvcywgYnV0CiAgKiB3b3JraW5nIHdpdGggYW55IHBvc3NpYmxlIGVuY29kaW5ncyBh bmQgbG9jYWxlcy4gTm90ZXM6CkBAIC00MzYsOSArNDcwLDExIEBAIHBfaXMjI3R5cGUoVFBhcnNl ciAqcHJzKQkJCQkJCQkJCQkJCQlcCiAJCQkJcmV0dXJuIG5vbmFzY2lpOwkJCQkJCQkJCQkJXAog CQkJcmV0dXJuIGlzIyN0eXBlKGMpOwkJCQkJCQkJCQkJCVwKIAkJfQkJCQkJCQkJCQkJCQkJCQkJ XAotCQlyZXR1cm4gaXN3IyN0eXBlKCoocHJzLT53c3RyICsgcHJzLT5zdGF0ZS0+cG9zY2hhcikp OwkJCQlcCisJCXJldHVybiBpc3cjI3R5cGUjI19sKCoocHJzLT53c3RyICsgcHJzLT5zdGF0ZS0+ cG9zY2hhciksCQkJXAorCQkJCQkJCSBnbG9iYWxfbGNfY3R5cGUpOwkJCQkJCQkJXAogCX0JCQkJ CQkJCQkJCQkJCQkJCQlcCi0JcmV0dXJuIGlzIyN0eXBlKCoodW5zaWduZWQgY2hhciAqKSAocHJz LT5zdHIgKyBwcnMtPnN0YXRlLT5wb3NieXRlKSk7CVwKKwlyZXR1cm4gaXMjI3R5cGUjI19sKCoo dW5zaWduZWQgY2hhciAqKSAocHJzLT5zdHIgKyBwcnMtPnN0YXRlLT5wb3NieXRlKSwJXAorCQkJ CQkJZ2xvYmFsX2xjX2N0eXBlKTsJCQkJCQkJCQlcCiB9CQkJCQkJCQkJCQkJCQkJCQkJCVwKIAkJ CQkJCQkJCQkJCQkJCQkJCQlcCiBzdGF0aWMgaW50CQkJCQkJCQkJCQkJCQkJCQlcCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5o LmluCmluZGV4IDcyNmE3YzFiZTFmLi5mMDYzOTZjOTRmNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcGdfY29uZmlnLmguaW4KKysrIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KQEAgLTIy OSw2ICsyMjksMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBnbG9iYWwgdmFy aWFibGUgJ2ludCB0aW1lem9uZScuICovCiAjdW5kZWYgSEFWRV9JTlRfVElNRVpPTkUKIAorLyog RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpc3d4ZGlnaXRfbCcgZnVuY3Rpb24uICovCisj dW5kZWYgSEFWRV9JU1dYRElHSVRfTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg YGlzeGRpZ2l0X2wnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfSVNYRElHSVRfTAorCiAvKiBE ZWZpbmUgdG8gMSBpZiBfX2J1aWx0aW5fY29uc3RhbnRfcCh4KSBpbXBsaWVzICJpIih4KSBhY2Nl cHRhbmNlLiAqLwogI3VuZGVmIEhBVkVfSV9DT05TVFJBSU5UX19CVUlMVElOX0NPTlNUQU5UX1AK IAotLSAKMi40My4wCgo= --=-FO7LEziNcqAunHvMd/mF Content-Disposition: attachment; filename="v1-0008-Set-process-LC_COLLATE-C-and-LC_CTYPE-C.patch" Content-Type: text/x-patch; name="v1-0008-Set-process-LC_COLLATE-C-and-LC_CTYPE-C.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA5ZGM0OTEyMWEzOTFjY2RlZmExOTkwNDMyOTE3MWUxZmJlOWE4YTNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDYgSnVuIDIwMjUgMTQ6MTQ6MjIgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDgvOF0gU2V0 IHByb2Nlc3MgTENfQ09MTEFURT1DIGFuZCBMQ19DVFlQRT1DLgoKTm93IHRoYXQgbG9jYWxlLWF3 YXJlIGZ1bmN0aW9ucyB1c2UgZ2xvYmFsX2xjX2xvY2FsZSByYXRoZXIgdGhhbgpyZWx5aW5nIG9u IHNldGxvY2FsZSgpLCBzZXQgTENfQ09MTEFURSBhbmQgTENfQ1RZUEUgdG8gQyBmb3IKY29uc2lz dGVuY3kuCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIHwgMjQgKysrKysr KysrKystLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5p dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IDNlYWExNDg2ZjZm Li45ODQxYTMzNjg5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5p dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwpAQCAtNDE3LDE5ICs0 MTcsMTcgQEAgQ2hlY2tNeURhdGFiYXNlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgYW1fc3VwZXJ1 c2VyLCBib29sIG92ZXJyaWRlX2FsbG93X2Nvbm5lY3QKIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0 ck5vdE51bGwoREFUQUJBU0VPSUQsIHR1cCwgQW51bV9wZ19kYXRhYmFzZV9kYXRjdHlwZSk7CiAJ Y3R5cGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKIAotCWlmIChwZ19wZXJtX3NldGxv Y2FsZShMQ19DT0xMQVRFLCBjb2xsYXRlKSA9PSBOVUxMKQotCQllcmVwb3J0KEZBVEFMLAotCQkJ CShlcnJtc2coImRhdGFiYXNlIGxvY2FsZSBpcyBpbmNvbXBhdGlibGUgd2l0aCBvcGVyYXRpbmcg c3lzdGVtIiksCi0JCQkJIGVycmRldGFpbCgiVGhlIGRhdGFiYXNlIHdhcyBpbml0aWFsaXplZCB3 aXRoIExDX0NPTExBVEUgXCIlc1wiLCAiCi0JCQkJCQkgICAiIHdoaWNoIGlzIG5vdCByZWNvZ25p emVkIGJ5IHNldGxvY2FsZSgpLiIsIGNvbGxhdGUpLAotCQkJCSBlcnJoaW50KCJSZWNyZWF0ZSB0 aGUgZGF0YWJhc2Ugd2l0aCBhbm90aGVyIGxvY2FsZSBvciBpbnN0YWxsIHRoZSBtaXNzaW5nIGxv Y2FsZS4iKSkpOwotCi0JaWYgKHBnX3Blcm1fc2V0bG9jYWxlKExDX0NUWVBFLCBjdHlwZSkgPT0g TlVMTCkKLQkJZXJlcG9ydChGQVRBTCwKLQkJCQkoZXJybXNnKCJkYXRhYmFzZSBsb2NhbGUgaXMg aW5jb21wYXRpYmxlIHdpdGggb3BlcmF0aW5nIHN5c3RlbSIpLAotCQkJCSBlcnJkZXRhaWwoIlRo ZSBkYXRhYmFzZSB3YXMgaW5pdGlhbGl6ZWQgd2l0aCBMQ19DVFlQRSBcIiVzXCIsICIKLQkJCQkJ CSAgICIgd2hpY2ggaXMgbm90IHJlY29nbml6ZWQgYnkgc2V0bG9jYWxlKCkuIiwgY3R5cGUpLAot CQkJCSBlcnJoaW50KCJSZWNyZWF0ZSB0aGUgZGF0YWJhc2Ugd2l0aCBhbm90aGVyIGxvY2FsZSBv ciBpbnN0YWxsIHRoZSBtaXNzaW5nIGxvY2FsZS4iKSkpOworCS8qCisJICogU2V0IExDX0NPTExB VEUgYW5kIExDX0NUWVBFIGJvdGggdG8gIkMiIGZvciBjb25zaXN0ZW5jeS4KKwkgKgorCSAqIEhp c3RvcmljYWxseSwgdGhlc2Ugd2VyZSBzZXQgdG8gZGF0Y29sbGF0ZSBhbmQgZGF0Y3R5cGUsIHJl c3BlY3RpdmVseSwKKwkgKiBidXQgdGhhdCBtYWRlIGl0IHRvbyBlYXN5IHRvIGRlcGVuZCBvbiBz ZXRsb2NhbGUoKSBhdCBvZGQgcGxhY2VzCisJICogdGhyb3VnaG91dCB0aGUgc2VydmVyLgorCSAq LworCWlmIChwZ19wZXJtX3NldGxvY2FsZShMQ19DT0xMQVRFLCAiQyIpID09IE5VTEwpCisJCWVs b2coRVJST1IsICJmYWlsdXJlIHNldHRpbmcgTENfQ09MTEFURT1cIkNcIiIpOworCWlmIChwZ19w ZXJtX3NldGxvY2FsZShMQ19DVFlQRSwgIkMiKSA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAiZmFp bHVyZSBzZXR0aW5nIExDX0NUWVBFPVwiQ1wiIik7CiAKIAlpbml0X2dsb2JhbF9sY19jdHlwZShj dHlwZSk7CiAKLS0gCjIuNDMuMAoK --=-FO7LEziNcqAunHvMd/mF--