xref: /kernel/linux/linux-5.10/fs/cifs/winucase.c (revision 8c2ecf20)
18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * fs/cifs/winucase.c
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (c) Jeffrey Layton <jlayton@redhat.com>, 2013
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * The const tables in this file were converted from the following info
88c2ecf20Sopenharmony_ci * provided by Microsoft:
98c2ecf20Sopenharmony_ci *
108c2ecf20Sopenharmony_ci * 3.1.5.3 Mapping UTF-16 Strings to Upper Case:
118c2ecf20Sopenharmony_ci *
128c2ecf20Sopenharmony_ci * https://msdn.microsoft.com/en-us/library/hh877830.aspx
138c2ecf20Sopenharmony_ci * http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=10921
148c2ecf20Sopenharmony_ci *
158c2ecf20Sopenharmony_ci * In particular, the table in "Windows 8 Upper Case Mapping Table.txt" was
168c2ecf20Sopenharmony_ci * post-processed using the winucase_convert.pl script.
178c2ecf20Sopenharmony_ci */
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci#include <linux/nls.h>
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ciwchar_t cifs_toupper(wchar_t in);  /* quiet sparse */
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_cistatic const wchar_t t2_00[256] = {
248c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
258c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
268c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
278c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
288c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
298c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
308c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
318c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
328c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
338c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
348c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
358c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
368c2ecf20Sopenharmony_ci	0x0000, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
378c2ecf20Sopenharmony_ci	0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
388c2ecf20Sopenharmony_ci	0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
398c2ecf20Sopenharmony_ci	0x0058, 0x0059, 0x005a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
408c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
418c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
428c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
438c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
448c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
458c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
468c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
478c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
488c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
498c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
508c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
518c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
528c2ecf20Sopenharmony_ci	0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
538c2ecf20Sopenharmony_ci	0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
548c2ecf20Sopenharmony_ci	0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0000,
558c2ecf20Sopenharmony_ci	0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0178,
568c2ecf20Sopenharmony_ci};
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_cistatic const wchar_t t2_01[256] = {
598c2ecf20Sopenharmony_ci	0x0000, 0x0100, 0x0000, 0x0102, 0x0000, 0x0104, 0x0000, 0x0106,
608c2ecf20Sopenharmony_ci	0x0000, 0x0108, 0x0000, 0x010a, 0x0000, 0x010c, 0x0000, 0x010e,
618c2ecf20Sopenharmony_ci	0x0000, 0x0110, 0x0000, 0x0112, 0x0000, 0x0114, 0x0000, 0x0116,
628c2ecf20Sopenharmony_ci	0x0000, 0x0118, 0x0000, 0x011a, 0x0000, 0x011c, 0x0000, 0x011e,
638c2ecf20Sopenharmony_ci	0x0000, 0x0120, 0x0000, 0x0122, 0x0000, 0x0124, 0x0000, 0x0126,
648c2ecf20Sopenharmony_ci	0x0000, 0x0128, 0x0000, 0x012a, 0x0000, 0x012c, 0x0000, 0x012e,
658c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0132, 0x0000, 0x0134, 0x0000, 0x0136,
668c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0139, 0x0000, 0x013b, 0x0000, 0x013d, 0x0000,
678c2ecf20Sopenharmony_ci	0x013f, 0x0000, 0x0141, 0x0000, 0x0143, 0x0000, 0x0145, 0x0000,
688c2ecf20Sopenharmony_ci	0x0147, 0x0000, 0x0000, 0x014a, 0x0000, 0x014c, 0x0000, 0x014e,
698c2ecf20Sopenharmony_ci	0x0000, 0x0150, 0x0000, 0x0152, 0x0000, 0x0154, 0x0000, 0x0156,
708c2ecf20Sopenharmony_ci	0x0000, 0x0158, 0x0000, 0x015a, 0x0000, 0x015c, 0x0000, 0x015e,
718c2ecf20Sopenharmony_ci	0x0000, 0x0160, 0x0000, 0x0162, 0x0000, 0x0164, 0x0000, 0x0166,
728c2ecf20Sopenharmony_ci	0x0000, 0x0168, 0x0000, 0x016a, 0x0000, 0x016c, 0x0000, 0x016e,
738c2ecf20Sopenharmony_ci	0x0000, 0x0170, 0x0000, 0x0172, 0x0000, 0x0174, 0x0000, 0x0176,
748c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0179, 0x0000, 0x017b, 0x0000, 0x017d, 0x0000,
758c2ecf20Sopenharmony_ci	0x0243, 0x0000, 0x0000, 0x0182, 0x0000, 0x0184, 0x0000, 0x0000,
768c2ecf20Sopenharmony_ci	0x0187, 0x0000, 0x0000, 0x0000, 0x018b, 0x0000, 0x0000, 0x0000,
778c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0191, 0x0000, 0x0000, 0x01f6, 0x0000, 0x0000,
788c2ecf20Sopenharmony_ci	0x0000, 0x0198, 0x023d, 0x0000, 0x0000, 0x0000, 0x0220, 0x0000,
798c2ecf20Sopenharmony_ci	0x0000, 0x01a0, 0x0000, 0x01a2, 0x0000, 0x01a4, 0x0000, 0x0000,
808c2ecf20Sopenharmony_ci	0x01a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x01ac, 0x0000, 0x0000,
818c2ecf20Sopenharmony_ci	0x01af, 0x0000, 0x0000, 0x0000, 0x01b3, 0x0000, 0x01b5, 0x0000,
828c2ecf20Sopenharmony_ci	0x0000, 0x01b8, 0x0000, 0x0000, 0x0000, 0x01bc, 0x0000, 0x01f7,
838c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01c4, 0x0000,
848c2ecf20Sopenharmony_ci	0x0000, 0x01c7, 0x0000, 0x0000, 0x01ca, 0x0000, 0x01cd, 0x0000,
858c2ecf20Sopenharmony_ci	0x01cf, 0x0000, 0x01d1, 0x0000, 0x01d3, 0x0000, 0x01d5, 0x0000,
868c2ecf20Sopenharmony_ci	0x01d7, 0x0000, 0x01d9, 0x0000, 0x01db, 0x018e, 0x0000, 0x01de,
878c2ecf20Sopenharmony_ci	0x0000, 0x01e0, 0x0000, 0x01e2, 0x0000, 0x01e4, 0x0000, 0x01e6,
888c2ecf20Sopenharmony_ci	0x0000, 0x01e8, 0x0000, 0x01ea, 0x0000, 0x01ec, 0x0000, 0x01ee,
898c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x01f1, 0x0000, 0x01f4, 0x0000, 0x0000,
908c2ecf20Sopenharmony_ci	0x0000, 0x01f8, 0x0000, 0x01fa, 0x0000, 0x01fc, 0x0000, 0x01fe,
918c2ecf20Sopenharmony_ci};
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_cistatic const wchar_t t2_02[256] = {
948c2ecf20Sopenharmony_ci	0x0000, 0x0200, 0x0000, 0x0202, 0x0000, 0x0204, 0x0000, 0x0206,
958c2ecf20Sopenharmony_ci	0x0000, 0x0208, 0x0000, 0x020a, 0x0000, 0x020c, 0x0000, 0x020e,
968c2ecf20Sopenharmony_ci	0x0000, 0x0210, 0x0000, 0x0212, 0x0000, 0x0214, 0x0000, 0x0216,
978c2ecf20Sopenharmony_ci	0x0000, 0x0218, 0x0000, 0x021a, 0x0000, 0x021c, 0x0000, 0x021e,
988c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0222, 0x0000, 0x0224, 0x0000, 0x0226,
998c2ecf20Sopenharmony_ci	0x0000, 0x0228, 0x0000, 0x022a, 0x0000, 0x022c, 0x0000, 0x022e,
1008c2ecf20Sopenharmony_ci	0x0000, 0x0230, 0x0000, 0x0232, 0x0000, 0x0000, 0x0000, 0x0000,
1018c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x023b, 0x0000, 0x0000, 0x0000,
1028c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0246,
1038c2ecf20Sopenharmony_ci	0x0000, 0x0248, 0x0000, 0x024a, 0x0000, 0x024c, 0x0000, 0x024e,
1048c2ecf20Sopenharmony_ci	0x2c6f, 0x2c6d, 0x0000, 0x0181, 0x0186, 0x0000, 0x0189, 0x018a,
1058c2ecf20Sopenharmony_ci	0x0000, 0x018f, 0x0000, 0x0190, 0x0000, 0x0000, 0x0000, 0x0000,
1068c2ecf20Sopenharmony_ci	0x0193, 0x0000, 0x0000, 0x0194, 0x0000, 0x0000, 0x0000, 0x0000,
1078c2ecf20Sopenharmony_ci	0x0197, 0x0196, 0x0000, 0x2c62, 0x0000, 0x0000, 0x0000, 0x019c,
1088c2ecf20Sopenharmony_ci	0x0000, 0x2c6e, 0x019d, 0x0000, 0x0000, 0x019f, 0x0000, 0x0000,
1098c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2c64, 0x0000, 0x0000,
1108c2ecf20Sopenharmony_ci	0x01a6, 0x0000, 0x0000, 0x01a9, 0x0000, 0x0000, 0x0000, 0x0000,
1118c2ecf20Sopenharmony_ci	0x01ae, 0x0244, 0x01b1, 0x01b2, 0x0245, 0x0000, 0x0000, 0x0000,
1128c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x01b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1138c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1148c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1158c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1168c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1178c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1188c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1198c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1208c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1218c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1228c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1238c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1248c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1258c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1268c2ecf20Sopenharmony_ci};
1278c2ecf20Sopenharmony_ci
1288c2ecf20Sopenharmony_cistatic const wchar_t t2_03[256] = {
1298c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1308c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1318c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1328c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1338c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1348c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1358c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1368c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1378c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1388c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1398c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1408c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1418c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1428c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1438c2ecf20Sopenharmony_ci	0x0000, 0x0370, 0x0000, 0x0372, 0x0000, 0x0000, 0x0000, 0x0376,
1448c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x03fd, 0x03fe, 0x03ff, 0x0000, 0x0000,
1458c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1468c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1478c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1488c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1498c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1508c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0386, 0x0388, 0x0389, 0x038a,
1518c2ecf20Sopenharmony_ci	0x0000, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
1528c2ecf20Sopenharmony_ci	0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
1538c2ecf20Sopenharmony_ci	0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
1548c2ecf20Sopenharmony_ci	0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x038c, 0x038e, 0x038f, 0x0000,
1558c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03cf,
1568c2ecf20Sopenharmony_ci	0x0000, 0x03d8, 0x0000, 0x03da, 0x0000, 0x03dc, 0x0000, 0x03de,
1578c2ecf20Sopenharmony_ci	0x0000, 0x03e0, 0x0000, 0x03e2, 0x0000, 0x03e4, 0x0000, 0x03e6,
1588c2ecf20Sopenharmony_ci	0x0000, 0x03e8, 0x0000, 0x03ea, 0x0000, 0x03ec, 0x0000, 0x03ee,
1598c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x03f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1608c2ecf20Sopenharmony_ci	0x03f7, 0x0000, 0x0000, 0x03fa, 0x0000, 0x0000, 0x0000, 0x0000,
1618c2ecf20Sopenharmony_ci};
1628c2ecf20Sopenharmony_ci
1638c2ecf20Sopenharmony_cistatic const wchar_t t2_04[256] = {
1648c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1658c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1668c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1678c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1688c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1698c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1708c2ecf20Sopenharmony_ci	0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
1718c2ecf20Sopenharmony_ci	0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
1728c2ecf20Sopenharmony_ci	0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
1738c2ecf20Sopenharmony_ci	0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
1748c2ecf20Sopenharmony_ci	0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
1758c2ecf20Sopenharmony_ci	0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x040d, 0x040e, 0x040f,
1768c2ecf20Sopenharmony_ci	0x0000, 0x0460, 0x0000, 0x0462, 0x0000, 0x0464, 0x0000, 0x0466,
1778c2ecf20Sopenharmony_ci	0x0000, 0x0468, 0x0000, 0x046a, 0x0000, 0x046c, 0x0000, 0x046e,
1788c2ecf20Sopenharmony_ci	0x0000, 0x0470, 0x0000, 0x0472, 0x0000, 0x0474, 0x0000, 0x0476,
1798c2ecf20Sopenharmony_ci	0x0000, 0x0478, 0x0000, 0x047a, 0x0000, 0x047c, 0x0000, 0x047e,
1808c2ecf20Sopenharmony_ci	0x0000, 0x0480, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1818c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x048a, 0x0000, 0x048c, 0x0000, 0x048e,
1828c2ecf20Sopenharmony_ci	0x0000, 0x0490, 0x0000, 0x0492, 0x0000, 0x0494, 0x0000, 0x0496,
1838c2ecf20Sopenharmony_ci	0x0000, 0x0498, 0x0000, 0x049a, 0x0000, 0x049c, 0x0000, 0x049e,
1848c2ecf20Sopenharmony_ci	0x0000, 0x04a0, 0x0000, 0x04a2, 0x0000, 0x04a4, 0x0000, 0x04a6,
1858c2ecf20Sopenharmony_ci	0x0000, 0x04a8, 0x0000, 0x04aa, 0x0000, 0x04ac, 0x0000, 0x04ae,
1868c2ecf20Sopenharmony_ci	0x0000, 0x04b0, 0x0000, 0x04b2, 0x0000, 0x04b4, 0x0000, 0x04b6,
1878c2ecf20Sopenharmony_ci	0x0000, 0x04b8, 0x0000, 0x04ba, 0x0000, 0x04bc, 0x0000, 0x04be,
1888c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x04c1, 0x0000, 0x04c3, 0x0000, 0x04c5, 0x0000,
1898c2ecf20Sopenharmony_ci	0x04c7, 0x0000, 0x04c9, 0x0000, 0x04cb, 0x0000, 0x04cd, 0x04c0,
1908c2ecf20Sopenharmony_ci	0x0000, 0x04d0, 0x0000, 0x04d2, 0x0000, 0x04d4, 0x0000, 0x04d6,
1918c2ecf20Sopenharmony_ci	0x0000, 0x04d8, 0x0000, 0x04da, 0x0000, 0x04dc, 0x0000, 0x04de,
1928c2ecf20Sopenharmony_ci	0x0000, 0x04e0, 0x0000, 0x04e2, 0x0000, 0x04e4, 0x0000, 0x04e6,
1938c2ecf20Sopenharmony_ci	0x0000, 0x04e8, 0x0000, 0x04ea, 0x0000, 0x04ec, 0x0000, 0x04ee,
1948c2ecf20Sopenharmony_ci	0x0000, 0x04f0, 0x0000, 0x04f2, 0x0000, 0x04f4, 0x0000, 0x04f6,
1958c2ecf20Sopenharmony_ci	0x0000, 0x04f8, 0x0000, 0x04fa, 0x0000, 0x04fc, 0x0000, 0x04fe,
1968c2ecf20Sopenharmony_ci};
1978c2ecf20Sopenharmony_ci
1988c2ecf20Sopenharmony_cistatic const wchar_t t2_05[256] = {
1998c2ecf20Sopenharmony_ci	0x0000, 0x0500, 0x0000, 0x0502, 0x0000, 0x0504, 0x0000, 0x0506,
2008c2ecf20Sopenharmony_ci	0x0000, 0x0508, 0x0000, 0x050a, 0x0000, 0x050c, 0x0000, 0x050e,
2018c2ecf20Sopenharmony_ci	0x0000, 0x0510, 0x0000, 0x0512, 0x0000, 0x0514, 0x0000, 0x0516,
2028c2ecf20Sopenharmony_ci	0x0000, 0x0518, 0x0000, 0x051a, 0x0000, 0x051c, 0x0000, 0x051e,
2038c2ecf20Sopenharmony_ci	0x0000, 0x0520, 0x0000, 0x0522, 0x0000, 0x0000, 0x0000, 0x0000,
2048c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2058c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2068c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2078c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2088c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2098c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2108c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2118c2ecf20Sopenharmony_ci	0x0000, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537,
2128c2ecf20Sopenharmony_ci	0x0538, 0x0539, 0x053a, 0x053b, 0x053c, 0x053d, 0x053e, 0x053f,
2138c2ecf20Sopenharmony_ci	0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547,
2148c2ecf20Sopenharmony_ci	0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d, 0x054e, 0x054f,
2158c2ecf20Sopenharmony_ci	0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x0000,
2168c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2178c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2188c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2198c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2208c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2218c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2228c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2238c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2248c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2258c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2268c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2278c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2288c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2298c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2308c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2318c2ecf20Sopenharmony_ci};
2328c2ecf20Sopenharmony_ci
2338c2ecf20Sopenharmony_cistatic const wchar_t t2_1d[256] = {
2348c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2358c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2368c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2378c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2388c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2398c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2408c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2418c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2428c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2438c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2448c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2458c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2468c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2478c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2488c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2498c2ecf20Sopenharmony_ci	0x0000, 0xa77d, 0x0000, 0x0000, 0x0000, 0x2c63, 0x0000, 0x0000,
2508c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2518c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2528c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2538c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2548c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2558c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2568c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2578c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2588c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2598c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2608c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2618c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2628c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2638c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2648c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2658c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2668c2ecf20Sopenharmony_ci};
2678c2ecf20Sopenharmony_ci
2688c2ecf20Sopenharmony_cistatic const wchar_t t2_1e[256] = {
2698c2ecf20Sopenharmony_ci	0x0000, 0x1e00, 0x0000, 0x1e02, 0x0000, 0x1e04, 0x0000, 0x1e06,
2708c2ecf20Sopenharmony_ci	0x0000, 0x1e08, 0x0000, 0x1e0a, 0x0000, 0x1e0c, 0x0000, 0x1e0e,
2718c2ecf20Sopenharmony_ci	0x0000, 0x1e10, 0x0000, 0x1e12, 0x0000, 0x1e14, 0x0000, 0x1e16,
2728c2ecf20Sopenharmony_ci	0x0000, 0x1e18, 0x0000, 0x1e1a, 0x0000, 0x1e1c, 0x0000, 0x1e1e,
2738c2ecf20Sopenharmony_ci	0x0000, 0x1e20, 0x0000, 0x1e22, 0x0000, 0x1e24, 0x0000, 0x1e26,
2748c2ecf20Sopenharmony_ci	0x0000, 0x1e28, 0x0000, 0x1e2a, 0x0000, 0x1e2c, 0x0000, 0x1e2e,
2758c2ecf20Sopenharmony_ci	0x0000, 0x1e30, 0x0000, 0x1e32, 0x0000, 0x1e34, 0x0000, 0x1e36,
2768c2ecf20Sopenharmony_ci	0x0000, 0x1e38, 0x0000, 0x1e3a, 0x0000, 0x1e3c, 0x0000, 0x1e3e,
2778c2ecf20Sopenharmony_ci	0x0000, 0x1e40, 0x0000, 0x1e42, 0x0000, 0x1e44, 0x0000, 0x1e46,
2788c2ecf20Sopenharmony_ci	0x0000, 0x1e48, 0x0000, 0x1e4a, 0x0000, 0x1e4c, 0x0000, 0x1e4e,
2798c2ecf20Sopenharmony_ci	0x0000, 0x1e50, 0x0000, 0x1e52, 0x0000, 0x1e54, 0x0000, 0x1e56,
2808c2ecf20Sopenharmony_ci	0x0000, 0x1e58, 0x0000, 0x1e5a, 0x0000, 0x1e5c, 0x0000, 0x1e5e,
2818c2ecf20Sopenharmony_ci	0x0000, 0x1e60, 0x0000, 0x1e62, 0x0000, 0x1e64, 0x0000, 0x1e66,
2828c2ecf20Sopenharmony_ci	0x0000, 0x1e68, 0x0000, 0x1e6a, 0x0000, 0x1e6c, 0x0000, 0x1e6e,
2838c2ecf20Sopenharmony_ci	0x0000, 0x1e70, 0x0000, 0x1e72, 0x0000, 0x1e74, 0x0000, 0x1e76,
2848c2ecf20Sopenharmony_ci	0x0000, 0x1e78, 0x0000, 0x1e7a, 0x0000, 0x1e7c, 0x0000, 0x1e7e,
2858c2ecf20Sopenharmony_ci	0x0000, 0x1e80, 0x0000, 0x1e82, 0x0000, 0x1e84, 0x0000, 0x1e86,
2868c2ecf20Sopenharmony_ci	0x0000, 0x1e88, 0x0000, 0x1e8a, 0x0000, 0x1e8c, 0x0000, 0x1e8e,
2878c2ecf20Sopenharmony_ci	0x0000, 0x1e90, 0x0000, 0x1e92, 0x0000, 0x1e94, 0x0000, 0x0000,
2888c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2898c2ecf20Sopenharmony_ci	0x0000, 0x1ea0, 0x0000, 0x1ea2, 0x0000, 0x1ea4, 0x0000, 0x1ea6,
2908c2ecf20Sopenharmony_ci	0x0000, 0x1ea8, 0x0000, 0x1eaa, 0x0000, 0x1eac, 0x0000, 0x1eae,
2918c2ecf20Sopenharmony_ci	0x0000, 0x1eb0, 0x0000, 0x1eb2, 0x0000, 0x1eb4, 0x0000, 0x1eb6,
2928c2ecf20Sopenharmony_ci	0x0000, 0x1eb8, 0x0000, 0x1eba, 0x0000, 0x1ebc, 0x0000, 0x1ebe,
2938c2ecf20Sopenharmony_ci	0x0000, 0x1ec0, 0x0000, 0x1ec2, 0x0000, 0x1ec4, 0x0000, 0x1ec6,
2948c2ecf20Sopenharmony_ci	0x0000, 0x1ec8, 0x0000, 0x1eca, 0x0000, 0x1ecc, 0x0000, 0x1ece,
2958c2ecf20Sopenharmony_ci	0x0000, 0x1ed0, 0x0000, 0x1ed2, 0x0000, 0x1ed4, 0x0000, 0x1ed6,
2968c2ecf20Sopenharmony_ci	0x0000, 0x1ed8, 0x0000, 0x1eda, 0x0000, 0x1edc, 0x0000, 0x1ede,
2978c2ecf20Sopenharmony_ci	0x0000, 0x1ee0, 0x0000, 0x1ee2, 0x0000, 0x1ee4, 0x0000, 0x1ee6,
2988c2ecf20Sopenharmony_ci	0x0000, 0x1ee8, 0x0000, 0x1eea, 0x0000, 0x1eec, 0x0000, 0x1eee,
2998c2ecf20Sopenharmony_ci	0x0000, 0x1ef0, 0x0000, 0x1ef2, 0x0000, 0x1ef4, 0x0000, 0x1ef6,
3008c2ecf20Sopenharmony_ci	0x0000, 0x1ef8, 0x0000, 0x1efa, 0x0000, 0x1efc, 0x0000, 0x1efe,
3018c2ecf20Sopenharmony_ci};
3028c2ecf20Sopenharmony_ci
3038c2ecf20Sopenharmony_cistatic const wchar_t t2_1f[256] = {
3048c2ecf20Sopenharmony_ci	0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f,
3058c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3068c2ecf20Sopenharmony_ci	0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x0000, 0x0000,
3078c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3088c2ecf20Sopenharmony_ci	0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f,
3098c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3108c2ecf20Sopenharmony_ci	0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f,
3118c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3128c2ecf20Sopenharmony_ci	0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x0000, 0x0000,
3138c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3148c2ecf20Sopenharmony_ci	0x0000, 0x1f59, 0x0000, 0x1f5b, 0x0000, 0x1f5d, 0x0000, 0x1f5f,
3158c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3168c2ecf20Sopenharmony_ci	0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f,
3178c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3188c2ecf20Sopenharmony_ci	0x1fba, 0x1fbb, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb,
3198c2ecf20Sopenharmony_ci	0x1ff8, 0x1ff9, 0x1fea, 0x1feb, 0x1ffa, 0x1ffb, 0x0000, 0x0000,
3208c2ecf20Sopenharmony_ci	0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f,
3218c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3228c2ecf20Sopenharmony_ci	0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f,
3238c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3248c2ecf20Sopenharmony_ci	0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf,
3258c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3268c2ecf20Sopenharmony_ci	0x1fb8, 0x1fb9, 0x0000, 0x1fbc, 0x0000, 0x0000, 0x0000, 0x0000,
3278c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3288c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x1fcc, 0x0000, 0x0000, 0x0000, 0x0000,
3298c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3308c2ecf20Sopenharmony_ci	0x1fd8, 0x1fd9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3318c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3328c2ecf20Sopenharmony_ci	0x1fe8, 0x1fe9, 0x0000, 0x0000, 0x0000, 0x1fec, 0x0000, 0x0000,
3338c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3348c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x1ffc, 0x0000, 0x0000, 0x0000, 0x0000,
3358c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3368c2ecf20Sopenharmony_ci};
3378c2ecf20Sopenharmony_ci
3388c2ecf20Sopenharmony_cistatic const wchar_t t2_21[256] = {
3398c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3408c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3418c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3428c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3438c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3448c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3458c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3468c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3478c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3488c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2132, 0x0000,
3498c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3508c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3518c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3528c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3538c2ecf20Sopenharmony_ci	0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
3548c2ecf20Sopenharmony_ci	0x2168, 0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f,
3558c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x2183, 0x0000, 0x0000, 0x0000,
3568c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3578c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3588c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3598c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3608c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3618c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3628c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3638c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3648c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3658c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3668c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3678c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3688c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3698c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3708c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3718c2ecf20Sopenharmony_ci};
3728c2ecf20Sopenharmony_ci
3738c2ecf20Sopenharmony_cistatic const wchar_t t2_24[256] = {
3748c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3758c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3768c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3778c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3788c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3798c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3808c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3818c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3828c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3838c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3848c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3858c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3868c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3878c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3888c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3898c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3908c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3918c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3928c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3938c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3948c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3958c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3968c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3978c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3988c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
3998c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4008c2ecf20Sopenharmony_ci	0x24b6, 0x24b7, 0x24b8, 0x24b9, 0x24ba, 0x24bb, 0x24bc, 0x24bd,
4018c2ecf20Sopenharmony_ci	0x24be, 0x24bf, 0x24c0, 0x24c1, 0x24c2, 0x24c3, 0x24c4, 0x24c5,
4028c2ecf20Sopenharmony_ci	0x24c6, 0x24c7, 0x24c8, 0x24c9, 0x24ca, 0x24cb, 0x24cc, 0x24cd,
4038c2ecf20Sopenharmony_ci	0x24ce, 0x24cf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4048c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4058c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4068c2ecf20Sopenharmony_ci};
4078c2ecf20Sopenharmony_ci
4088c2ecf20Sopenharmony_cistatic const wchar_t t2_2c[256] = {
4098c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4108c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4118c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4128c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4138c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4148c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4158c2ecf20Sopenharmony_ci	0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 0x2c06, 0x2c07,
4168c2ecf20Sopenharmony_ci	0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0d, 0x2c0e, 0x2c0f,
4178c2ecf20Sopenharmony_ci	0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14, 0x2c15, 0x2c16, 0x2c17,
4188c2ecf20Sopenharmony_ci	0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c, 0x2c1d, 0x2c1e, 0x2c1f,
4198c2ecf20Sopenharmony_ci	0x2c20, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c27,
4208c2ecf20Sopenharmony_ci	0x2c28, 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x0000,
4218c2ecf20Sopenharmony_ci	0x0000, 0x2c60, 0x0000, 0x0000, 0x0000, 0x023a, 0x023e, 0x0000,
4228c2ecf20Sopenharmony_ci	0x2c67, 0x0000, 0x2c69, 0x0000, 0x2c6b, 0x0000, 0x0000, 0x0000,
4238c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x2c72, 0x0000, 0x0000, 0x2c75, 0x0000,
4248c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4258c2ecf20Sopenharmony_ci	0x0000, 0x2c80, 0x0000, 0x2c82, 0x0000, 0x2c84, 0x0000, 0x2c86,
4268c2ecf20Sopenharmony_ci	0x0000, 0x2c88, 0x0000, 0x2c8a, 0x0000, 0x2c8c, 0x0000, 0x2c8e,
4278c2ecf20Sopenharmony_ci	0x0000, 0x2c90, 0x0000, 0x2c92, 0x0000, 0x2c94, 0x0000, 0x2c96,
4288c2ecf20Sopenharmony_ci	0x0000, 0x2c98, 0x0000, 0x2c9a, 0x0000, 0x2c9c, 0x0000, 0x2c9e,
4298c2ecf20Sopenharmony_ci	0x0000, 0x2ca0, 0x0000, 0x2ca2, 0x0000, 0x2ca4, 0x0000, 0x2ca6,
4308c2ecf20Sopenharmony_ci	0x0000, 0x2ca8, 0x0000, 0x2caa, 0x0000, 0x2cac, 0x0000, 0x2cae,
4318c2ecf20Sopenharmony_ci	0x0000, 0x2cb0, 0x0000, 0x2cb2, 0x0000, 0x2cb4, 0x0000, 0x2cb6,
4328c2ecf20Sopenharmony_ci	0x0000, 0x2cb8, 0x0000, 0x2cba, 0x0000, 0x2cbc, 0x0000, 0x2cbe,
4338c2ecf20Sopenharmony_ci	0x0000, 0x2cc0, 0x0000, 0x2cc2, 0x0000, 0x2cc4, 0x0000, 0x2cc6,
4348c2ecf20Sopenharmony_ci	0x0000, 0x2cc8, 0x0000, 0x2cca, 0x0000, 0x2ccc, 0x0000, 0x2cce,
4358c2ecf20Sopenharmony_ci	0x0000, 0x2cd0, 0x0000, 0x2cd2, 0x0000, 0x2cd4, 0x0000, 0x2cd6,
4368c2ecf20Sopenharmony_ci	0x0000, 0x2cd8, 0x0000, 0x2cda, 0x0000, 0x2cdc, 0x0000, 0x2cde,
4378c2ecf20Sopenharmony_ci	0x0000, 0x2ce0, 0x0000, 0x2ce2, 0x0000, 0x0000, 0x0000, 0x0000,
4388c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4398c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4408c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4418c2ecf20Sopenharmony_ci};
4428c2ecf20Sopenharmony_ci
4438c2ecf20Sopenharmony_cistatic const wchar_t t2_2d[256] = {
4448c2ecf20Sopenharmony_ci	0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7,
4458c2ecf20Sopenharmony_ci	0x10a8, 0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af,
4468c2ecf20Sopenharmony_ci	0x10b0, 0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7,
4478c2ecf20Sopenharmony_ci	0x10b8, 0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf,
4488c2ecf20Sopenharmony_ci	0x10c0, 0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x0000, 0x0000,
4498c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4508c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4518c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4528c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4538c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4548c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4558c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4568c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4578c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4588c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4598c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4608c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4618c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4628c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4638c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4648c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4658c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4668c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4678c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4688c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4698c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4708c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4718c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4728c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4738c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4748c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4758c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4768c2ecf20Sopenharmony_ci};
4778c2ecf20Sopenharmony_ci
4788c2ecf20Sopenharmony_cistatic const wchar_t t2_a6[256] = {
4798c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4808c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4818c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4828c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4838c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4848c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4858c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4868c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4878c2ecf20Sopenharmony_ci	0x0000, 0xa640, 0x0000, 0xa642, 0x0000, 0xa644, 0x0000, 0xa646,
4888c2ecf20Sopenharmony_ci	0x0000, 0xa648, 0x0000, 0xa64a, 0x0000, 0xa64c, 0x0000, 0xa64e,
4898c2ecf20Sopenharmony_ci	0x0000, 0xa650, 0x0000, 0xa652, 0x0000, 0xa654, 0x0000, 0xa656,
4908c2ecf20Sopenharmony_ci	0x0000, 0xa658, 0x0000, 0xa65a, 0x0000, 0xa65c, 0x0000, 0xa65e,
4918c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0xa662, 0x0000, 0xa664, 0x0000, 0xa666,
4928c2ecf20Sopenharmony_ci	0x0000, 0xa668, 0x0000, 0xa66a, 0x0000, 0xa66c, 0x0000, 0x0000,
4938c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4948c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4958c2ecf20Sopenharmony_ci	0x0000, 0xa680, 0x0000, 0xa682, 0x0000, 0xa684, 0x0000, 0xa686,
4968c2ecf20Sopenharmony_ci	0x0000, 0xa688, 0x0000, 0xa68a, 0x0000, 0xa68c, 0x0000, 0xa68e,
4978c2ecf20Sopenharmony_ci	0x0000, 0xa690, 0x0000, 0xa692, 0x0000, 0xa694, 0x0000, 0xa696,
4988c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4998c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5008c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5018c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5028c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5038c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5048c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5058c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5068c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5078c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5088c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5098c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5108c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5118c2ecf20Sopenharmony_ci};
5128c2ecf20Sopenharmony_ci
5138c2ecf20Sopenharmony_cistatic const wchar_t t2_a7[256] = {
5148c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5158c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5168c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5178c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5188c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0xa722, 0x0000, 0xa724, 0x0000, 0xa726,
5198c2ecf20Sopenharmony_ci	0x0000, 0xa728, 0x0000, 0xa72a, 0x0000, 0xa72c, 0x0000, 0xa72e,
5208c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0xa732, 0x0000, 0xa734, 0x0000, 0xa736,
5218c2ecf20Sopenharmony_ci	0x0000, 0xa738, 0x0000, 0xa73a, 0x0000, 0xa73c, 0x0000, 0xa73e,
5228c2ecf20Sopenharmony_ci	0x0000, 0xa740, 0x0000, 0xa742, 0x0000, 0xa744, 0x0000, 0xa746,
5238c2ecf20Sopenharmony_ci	0x0000, 0xa748, 0x0000, 0xa74a, 0x0000, 0xa74c, 0x0000, 0xa74e,
5248c2ecf20Sopenharmony_ci	0x0000, 0xa750, 0x0000, 0xa752, 0x0000, 0xa754, 0x0000, 0xa756,
5258c2ecf20Sopenharmony_ci	0x0000, 0xa758, 0x0000, 0xa75a, 0x0000, 0xa75c, 0x0000, 0xa75e,
5268c2ecf20Sopenharmony_ci	0x0000, 0xa760, 0x0000, 0xa762, 0x0000, 0xa764, 0x0000, 0xa766,
5278c2ecf20Sopenharmony_ci	0x0000, 0xa768, 0x0000, 0xa76a, 0x0000, 0xa76c, 0x0000, 0xa76e,
5288c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5298c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0xa779, 0x0000, 0xa77b, 0x0000, 0x0000, 0xa77e,
5308c2ecf20Sopenharmony_ci	0x0000, 0xa780, 0x0000, 0xa782, 0x0000, 0xa784, 0x0000, 0xa786,
5318c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0xa78b, 0x0000, 0x0000, 0x0000,
5328c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5338c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5348c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5358c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5368c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5378c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5388c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5398c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5408c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5418c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5428c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5438c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5448c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5458c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5468c2ecf20Sopenharmony_ci};
5478c2ecf20Sopenharmony_ci
5488c2ecf20Sopenharmony_cistatic const wchar_t t2_ff[256] = {
5498c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5508c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5518c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5528c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5538c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5548c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5558c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5568c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5578c2ecf20Sopenharmony_ci	0x0000, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
5588c2ecf20Sopenharmony_ci	0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
5598c2ecf20Sopenharmony_ci	0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
5608c2ecf20Sopenharmony_ci	0xff38, 0xff39, 0xff3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5618c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5628c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5638c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5648c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5658c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5668c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5678c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5688c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5698c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5708c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5718c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5728c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5738c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5748c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5758c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5768c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5778c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5788c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5798c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5808c2ecf20Sopenharmony_ci	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
5818c2ecf20Sopenharmony_ci};
5828c2ecf20Sopenharmony_ci
5838c2ecf20Sopenharmony_cistatic const wchar_t *const toplevel[256] = {
5848c2ecf20Sopenharmony_ci	t2_00, t2_01, t2_02, t2_03, t2_04, t2_05,  NULL,  NULL,
5858c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
5868c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
5878c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL, t2_1d, t2_1e, t2_1f,
5888c2ecf20Sopenharmony_ci	NULL, t2_21,  NULL,  NULL, t2_24,  NULL,  NULL,  NULL,
5898c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL, t2_2c, t2_2d,  NULL,  NULL,
5908c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
5918c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
5928c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
5938c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
5948c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
5958c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
5968c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
5978c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
5988c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
5998c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6008c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6018c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6028c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6038c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6048c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL, t2_a6, t2_a7,
6058c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6068c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6078c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6088c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6098c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6108c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6118c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6128c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6138c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6148c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL,
6158c2ecf20Sopenharmony_ci	NULL,  NULL,  NULL,  NULL,  NULL,  NULL,  NULL, t2_ff,
6168c2ecf20Sopenharmony_ci};
6178c2ecf20Sopenharmony_ci
6188c2ecf20Sopenharmony_ci/**
6198c2ecf20Sopenharmony_ci * cifs_toupper - convert a wchar_t from lower to uppercase
6208c2ecf20Sopenharmony_ci * @in: character to convert from lower to uppercase
6218c2ecf20Sopenharmony_ci *
6228c2ecf20Sopenharmony_ci * This function consults the static tables above to convert a wchar_t from
6238c2ecf20Sopenharmony_ci * lower to uppercase. In the event that there is no mapping, the original
6248c2ecf20Sopenharmony_ci * "in" character is returned.
6258c2ecf20Sopenharmony_ci */
6268c2ecf20Sopenharmony_ciwchar_t
6278c2ecf20Sopenharmony_cicifs_toupper(wchar_t in)
6288c2ecf20Sopenharmony_ci{
6298c2ecf20Sopenharmony_ci	unsigned char idx;
6308c2ecf20Sopenharmony_ci	const wchar_t *tbl;
6318c2ecf20Sopenharmony_ci	wchar_t out;
6328c2ecf20Sopenharmony_ci
6338c2ecf20Sopenharmony_ci	/* grab upper byte */
6348c2ecf20Sopenharmony_ci	idx = (in & 0xff00) >> 8;
6358c2ecf20Sopenharmony_ci
6368c2ecf20Sopenharmony_ci	/* find pointer to 2nd layer table */
6378c2ecf20Sopenharmony_ci	tbl = toplevel[idx];
6388c2ecf20Sopenharmony_ci	if (!tbl)
6398c2ecf20Sopenharmony_ci		return in;
6408c2ecf20Sopenharmony_ci
6418c2ecf20Sopenharmony_ci	/* grab lower byte */
6428c2ecf20Sopenharmony_ci	idx = in & 0xff;
6438c2ecf20Sopenharmony_ci
6448c2ecf20Sopenharmony_ci	/* look up character in table */
6458c2ecf20Sopenharmony_ci	out = tbl[idx];
6468c2ecf20Sopenharmony_ci	if (out)
6478c2ecf20Sopenharmony_ci		return out;
6488c2ecf20Sopenharmony_ci
6498c2ecf20Sopenharmony_ci	return in;
6508c2ecf20Sopenharmony_ci}
651