1 /* Copyright (c) 2000, 2021, Oracle and/or its affiliates.
2
3 This library is free software; you can redistribute it and/or
4 modify it under the terms of the GNU Library General Public
5 License as published by the Free Software Foundation; version 2
6 of the License.
7
8 This library is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 Library General Public License for more details.
12
13 You should have received a copy of the GNU Library General Public
14 License along with this library; if not, write to the Free Software
15 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
16
17 /* UTF8 according RFC 2279 */
18 /* Written by Alexander Barkov <bar@udm.net> */
19
20 #include <my_global.h>
21 #include "m_string.h"
22 #include "m_ctype.h"
23 #include <errno.h>
24 #include "my_uctype.h"
25
26 #ifndef EILSEQ
27 #define EILSEQ ENOENT
28 #endif
29
30 #define IS_CONTINUATION_BYTE(c) (((c) ^ 0x80) < 0x40)
31
32 #define MY_UTF8MB3_GENERAL_CI MY_UTF8MB3 "_general_ci"
33 #define MY_UTF8MB3_GENERAL_CS MY_UTF8MB3 "_general_cs"
34 #define MY_UTF8MB3_BIN MY_UTF8MB3 "_bin"
35 #define MY_UTF8MB4_GENERAL_CI MY_UTF8MB4 "_general_ci"
36 #define MY_UTF8MB4_GENERAL_CS MY_UTF8MB4 "_general_cs"
37 #define MY_UTF8MB4_BIN MY_UTF8MB4 "_bin"
38
39
40
41 #ifndef HAVE_CHARSET_utf8
42 #define HAVE_CHARSET_utf8
43 #endif
44
45
46 static inline
my_valid_mbcharlen_utf8mb3(const uchar * s,const uchar * e)47 int my_valid_mbcharlen_utf8mb3(const uchar *s, const uchar *e)
48 {
49 uchar c;
50
51 assert(s < e);
52 c= s[0];
53 if (c < 0x80)
54 return 1;
55
56 if (c < 0xc2)
57 return MY_CS_ILSEQ;
58
59 if (c < 0xe0)
60 {
61 if (s+2 > e) /* We need 2 characters */
62 return MY_CS_TOOSMALL2;
63
64 if (!(IS_CONTINUATION_BYTE(s[1])))
65 return MY_CS_ILSEQ;
66
67 return 2;
68 }
69
70 assert(c < 0xf0);
71 if (s+3 > e) /* We need 3 characters */
72 return MY_CS_TOOSMALL3;
73
74 if (!(IS_CONTINUATION_BYTE(s[1]) && IS_CONTINUATION_BYTE(s[2]) &&
75 (c >= 0xe1 || s[1] >= 0xa0)))
76 return MY_CS_ILSEQ;
77
78 return 3;
79 }
80
81 static const MY_UNICASE_CHARACTER plane00[]={
82 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
83 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
84 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
85 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
86 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
87 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
88 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
89 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
90 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
91 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
92 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
93 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
94 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
95 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
96 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
97 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
98 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
99 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
100 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
101 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
102 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
103 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
104 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
105 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
106 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
107 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
108 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
109 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
110 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
111 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
112 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
113 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
114 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
115 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
116 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
117 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
118 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
119 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
120 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
121 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
122 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
123 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
124 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
125 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
126 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
127 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
128 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
129 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
130 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
131 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
132 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
133 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
134 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
135 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
136 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
137 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
138 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
139 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
140 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
141 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
142 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
143 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
144 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
145 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
146 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
147 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
148 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
149 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
150 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
151 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
152 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
153 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
154 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
155 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
156 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
157 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
158 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
159 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
160 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
161 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
162 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
163 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
164 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
165 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
166 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
167 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
168 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
169 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
170 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
171 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
172 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
173 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
174 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
175 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
176 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
177 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
178 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
179 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
180 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
181 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
182 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
183 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
184 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
185 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
186 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
187 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
188 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
189 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
190 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
191 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
192 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
193 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x0053},
194 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
195 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
196 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
197 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
198 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
199 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
200 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
201 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
202 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
203 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
204 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
205 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
206 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
207 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
208 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
209 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
210 };
211
212
213 /*
214 Almost similar to plane00, but maps sorting order
215 for U+00DF to 0x00DF instead of 0x0053.
216 */
217 static const MY_UNICASE_CHARACTER plane00_mysql500[]={
218 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
219 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
220 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
221 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
222 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
223 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
224 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
225 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
226 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
227 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
228 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
229 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
230 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
231 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
232 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
233 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
234 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
235 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
236 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
237 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
238 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
239 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
240 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
241 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
242 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
243 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
244 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
245 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
246 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
247 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
248 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
249 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
250 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
251 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
252 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
253 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
254 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
255 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
256 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
257 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
258 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
259 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
260 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
261 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
262 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
263 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
264 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
265 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
266 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
267 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
268 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
269 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
270 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
271 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
272 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
273 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
274 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
275 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
276 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
277 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
278 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
279 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
280 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
281 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
282 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
283 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
284 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
285 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
286 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
287 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
288 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
289 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
290 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
291 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
292 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
293 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
294 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
295 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
296 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
297 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
298 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
299 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
300 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
301 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
302 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
303 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
304 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
305 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
306 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
307 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
308 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
309 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
310 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
311 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
312 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
313 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
314 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
315 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
316 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
317 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
318 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
319 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
320 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
321 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
322 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
323 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
324 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
325 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
326 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
327 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
328 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
329 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF},
330 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
331 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
332 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
333 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
334 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
335 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
336 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
337 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
338 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
339 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
340 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
341 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
342 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
343 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
344 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
345 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
346 };
347
348
349 static const MY_UNICASE_CHARACTER plane01[]={
350 {0x0100,0x0101,0x0041}, {0x0100,0x0101,0x0041},
351 {0x0102,0x0103,0x0041}, {0x0102,0x0103,0x0041},
352 {0x0104,0x0105,0x0041}, {0x0104,0x0105,0x0041},
353 {0x0106,0x0107,0x0043}, {0x0106,0x0107,0x0043},
354 {0x0108,0x0109,0x0043}, {0x0108,0x0109,0x0043},
355 {0x010A,0x010B,0x0043}, {0x010A,0x010B,0x0043},
356 {0x010C,0x010D,0x0043}, {0x010C,0x010D,0x0043},
357 {0x010E,0x010F,0x0044}, {0x010E,0x010F,0x0044},
358 {0x0110,0x0111,0x0110}, {0x0110,0x0111,0x0110},
359 {0x0112,0x0113,0x0045}, {0x0112,0x0113,0x0045},
360 {0x0114,0x0115,0x0045}, {0x0114,0x0115,0x0045},
361 {0x0116,0x0117,0x0045}, {0x0116,0x0117,0x0045},
362 {0x0118,0x0119,0x0045}, {0x0118,0x0119,0x0045},
363 {0x011A,0x011B,0x0045}, {0x011A,0x011B,0x0045},
364 {0x011C,0x011D,0x0047}, {0x011C,0x011D,0x0047},
365 {0x011E,0x011F,0x0047}, {0x011E,0x011F,0x0047},
366 {0x0120,0x0121,0x0047}, {0x0120,0x0121,0x0047},
367 {0x0122,0x0123,0x0047}, {0x0122,0x0123,0x0047},
368 {0x0124,0x0125,0x0048}, {0x0124,0x0125,0x0048},
369 {0x0126,0x0127,0x0126}, {0x0126,0x0127,0x0126},
370 {0x0128,0x0129,0x0049}, {0x0128,0x0129,0x0049},
371 {0x012A,0x012B,0x0049}, {0x012A,0x012B,0x0049},
372 {0x012C,0x012D,0x0049}, {0x012C,0x012D,0x0049},
373 {0x012E,0x012F,0x0049}, {0x012E,0x012F,0x0049},
374 {0x0130,0x0069,0x0049}, {0x0049,0x0131,0x0049},
375 {0x0132,0x0133,0x0132}, {0x0132,0x0133,0x0132},
376 {0x0134,0x0135,0x004A}, {0x0134,0x0135,0x004A},
377 {0x0136,0x0137,0x004B}, {0x0136,0x0137,0x004B},
378 {0x0138,0x0138,0x0138}, {0x0139,0x013A,0x004C},
379 {0x0139,0x013A,0x004C}, {0x013B,0x013C,0x004C},
380 {0x013B,0x013C,0x004C}, {0x013D,0x013E,0x004C},
381 {0x013D,0x013E,0x004C}, {0x013F,0x0140,0x013F},
382 {0x013F,0x0140,0x013F}, {0x0141,0x0142,0x0141},
383 {0x0141,0x0142,0x0141}, {0x0143,0x0144,0x004E},
384 {0x0143,0x0144,0x004E}, {0x0145,0x0146,0x004E},
385 {0x0145,0x0146,0x004E}, {0x0147,0x0148,0x004E},
386 {0x0147,0x0148,0x004E}, {0x0149,0x0149,0x0149},
387 {0x014A,0x014B,0x014A}, {0x014A,0x014B,0x014A},
388 {0x014C,0x014D,0x004F}, {0x014C,0x014D,0x004F},
389 {0x014E,0x014F,0x004F}, {0x014E,0x014F,0x004F},
390 {0x0150,0x0151,0x004F}, {0x0150,0x0151,0x004F},
391 {0x0152,0x0153,0x0152}, {0x0152,0x0153,0x0152},
392 {0x0154,0x0155,0x0052}, {0x0154,0x0155,0x0052},
393 {0x0156,0x0157,0x0052}, {0x0156,0x0157,0x0052},
394 {0x0158,0x0159,0x0052}, {0x0158,0x0159,0x0052},
395 {0x015A,0x015B,0x0053}, {0x015A,0x015B,0x0053},
396 {0x015C,0x015D,0x0053}, {0x015C,0x015D,0x0053},
397 {0x015E,0x015F,0x0053}, {0x015E,0x015F,0x0053},
398 {0x0160,0x0161,0x0053}, {0x0160,0x0161,0x0053},
399 {0x0162,0x0163,0x0054}, {0x0162,0x0163,0x0054},
400 {0x0164,0x0165,0x0054}, {0x0164,0x0165,0x0054},
401 {0x0166,0x0167,0x0166}, {0x0166,0x0167,0x0166},
402 {0x0168,0x0169,0x0055}, {0x0168,0x0169,0x0055},
403 {0x016A,0x016B,0x0055}, {0x016A,0x016B,0x0055},
404 {0x016C,0x016D,0x0055}, {0x016C,0x016D,0x0055},
405 {0x016E,0x016F,0x0055}, {0x016E,0x016F,0x0055},
406 {0x0170,0x0171,0x0055}, {0x0170,0x0171,0x0055},
407 {0x0172,0x0173,0x0055}, {0x0172,0x0173,0x0055},
408 {0x0174,0x0175,0x0057}, {0x0174,0x0175,0x0057},
409 {0x0176,0x0177,0x0059}, {0x0176,0x0177,0x0059},
410 {0x0178,0x00FF,0x0059}, {0x0179,0x017A,0x005A},
411 {0x0179,0x017A,0x005A}, {0x017B,0x017C,0x005A},
412 {0x017B,0x017C,0x005A}, {0x017D,0x017E,0x005A},
413 {0x017D,0x017E,0x005A}, {0x0053,0x017F,0x0053},
414 {0x0180,0x0180,0x0180}, {0x0181,0x0253,0x0181},
415 {0x0182,0x0183,0x0182}, {0x0182,0x0183,0x0182},
416 {0x0184,0x0185,0x0184}, {0x0184,0x0185,0x0184},
417 {0x0186,0x0254,0x0186}, {0x0187,0x0188,0x0187},
418 {0x0187,0x0188,0x0187}, {0x0189,0x0256,0x0189},
419 {0x018A,0x0257,0x018A}, {0x018B,0x018C,0x018B},
420 {0x018B,0x018C,0x018B}, {0x018D,0x018D,0x018D},
421 {0x018E,0x01DD,0x018E}, {0x018F,0x0259,0x018F},
422 {0x0190,0x025B,0x0190}, {0x0191,0x0192,0x0191},
423 {0x0191,0x0192,0x0191}, {0x0193,0x0260,0x0193},
424 {0x0194,0x0263,0x0194}, {0x01F6,0x0195,0x01F6},
425 {0x0196,0x0269,0x0196}, {0x0197,0x0268,0x0197},
426 {0x0198,0x0199,0x0198}, {0x0198,0x0199,0x0198},
427 {0x019A,0x019A,0x019A}, {0x019B,0x019B,0x019B},
428 {0x019C,0x026F,0x019C}, {0x019D,0x0272,0x019D},
429 {0x019E,0x019E,0x019E}, {0x019F,0x0275,0x019F},
430 {0x01A0,0x01A1,0x004F}, {0x01A0,0x01A1,0x004F},
431 {0x01A2,0x01A3,0x01A2}, {0x01A2,0x01A3,0x01A2},
432 {0x01A4,0x01A5,0x01A4}, {0x01A4,0x01A5,0x01A4},
433 {0x01A6,0x0280,0x01A6}, {0x01A7,0x01A8,0x01A7},
434 {0x01A7,0x01A8,0x01A7}, {0x01A9,0x0283,0x01A9},
435 {0x01AA,0x01AA,0x01AA}, {0x01AB,0x01AB,0x01AB},
436 {0x01AC,0x01AD,0x01AC}, {0x01AC,0x01AD,0x01AC},
437 {0x01AE,0x0288,0x01AE}, {0x01AF,0x01B0,0x0055},
438 {0x01AF,0x01B0,0x0055}, {0x01B1,0x028A,0x01B1},
439 {0x01B2,0x028B,0x01B2}, {0x01B3,0x01B4,0x01B3},
440 {0x01B3,0x01B4,0x01B3}, {0x01B5,0x01B6,0x01B5},
441 {0x01B5,0x01B6,0x01B5}, {0x01B7,0x0292,0x01B7},
442 {0x01B8,0x01B9,0x01B8}, {0x01B8,0x01B9,0x01B8},
443 {0x01BA,0x01BA,0x01BA}, {0x01BB,0x01BB,0x01BB},
444 {0x01BC,0x01BD,0x01BC}, {0x01BC,0x01BD,0x01BC},
445 {0x01BE,0x01BE,0x01BE}, {0x01F7,0x01BF,0x01F7},
446 {0x01C0,0x01C0,0x01C0}, {0x01C1,0x01C1,0x01C1},
447 {0x01C2,0x01C2,0x01C2}, {0x01C3,0x01C3,0x01C3},
448 {0x01C4,0x01C6,0x01C4}, {0x01C4,0x01C6,0x01C4},
449 {0x01C4,0x01C6,0x01C4}, {0x01C7,0x01C9,0x01C7},
450 {0x01C7,0x01C9,0x01C7}, {0x01C7,0x01C9,0x01C7},
451 {0x01CA,0x01CC,0x01CA}, {0x01CA,0x01CC,0x01CA},
452 {0x01CA,0x01CC,0x01CA}, {0x01CD,0x01CE,0x0041},
453 {0x01CD,0x01CE,0x0041}, {0x01CF,0x01D0,0x0049},
454 {0x01CF,0x01D0,0x0049}, {0x01D1,0x01D2,0x004F},
455 {0x01D1,0x01D2,0x004F}, {0x01D3,0x01D4,0x0055},
456 {0x01D3,0x01D4,0x0055}, {0x01D5,0x01D6,0x0055},
457 {0x01D5,0x01D6,0x0055}, {0x01D7,0x01D8,0x0055},
458 {0x01D7,0x01D8,0x0055}, {0x01D9,0x01DA,0x0055},
459 {0x01D9,0x01DA,0x0055}, {0x01DB,0x01DC,0x0055},
460 {0x01DB,0x01DC,0x0055}, {0x018E,0x01DD,0x018E},
461 {0x01DE,0x01DF,0x0041}, {0x01DE,0x01DF,0x0041},
462 {0x01E0,0x01E1,0x0041}, {0x01E0,0x01E1,0x0041},
463 {0x01E2,0x01E3,0x00C6}, {0x01E2,0x01E3,0x00C6},
464 {0x01E4,0x01E5,0x01E4}, {0x01E4,0x01E5,0x01E4},
465 {0x01E6,0x01E7,0x0047}, {0x01E6,0x01E7,0x0047},
466 {0x01E8,0x01E9,0x004B}, {0x01E8,0x01E9,0x004B},
467 {0x01EA,0x01EB,0x004F}, {0x01EA,0x01EB,0x004F},
468 {0x01EC,0x01ED,0x004F}, {0x01EC,0x01ED,0x004F},
469 {0x01EE,0x01EF,0x01B7}, {0x01EE,0x01EF,0x01B7},
470 {0x01F0,0x01F0,0x004A}, {0x01F1,0x01F3,0x01F1},
471 {0x01F1,0x01F3,0x01F1}, {0x01F1,0x01F3,0x01F1},
472 {0x01F4,0x01F5,0x0047}, {0x01F4,0x01F5,0x0047},
473 {0x01F6,0x0195,0x01F6}, {0x01F7,0x01BF,0x01F7},
474 {0x01F8,0x01F9,0x004E}, {0x01F8,0x01F9,0x004E},
475 {0x01FA,0x01FB,0x0041}, {0x01FA,0x01FB,0x0041},
476 {0x01FC,0x01FD,0x00C6}, {0x01FC,0x01FD,0x00C6},
477 {0x01FE,0x01FF,0x00D8}, {0x01FE,0x01FF,0x00D8}
478 };
479
480 static const MY_UNICASE_CHARACTER plane02[]={
481 {0x0200,0x0201,0x0041}, {0x0200,0x0201,0x0041},
482 {0x0202,0x0203,0x0041}, {0x0202,0x0203,0x0041},
483 {0x0204,0x0205,0x0045}, {0x0204,0x0205,0x0045},
484 {0x0206,0x0207,0x0045}, {0x0206,0x0207,0x0045},
485 {0x0208,0x0209,0x0049}, {0x0208,0x0209,0x0049},
486 {0x020A,0x020B,0x0049}, {0x020A,0x020B,0x0049},
487 {0x020C,0x020D,0x004F}, {0x020C,0x020D,0x004F},
488 {0x020E,0x020F,0x004F}, {0x020E,0x020F,0x004F},
489 {0x0210,0x0211,0x0052}, {0x0210,0x0211,0x0052},
490 {0x0212,0x0213,0x0052}, {0x0212,0x0213,0x0052},
491 {0x0214,0x0215,0x0055}, {0x0214,0x0215,0x0055},
492 {0x0216,0x0217,0x0055}, {0x0216,0x0217,0x0055},
493 {0x0218,0x0219,0x0053}, {0x0218,0x0219,0x0053},
494 {0x021A,0x021B,0x0054}, {0x021A,0x021B,0x0054},
495 {0x021C,0x021D,0x021C}, {0x021C,0x021D,0x021C},
496 {0x021E,0x021F,0x0048}, {0x021E,0x021F,0x0048},
497 {0x0220,0x0220,0x0220}, {0x0221,0x0221,0x0221},
498 {0x0222,0x0223,0x0222}, {0x0222,0x0223,0x0222},
499 {0x0224,0x0225,0x0224}, {0x0224,0x0225,0x0224},
500 {0x0226,0x0227,0x0041}, {0x0226,0x0227,0x0041},
501 {0x0228,0x0229,0x0045}, {0x0228,0x0229,0x0045},
502 {0x022A,0x022B,0x004F}, {0x022A,0x022B,0x004F},
503 {0x022C,0x022D,0x004F}, {0x022C,0x022D,0x004F},
504 {0x022E,0x022F,0x004F}, {0x022E,0x022F,0x004F},
505 {0x0230,0x0231,0x004F}, {0x0230,0x0231,0x004F},
506 {0x0232,0x0233,0x0059}, {0x0232,0x0233,0x0059},
507 {0x0234,0x0234,0x0234}, {0x0235,0x0235,0x0235},
508 {0x0236,0x0236,0x0236}, {0x0237,0x0237,0x0237},
509 {0x0238,0x0238,0x0238}, {0x0239,0x0239,0x0239},
510 {0x023A,0x023A,0x023A}, {0x023B,0x023B,0x023B},
511 {0x023C,0x023C,0x023C}, {0x023D,0x023D,0x023D},
512 {0x023E,0x023E,0x023E}, {0x023F,0x023F,0x023F},
513 {0x0240,0x0240,0x0240}, {0x0241,0x0241,0x0241},
514 {0x0242,0x0242,0x0242}, {0x0243,0x0243,0x0243},
515 {0x0244,0x0244,0x0244}, {0x0245,0x0245,0x0245},
516 {0x0246,0x0246,0x0246}, {0x0247,0x0247,0x0247},
517 {0x0248,0x0248,0x0248}, {0x0249,0x0249,0x0249},
518 {0x024A,0x024A,0x024A}, {0x024B,0x024B,0x024B},
519 {0x024C,0x024C,0x024C}, {0x024D,0x024D,0x024D},
520 {0x024E,0x024E,0x024E}, {0x024F,0x024F,0x024F},
521 {0x0250,0x0250,0x0250}, {0x0251,0x0251,0x0251},
522 {0x0252,0x0252,0x0252}, {0x0181,0x0253,0x0181},
523 {0x0186,0x0254,0x0186}, {0x0255,0x0255,0x0255},
524 {0x0189,0x0256,0x0189}, {0x018A,0x0257,0x018A},
525 {0x0258,0x0258,0x0258}, {0x018F,0x0259,0x018F},
526 {0x025A,0x025A,0x025A}, {0x0190,0x025B,0x0190},
527 {0x025C,0x025C,0x025C}, {0x025D,0x025D,0x025D},
528 {0x025E,0x025E,0x025E}, {0x025F,0x025F,0x025F},
529 {0x0193,0x0260,0x0193}, {0x0261,0x0261,0x0261},
530 {0x0262,0x0262,0x0262}, {0x0194,0x0263,0x0194},
531 {0x0264,0x0264,0x0264}, {0x0265,0x0265,0x0265},
532 {0x0266,0x0266,0x0266}, {0x0267,0x0267,0x0267},
533 {0x0197,0x0268,0x0197}, {0x0196,0x0269,0x0196},
534 {0x026A,0x026A,0x026A}, {0x026B,0x026B,0x026B},
535 {0x026C,0x026C,0x026C}, {0x026D,0x026D,0x026D},
536 {0x026E,0x026E,0x026E}, {0x019C,0x026F,0x019C},
537 {0x0270,0x0270,0x0270}, {0x0271,0x0271,0x0271},
538 {0x019D,0x0272,0x019D}, {0x0273,0x0273,0x0273},
539 {0x0274,0x0274,0x0274}, {0x019F,0x0275,0x019F},
540 {0x0276,0x0276,0x0276}, {0x0277,0x0277,0x0277},
541 {0x0278,0x0278,0x0278}, {0x0279,0x0279,0x0279},
542 {0x027A,0x027A,0x027A}, {0x027B,0x027B,0x027B},
543 {0x027C,0x027C,0x027C}, {0x027D,0x027D,0x027D},
544 {0x027E,0x027E,0x027E}, {0x027F,0x027F,0x027F},
545 {0x01A6,0x0280,0x01A6}, {0x0281,0x0281,0x0281},
546 {0x0282,0x0282,0x0282}, {0x01A9,0x0283,0x01A9},
547 {0x0284,0x0284,0x0284}, {0x0285,0x0285,0x0285},
548 {0x0286,0x0286,0x0286}, {0x0287,0x0287,0x0287},
549 {0x01AE,0x0288,0x01AE}, {0x0289,0x0289,0x0289},
550 {0x01B1,0x028A,0x01B1}, {0x01B2,0x028B,0x01B2},
551 {0x028C,0x028C,0x028C}, {0x028D,0x028D,0x028D},
552 {0x028E,0x028E,0x028E}, {0x028F,0x028F,0x028F},
553 {0x0290,0x0290,0x0290}, {0x0291,0x0291,0x0291},
554 {0x01B7,0x0292,0x01B7}, {0x0293,0x0293,0x0293},
555 {0x0294,0x0294,0x0294}, {0x0295,0x0295,0x0295},
556 {0x0296,0x0296,0x0296}, {0x0297,0x0297,0x0297},
557 {0x0298,0x0298,0x0298}, {0x0299,0x0299,0x0299},
558 {0x029A,0x029A,0x029A}, {0x029B,0x029B,0x029B},
559 {0x029C,0x029C,0x029C}, {0x029D,0x029D,0x029D},
560 {0x029E,0x029E,0x029E}, {0x029F,0x029F,0x029F},
561 {0x02A0,0x02A0,0x02A0}, {0x02A1,0x02A1,0x02A1},
562 {0x02A2,0x02A2,0x02A2}, {0x02A3,0x02A3,0x02A3},
563 {0x02A4,0x02A4,0x02A4}, {0x02A5,0x02A5,0x02A5},
564 {0x02A6,0x02A6,0x02A6}, {0x02A7,0x02A7,0x02A7},
565 {0x02A8,0x02A8,0x02A8}, {0x02A9,0x02A9,0x02A9},
566 {0x02AA,0x02AA,0x02AA}, {0x02AB,0x02AB,0x02AB},
567 {0x02AC,0x02AC,0x02AC}, {0x02AD,0x02AD,0x02AD},
568 {0x02AE,0x02AE,0x02AE}, {0x02AF,0x02AF,0x02AF},
569 {0x02B0,0x02B0,0x02B0}, {0x02B1,0x02B1,0x02B1},
570 {0x02B2,0x02B2,0x02B2}, {0x02B3,0x02B3,0x02B3},
571 {0x02B4,0x02B4,0x02B4}, {0x02B5,0x02B5,0x02B5},
572 {0x02B6,0x02B6,0x02B6}, {0x02B7,0x02B7,0x02B7},
573 {0x02B8,0x02B8,0x02B8}, {0x02B9,0x02B9,0x02B9},
574 {0x02BA,0x02BA,0x02BA}, {0x02BB,0x02BB,0x02BB},
575 {0x02BC,0x02BC,0x02BC}, {0x02BD,0x02BD,0x02BD},
576 {0x02BE,0x02BE,0x02BE}, {0x02BF,0x02BF,0x02BF},
577 {0x02C0,0x02C0,0x02C0}, {0x02C1,0x02C1,0x02C1},
578 {0x02C2,0x02C2,0x02C2}, {0x02C3,0x02C3,0x02C3},
579 {0x02C4,0x02C4,0x02C4}, {0x02C5,0x02C5,0x02C5},
580 {0x02C6,0x02C6,0x02C6}, {0x02C7,0x02C7,0x02C7},
581 {0x02C8,0x02C8,0x02C8}, {0x02C9,0x02C9,0x02C9},
582 {0x02CA,0x02CA,0x02CA}, {0x02CB,0x02CB,0x02CB},
583 {0x02CC,0x02CC,0x02CC}, {0x02CD,0x02CD,0x02CD},
584 {0x02CE,0x02CE,0x02CE}, {0x02CF,0x02CF,0x02CF},
585 {0x02D0,0x02D0,0x02D0}, {0x02D1,0x02D1,0x02D1},
586 {0x02D2,0x02D2,0x02D2}, {0x02D3,0x02D3,0x02D3},
587 {0x02D4,0x02D4,0x02D4}, {0x02D5,0x02D5,0x02D5},
588 {0x02D6,0x02D6,0x02D6}, {0x02D7,0x02D7,0x02D7},
589 {0x02D8,0x02D8,0x02D8}, {0x02D9,0x02D9,0x02D9},
590 {0x02DA,0x02DA,0x02DA}, {0x02DB,0x02DB,0x02DB},
591 {0x02DC,0x02DC,0x02DC}, {0x02DD,0x02DD,0x02DD},
592 {0x02DE,0x02DE,0x02DE}, {0x02DF,0x02DF,0x02DF},
593 {0x02E0,0x02E0,0x02E0}, {0x02E1,0x02E1,0x02E1},
594 {0x02E2,0x02E2,0x02E2}, {0x02E3,0x02E3,0x02E3},
595 {0x02E4,0x02E4,0x02E4}, {0x02E5,0x02E5,0x02E5},
596 {0x02E6,0x02E6,0x02E6}, {0x02E7,0x02E7,0x02E7},
597 {0x02E8,0x02E8,0x02E8}, {0x02E9,0x02E9,0x02E9},
598 {0x02EA,0x02EA,0x02EA}, {0x02EB,0x02EB,0x02EB},
599 {0x02EC,0x02EC,0x02EC}, {0x02ED,0x02ED,0x02ED},
600 {0x02EE,0x02EE,0x02EE}, {0x02EF,0x02EF,0x02EF},
601 {0x02F0,0x02F0,0x02F0}, {0x02F1,0x02F1,0x02F1},
602 {0x02F2,0x02F2,0x02F2}, {0x02F3,0x02F3,0x02F3},
603 {0x02F4,0x02F4,0x02F4}, {0x02F5,0x02F5,0x02F5},
604 {0x02F6,0x02F6,0x02F6}, {0x02F7,0x02F7,0x02F7},
605 {0x02F8,0x02F8,0x02F8}, {0x02F9,0x02F9,0x02F9},
606 {0x02FA,0x02FA,0x02FA}, {0x02FB,0x02FB,0x02FB},
607 {0x02FC,0x02FC,0x02FC}, {0x02FD,0x02FD,0x02FD},
608 {0x02FE,0x02FE,0x02FE}, {0x02FF,0x02FF,0x02FF}
609 };
610
611 static const MY_UNICASE_CHARACTER plane03[]={
612 {0x0300,0x0300,0x0300}, {0x0301,0x0301,0x0301},
613 {0x0302,0x0302,0x0302}, {0x0303,0x0303,0x0303},
614 {0x0304,0x0304,0x0304}, {0x0305,0x0305,0x0305},
615 {0x0306,0x0306,0x0306}, {0x0307,0x0307,0x0307},
616 {0x0308,0x0308,0x0308}, {0x0309,0x0309,0x0309},
617 {0x030A,0x030A,0x030A}, {0x030B,0x030B,0x030B},
618 {0x030C,0x030C,0x030C}, {0x030D,0x030D,0x030D},
619 {0x030E,0x030E,0x030E}, {0x030F,0x030F,0x030F},
620 {0x0310,0x0310,0x0310}, {0x0311,0x0311,0x0311},
621 {0x0312,0x0312,0x0312}, {0x0313,0x0313,0x0313},
622 {0x0314,0x0314,0x0314}, {0x0315,0x0315,0x0315},
623 {0x0316,0x0316,0x0316}, {0x0317,0x0317,0x0317},
624 {0x0318,0x0318,0x0318}, {0x0319,0x0319,0x0319},
625 {0x031A,0x031A,0x031A}, {0x031B,0x031B,0x031B},
626 {0x031C,0x031C,0x031C}, {0x031D,0x031D,0x031D},
627 {0x031E,0x031E,0x031E}, {0x031F,0x031F,0x031F},
628 {0x0320,0x0320,0x0320}, {0x0321,0x0321,0x0321},
629 {0x0322,0x0322,0x0322}, {0x0323,0x0323,0x0323},
630 {0x0324,0x0324,0x0324}, {0x0325,0x0325,0x0325},
631 {0x0326,0x0326,0x0326}, {0x0327,0x0327,0x0327},
632 {0x0328,0x0328,0x0328}, {0x0329,0x0329,0x0329},
633 {0x032A,0x032A,0x032A}, {0x032B,0x032B,0x032B},
634 {0x032C,0x032C,0x032C}, {0x032D,0x032D,0x032D},
635 {0x032E,0x032E,0x032E}, {0x032F,0x032F,0x032F},
636 {0x0330,0x0330,0x0330}, {0x0331,0x0331,0x0331},
637 {0x0332,0x0332,0x0332}, {0x0333,0x0333,0x0333},
638 {0x0334,0x0334,0x0334}, {0x0335,0x0335,0x0335},
639 {0x0336,0x0336,0x0336}, {0x0337,0x0337,0x0337},
640 {0x0338,0x0338,0x0338}, {0x0339,0x0339,0x0339},
641 {0x033A,0x033A,0x033A}, {0x033B,0x033B,0x033B},
642 {0x033C,0x033C,0x033C}, {0x033D,0x033D,0x033D},
643 {0x033E,0x033E,0x033E}, {0x033F,0x033F,0x033F},
644 {0x0340,0x0340,0x0340}, {0x0341,0x0341,0x0341},
645 {0x0342,0x0342,0x0342}, {0x0343,0x0343,0x0343},
646 {0x0344,0x0344,0x0344}, {0x0399,0x0345,0x0399},
647 {0x0346,0x0346,0x0346}, {0x0347,0x0347,0x0347},
648 {0x0348,0x0348,0x0348}, {0x0349,0x0349,0x0349},
649 {0x034A,0x034A,0x034A}, {0x034B,0x034B,0x034B},
650 {0x034C,0x034C,0x034C}, {0x034D,0x034D,0x034D},
651 {0x034E,0x034E,0x034E}, {0x034F,0x034F,0x034F},
652 {0x0350,0x0350,0x0350}, {0x0351,0x0351,0x0351},
653 {0x0352,0x0352,0x0352}, {0x0353,0x0353,0x0353},
654 {0x0354,0x0354,0x0354}, {0x0355,0x0355,0x0355},
655 {0x0356,0x0356,0x0356}, {0x0357,0x0357,0x0357},
656 {0x0358,0x0358,0x0358}, {0x0359,0x0359,0x0359},
657 {0x035A,0x035A,0x035A}, {0x035B,0x035B,0x035B},
658 {0x035C,0x035C,0x035C}, {0x035D,0x035D,0x035D},
659 {0x035E,0x035E,0x035E}, {0x035F,0x035F,0x035F},
660 {0x0360,0x0360,0x0360}, {0x0361,0x0361,0x0361},
661 {0x0362,0x0362,0x0362}, {0x0363,0x0363,0x0363},
662 {0x0364,0x0364,0x0364}, {0x0365,0x0365,0x0365},
663 {0x0366,0x0366,0x0366}, {0x0367,0x0367,0x0367},
664 {0x0368,0x0368,0x0368}, {0x0369,0x0369,0x0369},
665 {0x036A,0x036A,0x036A}, {0x036B,0x036B,0x036B},
666 {0x036C,0x036C,0x036C}, {0x036D,0x036D,0x036D},
667 {0x036E,0x036E,0x036E}, {0x036F,0x036F,0x036F},
668 {0x0370,0x0370,0x0370}, {0x0371,0x0371,0x0371},
669 {0x0372,0x0372,0x0372}, {0x0373,0x0373,0x0373},
670 {0x0374,0x0374,0x0374}, {0x0375,0x0375,0x0375},
671 {0x0376,0x0376,0x0376}, {0x0377,0x0377,0x0377},
672 {0x0378,0x0378,0x0378}, {0x0379,0x0379,0x0379},
673 {0x037A,0x037A,0x037A}, {0x037B,0x037B,0x037B},
674 {0x037C,0x037C,0x037C}, {0x037D,0x037D,0x037D},
675 {0x037E,0x037E,0x037E}, {0x037F,0x037F,0x037F},
676 {0x0380,0x0380,0x0380}, {0x0381,0x0381,0x0381},
677 {0x0382,0x0382,0x0382}, {0x0383,0x0383,0x0383},
678 {0x0384,0x0384,0x0384}, {0x0385,0x0385,0x0385},
679 {0x0386,0x03AC,0x0391}, {0x0387,0x0387,0x0387},
680 {0x0388,0x03AD,0x0395}, {0x0389,0x03AE,0x0397},
681 {0x038A,0x03AF,0x0399}, {0x038B,0x038B,0x038B},
682 {0x038C,0x03CC,0x039F}, {0x038D,0x038D,0x038D},
683 {0x038E,0x03CD,0x03A5}, {0x038F,0x03CE,0x03A9},
684 {0x0390,0x0390,0x0399}, {0x0391,0x03B1,0x0391},
685 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
686 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
687 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
688 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
689 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
690 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
691 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
692 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
693 {0x03A2,0x03A2,0x03A2}, {0x03A3,0x03C3,0x03A3},
694 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
695 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
696 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
697 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
698 {0x0386,0x03AC,0x0391}, {0x0388,0x03AD,0x0395},
699 {0x0389,0x03AE,0x0397}, {0x038A,0x03AF,0x0399},
700 {0x03B0,0x03B0,0x03A5}, {0x0391,0x03B1,0x0391},
701 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
702 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
703 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
704 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
705 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
706 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
707 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
708 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
709 {0x03A3,0x03C2,0x03A3}, {0x03A3,0x03C3,0x03A3},
710 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
711 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
712 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
713 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
714 {0x038C,0x03CC,0x039F}, {0x038E,0x03CD,0x03A5},
715 {0x038F,0x03CE,0x03A9}, {0x03CF,0x03CF,0x03CF},
716 {0x0392,0x03D0,0x0392}, {0x0398,0x03D1,0x0398},
717 {0x03D2,0x03D2,0x03D2}, {0x03D3,0x03D3,0x03D2},
718 {0x03D4,0x03D4,0x03D2}, {0x03A6,0x03D5,0x03A6},
719 {0x03A0,0x03D6,0x03A0}, {0x03D7,0x03D7,0x03D7},
720 {0x03D8,0x03D8,0x03D8}, {0x03D9,0x03D9,0x03D9},
721 {0x03DA,0x03DB,0x03DA}, {0x03DA,0x03DB,0x03DA},
722 {0x03DC,0x03DD,0x03DC}, {0x03DC,0x03DD,0x03DC},
723 {0x03DE,0x03DF,0x03DE}, {0x03DE,0x03DF,0x03DE},
724 {0x03E0,0x03E1,0x03E0}, {0x03E0,0x03E1,0x03E0},
725 {0x03E2,0x03E3,0x03E2}, {0x03E2,0x03E3,0x03E2},
726 {0x03E4,0x03E5,0x03E4}, {0x03E4,0x03E5,0x03E4},
727 {0x03E6,0x03E7,0x03E6}, {0x03E6,0x03E7,0x03E6},
728 {0x03E8,0x03E9,0x03E8}, {0x03E8,0x03E9,0x03E8},
729 {0x03EA,0x03EB,0x03EA}, {0x03EA,0x03EB,0x03EA},
730 {0x03EC,0x03ED,0x03EC}, {0x03EC,0x03ED,0x03EC},
731 {0x03EE,0x03EF,0x03EE}, {0x03EE,0x03EF,0x03EE},
732 {0x039A,0x03F0,0x039A}, {0x03A1,0x03F1,0x03A1},
733 {0x03A3,0x03F2,0x03A3}, {0x03F3,0x03F3,0x03F3},
734 {0x03F4,0x03F4,0x03F4}, {0x03F5,0x03F5,0x03F5},
735 {0x03F6,0x03F6,0x03F6}, {0x03F7,0x03F7,0x03F7},
736 {0x03F8,0x03F8,0x03F8}, {0x03F9,0x03F9,0x03F9},
737 {0x03FA,0x03FA,0x03FA}, {0x03FB,0x03FB,0x03FB},
738 {0x03FC,0x03FC,0x03FC}, {0x03FD,0x03FD,0x03FD},
739 {0x03FE,0x03FE,0x03FE}, {0x03FF,0x03FF,0x03FF}
740 };
741
742 static const MY_UNICASE_CHARACTER plane04[]={
743 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
744 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
745 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
746 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
747 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
748 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
749 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
750 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
751 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
752 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
753 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
754 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
755 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
756 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
757 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
758 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
759 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
760 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
761 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
762 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
763 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
764 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
765 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
766 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
767 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
768 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
769 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
770 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
771 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
772 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
773 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
774 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
775 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
776 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
777 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
778 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
779 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
780 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
781 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
782 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
783 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
784 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
785 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
786 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
787 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
788 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
789 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
790 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
791 {0x0460,0x0461,0x0460}, {0x0460,0x0461,0x0460},
792 {0x0462,0x0463,0x0462}, {0x0462,0x0463,0x0462},
793 {0x0464,0x0465,0x0464}, {0x0464,0x0465,0x0464},
794 {0x0466,0x0467,0x0466}, {0x0466,0x0467,0x0466},
795 {0x0468,0x0469,0x0468}, {0x0468,0x0469,0x0468},
796 {0x046A,0x046B,0x046A}, {0x046A,0x046B,0x046A},
797 {0x046C,0x046D,0x046C}, {0x046C,0x046D,0x046C},
798 {0x046E,0x046F,0x046E}, {0x046E,0x046F,0x046E},
799 {0x0470,0x0471,0x0470}, {0x0470,0x0471,0x0470},
800 {0x0472,0x0473,0x0472}, {0x0472,0x0473,0x0472},
801 {0x0474,0x0475,0x0474}, {0x0474,0x0475,0x0474},
802 {0x0476,0x0477,0x0474}, {0x0476,0x0477,0x0474},
803 {0x0478,0x0479,0x0478}, {0x0478,0x0479,0x0478},
804 {0x047A,0x047B,0x047A}, {0x047A,0x047B,0x047A},
805 {0x047C,0x047D,0x047C}, {0x047C,0x047D,0x047C},
806 {0x047E,0x047F,0x047E}, {0x047E,0x047F,0x047E},
807 {0x0480,0x0481,0x0480}, {0x0480,0x0481,0x0480},
808 {0x0482,0x0482,0x0482}, {0x0483,0x0483,0x0483},
809 {0x0484,0x0484,0x0484}, {0x0485,0x0485,0x0485},
810 {0x0486,0x0486,0x0486}, {0x0487,0x0487,0x0487},
811 {0x0488,0x0488,0x0488}, {0x0489,0x0489,0x0489},
812 {0x048A,0x048A,0x048A}, {0x048B,0x048B,0x048B},
813 {0x048C,0x048D,0x048C}, {0x048C,0x048D,0x048C},
814 {0x048E,0x048F,0x048E}, {0x048E,0x048F,0x048E},
815 {0x0490,0x0491,0x0490}, {0x0490,0x0491,0x0490},
816 {0x0492,0x0493,0x0492}, {0x0492,0x0493,0x0492},
817 {0x0494,0x0495,0x0494}, {0x0494,0x0495,0x0494},
818 {0x0496,0x0497,0x0496}, {0x0496,0x0497,0x0496},
819 {0x0498,0x0499,0x0498}, {0x0498,0x0499,0x0498},
820 {0x049A,0x049B,0x049A}, {0x049A,0x049B,0x049A},
821 {0x049C,0x049D,0x049C}, {0x049C,0x049D,0x049C},
822 {0x049E,0x049F,0x049E}, {0x049E,0x049F,0x049E},
823 {0x04A0,0x04A1,0x04A0}, {0x04A0,0x04A1,0x04A0},
824 {0x04A2,0x04A3,0x04A2}, {0x04A2,0x04A3,0x04A2},
825 {0x04A4,0x04A5,0x04A4}, {0x04A4,0x04A5,0x04A4},
826 {0x04A6,0x04A7,0x04A6}, {0x04A6,0x04A7,0x04A6},
827 {0x04A8,0x04A9,0x04A8}, {0x04A8,0x04A9,0x04A8},
828 {0x04AA,0x04AB,0x04AA}, {0x04AA,0x04AB,0x04AA},
829 {0x04AC,0x04AD,0x04AC}, {0x04AC,0x04AD,0x04AC},
830 {0x04AE,0x04AF,0x04AE}, {0x04AE,0x04AF,0x04AE},
831 {0x04B0,0x04B1,0x04B0}, {0x04B0,0x04B1,0x04B0},
832 {0x04B2,0x04B3,0x04B2}, {0x04B2,0x04B3,0x04B2},
833 {0x04B4,0x04B5,0x04B4}, {0x04B4,0x04B5,0x04B4},
834 {0x04B6,0x04B7,0x04B6}, {0x04B6,0x04B7,0x04B6},
835 {0x04B8,0x04B9,0x04B8}, {0x04B8,0x04B9,0x04B8},
836 {0x04BA,0x04BB,0x04BA}, {0x04BA,0x04BB,0x04BA},
837 {0x04BC,0x04BD,0x04BC}, {0x04BC,0x04BD,0x04BC},
838 {0x04BE,0x04BF,0x04BE}, {0x04BE,0x04BF,0x04BE},
839 {0x04C0,0x04C0,0x04C0}, {0x04C1,0x04C2,0x0416},
840 {0x04C1,0x04C2,0x0416}, {0x04C3,0x04C4,0x04C3},
841 {0x04C3,0x04C4,0x04C3}, {0x04C5,0x04C5,0x04C5},
842 {0x04C6,0x04C6,0x04C6}, {0x04C7,0x04C8,0x04C7},
843 {0x04C7,0x04C8,0x04C7}, {0x04C9,0x04C9,0x04C9},
844 {0x04CA,0x04CA,0x04CA}, {0x04CB,0x04CC,0x04CB},
845 {0x04CB,0x04CC,0x04CB}, {0x04CD,0x04CD,0x04CD},
846 {0x04CE,0x04CE,0x04CE}, {0x04CF,0x04CF,0x04CF},
847 {0x04D0,0x04D1,0x0410}, {0x04D0,0x04D1,0x0410},
848 {0x04D2,0x04D3,0x0410}, {0x04D2,0x04D3,0x0410},
849 {0x04D4,0x04D5,0x04D4}, {0x04D4,0x04D5,0x04D4},
850 {0x04D6,0x04D7,0x0415}, {0x04D6,0x04D7,0x0415},
851 {0x04D8,0x04D9,0x04D8}, {0x04D8,0x04D9,0x04D8},
852 {0x04DA,0x04DB,0x04D8}, {0x04DA,0x04DB,0x04D8},
853 {0x04DC,0x04DD,0x0416}, {0x04DC,0x04DD,0x0416},
854 {0x04DE,0x04DF,0x0417}, {0x04DE,0x04DF,0x0417},
855 {0x04E0,0x04E1,0x04E0}, {0x04E0,0x04E1,0x04E0},
856 {0x04E2,0x04E3,0x0418}, {0x04E2,0x04E3,0x0418},
857 {0x04E4,0x04E5,0x0418}, {0x04E4,0x04E5,0x0418},
858 {0x04E6,0x04E7,0x041E}, {0x04E6,0x04E7,0x041E},
859 {0x04E8,0x04E9,0x04E8}, {0x04E8,0x04E9,0x04E8},
860 {0x04EA,0x04EB,0x04E8}, {0x04EA,0x04EB,0x04E8},
861 {0x04EC,0x04ED,0x042D}, {0x04EC,0x04ED,0x042D},
862 {0x04EE,0x04EF,0x0423}, {0x04EE,0x04EF,0x0423},
863 {0x04F0,0x04F1,0x0423}, {0x04F0,0x04F1,0x0423},
864 {0x04F2,0x04F3,0x0423}, {0x04F2,0x04F3,0x0423},
865 {0x04F4,0x04F5,0x0427}, {0x04F4,0x04F5,0x0427},
866 {0x04F6,0x04F6,0x04F6}, {0x04F7,0x04F7,0x04F7},
867 {0x04F8,0x04F9,0x042B}, {0x04F8,0x04F9,0x042B},
868 {0x04FA,0x04FA,0x04FA}, {0x04FB,0x04FB,0x04FB},
869 {0x04FC,0x04FC,0x04FC}, {0x04FD,0x04FD,0x04FD},
870 {0x04FE,0x04FE,0x04FE}, {0x04FF,0x04FF,0x04FF}
871 };
872
873 static const MY_UNICASE_CHARACTER plane05[]={
874 {0x0500,0x0500,0x0500}, {0x0501,0x0501,0x0501},
875 {0x0502,0x0502,0x0502}, {0x0503,0x0503,0x0503},
876 {0x0504,0x0504,0x0504}, {0x0505,0x0505,0x0505},
877 {0x0506,0x0506,0x0506}, {0x0507,0x0507,0x0507},
878 {0x0508,0x0508,0x0508}, {0x0509,0x0509,0x0509},
879 {0x050A,0x050A,0x050A}, {0x050B,0x050B,0x050B},
880 {0x050C,0x050C,0x050C}, {0x050D,0x050D,0x050D},
881 {0x050E,0x050E,0x050E}, {0x050F,0x050F,0x050F},
882 {0x0510,0x0510,0x0510}, {0x0511,0x0511,0x0511},
883 {0x0512,0x0512,0x0512}, {0x0513,0x0513,0x0513},
884 {0x0514,0x0514,0x0514}, {0x0515,0x0515,0x0515},
885 {0x0516,0x0516,0x0516}, {0x0517,0x0517,0x0517},
886 {0x0518,0x0518,0x0518}, {0x0519,0x0519,0x0519},
887 {0x051A,0x051A,0x051A}, {0x051B,0x051B,0x051B},
888 {0x051C,0x051C,0x051C}, {0x051D,0x051D,0x051D},
889 {0x051E,0x051E,0x051E}, {0x051F,0x051F,0x051F},
890 {0x0520,0x0520,0x0520}, {0x0521,0x0521,0x0521},
891 {0x0522,0x0522,0x0522}, {0x0523,0x0523,0x0523},
892 {0x0524,0x0524,0x0524}, {0x0525,0x0525,0x0525},
893 {0x0526,0x0526,0x0526}, {0x0527,0x0527,0x0527},
894 {0x0528,0x0528,0x0528}, {0x0529,0x0529,0x0529},
895 {0x052A,0x052A,0x052A}, {0x052B,0x052B,0x052B},
896 {0x052C,0x052C,0x052C}, {0x052D,0x052D,0x052D},
897 {0x052E,0x052E,0x052E}, {0x052F,0x052F,0x052F},
898 {0x0530,0x0530,0x0530}, {0x0531,0x0561,0x0531},
899 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
900 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
901 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
902 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
903 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
904 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
905 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
906 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
907 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
908 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
909 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
910 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
911 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
912 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
913 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
914 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
915 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
916 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
917 {0x0556,0x0586,0x0556}, {0x0557,0x0557,0x0557},
918 {0x0558,0x0558,0x0558}, {0x0559,0x0559,0x0559},
919 {0x055A,0x055A,0x055A}, {0x055B,0x055B,0x055B},
920 {0x055C,0x055C,0x055C}, {0x055D,0x055D,0x055D},
921 {0x055E,0x055E,0x055E}, {0x055F,0x055F,0x055F},
922 {0x0560,0x0560,0x0560}, {0x0531,0x0561,0x0531},
923 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
924 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
925 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
926 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
927 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
928 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
929 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
930 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
931 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
932 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
933 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
934 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
935 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
936 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
937 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
938 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
939 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
940 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
941 {0x0556,0x0586,0x0556}, {0x0587,0x0587,0x0587},
942 {0x0588,0x0588,0x0588}, {0x0589,0x0589,0x0589},
943 {0x058A,0x058A,0x058A}, {0x058B,0x058B,0x058B},
944 {0x058C,0x058C,0x058C}, {0x058D,0x058D,0x058D},
945 {0x058E,0x058E,0x058E}, {0x058F,0x058F,0x058F},
946 {0x0590,0x0590,0x0590}, {0x0591,0x0591,0x0591},
947 {0x0592,0x0592,0x0592}, {0x0593,0x0593,0x0593},
948 {0x0594,0x0594,0x0594}, {0x0595,0x0595,0x0595},
949 {0x0596,0x0596,0x0596}, {0x0597,0x0597,0x0597},
950 {0x0598,0x0598,0x0598}, {0x0599,0x0599,0x0599},
951 {0x059A,0x059A,0x059A}, {0x059B,0x059B,0x059B},
952 {0x059C,0x059C,0x059C}, {0x059D,0x059D,0x059D},
953 {0x059E,0x059E,0x059E}, {0x059F,0x059F,0x059F},
954 {0x05A0,0x05A0,0x05A0}, {0x05A1,0x05A1,0x05A1},
955 {0x05A2,0x05A2,0x05A2}, {0x05A3,0x05A3,0x05A3},
956 {0x05A4,0x05A4,0x05A4}, {0x05A5,0x05A5,0x05A5},
957 {0x05A6,0x05A6,0x05A6}, {0x05A7,0x05A7,0x05A7},
958 {0x05A8,0x05A8,0x05A8}, {0x05A9,0x05A9,0x05A9},
959 {0x05AA,0x05AA,0x05AA}, {0x05AB,0x05AB,0x05AB},
960 {0x05AC,0x05AC,0x05AC}, {0x05AD,0x05AD,0x05AD},
961 {0x05AE,0x05AE,0x05AE}, {0x05AF,0x05AF,0x05AF},
962 {0x05B0,0x05B0,0x05B0}, {0x05B1,0x05B1,0x05B1},
963 {0x05B2,0x05B2,0x05B2}, {0x05B3,0x05B3,0x05B3},
964 {0x05B4,0x05B4,0x05B4}, {0x05B5,0x05B5,0x05B5},
965 {0x05B6,0x05B6,0x05B6}, {0x05B7,0x05B7,0x05B7},
966 {0x05B8,0x05B8,0x05B8}, {0x05B9,0x05B9,0x05B9},
967 {0x05BA,0x05BA,0x05BA}, {0x05BB,0x05BB,0x05BB},
968 {0x05BC,0x05BC,0x05BC}, {0x05BD,0x05BD,0x05BD},
969 {0x05BE,0x05BE,0x05BE}, {0x05BF,0x05BF,0x05BF},
970 {0x05C0,0x05C0,0x05C0}, {0x05C1,0x05C1,0x05C1},
971 {0x05C2,0x05C2,0x05C2}, {0x05C3,0x05C3,0x05C3},
972 {0x05C4,0x05C4,0x05C4}, {0x05C5,0x05C5,0x05C5},
973 {0x05C6,0x05C6,0x05C6}, {0x05C7,0x05C7,0x05C7},
974 {0x05C8,0x05C8,0x05C8}, {0x05C9,0x05C9,0x05C9},
975 {0x05CA,0x05CA,0x05CA}, {0x05CB,0x05CB,0x05CB},
976 {0x05CC,0x05CC,0x05CC}, {0x05CD,0x05CD,0x05CD},
977 {0x05CE,0x05CE,0x05CE}, {0x05CF,0x05CF,0x05CF},
978 {0x05D0,0x05D0,0x05D0}, {0x05D1,0x05D1,0x05D1},
979 {0x05D2,0x05D2,0x05D2}, {0x05D3,0x05D3,0x05D3},
980 {0x05D4,0x05D4,0x05D4}, {0x05D5,0x05D5,0x05D5},
981 {0x05D6,0x05D6,0x05D6}, {0x05D7,0x05D7,0x05D7},
982 {0x05D8,0x05D8,0x05D8}, {0x05D9,0x05D9,0x05D9},
983 {0x05DA,0x05DA,0x05DA}, {0x05DB,0x05DB,0x05DB},
984 {0x05DC,0x05DC,0x05DC}, {0x05DD,0x05DD,0x05DD},
985 {0x05DE,0x05DE,0x05DE}, {0x05DF,0x05DF,0x05DF},
986 {0x05E0,0x05E0,0x05E0}, {0x05E1,0x05E1,0x05E1},
987 {0x05E2,0x05E2,0x05E2}, {0x05E3,0x05E3,0x05E3},
988 {0x05E4,0x05E4,0x05E4}, {0x05E5,0x05E5,0x05E5},
989 {0x05E6,0x05E6,0x05E6}, {0x05E7,0x05E7,0x05E7},
990 {0x05E8,0x05E8,0x05E8}, {0x05E9,0x05E9,0x05E9},
991 {0x05EA,0x05EA,0x05EA}, {0x05EB,0x05EB,0x05EB},
992 {0x05EC,0x05EC,0x05EC}, {0x05ED,0x05ED,0x05ED},
993 {0x05EE,0x05EE,0x05EE}, {0x05EF,0x05EF,0x05EF},
994 {0x05F0,0x05F0,0x05F0}, {0x05F1,0x05F1,0x05F1},
995 {0x05F2,0x05F2,0x05F2}, {0x05F3,0x05F3,0x05F3},
996 {0x05F4,0x05F4,0x05F4}, {0x05F5,0x05F5,0x05F5},
997 {0x05F6,0x05F6,0x05F6}, {0x05F7,0x05F7,0x05F7},
998 {0x05F8,0x05F8,0x05F8}, {0x05F9,0x05F9,0x05F9},
999 {0x05FA,0x05FA,0x05FA}, {0x05FB,0x05FB,0x05FB},
1000 {0x05FC,0x05FC,0x05FC}, {0x05FD,0x05FD,0x05FD},
1001 {0x05FE,0x05FE,0x05FE}, {0x05FF,0x05FF,0x05FF}
1002 };
1003
1004 static const MY_UNICASE_CHARACTER plane1E[]={
1005 {0x1E00,0x1E01,0x0041}, {0x1E00,0x1E01,0x0041},
1006 {0x1E02,0x1E03,0x0042}, {0x1E02,0x1E03,0x0042},
1007 {0x1E04,0x1E05,0x0042}, {0x1E04,0x1E05,0x0042},
1008 {0x1E06,0x1E07,0x0042}, {0x1E06,0x1E07,0x0042},
1009 {0x1E08,0x1E09,0x0043}, {0x1E08,0x1E09,0x0043},
1010 {0x1E0A,0x1E0B,0x0044}, {0x1E0A,0x1E0B,0x0044},
1011 {0x1E0C,0x1E0D,0x0044}, {0x1E0C,0x1E0D,0x0044},
1012 {0x1E0E,0x1E0F,0x0044}, {0x1E0E,0x1E0F,0x0044},
1013 {0x1E10,0x1E11,0x0044}, {0x1E10,0x1E11,0x0044},
1014 {0x1E12,0x1E13,0x0044}, {0x1E12,0x1E13,0x0044},
1015 {0x1E14,0x1E15,0x0045}, {0x1E14,0x1E15,0x0045},
1016 {0x1E16,0x1E17,0x0045}, {0x1E16,0x1E17,0x0045},
1017 {0x1E18,0x1E19,0x0045}, {0x1E18,0x1E19,0x0045},
1018 {0x1E1A,0x1E1B,0x0045}, {0x1E1A,0x1E1B,0x0045},
1019 {0x1E1C,0x1E1D,0x0045}, {0x1E1C,0x1E1D,0x0045},
1020 {0x1E1E,0x1E1F,0x0046}, {0x1E1E,0x1E1F,0x0046},
1021 {0x1E20,0x1E21,0x0047}, {0x1E20,0x1E21,0x0047},
1022 {0x1E22,0x1E23,0x0048}, {0x1E22,0x1E23,0x0048},
1023 {0x1E24,0x1E25,0x0048}, {0x1E24,0x1E25,0x0048},
1024 {0x1E26,0x1E27,0x0048}, {0x1E26,0x1E27,0x0048},
1025 {0x1E28,0x1E29,0x0048}, {0x1E28,0x1E29,0x0048},
1026 {0x1E2A,0x1E2B,0x0048}, {0x1E2A,0x1E2B,0x0048},
1027 {0x1E2C,0x1E2D,0x0049}, {0x1E2C,0x1E2D,0x0049},
1028 {0x1E2E,0x1E2F,0x0049}, {0x1E2E,0x1E2F,0x0049},
1029 {0x1E30,0x1E31,0x004B}, {0x1E30,0x1E31,0x004B},
1030 {0x1E32,0x1E33,0x004B}, {0x1E32,0x1E33,0x004B},
1031 {0x1E34,0x1E35,0x004B}, {0x1E34,0x1E35,0x004B},
1032 {0x1E36,0x1E37,0x004C}, {0x1E36,0x1E37,0x004C},
1033 {0x1E38,0x1E39,0x004C}, {0x1E38,0x1E39,0x004C},
1034 {0x1E3A,0x1E3B,0x004C}, {0x1E3A,0x1E3B,0x004C},
1035 {0x1E3C,0x1E3D,0x004C}, {0x1E3C,0x1E3D,0x004C},
1036 {0x1E3E,0x1E3F,0x004D}, {0x1E3E,0x1E3F,0x004D},
1037 {0x1E40,0x1E41,0x004D}, {0x1E40,0x1E41,0x004D},
1038 {0x1E42,0x1E43,0x004D}, {0x1E42,0x1E43,0x004D},
1039 {0x1E44,0x1E45,0x004E}, {0x1E44,0x1E45,0x004E},
1040 {0x1E46,0x1E47,0x004E}, {0x1E46,0x1E47,0x004E},
1041 {0x1E48,0x1E49,0x004E}, {0x1E48,0x1E49,0x004E},
1042 {0x1E4A,0x1E4B,0x004E}, {0x1E4A,0x1E4B,0x004E},
1043 {0x1E4C,0x1E4D,0x004F}, {0x1E4C,0x1E4D,0x004F},
1044 {0x1E4E,0x1E4F,0x004F}, {0x1E4E,0x1E4F,0x004F},
1045 {0x1E50,0x1E51,0x004F}, {0x1E50,0x1E51,0x004F},
1046 {0x1E52,0x1E53,0x004F}, {0x1E52,0x1E53,0x004F},
1047 {0x1E54,0x1E55,0x0050}, {0x1E54,0x1E55,0x0050},
1048 {0x1E56,0x1E57,0x0050}, {0x1E56,0x1E57,0x0050},
1049 {0x1E58,0x1E59,0x0052}, {0x1E58,0x1E59,0x0052},
1050 {0x1E5A,0x1E5B,0x0052}, {0x1E5A,0x1E5B,0x0052},
1051 {0x1E5C,0x1E5D,0x0052}, {0x1E5C,0x1E5D,0x0052},
1052 {0x1E5E,0x1E5F,0x0052}, {0x1E5E,0x1E5F,0x0052},
1053 {0x1E60,0x1E61,0x0053}, {0x1E60,0x1E61,0x0053},
1054 {0x1E62,0x1E63,0x0053}, {0x1E62,0x1E63,0x0053},
1055 {0x1E64,0x1E65,0x0053}, {0x1E64,0x1E65,0x0053},
1056 {0x1E66,0x1E67,0x0053}, {0x1E66,0x1E67,0x0053},
1057 {0x1E68,0x1E69,0x0053}, {0x1E68,0x1E69,0x0053},
1058 {0x1E6A,0x1E6B,0x0054}, {0x1E6A,0x1E6B,0x0054},
1059 {0x1E6C,0x1E6D,0x0054}, {0x1E6C,0x1E6D,0x0054},
1060 {0x1E6E,0x1E6F,0x0054}, {0x1E6E,0x1E6F,0x0054},
1061 {0x1E70,0x1E71,0x0054}, {0x1E70,0x1E71,0x0054},
1062 {0x1E72,0x1E73,0x0055}, {0x1E72,0x1E73,0x0055},
1063 {0x1E74,0x1E75,0x0055}, {0x1E74,0x1E75,0x0055},
1064 {0x1E76,0x1E77,0x0055}, {0x1E76,0x1E77,0x0055},
1065 {0x1E78,0x1E79,0x0055}, {0x1E78,0x1E79,0x0055},
1066 {0x1E7A,0x1E7B,0x0055}, {0x1E7A,0x1E7B,0x0055},
1067 {0x1E7C,0x1E7D,0x0056}, {0x1E7C,0x1E7D,0x0056},
1068 {0x1E7E,0x1E7F,0x0056}, {0x1E7E,0x1E7F,0x0056},
1069 {0x1E80,0x1E81,0x0057}, {0x1E80,0x1E81,0x0057},
1070 {0x1E82,0x1E83,0x0057}, {0x1E82,0x1E83,0x0057},
1071 {0x1E84,0x1E85,0x0057}, {0x1E84,0x1E85,0x0057},
1072 {0x1E86,0x1E87,0x0057}, {0x1E86,0x1E87,0x0057},
1073 {0x1E88,0x1E89,0x0057}, {0x1E88,0x1E89,0x0057},
1074 {0x1E8A,0x1E8B,0x0058}, {0x1E8A,0x1E8B,0x0058},
1075 {0x1E8C,0x1E8D,0x0058}, {0x1E8C,0x1E8D,0x0058},
1076 {0x1E8E,0x1E8F,0x0059}, {0x1E8E,0x1E8F,0x0059},
1077 {0x1E90,0x1E91,0x005A}, {0x1E90,0x1E91,0x005A},
1078 {0x1E92,0x1E93,0x005A}, {0x1E92,0x1E93,0x005A},
1079 {0x1E94,0x1E95,0x005A}, {0x1E94,0x1E95,0x005A},
1080 {0x1E96,0x1E96,0x0048}, {0x1E97,0x1E97,0x0054},
1081 {0x1E98,0x1E98,0x0057}, {0x1E99,0x1E99,0x0059},
1082 {0x1E9A,0x1E9A,0x1E9A}, {0x1E60,0x1E9B,0x0053},
1083 {0x1E9C,0x1E9C,0x1E9C}, {0x1E9D,0x1E9D,0x1E9D},
1084 {0x1E9E,0x1E9E,0x1E9E}, {0x1E9F,0x1E9F,0x1E9F},
1085 {0x1EA0,0x1EA1,0x0041}, {0x1EA0,0x1EA1,0x0041},
1086 {0x1EA2,0x1EA3,0x0041}, {0x1EA2,0x1EA3,0x0041},
1087 {0x1EA4,0x1EA5,0x0041}, {0x1EA4,0x1EA5,0x0041},
1088 {0x1EA6,0x1EA7,0x0041}, {0x1EA6,0x1EA7,0x0041},
1089 {0x1EA8,0x1EA9,0x0041}, {0x1EA8,0x1EA9,0x0041},
1090 {0x1EAA,0x1EAB,0x0041}, {0x1EAA,0x1EAB,0x0041},
1091 {0x1EAC,0x1EAD,0x0041}, {0x1EAC,0x1EAD,0x0041},
1092 {0x1EAE,0x1EAF,0x0041}, {0x1EAE,0x1EAF,0x0041},
1093 {0x1EB0,0x1EB1,0x0041}, {0x1EB0,0x1EB1,0x0041},
1094 {0x1EB2,0x1EB3,0x0041}, {0x1EB2,0x1EB3,0x0041},
1095 {0x1EB4,0x1EB5,0x0041}, {0x1EB4,0x1EB5,0x0041},
1096 {0x1EB6,0x1EB7,0x0041}, {0x1EB6,0x1EB7,0x0041},
1097 {0x1EB8,0x1EB9,0x0045}, {0x1EB8,0x1EB9,0x0045},
1098 {0x1EBA,0x1EBB,0x0045}, {0x1EBA,0x1EBB,0x0045},
1099 {0x1EBC,0x1EBD,0x0045}, {0x1EBC,0x1EBD,0x0045},
1100 {0x1EBE,0x1EBF,0x0045}, {0x1EBE,0x1EBF,0x0045},
1101 {0x1EC0,0x1EC1,0x0045}, {0x1EC0,0x1EC1,0x0045},
1102 {0x1EC2,0x1EC3,0x0045}, {0x1EC2,0x1EC3,0x0045},
1103 {0x1EC4,0x1EC5,0x0045}, {0x1EC4,0x1EC5,0x0045},
1104 {0x1EC6,0x1EC7,0x0045}, {0x1EC6,0x1EC7,0x0045},
1105 {0x1EC8,0x1EC9,0x0049}, {0x1EC8,0x1EC9,0x0049},
1106 {0x1ECA,0x1ECB,0x0049}, {0x1ECA,0x1ECB,0x0049},
1107 {0x1ECC,0x1ECD,0x004F}, {0x1ECC,0x1ECD,0x004F},
1108 {0x1ECE,0x1ECF,0x004F}, {0x1ECE,0x1ECF,0x004F},
1109 {0x1ED0,0x1ED1,0x004F}, {0x1ED0,0x1ED1,0x004F},
1110 {0x1ED2,0x1ED3,0x004F}, {0x1ED2,0x1ED3,0x004F},
1111 {0x1ED4,0x1ED5,0x004F}, {0x1ED4,0x1ED5,0x004F},
1112 {0x1ED6,0x1ED7,0x004F}, {0x1ED6,0x1ED7,0x004F},
1113 {0x1ED8,0x1ED9,0x004F}, {0x1ED8,0x1ED9,0x004F},
1114 {0x1EDA,0x1EDB,0x004F}, {0x1EDA,0x1EDB,0x004F},
1115 {0x1EDC,0x1EDD,0x004F}, {0x1EDC,0x1EDD,0x004F},
1116 {0x1EDE,0x1EDF,0x004F}, {0x1EDE,0x1EDF,0x004F},
1117 {0x1EE0,0x1EE1,0x004F}, {0x1EE0,0x1EE1,0x004F},
1118 {0x1EE2,0x1EE3,0x004F}, {0x1EE2,0x1EE3,0x004F},
1119 {0x1EE4,0x1EE5,0x0055}, {0x1EE4,0x1EE5,0x0055},
1120 {0x1EE6,0x1EE7,0x0055}, {0x1EE6,0x1EE7,0x0055},
1121 {0x1EE8,0x1EE9,0x0055}, {0x1EE8,0x1EE9,0x0055},
1122 {0x1EEA,0x1EEB,0x0055}, {0x1EEA,0x1EEB,0x0055},
1123 {0x1EEC,0x1EED,0x0055}, {0x1EEC,0x1EED,0x0055},
1124 {0x1EEE,0x1EEF,0x0055}, {0x1EEE,0x1EEF,0x0055},
1125 {0x1EF0,0x1EF1,0x0055}, {0x1EF0,0x1EF1,0x0055},
1126 {0x1EF2,0x1EF3,0x0059}, {0x1EF2,0x1EF3,0x0059},
1127 {0x1EF4,0x1EF5,0x0059}, {0x1EF4,0x1EF5,0x0059},
1128 {0x1EF6,0x1EF7,0x0059}, {0x1EF6,0x1EF7,0x0059},
1129 {0x1EF8,0x1EF9,0x0059}, {0x1EF8,0x1EF9,0x0059},
1130 {0x1EFA,0x1EFA,0x1EFA}, {0x1EFB,0x1EFB,0x1EFB},
1131 {0x1EFC,0x1EFC,0x1EFC}, {0x1EFD,0x1EFD,0x1EFD},
1132 {0x1EFE,0x1EFE,0x1EFE}, {0x1EFF,0x1EFF,0x1EFF}
1133 };
1134
1135 static const MY_UNICASE_CHARACTER plane1F[]={
1136 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
1137 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
1138 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
1139 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
1140 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
1141 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
1142 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
1143 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
1144 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
1145 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
1146 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
1147 {0x1F16,0x1F16,0x1F16}, {0x1F17,0x1F17,0x1F17},
1148 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
1149 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
1150 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
1151 {0x1F1E,0x1F1E,0x1F1E}, {0x1F1F,0x1F1F,0x1F1F},
1152 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
1153 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
1154 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
1155 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
1156 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
1157 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
1158 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
1159 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
1160 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
1161 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
1162 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
1163 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
1164 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
1165 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
1166 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
1167 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
1168 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1169 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1170 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1171 {0x1F46,0x1F46,0x1F46}, {0x1F47,0x1F47,0x1F47},
1172 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1173 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1174 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1175 {0x1F4E,0x1F4E,0x1F4E}, {0x1F4F,0x1F4F,0x1F4F},
1176 {0x1F50,0x1F50,0x03A5}, {0x1F59,0x1F51,0x03A5},
1177 {0x1F52,0x1F52,0x03A5}, {0x1F5B,0x1F53,0x03A5},
1178 {0x1F54,0x1F54,0x03A5}, {0x1F5D,0x1F55,0x03A5},
1179 {0x1F56,0x1F56,0x03A5}, {0x1F5F,0x1F57,0x03A5},
1180 {0x1F58,0x1F58,0x1F58}, {0x1F59,0x1F51,0x03A5},
1181 {0x1F5A,0x1F5A,0x1F5A}, {0x1F5B,0x1F53,0x03A5},
1182 {0x1F5C,0x1F5C,0x1F5C}, {0x1F5D,0x1F55,0x03A5},
1183 {0x1F5E,0x1F5E,0x1F5E}, {0x1F5F,0x1F57,0x03A5},
1184 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1185 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1186 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1187 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1188 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1189 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1190 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1191 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1192 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1193 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1194 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1195 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1196 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1197 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1198 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1199 {0x1F7E,0x1F7E,0x1F7E}, {0x1F7F,0x1F7F,0x1F7F},
1200 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1201 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1202 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1203 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1204 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1205 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1206 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1207 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1208 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1209 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1210 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1211 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1212 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1213 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1214 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1215 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1216 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1217 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1218 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1219 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1220 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1221 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1222 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1223 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1224 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1225 {0x1FB2,0x1FB2,0x0391}, {0x1FBC,0x1FB3,0x0391},
1226 {0x1FB4,0x1FB4,0x0391}, {0x1FB5,0x1FB5,0x1FB5},
1227 {0x1FB6,0x1FB6,0x0391}, {0x1FB7,0x1FB7,0x0391},
1228 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1229 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1230 {0x1FBC,0x1FB3,0x0391}, {0x1FBD,0x1FBD,0x1FBD},
1231 {0x0399,0x1FBE,0x0399}, {0x1FBF,0x1FBF,0x1FBF},
1232 {0x1FC0,0x1FC0,0x1FC0}, {0x1FC1,0x1FC1,0x1FC1},
1233 {0x1FC2,0x1FC2,0x0397}, {0x1FCC,0x1FC3,0x0397},
1234 {0x1FC4,0x1FC4,0x0397}, {0x1FC5,0x1FC5,0x1FC5},
1235 {0x1FC6,0x1FC6,0x0397}, {0x1FC7,0x1FC7,0x0397},
1236 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1237 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1238 {0x1FCC,0x1FC3,0x0397}, {0x1FCD,0x1FCD,0x1FCD},
1239 {0x1FCE,0x1FCE,0x1FCE}, {0x1FCF,0x1FCF,0x1FCF},
1240 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1241 {0x1FD2,0x1FD2,0x0399}, {0x1FD3,0x1FD3,0x1FD3},
1242 {0x1FD4,0x1FD4,0x1FD4}, {0x1FD5,0x1FD5,0x1FD5},
1243 {0x1FD6,0x1FD6,0x0399}, {0x1FD7,0x1FD7,0x0399},
1244 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1245 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1246 {0x1FDC,0x1FDC,0x1FDC}, {0x1FDD,0x1FDD,0x1FDD},
1247 {0x1FDE,0x1FDE,0x1FDE}, {0x1FDF,0x1FDF,0x1FDF},
1248 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1249 {0x1FE2,0x1FE2,0x03A5}, {0x1FE3,0x1FE3,0x1FE3},
1250 {0x1FE4,0x1FE4,0x03A1}, {0x1FEC,0x1FE5,0x03A1},
1251 {0x1FE6,0x1FE6,0x03A5}, {0x1FE7,0x1FE7,0x03A5},
1252 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1253 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1254 {0x1FEC,0x1FE5,0x03A1}, {0x1FED,0x1FED,0x1FED},
1255 {0x1FEE,0x1FEE,0x1FEE}, {0x1FEF,0x1FEF,0x1FEF},
1256 {0x1FF0,0x1FF0,0x1FF0}, {0x1FF1,0x1FF1,0x1FF1},
1257 {0x1FF2,0x1FF2,0x03A9}, {0x1FFC,0x1FF3,0x03A9},
1258 {0x1FF4,0x1FF4,0x03A9}, {0x1FF5,0x1FF5,0x1FF5},
1259 {0x1FF6,0x1FF6,0x03A9}, {0x1FF7,0x1FF7,0x03A9},
1260 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1261 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1262 {0x1FFC,0x1FF3,0x03A9}, {0x1FFD,0x1FFD,0x1FFD},
1263 {0x1FFE,0x1FFE,0x1FFE}, {0x1FFF,0x1FFF,0x1FFF}
1264 };
1265
1266 static const MY_UNICASE_CHARACTER plane21[]={
1267 {0x2100,0x2100,0x2100}, {0x2101,0x2101,0x2101},
1268 {0x2102,0x2102,0x2102}, {0x2103,0x2103,0x2103},
1269 {0x2104,0x2104,0x2104}, {0x2105,0x2105,0x2105},
1270 {0x2106,0x2106,0x2106}, {0x2107,0x2107,0x2107},
1271 {0x2108,0x2108,0x2108}, {0x2109,0x2109,0x2109},
1272 {0x210A,0x210A,0x210A}, {0x210B,0x210B,0x210B},
1273 {0x210C,0x210C,0x210C}, {0x210D,0x210D,0x210D},
1274 {0x210E,0x210E,0x210E}, {0x210F,0x210F,0x210F},
1275 {0x2110,0x2110,0x2110}, {0x2111,0x2111,0x2111},
1276 {0x2112,0x2112,0x2112}, {0x2113,0x2113,0x2113},
1277 {0x2114,0x2114,0x2114}, {0x2115,0x2115,0x2115},
1278 {0x2116,0x2116,0x2116}, {0x2117,0x2117,0x2117},
1279 {0x2118,0x2118,0x2118}, {0x2119,0x2119,0x2119},
1280 {0x211A,0x211A,0x211A}, {0x211B,0x211B,0x211B},
1281 {0x211C,0x211C,0x211C}, {0x211D,0x211D,0x211D},
1282 {0x211E,0x211E,0x211E}, {0x211F,0x211F,0x211F},
1283 {0x2120,0x2120,0x2120}, {0x2121,0x2121,0x2121},
1284 {0x2122,0x2122,0x2122}, {0x2123,0x2123,0x2123},
1285 {0x2124,0x2124,0x2124}, {0x2125,0x2125,0x2125},
1286 {0x2126,0x03C9,0x2126}, {0x2127,0x2127,0x2127},
1287 {0x2128,0x2128,0x2128}, {0x2129,0x2129,0x2129},
1288 {0x212A,0x006B,0x212A}, {0x212B,0x00E5,0x212B},
1289 {0x212C,0x212C,0x212C}, {0x212D,0x212D,0x212D},
1290 {0x212E,0x212E,0x212E}, {0x212F,0x212F,0x212F},
1291 {0x2130,0x2130,0x2130}, {0x2131,0x2131,0x2131},
1292 {0x2132,0x2132,0x2132}, {0x2133,0x2133,0x2133},
1293 {0x2134,0x2134,0x2134}, {0x2135,0x2135,0x2135},
1294 {0x2136,0x2136,0x2136}, {0x2137,0x2137,0x2137},
1295 {0x2138,0x2138,0x2138}, {0x2139,0x2139,0x2139},
1296 {0x213A,0x213A,0x213A}, {0x213B,0x213B,0x213B},
1297 {0x213C,0x213C,0x213C}, {0x213D,0x213D,0x213D},
1298 {0x213E,0x213E,0x213E}, {0x213F,0x213F,0x213F},
1299 {0x2140,0x2140,0x2140}, {0x2141,0x2141,0x2141},
1300 {0x2142,0x2142,0x2142}, {0x2143,0x2143,0x2143},
1301 {0x2144,0x2144,0x2144}, {0x2145,0x2145,0x2145},
1302 {0x2146,0x2146,0x2146}, {0x2147,0x2147,0x2147},
1303 {0x2148,0x2148,0x2148}, {0x2149,0x2149,0x2149},
1304 {0x214A,0x214A,0x214A}, {0x214B,0x214B,0x214B},
1305 {0x214C,0x214C,0x214C}, {0x214D,0x214D,0x214D},
1306 {0x214E,0x214E,0x214E}, {0x214F,0x214F,0x214F},
1307 {0x2150,0x2150,0x2150}, {0x2151,0x2151,0x2151},
1308 {0x2152,0x2152,0x2152}, {0x2153,0x2153,0x2153},
1309 {0x2154,0x2154,0x2154}, {0x2155,0x2155,0x2155},
1310 {0x2156,0x2156,0x2156}, {0x2157,0x2157,0x2157},
1311 {0x2158,0x2158,0x2158}, {0x2159,0x2159,0x2159},
1312 {0x215A,0x215A,0x215A}, {0x215B,0x215B,0x215B},
1313 {0x215C,0x215C,0x215C}, {0x215D,0x215D,0x215D},
1314 {0x215E,0x215E,0x215E}, {0x215F,0x215F,0x215F},
1315 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1316 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1317 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1318 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1319 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1320 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1321 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1322 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1323 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1324 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1325 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1326 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1327 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1328 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1329 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1330 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1331 {0x2180,0x2180,0x2180}, {0x2181,0x2181,0x2181},
1332 {0x2182,0x2182,0x2182}, {0x2183,0x2183,0x2183},
1333 {0x2184,0x2184,0x2184}, {0x2185,0x2185,0x2185},
1334 {0x2186,0x2186,0x2186}, {0x2187,0x2187,0x2187},
1335 {0x2188,0x2188,0x2188}, {0x2189,0x2189,0x2189},
1336 {0x218A,0x218A,0x218A}, {0x218B,0x218B,0x218B},
1337 {0x218C,0x218C,0x218C}, {0x218D,0x218D,0x218D},
1338 {0x218E,0x218E,0x218E}, {0x218F,0x218F,0x218F},
1339 {0x2190,0x2190,0x2190}, {0x2191,0x2191,0x2191},
1340 {0x2192,0x2192,0x2192}, {0x2193,0x2193,0x2193},
1341 {0x2194,0x2194,0x2194}, {0x2195,0x2195,0x2195},
1342 {0x2196,0x2196,0x2196}, {0x2197,0x2197,0x2197},
1343 {0x2198,0x2198,0x2198}, {0x2199,0x2199,0x2199},
1344 {0x219A,0x219A,0x219A}, {0x219B,0x219B,0x219B},
1345 {0x219C,0x219C,0x219C}, {0x219D,0x219D,0x219D},
1346 {0x219E,0x219E,0x219E}, {0x219F,0x219F,0x219F},
1347 {0x21A0,0x21A0,0x21A0}, {0x21A1,0x21A1,0x21A1},
1348 {0x21A2,0x21A2,0x21A2}, {0x21A3,0x21A3,0x21A3},
1349 {0x21A4,0x21A4,0x21A4}, {0x21A5,0x21A5,0x21A5},
1350 {0x21A6,0x21A6,0x21A6}, {0x21A7,0x21A7,0x21A7},
1351 {0x21A8,0x21A8,0x21A8}, {0x21A9,0x21A9,0x21A9},
1352 {0x21AA,0x21AA,0x21AA}, {0x21AB,0x21AB,0x21AB},
1353 {0x21AC,0x21AC,0x21AC}, {0x21AD,0x21AD,0x21AD},
1354 {0x21AE,0x21AE,0x21AE}, {0x21AF,0x21AF,0x21AF},
1355 {0x21B0,0x21B0,0x21B0}, {0x21B1,0x21B1,0x21B1},
1356 {0x21B2,0x21B2,0x21B2}, {0x21B3,0x21B3,0x21B3},
1357 {0x21B4,0x21B4,0x21B4}, {0x21B5,0x21B5,0x21B5},
1358 {0x21B6,0x21B6,0x21B6}, {0x21B7,0x21B7,0x21B7},
1359 {0x21B8,0x21B8,0x21B8}, {0x21B9,0x21B9,0x21B9},
1360 {0x21BA,0x21BA,0x21BA}, {0x21BB,0x21BB,0x21BB},
1361 {0x21BC,0x21BC,0x21BC}, {0x21BD,0x21BD,0x21BD},
1362 {0x21BE,0x21BE,0x21BE}, {0x21BF,0x21BF,0x21BF},
1363 {0x21C0,0x21C0,0x21C0}, {0x21C1,0x21C1,0x21C1},
1364 {0x21C2,0x21C2,0x21C2}, {0x21C3,0x21C3,0x21C3},
1365 {0x21C4,0x21C4,0x21C4}, {0x21C5,0x21C5,0x21C5},
1366 {0x21C6,0x21C6,0x21C6}, {0x21C7,0x21C7,0x21C7},
1367 {0x21C8,0x21C8,0x21C8}, {0x21C9,0x21C9,0x21C9},
1368 {0x21CA,0x21CA,0x21CA}, {0x21CB,0x21CB,0x21CB},
1369 {0x21CC,0x21CC,0x21CC}, {0x21CD,0x21CD,0x21CD},
1370 {0x21CE,0x21CE,0x21CE}, {0x21CF,0x21CF,0x21CF},
1371 {0x21D0,0x21D0,0x21D0}, {0x21D1,0x21D1,0x21D1},
1372 {0x21D2,0x21D2,0x21D2}, {0x21D3,0x21D3,0x21D3},
1373 {0x21D4,0x21D4,0x21D4}, {0x21D5,0x21D5,0x21D5},
1374 {0x21D6,0x21D6,0x21D6}, {0x21D7,0x21D7,0x21D7},
1375 {0x21D8,0x21D8,0x21D8}, {0x21D9,0x21D9,0x21D9},
1376 {0x21DA,0x21DA,0x21DA}, {0x21DB,0x21DB,0x21DB},
1377 {0x21DC,0x21DC,0x21DC}, {0x21DD,0x21DD,0x21DD},
1378 {0x21DE,0x21DE,0x21DE}, {0x21DF,0x21DF,0x21DF},
1379 {0x21E0,0x21E0,0x21E0}, {0x21E1,0x21E1,0x21E1},
1380 {0x21E2,0x21E2,0x21E2}, {0x21E3,0x21E3,0x21E3},
1381 {0x21E4,0x21E4,0x21E4}, {0x21E5,0x21E5,0x21E5},
1382 {0x21E6,0x21E6,0x21E6}, {0x21E7,0x21E7,0x21E7},
1383 {0x21E8,0x21E8,0x21E8}, {0x21E9,0x21E9,0x21E9},
1384 {0x21EA,0x21EA,0x21EA}, {0x21EB,0x21EB,0x21EB},
1385 {0x21EC,0x21EC,0x21EC}, {0x21ED,0x21ED,0x21ED},
1386 {0x21EE,0x21EE,0x21EE}, {0x21EF,0x21EF,0x21EF},
1387 {0x21F0,0x21F0,0x21F0}, {0x21F1,0x21F1,0x21F1},
1388 {0x21F2,0x21F2,0x21F2}, {0x21F3,0x21F3,0x21F3},
1389 {0x21F4,0x21F4,0x21F4}, {0x21F5,0x21F5,0x21F5},
1390 {0x21F6,0x21F6,0x21F6}, {0x21F7,0x21F7,0x21F7},
1391 {0x21F8,0x21F8,0x21F8}, {0x21F9,0x21F9,0x21F9},
1392 {0x21FA,0x21FA,0x21FA}, {0x21FB,0x21FB,0x21FB},
1393 {0x21FC,0x21FC,0x21FC}, {0x21FD,0x21FD,0x21FD},
1394 {0x21FE,0x21FE,0x21FE}, {0x21FF,0x21FF,0x21FF}
1395 };
1396
1397 static const MY_UNICASE_CHARACTER plane24[]={
1398 {0x2400,0x2400,0x2400}, {0x2401,0x2401,0x2401},
1399 {0x2402,0x2402,0x2402}, {0x2403,0x2403,0x2403},
1400 {0x2404,0x2404,0x2404}, {0x2405,0x2405,0x2405},
1401 {0x2406,0x2406,0x2406}, {0x2407,0x2407,0x2407},
1402 {0x2408,0x2408,0x2408}, {0x2409,0x2409,0x2409},
1403 {0x240A,0x240A,0x240A}, {0x240B,0x240B,0x240B},
1404 {0x240C,0x240C,0x240C}, {0x240D,0x240D,0x240D},
1405 {0x240E,0x240E,0x240E}, {0x240F,0x240F,0x240F},
1406 {0x2410,0x2410,0x2410}, {0x2411,0x2411,0x2411},
1407 {0x2412,0x2412,0x2412}, {0x2413,0x2413,0x2413},
1408 {0x2414,0x2414,0x2414}, {0x2415,0x2415,0x2415},
1409 {0x2416,0x2416,0x2416}, {0x2417,0x2417,0x2417},
1410 {0x2418,0x2418,0x2418}, {0x2419,0x2419,0x2419},
1411 {0x241A,0x241A,0x241A}, {0x241B,0x241B,0x241B},
1412 {0x241C,0x241C,0x241C}, {0x241D,0x241D,0x241D},
1413 {0x241E,0x241E,0x241E}, {0x241F,0x241F,0x241F},
1414 {0x2420,0x2420,0x2420}, {0x2421,0x2421,0x2421},
1415 {0x2422,0x2422,0x2422}, {0x2423,0x2423,0x2423},
1416 {0x2424,0x2424,0x2424}, {0x2425,0x2425,0x2425},
1417 {0x2426,0x2426,0x2426}, {0x2427,0x2427,0x2427},
1418 {0x2428,0x2428,0x2428}, {0x2429,0x2429,0x2429},
1419 {0x242A,0x242A,0x242A}, {0x242B,0x242B,0x242B},
1420 {0x242C,0x242C,0x242C}, {0x242D,0x242D,0x242D},
1421 {0x242E,0x242E,0x242E}, {0x242F,0x242F,0x242F},
1422 {0x2430,0x2430,0x2430}, {0x2431,0x2431,0x2431},
1423 {0x2432,0x2432,0x2432}, {0x2433,0x2433,0x2433},
1424 {0x2434,0x2434,0x2434}, {0x2435,0x2435,0x2435},
1425 {0x2436,0x2436,0x2436}, {0x2437,0x2437,0x2437},
1426 {0x2438,0x2438,0x2438}, {0x2439,0x2439,0x2439},
1427 {0x243A,0x243A,0x243A}, {0x243B,0x243B,0x243B},
1428 {0x243C,0x243C,0x243C}, {0x243D,0x243D,0x243D},
1429 {0x243E,0x243E,0x243E}, {0x243F,0x243F,0x243F},
1430 {0x2440,0x2440,0x2440}, {0x2441,0x2441,0x2441},
1431 {0x2442,0x2442,0x2442}, {0x2443,0x2443,0x2443},
1432 {0x2444,0x2444,0x2444}, {0x2445,0x2445,0x2445},
1433 {0x2446,0x2446,0x2446}, {0x2447,0x2447,0x2447},
1434 {0x2448,0x2448,0x2448}, {0x2449,0x2449,0x2449},
1435 {0x244A,0x244A,0x244A}, {0x244B,0x244B,0x244B},
1436 {0x244C,0x244C,0x244C}, {0x244D,0x244D,0x244D},
1437 {0x244E,0x244E,0x244E}, {0x244F,0x244F,0x244F},
1438 {0x2450,0x2450,0x2450}, {0x2451,0x2451,0x2451},
1439 {0x2452,0x2452,0x2452}, {0x2453,0x2453,0x2453},
1440 {0x2454,0x2454,0x2454}, {0x2455,0x2455,0x2455},
1441 {0x2456,0x2456,0x2456}, {0x2457,0x2457,0x2457},
1442 {0x2458,0x2458,0x2458}, {0x2459,0x2459,0x2459},
1443 {0x245A,0x245A,0x245A}, {0x245B,0x245B,0x245B},
1444 {0x245C,0x245C,0x245C}, {0x245D,0x245D,0x245D},
1445 {0x245E,0x245E,0x245E}, {0x245F,0x245F,0x245F},
1446 {0x2460,0x2460,0x2460}, {0x2461,0x2461,0x2461},
1447 {0x2462,0x2462,0x2462}, {0x2463,0x2463,0x2463},
1448 {0x2464,0x2464,0x2464}, {0x2465,0x2465,0x2465},
1449 {0x2466,0x2466,0x2466}, {0x2467,0x2467,0x2467},
1450 {0x2468,0x2468,0x2468}, {0x2469,0x2469,0x2469},
1451 {0x246A,0x246A,0x246A}, {0x246B,0x246B,0x246B},
1452 {0x246C,0x246C,0x246C}, {0x246D,0x246D,0x246D},
1453 {0x246E,0x246E,0x246E}, {0x246F,0x246F,0x246F},
1454 {0x2470,0x2470,0x2470}, {0x2471,0x2471,0x2471},
1455 {0x2472,0x2472,0x2472}, {0x2473,0x2473,0x2473},
1456 {0x2474,0x2474,0x2474}, {0x2475,0x2475,0x2475},
1457 {0x2476,0x2476,0x2476}, {0x2477,0x2477,0x2477},
1458 {0x2478,0x2478,0x2478}, {0x2479,0x2479,0x2479},
1459 {0x247A,0x247A,0x247A}, {0x247B,0x247B,0x247B},
1460 {0x247C,0x247C,0x247C}, {0x247D,0x247D,0x247D},
1461 {0x247E,0x247E,0x247E}, {0x247F,0x247F,0x247F},
1462 {0x2480,0x2480,0x2480}, {0x2481,0x2481,0x2481},
1463 {0x2482,0x2482,0x2482}, {0x2483,0x2483,0x2483},
1464 {0x2484,0x2484,0x2484}, {0x2485,0x2485,0x2485},
1465 {0x2486,0x2486,0x2486}, {0x2487,0x2487,0x2487},
1466 {0x2488,0x2488,0x2488}, {0x2489,0x2489,0x2489},
1467 {0x248A,0x248A,0x248A}, {0x248B,0x248B,0x248B},
1468 {0x248C,0x248C,0x248C}, {0x248D,0x248D,0x248D},
1469 {0x248E,0x248E,0x248E}, {0x248F,0x248F,0x248F},
1470 {0x2490,0x2490,0x2490}, {0x2491,0x2491,0x2491},
1471 {0x2492,0x2492,0x2492}, {0x2493,0x2493,0x2493},
1472 {0x2494,0x2494,0x2494}, {0x2495,0x2495,0x2495},
1473 {0x2496,0x2496,0x2496}, {0x2497,0x2497,0x2497},
1474 {0x2498,0x2498,0x2498}, {0x2499,0x2499,0x2499},
1475 {0x249A,0x249A,0x249A}, {0x249B,0x249B,0x249B},
1476 {0x249C,0x249C,0x249C}, {0x249D,0x249D,0x249D},
1477 {0x249E,0x249E,0x249E}, {0x249F,0x249F,0x249F},
1478 {0x24A0,0x24A0,0x24A0}, {0x24A1,0x24A1,0x24A1},
1479 {0x24A2,0x24A2,0x24A2}, {0x24A3,0x24A3,0x24A3},
1480 {0x24A4,0x24A4,0x24A4}, {0x24A5,0x24A5,0x24A5},
1481 {0x24A6,0x24A6,0x24A6}, {0x24A7,0x24A7,0x24A7},
1482 {0x24A8,0x24A8,0x24A8}, {0x24A9,0x24A9,0x24A9},
1483 {0x24AA,0x24AA,0x24AA}, {0x24AB,0x24AB,0x24AB},
1484 {0x24AC,0x24AC,0x24AC}, {0x24AD,0x24AD,0x24AD},
1485 {0x24AE,0x24AE,0x24AE}, {0x24AF,0x24AF,0x24AF},
1486 {0x24B0,0x24B0,0x24B0}, {0x24B1,0x24B1,0x24B1},
1487 {0x24B2,0x24B2,0x24B2}, {0x24B3,0x24B3,0x24B3},
1488 {0x24B4,0x24B4,0x24B4}, {0x24B5,0x24B5,0x24B5},
1489 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1490 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1491 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1492 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1493 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1494 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1495 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1496 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1497 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1498 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1499 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1500 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1501 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1502 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1503 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1504 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1505 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1506 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1507 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1508 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1509 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1510 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1511 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1512 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1513 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1514 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1515 {0x24EA,0x24EA,0x24EA}, {0x24EB,0x24EB,0x24EB},
1516 {0x24EC,0x24EC,0x24EC}, {0x24ED,0x24ED,0x24ED},
1517 {0x24EE,0x24EE,0x24EE}, {0x24EF,0x24EF,0x24EF},
1518 {0x24F0,0x24F0,0x24F0}, {0x24F1,0x24F1,0x24F1},
1519 {0x24F2,0x24F2,0x24F2}, {0x24F3,0x24F3,0x24F3},
1520 {0x24F4,0x24F4,0x24F4}, {0x24F5,0x24F5,0x24F5},
1521 {0x24F6,0x24F6,0x24F6}, {0x24F7,0x24F7,0x24F7},
1522 {0x24F8,0x24F8,0x24F8}, {0x24F9,0x24F9,0x24F9},
1523 {0x24FA,0x24FA,0x24FA}, {0x24FB,0x24FB,0x24FB},
1524 {0x24FC,0x24FC,0x24FC}, {0x24FD,0x24FD,0x24FD},
1525 {0x24FE,0x24FE,0x24FE}, {0x24FF,0x24FF,0x24FF}
1526 };
1527
1528 static const MY_UNICASE_CHARACTER planeFF[]={
1529 {0xFF00,0xFF00,0xFF00}, {0xFF01,0xFF01,0xFF01},
1530 {0xFF02,0xFF02,0xFF02}, {0xFF03,0xFF03,0xFF03},
1531 {0xFF04,0xFF04,0xFF04}, {0xFF05,0xFF05,0xFF05},
1532 {0xFF06,0xFF06,0xFF06}, {0xFF07,0xFF07,0xFF07},
1533 {0xFF08,0xFF08,0xFF08}, {0xFF09,0xFF09,0xFF09},
1534 {0xFF0A,0xFF0A,0xFF0A}, {0xFF0B,0xFF0B,0xFF0B},
1535 {0xFF0C,0xFF0C,0xFF0C}, {0xFF0D,0xFF0D,0xFF0D},
1536 {0xFF0E,0xFF0E,0xFF0E}, {0xFF0F,0xFF0F,0xFF0F},
1537 {0xFF10,0xFF10,0xFF10}, {0xFF11,0xFF11,0xFF11},
1538 {0xFF12,0xFF12,0xFF12}, {0xFF13,0xFF13,0xFF13},
1539 {0xFF14,0xFF14,0xFF14}, {0xFF15,0xFF15,0xFF15},
1540 {0xFF16,0xFF16,0xFF16}, {0xFF17,0xFF17,0xFF17},
1541 {0xFF18,0xFF18,0xFF18}, {0xFF19,0xFF19,0xFF19},
1542 {0xFF1A,0xFF1A,0xFF1A}, {0xFF1B,0xFF1B,0xFF1B},
1543 {0xFF1C,0xFF1C,0xFF1C}, {0xFF1D,0xFF1D,0xFF1D},
1544 {0xFF1E,0xFF1E,0xFF1E}, {0xFF1F,0xFF1F,0xFF1F},
1545 {0xFF20,0xFF20,0xFF20}, {0xFF21,0xFF41,0xFF21},
1546 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1547 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1548 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1549 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1550 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1551 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1552 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1553 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1554 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1555 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1556 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1557 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1558 {0xFF3A,0xFF5A,0xFF3A}, {0xFF3B,0xFF3B,0xFF3B},
1559 {0xFF3C,0xFF3C,0xFF3C}, {0xFF3D,0xFF3D,0xFF3D},
1560 {0xFF3E,0xFF3E,0xFF3E}, {0xFF3F,0xFF3F,0xFF3F},
1561 {0xFF40,0xFF40,0xFF40}, {0xFF21,0xFF41,0xFF21},
1562 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1563 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1564 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1565 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1566 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1567 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1568 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1569 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1570 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1571 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1572 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1573 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1574 {0xFF3A,0xFF5A,0xFF3A}, {0xFF5B,0xFF5B,0xFF5B},
1575 {0xFF5C,0xFF5C,0xFF5C}, {0xFF5D,0xFF5D,0xFF5D},
1576 {0xFF5E,0xFF5E,0xFF5E}, {0xFF5F,0xFF5F,0xFF5F},
1577 {0xFF60,0xFF60,0xFF60}, {0xFF61,0xFF61,0xFF61},
1578 {0xFF62,0xFF62,0xFF62}, {0xFF63,0xFF63,0xFF63},
1579 {0xFF64,0xFF64,0xFF64}, {0xFF65,0xFF65,0xFF65},
1580 {0xFF66,0xFF66,0xFF66}, {0xFF67,0xFF67,0xFF67},
1581 {0xFF68,0xFF68,0xFF68}, {0xFF69,0xFF69,0xFF69},
1582 {0xFF6A,0xFF6A,0xFF6A}, {0xFF6B,0xFF6B,0xFF6B},
1583 {0xFF6C,0xFF6C,0xFF6C}, {0xFF6D,0xFF6D,0xFF6D},
1584 {0xFF6E,0xFF6E,0xFF6E}, {0xFF6F,0xFF6F,0xFF6F},
1585 {0xFF70,0xFF70,0xFF70}, {0xFF71,0xFF71,0xFF71},
1586 {0xFF72,0xFF72,0xFF72}, {0xFF73,0xFF73,0xFF73},
1587 {0xFF74,0xFF74,0xFF74}, {0xFF75,0xFF75,0xFF75},
1588 {0xFF76,0xFF76,0xFF76}, {0xFF77,0xFF77,0xFF77},
1589 {0xFF78,0xFF78,0xFF78}, {0xFF79,0xFF79,0xFF79},
1590 {0xFF7A,0xFF7A,0xFF7A}, {0xFF7B,0xFF7B,0xFF7B},
1591 {0xFF7C,0xFF7C,0xFF7C}, {0xFF7D,0xFF7D,0xFF7D},
1592 {0xFF7E,0xFF7E,0xFF7E}, {0xFF7F,0xFF7F,0xFF7F},
1593 {0xFF80,0xFF80,0xFF80}, {0xFF81,0xFF81,0xFF81},
1594 {0xFF82,0xFF82,0xFF82}, {0xFF83,0xFF83,0xFF83},
1595 {0xFF84,0xFF84,0xFF84}, {0xFF85,0xFF85,0xFF85},
1596 {0xFF86,0xFF86,0xFF86}, {0xFF87,0xFF87,0xFF87},
1597 {0xFF88,0xFF88,0xFF88}, {0xFF89,0xFF89,0xFF89},
1598 {0xFF8A,0xFF8A,0xFF8A}, {0xFF8B,0xFF8B,0xFF8B},
1599 {0xFF8C,0xFF8C,0xFF8C}, {0xFF8D,0xFF8D,0xFF8D},
1600 {0xFF8E,0xFF8E,0xFF8E}, {0xFF8F,0xFF8F,0xFF8F},
1601 {0xFF90,0xFF90,0xFF90}, {0xFF91,0xFF91,0xFF91},
1602 {0xFF92,0xFF92,0xFF92}, {0xFF93,0xFF93,0xFF93},
1603 {0xFF94,0xFF94,0xFF94}, {0xFF95,0xFF95,0xFF95},
1604 {0xFF96,0xFF96,0xFF96}, {0xFF97,0xFF97,0xFF97},
1605 {0xFF98,0xFF98,0xFF98}, {0xFF99,0xFF99,0xFF99},
1606 {0xFF9A,0xFF9A,0xFF9A}, {0xFF9B,0xFF9B,0xFF9B},
1607 {0xFF9C,0xFF9C,0xFF9C}, {0xFF9D,0xFF9D,0xFF9D},
1608 {0xFF9E,0xFF9E,0xFF9E}, {0xFF9F,0xFF9F,0xFF9F},
1609 {0xFFA0,0xFFA0,0xFFA0}, {0xFFA1,0xFFA1,0xFFA1},
1610 {0xFFA2,0xFFA2,0xFFA2}, {0xFFA3,0xFFA3,0xFFA3},
1611 {0xFFA4,0xFFA4,0xFFA4}, {0xFFA5,0xFFA5,0xFFA5},
1612 {0xFFA6,0xFFA6,0xFFA6}, {0xFFA7,0xFFA7,0xFFA7},
1613 {0xFFA8,0xFFA8,0xFFA8}, {0xFFA9,0xFFA9,0xFFA9},
1614 {0xFFAA,0xFFAA,0xFFAA}, {0xFFAB,0xFFAB,0xFFAB},
1615 {0xFFAC,0xFFAC,0xFFAC}, {0xFFAD,0xFFAD,0xFFAD},
1616 {0xFFAE,0xFFAE,0xFFAE}, {0xFFAF,0xFFAF,0xFFAF},
1617 {0xFFB0,0xFFB0,0xFFB0}, {0xFFB1,0xFFB1,0xFFB1},
1618 {0xFFB2,0xFFB2,0xFFB2}, {0xFFB3,0xFFB3,0xFFB3},
1619 {0xFFB4,0xFFB4,0xFFB4}, {0xFFB5,0xFFB5,0xFFB5},
1620 {0xFFB6,0xFFB6,0xFFB6}, {0xFFB7,0xFFB7,0xFFB7},
1621 {0xFFB8,0xFFB8,0xFFB8}, {0xFFB9,0xFFB9,0xFFB9},
1622 {0xFFBA,0xFFBA,0xFFBA}, {0xFFBB,0xFFBB,0xFFBB},
1623 {0xFFBC,0xFFBC,0xFFBC}, {0xFFBD,0xFFBD,0xFFBD},
1624 {0xFFBE,0xFFBE,0xFFBE}, {0xFFBF,0xFFBF,0xFFBF},
1625 {0xFFC0,0xFFC0,0xFFC0}, {0xFFC1,0xFFC1,0xFFC1},
1626 {0xFFC2,0xFFC2,0xFFC2}, {0xFFC3,0xFFC3,0xFFC3},
1627 {0xFFC4,0xFFC4,0xFFC4}, {0xFFC5,0xFFC5,0xFFC5},
1628 {0xFFC6,0xFFC6,0xFFC6}, {0xFFC7,0xFFC7,0xFFC7},
1629 {0xFFC8,0xFFC8,0xFFC8}, {0xFFC9,0xFFC9,0xFFC9},
1630 {0xFFCA,0xFFCA,0xFFCA}, {0xFFCB,0xFFCB,0xFFCB},
1631 {0xFFCC,0xFFCC,0xFFCC}, {0xFFCD,0xFFCD,0xFFCD},
1632 {0xFFCE,0xFFCE,0xFFCE}, {0xFFCF,0xFFCF,0xFFCF},
1633 {0xFFD0,0xFFD0,0xFFD0}, {0xFFD1,0xFFD1,0xFFD1},
1634 {0xFFD2,0xFFD2,0xFFD2}, {0xFFD3,0xFFD3,0xFFD3},
1635 {0xFFD4,0xFFD4,0xFFD4}, {0xFFD5,0xFFD5,0xFFD5},
1636 {0xFFD6,0xFFD6,0xFFD6}, {0xFFD7,0xFFD7,0xFFD7},
1637 {0xFFD8,0xFFD8,0xFFD8}, {0xFFD9,0xFFD9,0xFFD9},
1638 {0xFFDA,0xFFDA,0xFFDA}, {0xFFDB,0xFFDB,0xFFDB},
1639 {0xFFDC,0xFFDC,0xFFDC}, {0xFFDD,0xFFDD,0xFFDD},
1640 {0xFFDE,0xFFDE,0xFFDE}, {0xFFDF,0xFFDF,0xFFDF},
1641 {0xFFE0,0xFFE0,0xFFE0}, {0xFFE1,0xFFE1,0xFFE1},
1642 {0xFFE2,0xFFE2,0xFFE2}, {0xFFE3,0xFFE3,0xFFE3},
1643 {0xFFE4,0xFFE4,0xFFE4}, {0xFFE5,0xFFE5,0xFFE5},
1644 {0xFFE6,0xFFE6,0xFFE6}, {0xFFE7,0xFFE7,0xFFE7},
1645 {0xFFE8,0xFFE8,0xFFE8}, {0xFFE9,0xFFE9,0xFFE9},
1646 {0xFFEA,0xFFEA,0xFFEA}, {0xFFEB,0xFFEB,0xFFEB},
1647 {0xFFEC,0xFFEC,0xFFEC}, {0xFFED,0xFFED,0xFFED},
1648 {0xFFEE,0xFFEE,0xFFEE}, {0xFFEF,0xFFEF,0xFFEF},
1649 {0xFFF0,0xFFF0,0xFFF0}, {0xFFF1,0xFFF1,0xFFF1},
1650 {0xFFF2,0xFFF2,0xFFF2}, {0xFFF3,0xFFF3,0xFFF3},
1651 {0xFFF4,0xFFF4,0xFFF4}, {0xFFF5,0xFFF5,0xFFF5},
1652 {0xFFF6,0xFFF6,0xFFF6}, {0xFFF7,0xFFF7,0xFFF7},
1653 {0xFFF8,0xFFF8,0xFFF8}, {0xFFF9,0xFFF9,0xFFF9},
1654 {0xFFFA,0xFFFA,0xFFFA}, {0xFFFB,0xFFFB,0xFFFB},
1655 {0xFFFC,0xFFFC,0xFFFC}, {0xFFFD,0xFFFD,0xFFFD},
1656 {0xFFFE,0xFFFE,0xFFFE}, {0xFFFF,0xFFFF,0xFFFF}
1657 };
1658
1659
1660 static const MY_UNICASE_CHARACTER *my_unicase_pages_default[256]=
1661 {
1662 plane00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1663 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1664 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1665 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1666 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1667 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1668 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1669 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1670 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1671 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1672 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1673 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1674 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1675 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1676 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1677 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1678 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1679 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1680 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1681 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1682 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1683 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1684 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1685 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1686 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1687 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1688 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1689 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1690 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1691 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1692 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1693 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1694 };
1695
1696
1697 MY_UNICASE_INFO my_unicase_default=
1698 {
1699 0xFFFF,
1700 my_unicase_pages_default
1701 };
1702
1703
1704 /*
1705 Reproduce old utf8_general_ci behaviour before we fixed Bug#27877.
1706 */
1707 static const MY_UNICASE_CHARACTER *my_unicase_pages_mysql500[256]={
1708 plane00_mysql500,
1709 plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1710 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1711 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1712 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1713 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1714 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1715 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1716 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1717 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1718 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1719 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1720 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1721 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1722 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1723 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1724 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1725 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1726 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1727 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1728 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1729 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1730 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1731 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1732 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1733 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1734 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1735 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1736 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1737 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1738 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1739 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1740 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1741
1742 };
1743
1744
1745 MY_UNICASE_INFO my_unicase_mysql500=
1746 {
1747 0xFFFF,
1748 my_unicase_pages_mysql500
1749 };
1750
1751
1752 /*
1753 Turkish lower/upper mapping:
1754 1. LOWER(0x0049 LATIN CAPITAL LETTER I) ->
1755 0x0131 LATIN SMALL LETTER DOTLESS I
1756 2. UPPER(0x0069 LATIN SMALL LETTER I) ->
1757 0x0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
1758 */
1759
1760 static const MY_UNICASE_CHARACTER turk00[]=
1761 {
1762 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
1763 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
1764 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
1765 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
1766 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
1767 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
1768 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
1769 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
1770 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
1771 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
1772 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
1773 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
1774 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
1775 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
1776 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
1777 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
1778 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
1779 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
1780 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
1781 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
1782 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
1783 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
1784 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
1785 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
1786 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
1787 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
1788 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
1789 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
1790 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
1791 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
1792 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
1793 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
1794 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
1795 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1796 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1797 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1798 {0x0048,0x0068,0x0048}, {0x0049,0x0131,0x0049},
1799 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1800 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1801 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1802 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1803 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1804 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1805 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1806 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1807 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
1808 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
1809 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
1810 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
1811 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1812 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1813 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1814 {0x0048,0x0068,0x0048}, {0x0130,0x0069,0x0049},
1815 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1816 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1817 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1818 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1819 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1820 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1821 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1822 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1823 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
1824 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
1825 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
1826 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
1827 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
1828 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
1829 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
1830 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
1831 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
1832 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
1833 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
1834 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
1835 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
1836 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
1837 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
1838 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
1839 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
1840 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
1841 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
1842 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
1843 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
1844 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
1845 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
1846 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
1847 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
1848 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
1849 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
1850 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
1851 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
1852 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
1853 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
1854 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
1855 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
1856 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
1857 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
1858 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1859 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1860 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1861 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1862 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1863 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1864 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1865 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1866 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1867 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1868 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1869 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
1870 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1871 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1872 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1873 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF},
1874 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1875 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1876 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1877 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1878 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1879 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1880 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1881 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1882 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1883 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1884 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1885 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
1886 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1887 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1888 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1889 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
1890 };
1891
1892
1893
1894 static const MY_UNICASE_CHARACTER *my_unicase_pages_turkish[256]=
1895 {
1896 turk00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1897 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1898 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1899 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1900 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1901 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1902 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1903 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1904 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1905 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1906 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1907 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1908 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1909 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1910 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1911 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1912 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1913 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1914 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1915 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1916 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1917 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1918 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1919 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1920 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1921 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1922 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1923 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1924 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1925 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1926 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1927 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1928 };
1929
1930
1931 MY_UNICASE_INFO my_unicase_turkish=
1932 {
1933 0xFFFF,
1934 my_unicase_pages_turkish
1935 };
1936
1937
1938 /* Unicode-5.2.0 case folding information */
1939 static const MY_UNICASE_CHARACTER u520p00[]={
1940 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001}, /* 0000 */
1941 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003}, /* 0002 */
1942 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005}, /* 0004 */
1943 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007}, /* 0006 */
1944 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009}, /* 0008 */
1945 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B}, /* 000A */
1946 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D}, /* 000C */
1947 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F}, /* 000E */
1948 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011}, /* 0010 */
1949 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013}, /* 0012 */
1950 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015}, /* 0014 */
1951 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017}, /* 0016 */
1952 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019}, /* 0018 */
1953 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B}, /* 001A */
1954 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D}, /* 001C */
1955 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F}, /* 001E */
1956 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021}, /* 0020 */
1957 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023}, /* 0022 */
1958 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025}, /* 0024 */
1959 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027}, /* 0026 */
1960 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029}, /* 0028 */
1961 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B}, /* 002A */
1962 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D}, /* 002C */
1963 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F}, /* 002E */
1964 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031}, /* 0030 */
1965 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033}, /* 0032 */
1966 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035}, /* 0034 */
1967 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037}, /* 0036 */
1968 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039}, /* 0038 */
1969 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B}, /* 003A */
1970 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D}, /* 003C */
1971 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F}, /* 003E */
1972 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041}, /* 0040 */
1973 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043}, /* 0042 */
1974 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045}, /* 0044 */
1975 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047}, /* 0046 */
1976 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049}, /* 0048 */
1977 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B}, /* 004A */
1978 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D}, /* 004C */
1979 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F}, /* 004E */
1980 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051}, /* 0050 */
1981 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053}, /* 0052 */
1982 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055}, /* 0054 */
1983 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057}, /* 0056 */
1984 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059}, /* 0058 */
1985 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B}, /* 005A */
1986 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D}, /* 005C */
1987 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F}, /* 005E */
1988 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041}, /* 0060 */
1989 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043}, /* 0062 */
1990 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045}, /* 0064 */
1991 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047}, /* 0066 */
1992 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049}, /* 0068 */
1993 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B}, /* 006A */
1994 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D}, /* 006C */
1995 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F}, /* 006E */
1996 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051}, /* 0070 */
1997 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053}, /* 0072 */
1998 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055}, /* 0074 */
1999 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057}, /* 0076 */
2000 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059}, /* 0078 */
2001 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B}, /* 007A */
2002 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D}, /* 007C */
2003 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F}, /* 007E */
2004 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081}, /* 0080 */
2005 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083}, /* 0082 */
2006 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085}, /* 0084 */
2007 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087}, /* 0086 */
2008 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089}, /* 0088 */
2009 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B}, /* 008A */
2010 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D}, /* 008C */
2011 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F}, /* 008E */
2012 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091}, /* 0090 */
2013 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093}, /* 0092 */
2014 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095}, /* 0094 */
2015 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097}, /* 0096 */
2016 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099}, /* 0098 */
2017 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B}, /* 009A */
2018 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D}, /* 009C */
2019 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F}, /* 009E */
2020 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1}, /* 00A0 */
2021 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3}, /* 00A2 */
2022 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5}, /* 00A4 */
2023 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7}, /* 00A6 */
2024 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9}, /* 00A8 */
2025 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB}, /* 00AA */
2026 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD}, /* 00AC */
2027 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF}, /* 00AE */
2028 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1}, /* 00B0 */
2029 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3}, /* 00B2 */
2030 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C}, /* 00B4 */
2031 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7}, /* 00B6 */
2032 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9}, /* 00B8 */
2033 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB}, /* 00BA */
2034 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD}, /* 00BC */
2035 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF}, /* 00BE */
2036 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041}, /* 00C0 */
2037 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041}, /* 00C2 */
2038 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041}, /* 00C4 */
2039 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043}, /* 00C6 */
2040 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045}, /* 00C8 */
2041 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045}, /* 00CA */
2042 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049}, /* 00CC */
2043 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049}, /* 00CE */
2044 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E}, /* 00D0 */
2045 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F}, /* 00D2 */
2046 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F}, /* 00D4 */
2047 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7}, /* 00D6 */
2048 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055}, /* 00D8 */
2049 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055}, /* 00DA */
2050 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059}, /* 00DC */
2051 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x0053}, /* 00DE */
2052 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041}, /* 00E0 */
2053 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041}, /* 00E2 */
2054 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041}, /* 00E4 */
2055 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043}, /* 00E6 */
2056 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045}, /* 00E8 */
2057 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045}, /* 00EA */
2058 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049}, /* 00EC */
2059 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049}, /* 00EE */
2060 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E}, /* 00F0 */
2061 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F}, /* 00F2 */
2062 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F}, /* 00F4 */
2063 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7}, /* 00F6 */
2064 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055}, /* 00F8 */
2065 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055}, /* 00FA */
2066 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059}, /* 00FC */
2067 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059} /* 00FE */
2068 };
2069
2070 static const MY_UNICASE_CHARACTER u520p01[]={
2071 {0x0100,0x0101,0x0041}, {0x0100,0x0101,0x0041}, /* 0100 */
2072 {0x0102,0x0103,0x0041}, {0x0102,0x0103,0x0041}, /* 0102 */
2073 {0x0104,0x0105,0x0041}, {0x0104,0x0105,0x0041}, /* 0104 */
2074 {0x0106,0x0107,0x0043}, {0x0106,0x0107,0x0043}, /* 0106 */
2075 {0x0108,0x0109,0x0043}, {0x0108,0x0109,0x0043}, /* 0108 */
2076 {0x010A,0x010B,0x0043}, {0x010A,0x010B,0x0043}, /* 010A */
2077 {0x010C,0x010D,0x0043}, {0x010C,0x010D,0x0043}, /* 010C */
2078 {0x010E,0x010F,0x0044}, {0x010E,0x010F,0x0044}, /* 010E */
2079 {0x0110,0x0111,0x0110}, {0x0110,0x0111,0x0110}, /* 0110 */
2080 {0x0112,0x0113,0x0045}, {0x0112,0x0113,0x0045}, /* 0112 */
2081 {0x0114,0x0115,0x0045}, {0x0114,0x0115,0x0045}, /* 0114 */
2082 {0x0116,0x0117,0x0045}, {0x0116,0x0117,0x0045}, /* 0116 */
2083 {0x0118,0x0119,0x0045}, {0x0118,0x0119,0x0045}, /* 0118 */
2084 {0x011A,0x011B,0x0045}, {0x011A,0x011B,0x0045}, /* 011A */
2085 {0x011C,0x011D,0x0047}, {0x011C,0x011D,0x0047}, /* 011C */
2086 {0x011E,0x011F,0x0047}, {0x011E,0x011F,0x0047}, /* 011E */
2087 {0x0120,0x0121,0x0047}, {0x0120,0x0121,0x0047}, /* 0120 */
2088 {0x0122,0x0123,0x0047}, {0x0122,0x0123,0x0047}, /* 0122 */
2089 {0x0124,0x0125,0x0048}, {0x0124,0x0125,0x0048}, /* 0124 */
2090 {0x0126,0x0127,0x0126}, {0x0126,0x0127,0x0126}, /* 0126 */
2091 {0x0128,0x0129,0x0049}, {0x0128,0x0129,0x0049}, /* 0128 */
2092 {0x012A,0x012B,0x0049}, {0x012A,0x012B,0x0049}, /* 012A */
2093 {0x012C,0x012D,0x0049}, {0x012C,0x012D,0x0049}, /* 012C */
2094 {0x012E,0x012F,0x0049}, {0x012E,0x012F,0x0049}, /* 012E */
2095 {0x0130,0x0069,0x0049}, {0x0049,0x0131,0x0049}, /* 0130 */
2096 {0x0132,0x0133,0x0132}, {0x0132,0x0133,0x0132}, /* 0132 */
2097 {0x0134,0x0135,0x004A}, {0x0134,0x0135,0x004A}, /* 0134 */
2098 {0x0136,0x0137,0x004B}, {0x0136,0x0137,0x004B}, /* 0136 */
2099 {0x0138,0x0138,0x0138}, {0x0139,0x013A,0x004C}, /* 0138 */
2100 {0x0139,0x013A,0x004C}, {0x013B,0x013C,0x004C}, /* 013A */
2101 {0x013B,0x013C,0x004C}, {0x013D,0x013E,0x004C}, /* 013C */
2102 {0x013D,0x013E,0x004C}, {0x013F,0x0140,0x013F}, /* 013E */
2103 {0x013F,0x0140,0x013F}, {0x0141,0x0142,0x0141}, /* 0140 */
2104 {0x0141,0x0142,0x0141}, {0x0143,0x0144,0x004E}, /* 0142 */
2105 {0x0143,0x0144,0x004E}, {0x0145,0x0146,0x004E}, /* 0144 */
2106 {0x0145,0x0146,0x004E}, {0x0147,0x0148,0x004E}, /* 0146 */
2107 {0x0147,0x0148,0x004E}, {0x0149,0x0149,0x0149}, /* 0148 */
2108 {0x014A,0x014B,0x014A}, {0x014A,0x014B,0x014A}, /* 014A */
2109 {0x014C,0x014D,0x004F}, {0x014C,0x014D,0x004F}, /* 014C */
2110 {0x014E,0x014F,0x004F}, {0x014E,0x014F,0x004F}, /* 014E */
2111 {0x0150,0x0151,0x004F}, {0x0150,0x0151,0x004F}, /* 0150 */
2112 {0x0152,0x0153,0x0152}, {0x0152,0x0153,0x0152}, /* 0152 */
2113 {0x0154,0x0155,0x0052}, {0x0154,0x0155,0x0052}, /* 0154 */
2114 {0x0156,0x0157,0x0052}, {0x0156,0x0157,0x0052}, /* 0156 */
2115 {0x0158,0x0159,0x0052}, {0x0158,0x0159,0x0052}, /* 0158 */
2116 {0x015A,0x015B,0x0053}, {0x015A,0x015B,0x0053}, /* 015A */
2117 {0x015C,0x015D,0x0053}, {0x015C,0x015D,0x0053}, /* 015C */
2118 {0x015E,0x015F,0x0053}, {0x015E,0x015F,0x0053}, /* 015E */
2119 {0x0160,0x0161,0x0053}, {0x0160,0x0161,0x0053}, /* 0160 */
2120 {0x0162,0x0163,0x0054}, {0x0162,0x0163,0x0054}, /* 0162 */
2121 {0x0164,0x0165,0x0054}, {0x0164,0x0165,0x0054}, /* 0164 */
2122 {0x0166,0x0167,0x0166}, {0x0166,0x0167,0x0166}, /* 0166 */
2123 {0x0168,0x0169,0x0055}, {0x0168,0x0169,0x0055}, /* 0168 */
2124 {0x016A,0x016B,0x0055}, {0x016A,0x016B,0x0055}, /* 016A */
2125 {0x016C,0x016D,0x0055}, {0x016C,0x016D,0x0055}, /* 016C */
2126 {0x016E,0x016F,0x0055}, {0x016E,0x016F,0x0055}, /* 016E */
2127 {0x0170,0x0171,0x0055}, {0x0170,0x0171,0x0055}, /* 0170 */
2128 {0x0172,0x0173,0x0055}, {0x0172,0x0173,0x0055}, /* 0172 */
2129 {0x0174,0x0175,0x0057}, {0x0174,0x0175,0x0057}, /* 0174 */
2130 {0x0176,0x0177,0x0059}, {0x0176,0x0177,0x0059}, /* 0176 */
2131 {0x0178,0x00FF,0x0059}, {0x0179,0x017A,0x005A}, /* 0178 */
2132 {0x0179,0x017A,0x005A}, {0x017B,0x017C,0x005A}, /* 017A */
2133 {0x017B,0x017C,0x005A}, {0x017D,0x017E,0x005A}, /* 017C */
2134 {0x017D,0x017E,0x005A}, {0x0053,0x017F,0x0053}, /* 017E */
2135 {0x0243,0x0180,0x0243}, {0x0181,0x0253,0x0181}, /* 0180 */
2136 {0x0182,0x0183,0x0182}, {0x0182,0x0183,0x0182}, /* 0182 */
2137 {0x0184,0x0185,0x0184}, {0x0184,0x0185,0x0184}, /* 0184 */
2138 {0x0186,0x0254,0x0186}, {0x0187,0x0188,0x0187}, /* 0186 */
2139 {0x0187,0x0188,0x0187}, {0x0189,0x0256,0x0189}, /* 0188 */
2140 {0x018A,0x0257,0x018A}, {0x018B,0x018C,0x018B}, /* 018A */
2141 {0x018B,0x018C,0x018B}, {0x018D,0x018D,0x018D}, /* 018C */
2142 {0x018E,0x01DD,0x018E}, {0x018F,0x0259,0x018F}, /* 018E */
2143 {0x0190,0x025B,0x0190}, {0x0191,0x0192,0x0191}, /* 0190 */
2144 {0x0191,0x0192,0x0191}, {0x0193,0x0260,0x0193}, /* 0192 */
2145 {0x0194,0x0263,0x0194}, {0x01F6,0x0195,0x01F6}, /* 0194 */
2146 {0x0196,0x0269,0x0196}, {0x0197,0x0268,0x0197}, /* 0196 */
2147 {0x0198,0x0199,0x0198}, {0x0198,0x0199,0x0198}, /* 0198 */
2148 {0x023D,0x019A,0x023D}, {0x019B,0x019B,0x019B}, /* 019A */
2149 {0x019C,0x026F,0x019C}, {0x019D,0x0272,0x019D}, /* 019C */
2150 {0x0220,0x019E,0x0220}, {0x019F,0x0275,0x019F}, /* 019E */
2151 {0x01A0,0x01A1,0x004F}, {0x01A0,0x01A1,0x004F}, /* 01A0 */
2152 {0x01A2,0x01A3,0x01A2}, {0x01A2,0x01A3,0x01A2}, /* 01A2 */
2153 {0x01A4,0x01A5,0x01A4}, {0x01A4,0x01A5,0x01A4}, /* 01A4 */
2154 {0x01A6,0x0280,0x01A6}, {0x01A7,0x01A8,0x01A7}, /* 01A6 */
2155 {0x01A7,0x01A8,0x01A7}, {0x01A9,0x0283,0x01A9}, /* 01A8 */
2156 {0x01AA,0x01AA,0x01AA}, {0x01AB,0x01AB,0x01AB}, /* 01AA */
2157 {0x01AC,0x01AD,0x01AC}, {0x01AC,0x01AD,0x01AC}, /* 01AC */
2158 {0x01AE,0x0288,0x01AE}, {0x01AF,0x01B0,0x0055}, /* 01AE */
2159 {0x01AF,0x01B0,0x0055}, {0x01B1,0x028A,0x01B1}, /* 01B0 */
2160 {0x01B2,0x028B,0x01B2}, {0x01B3,0x01B4,0x01B3}, /* 01B2 */
2161 {0x01B3,0x01B4,0x01B3}, {0x01B5,0x01B6,0x01B5}, /* 01B4 */
2162 {0x01B5,0x01B6,0x01B5}, {0x01B7,0x0292,0x01B7}, /* 01B6 */
2163 {0x01B8,0x01B9,0x01B8}, {0x01B8,0x01B9,0x01B8}, /* 01B8 */
2164 {0x01BA,0x01BA,0x01BA}, {0x01BB,0x01BB,0x01BB}, /* 01BA */
2165 {0x01BC,0x01BD,0x01BC}, {0x01BC,0x01BD,0x01BC}, /* 01BC */
2166 {0x01BE,0x01BE,0x01BE}, {0x01F7,0x01BF,0x01F7}, /* 01BE */
2167 {0x01C0,0x01C0,0x01C0}, {0x01C1,0x01C1,0x01C1}, /* 01C0 */
2168 {0x01C2,0x01C2,0x01C2}, {0x01C3,0x01C3,0x01C3}, /* 01C2 */
2169 {0x01C4,0x01C6,0x01C4}, {0x01C4,0x01C6,0x01C4}, /* 01C4 */
2170 {0x01C4,0x01C6,0x01C4}, {0x01C7,0x01C9,0x01C7}, /* 01C6 */
2171 {0x01C7,0x01C9,0x01C7}, {0x01C7,0x01C9,0x01C7}, /* 01C8 */
2172 {0x01CA,0x01CC,0x01CA}, {0x01CA,0x01CC,0x01CA}, /* 01CA */
2173 {0x01CA,0x01CC,0x01CA}, {0x01CD,0x01CE,0x0041}, /* 01CC */
2174 {0x01CD,0x01CE,0x0041}, {0x01CF,0x01D0,0x0049}, /* 01CE */
2175 {0x01CF,0x01D0,0x0049}, {0x01D1,0x01D2,0x004F}, /* 01D0 */
2176 {0x01D1,0x01D2,0x004F}, {0x01D3,0x01D4,0x0055}, /* 01D2 */
2177 {0x01D3,0x01D4,0x0055}, {0x01D5,0x01D6,0x0055}, /* 01D4 */
2178 {0x01D5,0x01D6,0x0055}, {0x01D7,0x01D8,0x0055}, /* 01D6 */
2179 {0x01D7,0x01D8,0x0055}, {0x01D9,0x01DA,0x0055}, /* 01D8 */
2180 {0x01D9,0x01DA,0x0055}, {0x01DB,0x01DC,0x0055}, /* 01DA */
2181 {0x01DB,0x01DC,0x0055}, {0x018E,0x01DD,0x018E}, /* 01DC */
2182 {0x01DE,0x01DF,0x0041}, {0x01DE,0x01DF,0x0041}, /* 01DE */
2183 {0x01E0,0x01E1,0x0041}, {0x01E0,0x01E1,0x0041}, /* 01E0 */
2184 {0x01E2,0x01E3,0x00C6}, {0x01E2,0x01E3,0x00C6}, /* 01E2 */
2185 {0x01E4,0x01E5,0x01E4}, {0x01E4,0x01E5,0x01E4}, /* 01E4 */
2186 {0x01E6,0x01E7,0x0047}, {0x01E6,0x01E7,0x0047}, /* 01E6 */
2187 {0x01E8,0x01E9,0x004B}, {0x01E8,0x01E9,0x004B}, /* 01E8 */
2188 {0x01EA,0x01EB,0x004F}, {0x01EA,0x01EB,0x004F}, /* 01EA */
2189 {0x01EC,0x01ED,0x004F}, {0x01EC,0x01ED,0x004F}, /* 01EC */
2190 {0x01EE,0x01EF,0x01B7}, {0x01EE,0x01EF,0x01B7}, /* 01EE */
2191 {0x01F0,0x01F0,0x004A}, {0x01F1,0x01F3,0x01F1}, /* 01F0 */
2192 {0x01F1,0x01F3,0x01F1}, {0x01F1,0x01F3,0x01F1}, /* 01F2 */
2193 {0x01F4,0x01F5,0x0047}, {0x01F4,0x01F5,0x0047}, /* 01F4 */
2194 {0x01F6,0x0195,0x01F6}, {0x01F7,0x01BF,0x01F7}, /* 01F6 */
2195 {0x01F8,0x01F9,0x004E}, {0x01F8,0x01F9,0x004E}, /* 01F8 */
2196 {0x01FA,0x01FB,0x0041}, {0x01FA,0x01FB,0x0041}, /* 01FA */
2197 {0x01FC,0x01FD,0x00C6}, {0x01FC,0x01FD,0x00C6}, /* 01FC */
2198 {0x01FE,0x01FF,0x00D8}, {0x01FE,0x01FF,0x00D8} /* 01FE */
2199 };
2200
2201 static const MY_UNICASE_CHARACTER u520p02[]={
2202 {0x0200,0x0201,0x0041}, {0x0200,0x0201,0x0041}, /* 0200 */
2203 {0x0202,0x0203,0x0041}, {0x0202,0x0203,0x0041}, /* 0202 */
2204 {0x0204,0x0205,0x0045}, {0x0204,0x0205,0x0045}, /* 0204 */
2205 {0x0206,0x0207,0x0045}, {0x0206,0x0207,0x0045}, /* 0206 */
2206 {0x0208,0x0209,0x0049}, {0x0208,0x0209,0x0049}, /* 0208 */
2207 {0x020A,0x020B,0x0049}, {0x020A,0x020B,0x0049}, /* 020A */
2208 {0x020C,0x020D,0x004F}, {0x020C,0x020D,0x004F}, /* 020C */
2209 {0x020E,0x020F,0x004F}, {0x020E,0x020F,0x004F}, /* 020E */
2210 {0x0210,0x0211,0x0052}, {0x0210,0x0211,0x0052}, /* 0210 */
2211 {0x0212,0x0213,0x0052}, {0x0212,0x0213,0x0052}, /* 0212 */
2212 {0x0214,0x0215,0x0055}, {0x0214,0x0215,0x0055}, /* 0214 */
2213 {0x0216,0x0217,0x0055}, {0x0216,0x0217,0x0055}, /* 0216 */
2214 {0x0218,0x0219,0x0053}, {0x0218,0x0219,0x0053}, /* 0218 */
2215 {0x021A,0x021B,0x0054}, {0x021A,0x021B,0x0054}, /* 021A */
2216 {0x021C,0x021D,0x021C}, {0x021C,0x021D,0x021C}, /* 021C */
2217 {0x021E,0x021F,0x0048}, {0x021E,0x021F,0x0048}, /* 021E */
2218 {0x0220,0x019E,0x0220}, {0x0221,0x0221,0x0221}, /* 0220 */
2219 {0x0222,0x0223,0x0222}, {0x0222,0x0223,0x0222}, /* 0222 */
2220 {0x0224,0x0225,0x0224}, {0x0224,0x0225,0x0224}, /* 0224 */
2221 {0x0226,0x0227,0x0041}, {0x0226,0x0227,0x0041}, /* 0226 */
2222 {0x0228,0x0229,0x0045}, {0x0228,0x0229,0x0045}, /* 0228 */
2223 {0x022A,0x022B,0x004F}, {0x022A,0x022B,0x004F}, /* 022A */
2224 {0x022C,0x022D,0x004F}, {0x022C,0x022D,0x004F}, /* 022C */
2225 {0x022E,0x022F,0x004F}, {0x022E,0x022F,0x004F}, /* 022E */
2226 {0x0230,0x0231,0x004F}, {0x0230,0x0231,0x004F}, /* 0230 */
2227 {0x0232,0x0233,0x0059}, {0x0232,0x0233,0x0059}, /* 0232 */
2228 {0x0234,0x0234,0x0234}, {0x0235,0x0235,0x0235}, /* 0234 */
2229 {0x0236,0x0236,0x0236}, {0x0237,0x0237,0x0237}, /* 0236 */
2230 {0x0238,0x0238,0x0238}, {0x0239,0x0239,0x0239}, /* 0238 */
2231 {0x023A,0x2C65,0x023A}, {0x023B,0x023C,0x023B}, /* 023A */
2232 {0x023B,0x023C,0x023B}, {0x023D,0x019A,0x023D}, /* 023C */
2233 {0x023E,0x2C66,0x023E}, {0x2C7E,0x023F,0x2C7E}, /* 023E */
2234 {0x2C7F,0x0240,0x2C7F}, {0x0241,0x0242,0x0241}, /* 0240 */
2235 {0x0241,0x0242,0x0241}, {0x0243,0x0180,0x0243}, /* 0242 */
2236 {0x0244,0x0289,0x0244}, {0x0245,0x028C,0x0245}, /* 0244 */
2237 {0x0246,0x0247,0x0246}, {0x0246,0x0247,0x0246}, /* 0246 */
2238 {0x0248,0x0249,0x0248}, {0x0248,0x0249,0x0248}, /* 0248 */
2239 {0x024A,0x024B,0x024A}, {0x024A,0x024B,0x024A}, /* 024A */
2240 {0x024C,0x024D,0x024C}, {0x024C,0x024D,0x024C}, /* 024C */
2241 {0x024E,0x024F,0x024E}, {0x024E,0x024F,0x024E}, /* 024E */
2242 {0x2C6F,0x0250,0x2C6F}, {0x2C6D,0x0251,0x2C6D}, /* 0250 */
2243 {0x2C70,0x0252,0x2C70}, {0x0181,0x0253,0x0181}, /* 0252 */
2244 {0x0186,0x0254,0x0186}, {0x0255,0x0255,0x0255}, /* 0254 */
2245 {0x0189,0x0256,0x0189}, {0x018A,0x0257,0x018A}, /* 0256 */
2246 {0x0258,0x0258,0x0258}, {0x018F,0x0259,0x018F}, /* 0258 */
2247 {0x025A,0x025A,0x025A}, {0x0190,0x025B,0x0190}, /* 025A */
2248 {0x025C,0x025C,0x025C}, {0x025D,0x025D,0x025D}, /* 025C */
2249 {0x025E,0x025E,0x025E}, {0x025F,0x025F,0x025F}, /* 025E */
2250 {0x0193,0x0260,0x0193}, {0x0261,0x0261,0x0261}, /* 0260 */
2251 {0x0262,0x0262,0x0262}, {0x0194,0x0263,0x0194}, /* 0262 */
2252 {0x0264,0x0264,0x0264}, {0x0265,0x0265,0x0265}, /* 0264 */
2253 {0x0266,0x0266,0x0266}, {0x0267,0x0267,0x0267}, /* 0266 */
2254 {0x0197,0x0268,0x0197}, {0x0196,0x0269,0x0196}, /* 0268 */
2255 {0x026A,0x026A,0x026A}, {0x2C62,0x026B,0x2C62}, /* 026A */
2256 {0x026C,0x026C,0x026C}, {0x026D,0x026D,0x026D}, /* 026C */
2257 {0x026E,0x026E,0x026E}, {0x019C,0x026F,0x019C}, /* 026E */
2258 {0x0270,0x0270,0x0270}, {0x2C6E,0x0271,0x2C6E}, /* 0270 */
2259 {0x019D,0x0272,0x019D}, {0x0273,0x0273,0x0273}, /* 0272 */
2260 {0x0274,0x0274,0x0274}, {0x019F,0x0275,0x019F}, /* 0274 */
2261 {0x0276,0x0276,0x0276}, {0x0277,0x0277,0x0277}, /* 0276 */
2262 {0x0278,0x0278,0x0278}, {0x0279,0x0279,0x0279}, /* 0278 */
2263 {0x027A,0x027A,0x027A}, {0x027B,0x027B,0x027B}, /* 027A */
2264 {0x027C,0x027C,0x027C}, {0x2C64,0x027D,0x2C64}, /* 027C */
2265 {0x027E,0x027E,0x027E}, {0x027F,0x027F,0x027F}, /* 027E */
2266 {0x01A6,0x0280,0x01A6}, {0x0281,0x0281,0x0281}, /* 0280 */
2267 {0x0282,0x0282,0x0282}, {0x01A9,0x0283,0x01A9}, /* 0282 */
2268 {0x0284,0x0284,0x0284}, {0x0285,0x0285,0x0285}, /* 0284 */
2269 {0x0286,0x0286,0x0286}, {0x0287,0x0287,0x0287}, /* 0286 */
2270 {0x01AE,0x0288,0x01AE}, {0x0244,0x0289,0x0244}, /* 0288 */
2271 {0x01B1,0x028A,0x01B1}, {0x01B2,0x028B,0x01B2}, /* 028A */
2272 {0x0245,0x028C,0x0245}, {0x028D,0x028D,0x028D}, /* 028C */
2273 {0x028E,0x028E,0x028E}, {0x028F,0x028F,0x028F}, /* 028E */
2274 {0x0290,0x0290,0x0290}, {0x0291,0x0291,0x0291}, /* 0290 */
2275 {0x01B7,0x0292,0x01B7}, {0x0293,0x0293,0x0293}, /* 0292 */
2276 {0x0294,0x0294,0x0294}, {0x0295,0x0295,0x0295}, /* 0294 */
2277 {0x0296,0x0296,0x0296}, {0x0297,0x0297,0x0297}, /* 0296 */
2278 {0x0298,0x0298,0x0298}, {0x0299,0x0299,0x0299}, /* 0298 */
2279 {0x029A,0x029A,0x029A}, {0x029B,0x029B,0x029B}, /* 029A */
2280 {0x029C,0x029C,0x029C}, {0x029D,0x029D,0x029D}, /* 029C */
2281 {0x029E,0x029E,0x029E}, {0x029F,0x029F,0x029F}, /* 029E */
2282 {0x02A0,0x02A0,0x02A0}, {0x02A1,0x02A1,0x02A1}, /* 02A0 */
2283 {0x02A2,0x02A2,0x02A2}, {0x02A3,0x02A3,0x02A3}, /* 02A2 */
2284 {0x02A4,0x02A4,0x02A4}, {0x02A5,0x02A5,0x02A5}, /* 02A4 */
2285 {0x02A6,0x02A6,0x02A6}, {0x02A7,0x02A7,0x02A7}, /* 02A6 */
2286 {0x02A8,0x02A8,0x02A8}, {0x02A9,0x02A9,0x02A9}, /* 02A8 */
2287 {0x02AA,0x02AA,0x02AA}, {0x02AB,0x02AB,0x02AB}, /* 02AA */
2288 {0x02AC,0x02AC,0x02AC}, {0x02AD,0x02AD,0x02AD}, /* 02AC */
2289 {0x02AE,0x02AE,0x02AE}, {0x02AF,0x02AF,0x02AF}, /* 02AE */
2290 {0x02B0,0x02B0,0x02B0}, {0x02B1,0x02B1,0x02B1}, /* 02B0 */
2291 {0x02B2,0x02B2,0x02B2}, {0x02B3,0x02B3,0x02B3}, /* 02B2 */
2292 {0x02B4,0x02B4,0x02B4}, {0x02B5,0x02B5,0x02B5}, /* 02B4 */
2293 {0x02B6,0x02B6,0x02B6}, {0x02B7,0x02B7,0x02B7}, /* 02B6 */
2294 {0x02B8,0x02B8,0x02B8}, {0x02B9,0x02B9,0x02B9}, /* 02B8 */
2295 {0x02BA,0x02BA,0x02BA}, {0x02BB,0x02BB,0x02BB}, /* 02BA */
2296 {0x02BC,0x02BC,0x02BC}, {0x02BD,0x02BD,0x02BD}, /* 02BC */
2297 {0x02BE,0x02BE,0x02BE}, {0x02BF,0x02BF,0x02BF}, /* 02BE */
2298 {0x02C0,0x02C0,0x02C0}, {0x02C1,0x02C1,0x02C1}, /* 02C0 */
2299 {0x02C2,0x02C2,0x02C2}, {0x02C3,0x02C3,0x02C3}, /* 02C2 */
2300 {0x02C4,0x02C4,0x02C4}, {0x02C5,0x02C5,0x02C5}, /* 02C4 */
2301 {0x02C6,0x02C6,0x02C6}, {0x02C7,0x02C7,0x02C7}, /* 02C6 */
2302 {0x02C8,0x02C8,0x02C8}, {0x02C9,0x02C9,0x02C9}, /* 02C8 */
2303 {0x02CA,0x02CA,0x02CA}, {0x02CB,0x02CB,0x02CB}, /* 02CA */
2304 {0x02CC,0x02CC,0x02CC}, {0x02CD,0x02CD,0x02CD}, /* 02CC */
2305 {0x02CE,0x02CE,0x02CE}, {0x02CF,0x02CF,0x02CF}, /* 02CE */
2306 {0x02D0,0x02D0,0x02D0}, {0x02D1,0x02D1,0x02D1}, /* 02D0 */
2307 {0x02D2,0x02D2,0x02D2}, {0x02D3,0x02D3,0x02D3}, /* 02D2 */
2308 {0x02D4,0x02D4,0x02D4}, {0x02D5,0x02D5,0x02D5}, /* 02D4 */
2309 {0x02D6,0x02D6,0x02D6}, {0x02D7,0x02D7,0x02D7}, /* 02D6 */
2310 {0x02D8,0x02D8,0x02D8}, {0x02D9,0x02D9,0x02D9}, /* 02D8 */
2311 {0x02DA,0x02DA,0x02DA}, {0x02DB,0x02DB,0x02DB}, /* 02DA */
2312 {0x02DC,0x02DC,0x02DC}, {0x02DD,0x02DD,0x02DD}, /* 02DC */
2313 {0x02DE,0x02DE,0x02DE}, {0x02DF,0x02DF,0x02DF}, /* 02DE */
2314 {0x02E0,0x02E0,0x02E0}, {0x02E1,0x02E1,0x02E1}, /* 02E0 */
2315 {0x02E2,0x02E2,0x02E2}, {0x02E3,0x02E3,0x02E3}, /* 02E2 */
2316 {0x02E4,0x02E4,0x02E4}, {0x02E5,0x02E5,0x02E5}, /* 02E4 */
2317 {0x02E6,0x02E6,0x02E6}, {0x02E7,0x02E7,0x02E7}, /* 02E6 */
2318 {0x02E8,0x02E8,0x02E8}, {0x02E9,0x02E9,0x02E9}, /* 02E8 */
2319 {0x02EA,0x02EA,0x02EA}, {0x02EB,0x02EB,0x02EB}, /* 02EA */
2320 {0x02EC,0x02EC,0x02EC}, {0x02ED,0x02ED,0x02ED}, /* 02EC */
2321 {0x02EE,0x02EE,0x02EE}, {0x02EF,0x02EF,0x02EF}, /* 02EE */
2322 {0x02F0,0x02F0,0x02F0}, {0x02F1,0x02F1,0x02F1}, /* 02F0 */
2323 {0x02F2,0x02F2,0x02F2}, {0x02F3,0x02F3,0x02F3}, /* 02F2 */
2324 {0x02F4,0x02F4,0x02F4}, {0x02F5,0x02F5,0x02F5}, /* 02F4 */
2325 {0x02F6,0x02F6,0x02F6}, {0x02F7,0x02F7,0x02F7}, /* 02F6 */
2326 {0x02F8,0x02F8,0x02F8}, {0x02F9,0x02F9,0x02F9}, /* 02F8 */
2327 {0x02FA,0x02FA,0x02FA}, {0x02FB,0x02FB,0x02FB}, /* 02FA */
2328 {0x02FC,0x02FC,0x02FC}, {0x02FD,0x02FD,0x02FD}, /* 02FC */
2329 {0x02FE,0x02FE,0x02FE}, {0x02FF,0x02FF,0x02FF} /* 02FE */
2330 };
2331
2332 static const MY_UNICASE_CHARACTER u520p03[]={
2333 {0x0300,0x0300,0x0300}, {0x0301,0x0301,0x0301}, /* 0300 */
2334 {0x0302,0x0302,0x0302}, {0x0303,0x0303,0x0303}, /* 0302 */
2335 {0x0304,0x0304,0x0304}, {0x0305,0x0305,0x0305}, /* 0304 */
2336 {0x0306,0x0306,0x0306}, {0x0307,0x0307,0x0307}, /* 0306 */
2337 {0x0308,0x0308,0x0308}, {0x0309,0x0309,0x0309}, /* 0308 */
2338 {0x030A,0x030A,0x030A}, {0x030B,0x030B,0x030B}, /* 030A */
2339 {0x030C,0x030C,0x030C}, {0x030D,0x030D,0x030D}, /* 030C */
2340 {0x030E,0x030E,0x030E}, {0x030F,0x030F,0x030F}, /* 030E */
2341 {0x0310,0x0310,0x0310}, {0x0311,0x0311,0x0311}, /* 0310 */
2342 {0x0312,0x0312,0x0312}, {0x0313,0x0313,0x0313}, /* 0312 */
2343 {0x0314,0x0314,0x0314}, {0x0315,0x0315,0x0315}, /* 0314 */
2344 {0x0316,0x0316,0x0316}, {0x0317,0x0317,0x0317}, /* 0316 */
2345 {0x0318,0x0318,0x0318}, {0x0319,0x0319,0x0319}, /* 0318 */
2346 {0x031A,0x031A,0x031A}, {0x031B,0x031B,0x031B}, /* 031A */
2347 {0x031C,0x031C,0x031C}, {0x031D,0x031D,0x031D}, /* 031C */
2348 {0x031E,0x031E,0x031E}, {0x031F,0x031F,0x031F}, /* 031E */
2349 {0x0320,0x0320,0x0320}, {0x0321,0x0321,0x0321}, /* 0320 */
2350 {0x0322,0x0322,0x0322}, {0x0323,0x0323,0x0323}, /* 0322 */
2351 {0x0324,0x0324,0x0324}, {0x0325,0x0325,0x0325}, /* 0324 */
2352 {0x0326,0x0326,0x0326}, {0x0327,0x0327,0x0327}, /* 0326 */
2353 {0x0328,0x0328,0x0328}, {0x0329,0x0329,0x0329}, /* 0328 */
2354 {0x032A,0x032A,0x032A}, {0x032B,0x032B,0x032B}, /* 032A */
2355 {0x032C,0x032C,0x032C}, {0x032D,0x032D,0x032D}, /* 032C */
2356 {0x032E,0x032E,0x032E}, {0x032F,0x032F,0x032F}, /* 032E */
2357 {0x0330,0x0330,0x0330}, {0x0331,0x0331,0x0331}, /* 0330 */
2358 {0x0332,0x0332,0x0332}, {0x0333,0x0333,0x0333}, /* 0332 */
2359 {0x0334,0x0334,0x0334}, {0x0335,0x0335,0x0335}, /* 0334 */
2360 {0x0336,0x0336,0x0336}, {0x0337,0x0337,0x0337}, /* 0336 */
2361 {0x0338,0x0338,0x0338}, {0x0339,0x0339,0x0339}, /* 0338 */
2362 {0x033A,0x033A,0x033A}, {0x033B,0x033B,0x033B}, /* 033A */
2363 {0x033C,0x033C,0x033C}, {0x033D,0x033D,0x033D}, /* 033C */
2364 {0x033E,0x033E,0x033E}, {0x033F,0x033F,0x033F}, /* 033E */
2365 {0x0340,0x0340,0x0340}, {0x0341,0x0341,0x0341}, /* 0340 */
2366 {0x0342,0x0342,0x0342}, {0x0343,0x0343,0x0343}, /* 0342 */
2367 {0x0344,0x0344,0x0344}, {0x0399,0x0345,0x0399}, /* 0344 */
2368 {0x0346,0x0346,0x0346}, {0x0347,0x0347,0x0347}, /* 0346 */
2369 {0x0348,0x0348,0x0348}, {0x0349,0x0349,0x0349}, /* 0348 */
2370 {0x034A,0x034A,0x034A}, {0x034B,0x034B,0x034B}, /* 034A */
2371 {0x034C,0x034C,0x034C}, {0x034D,0x034D,0x034D}, /* 034C */
2372 {0x034E,0x034E,0x034E}, {0x034F,0x034F,0x034F}, /* 034E */
2373 {0x0350,0x0350,0x0350}, {0x0351,0x0351,0x0351}, /* 0350 */
2374 {0x0352,0x0352,0x0352}, {0x0353,0x0353,0x0353}, /* 0352 */
2375 {0x0354,0x0354,0x0354}, {0x0355,0x0355,0x0355}, /* 0354 */
2376 {0x0356,0x0356,0x0356}, {0x0357,0x0357,0x0357}, /* 0356 */
2377 {0x0358,0x0358,0x0358}, {0x0359,0x0359,0x0359}, /* 0358 */
2378 {0x035A,0x035A,0x035A}, {0x035B,0x035B,0x035B}, /* 035A */
2379 {0x035C,0x035C,0x035C}, {0x035D,0x035D,0x035D}, /* 035C */
2380 {0x035E,0x035E,0x035E}, {0x035F,0x035F,0x035F}, /* 035E */
2381 {0x0360,0x0360,0x0360}, {0x0361,0x0361,0x0361}, /* 0360 */
2382 {0x0362,0x0362,0x0362}, {0x0363,0x0363,0x0363}, /* 0362 */
2383 {0x0364,0x0364,0x0364}, {0x0365,0x0365,0x0365}, /* 0364 */
2384 {0x0366,0x0366,0x0366}, {0x0367,0x0367,0x0367}, /* 0366 */
2385 {0x0368,0x0368,0x0368}, {0x0369,0x0369,0x0369}, /* 0368 */
2386 {0x036A,0x036A,0x036A}, {0x036B,0x036B,0x036B}, /* 036A */
2387 {0x036C,0x036C,0x036C}, {0x036D,0x036D,0x036D}, /* 036C */
2388 {0x036E,0x036E,0x036E}, {0x036F,0x036F,0x036F}, /* 036E */
2389 {0x0370,0x0371,0x0370}, {0x0370,0x0371,0x0370}, /* 0370 */
2390 {0x0372,0x0373,0x0372}, {0x0372,0x0373,0x0372}, /* 0372 */
2391 {0x0374,0x0374,0x0374}, {0x0375,0x0375,0x0375}, /* 0374 */
2392 {0x0376,0x0377,0x0376}, {0x0376,0x0377,0x0376}, /* 0376 */
2393 {0x0378,0x0378,0x0378}, {0x0379,0x0379,0x0379}, /* 0378 */
2394 {0x037A,0x037A,0x037A}, {0x03FD,0x037B,0x03FD}, /* 037A */
2395 {0x03FE,0x037C,0x03FE}, {0x03FF,0x037D,0x03FF}, /* 037C */
2396 {0x037E,0x037E,0x037E}, {0x037F,0x037F,0x037F}, /* 037E */
2397 {0x0380,0x0380,0x0380}, {0x0381,0x0381,0x0381}, /* 0380 */
2398 {0x0382,0x0382,0x0382}, {0x0383,0x0383,0x0383}, /* 0382 */
2399 {0x0384,0x0384,0x0384}, {0x0385,0x0385,0x0385}, /* 0384 */
2400 {0x0386,0x03AC,0x0391}, {0x0387,0x0387,0x0387}, /* 0386 */
2401 {0x0388,0x03AD,0x0395}, {0x0389,0x03AE,0x0397}, /* 0388 */
2402 {0x038A,0x03AF,0x0399}, {0x038B,0x038B,0x038B}, /* 038A */
2403 {0x038C,0x03CC,0x039F}, {0x038D,0x038D,0x038D}, /* 038C */
2404 {0x038E,0x03CD,0x03A5}, {0x038F,0x03CE,0x03A9}, /* 038E */
2405 {0x0390,0x0390,0x0399}, {0x0391,0x03B1,0x0391}, /* 0390 */
2406 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393}, /* 0392 */
2407 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395}, /* 0394 */
2408 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397}, /* 0396 */
2409 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399}, /* 0398 */
2410 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B}, /* 039A */
2411 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D}, /* 039C */
2412 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F}, /* 039E */
2413 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1}, /* 03A0 */
2414 {0x03A2,0x03A2,0x03A2}, {0x03A3,0x03C3,0x03A3}, /* 03A2 */
2415 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5}, /* 03A4 */
2416 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7}, /* 03A6 */
2417 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9}, /* 03A8 */
2418 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5}, /* 03AA */
2419 {0x0386,0x03AC,0x0391}, {0x0388,0x03AD,0x0395}, /* 03AC */
2420 {0x0389,0x03AE,0x0397}, {0x038A,0x03AF,0x0399}, /* 03AE */
2421 {0x03B0,0x03B0,0x03A5}, {0x0391,0x03B1,0x0391}, /* 03B0 */
2422 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393}, /* 03B2 */
2423 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395}, /* 03B4 */
2424 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397}, /* 03B6 */
2425 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399}, /* 03B8 */
2426 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B}, /* 03BA */
2427 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D}, /* 03BC */
2428 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F}, /* 03BE */
2429 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1}, /* 03C0 */
2430 {0x03A3,0x03C2,0x03A3}, {0x03A3,0x03C3,0x03A3}, /* 03C2 */
2431 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5}, /* 03C4 */
2432 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7}, /* 03C6 */
2433 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9}, /* 03C8 */
2434 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5}, /* 03CA */
2435 {0x038C,0x03CC,0x039F}, {0x038E,0x03CD,0x03A5}, /* 03CC */
2436 {0x038F,0x03CE,0x03A9}, {0x03CF,0x03D7,0x03CF}, /* 03CE */
2437 {0x0392,0x03D0,0x0392}, {0x0398,0x03D1,0x0398}, /* 03D0 */
2438 {0x03D2,0x03D2,0x03D2}, {0x03D3,0x03D3,0x03D2}, /* 03D2 */
2439 {0x03D4,0x03D4,0x03D2}, {0x03A6,0x03D5,0x03A6}, /* 03D4 */
2440 {0x03A0,0x03D6,0x03A0}, {0x03CF,0x03D7,0x03CF}, /* 03D6 */
2441 {0x03D8,0x03D9,0x03D8}, {0x03D8,0x03D9,0x03D8}, /* 03D8 */
2442 {0x03DA,0x03DB,0x03DA}, {0x03DA,0x03DB,0x03DA}, /* 03DA */
2443 {0x03DC,0x03DD,0x03DC}, {0x03DC,0x03DD,0x03DC}, /* 03DC */
2444 {0x03DE,0x03DF,0x03DE}, {0x03DE,0x03DF,0x03DE}, /* 03DE */
2445 {0x03E0,0x03E1,0x03E0}, {0x03E0,0x03E1,0x03E0}, /* 03E0 */
2446 {0x03E2,0x03E3,0x03E2}, {0x03E2,0x03E3,0x03E2}, /* 03E2 */
2447 {0x03E4,0x03E5,0x03E4}, {0x03E4,0x03E5,0x03E4}, /* 03E4 */
2448 {0x03E6,0x03E7,0x03E6}, {0x03E6,0x03E7,0x03E6}, /* 03E6 */
2449 {0x03E8,0x03E9,0x03E8}, {0x03E8,0x03E9,0x03E8}, /* 03E8 */
2450 {0x03EA,0x03EB,0x03EA}, {0x03EA,0x03EB,0x03EA}, /* 03EA */
2451 {0x03EC,0x03ED,0x03EC}, {0x03EC,0x03ED,0x03EC}, /* 03EC */
2452 {0x03EE,0x03EF,0x03EE}, {0x03EE,0x03EF,0x03EE}, /* 03EE */
2453 {0x039A,0x03F0,0x039A}, {0x03A1,0x03F1,0x03A1}, /* 03F0 */
2454 {0x03F9,0x03F2,0x03F9}, {0x03F3,0x03F3,0x03F3}, /* 03F2 */
2455 {0x03F4,0x03B8,0x03F4}, {0x0395,0x03F5,0x0395}, /* 03F4 */
2456 {0x03F6,0x03F6,0x03F6}, {0x03F7,0x03F8,0x03F7}, /* 03F6 */
2457 {0x03F7,0x03F8,0x03F7}, {0x03F9,0x03F2,0x03F9}, /* 03F8 */
2458 {0x03FA,0x03FB,0x03FA}, {0x03FA,0x03FB,0x03FA}, /* 03FA */
2459 {0x03FC,0x03FC,0x03FC}, {0x03FD,0x037B,0x03FD}, /* 03FC */
2460 {0x03FE,0x037C,0x03FE}, {0x03FF,0x037D,0x03FF} /* 03FE */
2461 };
2462
2463 static const MY_UNICASE_CHARACTER u520p04[]={
2464 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415}, /* 0400 */
2465 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413}, /* 0402 */
2466 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405}, /* 0404 */
2467 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406}, /* 0406 */
2468 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409}, /* 0408 */
2469 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B}, /* 040A */
2470 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418}, /* 040C */
2471 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F}, /* 040E */
2472 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411}, /* 0410 */
2473 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413}, /* 0412 */
2474 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415}, /* 0414 */
2475 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417}, /* 0416 */
2476 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419}, /* 0418 */
2477 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B}, /* 041A */
2478 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D}, /* 041C */
2479 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F}, /* 041E */
2480 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421}, /* 0420 */
2481 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423}, /* 0422 */
2482 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425}, /* 0424 */
2483 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427}, /* 0426 */
2484 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429}, /* 0428 */
2485 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B}, /* 042A */
2486 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D}, /* 042C */
2487 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F}, /* 042E */
2488 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411}, /* 0430 */
2489 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413}, /* 0432 */
2490 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415}, /* 0434 */
2491 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417}, /* 0436 */
2492 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419}, /* 0438 */
2493 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B}, /* 043A */
2494 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D}, /* 043C */
2495 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F}, /* 043E */
2496 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421}, /* 0440 */
2497 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423}, /* 0442 */
2498 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425}, /* 0444 */
2499 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427}, /* 0446 */
2500 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429}, /* 0448 */
2501 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B}, /* 044A */
2502 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D}, /* 044C */
2503 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F}, /* 044E */
2504 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415}, /* 0450 */
2505 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413}, /* 0452 */
2506 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405}, /* 0454 */
2507 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406}, /* 0456 */
2508 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409}, /* 0458 */
2509 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B}, /* 045A */
2510 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418}, /* 045C */
2511 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F}, /* 045E */
2512 {0x0460,0x0461,0x0460}, {0x0460,0x0461,0x0460}, /* 0460 */
2513 {0x0462,0x0463,0x0462}, {0x0462,0x0463,0x0462}, /* 0462 */
2514 {0x0464,0x0465,0x0464}, {0x0464,0x0465,0x0464}, /* 0464 */
2515 {0x0466,0x0467,0x0466}, {0x0466,0x0467,0x0466}, /* 0466 */
2516 {0x0468,0x0469,0x0468}, {0x0468,0x0469,0x0468}, /* 0468 */
2517 {0x046A,0x046B,0x046A}, {0x046A,0x046B,0x046A}, /* 046A */
2518 {0x046C,0x046D,0x046C}, {0x046C,0x046D,0x046C}, /* 046C */
2519 {0x046E,0x046F,0x046E}, {0x046E,0x046F,0x046E}, /* 046E */
2520 {0x0470,0x0471,0x0470}, {0x0470,0x0471,0x0470}, /* 0470 */
2521 {0x0472,0x0473,0x0472}, {0x0472,0x0473,0x0472}, /* 0472 */
2522 {0x0474,0x0475,0x0474}, {0x0474,0x0475,0x0474}, /* 0474 */
2523 {0x0476,0x0477,0x0474}, {0x0476,0x0477,0x0474}, /* 0476 */
2524 {0x0478,0x0479,0x0478}, {0x0478,0x0479,0x0478}, /* 0478 */
2525 {0x047A,0x047B,0x047A}, {0x047A,0x047B,0x047A}, /* 047A */
2526 {0x047C,0x047D,0x047C}, {0x047C,0x047D,0x047C}, /* 047C */
2527 {0x047E,0x047F,0x047E}, {0x047E,0x047F,0x047E}, /* 047E */
2528 {0x0480,0x0481,0x0480}, {0x0480,0x0481,0x0480}, /* 0480 */
2529 {0x0482,0x0482,0x0482}, {0x0483,0x0483,0x0483}, /* 0482 */
2530 {0x0484,0x0484,0x0484}, {0x0485,0x0485,0x0485}, /* 0484 */
2531 {0x0486,0x0486,0x0486}, {0x0487,0x0487,0x0487}, /* 0486 */
2532 {0x0488,0x0488,0x0488}, {0x0489,0x0489,0x0489}, /* 0488 */
2533 {0x048A,0x048B,0x048A}, {0x048A,0x048B,0x048A}, /* 048A */
2534 {0x048C,0x048D,0x048C}, {0x048C,0x048D,0x048C}, /* 048C */
2535 {0x048E,0x048F,0x048E}, {0x048E,0x048F,0x048E}, /* 048E */
2536 {0x0490,0x0491,0x0490}, {0x0490,0x0491,0x0490}, /* 0490 */
2537 {0x0492,0x0493,0x0492}, {0x0492,0x0493,0x0492}, /* 0492 */
2538 {0x0494,0x0495,0x0494}, {0x0494,0x0495,0x0494}, /* 0494 */
2539 {0x0496,0x0497,0x0496}, {0x0496,0x0497,0x0496}, /* 0496 */
2540 {0x0498,0x0499,0x0498}, {0x0498,0x0499,0x0498}, /* 0498 */
2541 {0x049A,0x049B,0x049A}, {0x049A,0x049B,0x049A}, /* 049A */
2542 {0x049C,0x049D,0x049C}, {0x049C,0x049D,0x049C}, /* 049C */
2543 {0x049E,0x049F,0x049E}, {0x049E,0x049F,0x049E}, /* 049E */
2544 {0x04A0,0x04A1,0x04A0}, {0x04A0,0x04A1,0x04A0}, /* 04A0 */
2545 {0x04A2,0x04A3,0x04A2}, {0x04A2,0x04A3,0x04A2}, /* 04A2 */
2546 {0x04A4,0x04A5,0x04A4}, {0x04A4,0x04A5,0x04A4}, /* 04A4 */
2547 {0x04A6,0x04A7,0x04A6}, {0x04A6,0x04A7,0x04A6}, /* 04A6 */
2548 {0x04A8,0x04A9,0x04A8}, {0x04A8,0x04A9,0x04A8}, /* 04A8 */
2549 {0x04AA,0x04AB,0x04AA}, {0x04AA,0x04AB,0x04AA}, /* 04AA */
2550 {0x04AC,0x04AD,0x04AC}, {0x04AC,0x04AD,0x04AC}, /* 04AC */
2551 {0x04AE,0x04AF,0x04AE}, {0x04AE,0x04AF,0x04AE}, /* 04AE */
2552 {0x04B0,0x04B1,0x04B0}, {0x04B0,0x04B1,0x04B0}, /* 04B0 */
2553 {0x04B2,0x04B3,0x04B2}, {0x04B2,0x04B3,0x04B2}, /* 04B2 */
2554 {0x04B4,0x04B5,0x04B4}, {0x04B4,0x04B5,0x04B4}, /* 04B4 */
2555 {0x04B6,0x04B7,0x04B6}, {0x04B6,0x04B7,0x04B6}, /* 04B6 */
2556 {0x04B8,0x04B9,0x04B8}, {0x04B8,0x04B9,0x04B8}, /* 04B8 */
2557 {0x04BA,0x04BB,0x04BA}, {0x04BA,0x04BB,0x04BA}, /* 04BA */
2558 {0x04BC,0x04BD,0x04BC}, {0x04BC,0x04BD,0x04BC}, /* 04BC */
2559 {0x04BE,0x04BF,0x04BE}, {0x04BE,0x04BF,0x04BE}, /* 04BE */
2560 {0x04C0,0x04CF,0x04C0}, {0x04C1,0x04C2,0x0416}, /* 04C0 */
2561 {0x04C1,0x04C2,0x0416}, {0x04C3,0x04C4,0x04C3}, /* 04C2 */
2562 {0x04C3,0x04C4,0x04C3}, {0x04C5,0x04C6,0x04C5}, /* 04C4 */
2563 {0x04C5,0x04C6,0x04C5}, {0x04C7,0x04C8,0x04C7}, /* 04C6 */
2564 {0x04C7,0x04C8,0x04C7}, {0x04C9,0x04CA,0x04C9}, /* 04C8 */
2565 {0x04C9,0x04CA,0x04C9}, {0x04CB,0x04CC,0x04CB}, /* 04CA */
2566 {0x04CB,0x04CC,0x04CB}, {0x04CD,0x04CE,0x04CD}, /* 04CC */
2567 {0x04CD,0x04CE,0x04CD}, {0x04C0,0x04CF,0x04C0}, /* 04CE */
2568 {0x04D0,0x04D1,0x0410}, {0x04D0,0x04D1,0x0410}, /* 04D0 */
2569 {0x04D2,0x04D3,0x0410}, {0x04D2,0x04D3,0x0410}, /* 04D2 */
2570 {0x04D4,0x04D5,0x04D4}, {0x04D4,0x04D5,0x04D4}, /* 04D4 */
2571 {0x04D6,0x04D7,0x0415}, {0x04D6,0x04D7,0x0415}, /* 04D6 */
2572 {0x04D8,0x04D9,0x04D8}, {0x04D8,0x04D9,0x04D8}, /* 04D8 */
2573 {0x04DA,0x04DB,0x04D8}, {0x04DA,0x04DB,0x04D8}, /* 04DA */
2574 {0x04DC,0x04DD,0x0416}, {0x04DC,0x04DD,0x0416}, /* 04DC */
2575 {0x04DE,0x04DF,0x0417}, {0x04DE,0x04DF,0x0417}, /* 04DE */
2576 {0x04E0,0x04E1,0x04E0}, {0x04E0,0x04E1,0x04E0}, /* 04E0 */
2577 {0x04E2,0x04E3,0x0418}, {0x04E2,0x04E3,0x0418}, /* 04E2 */
2578 {0x04E4,0x04E5,0x0418}, {0x04E4,0x04E5,0x0418}, /* 04E4 */
2579 {0x04E6,0x04E7,0x041E}, {0x04E6,0x04E7,0x041E}, /* 04E6 */
2580 {0x04E8,0x04E9,0x04E8}, {0x04E8,0x04E9,0x04E8}, /* 04E8 */
2581 {0x04EA,0x04EB,0x04E8}, {0x04EA,0x04EB,0x04E8}, /* 04EA */
2582 {0x04EC,0x04ED,0x042D}, {0x04EC,0x04ED,0x042D}, /* 04EC */
2583 {0x04EE,0x04EF,0x0423}, {0x04EE,0x04EF,0x0423}, /* 04EE */
2584 {0x04F0,0x04F1,0x0423}, {0x04F0,0x04F1,0x0423}, /* 04F0 */
2585 {0x04F2,0x04F3,0x0423}, {0x04F2,0x04F3,0x0423}, /* 04F2 */
2586 {0x04F4,0x04F5,0x0427}, {0x04F4,0x04F5,0x0427}, /* 04F4 */
2587 {0x04F6,0x04F7,0x04F6}, {0x04F6,0x04F7,0x04F6}, /* 04F6 */
2588 {0x04F8,0x04F9,0x042B}, {0x04F8,0x04F9,0x042B}, /* 04F8 */
2589 {0x04FA,0x04FB,0x04FA}, {0x04FA,0x04FB,0x04FA}, /* 04FA */
2590 {0x04FC,0x04FD,0x04FC}, {0x04FC,0x04FD,0x04FC}, /* 04FC */
2591 {0x04FE,0x04FF,0x04FE}, {0x04FE,0x04FF,0x04FE} /* 04FE */
2592 };
2593
2594 static const MY_UNICASE_CHARACTER u520p05[]={
2595 {0x0500,0x0501,0x0500}, {0x0500,0x0501,0x0500}, /* 0500 */
2596 {0x0502,0x0503,0x0502}, {0x0502,0x0503,0x0502}, /* 0502 */
2597 {0x0504,0x0505,0x0504}, {0x0504,0x0505,0x0504}, /* 0504 */
2598 {0x0506,0x0507,0x0506}, {0x0506,0x0507,0x0506}, /* 0506 */
2599 {0x0508,0x0509,0x0508}, {0x0508,0x0509,0x0508}, /* 0508 */
2600 {0x050A,0x050B,0x050A}, {0x050A,0x050B,0x050A}, /* 050A */
2601 {0x050C,0x050D,0x050C}, {0x050C,0x050D,0x050C}, /* 050C */
2602 {0x050E,0x050F,0x050E}, {0x050E,0x050F,0x050E}, /* 050E */
2603 {0x0510,0x0511,0x0510}, {0x0510,0x0511,0x0510}, /* 0510 */
2604 {0x0512,0x0513,0x0512}, {0x0512,0x0513,0x0512}, /* 0512 */
2605 {0x0514,0x0515,0x0514}, {0x0514,0x0515,0x0514}, /* 0514 */
2606 {0x0516,0x0517,0x0516}, {0x0516,0x0517,0x0516}, /* 0516 */
2607 {0x0518,0x0519,0x0518}, {0x0518,0x0519,0x0518}, /* 0518 */
2608 {0x051A,0x051B,0x051A}, {0x051A,0x051B,0x051A}, /* 051A */
2609 {0x051C,0x051D,0x051C}, {0x051C,0x051D,0x051C}, /* 051C */
2610 {0x051E,0x051F,0x051E}, {0x051E,0x051F,0x051E}, /* 051E */
2611 {0x0520,0x0521,0x0520}, {0x0520,0x0521,0x0520}, /* 0520 */
2612 {0x0522,0x0523,0x0522}, {0x0522,0x0523,0x0522}, /* 0522 */
2613 {0x0524,0x0525,0x0524}, {0x0524,0x0525,0x0524}, /* 0524 */
2614 {0x0526,0x0526,0x0526}, {0x0527,0x0527,0x0527}, /* 0526 */
2615 {0x0528,0x0528,0x0528}, {0x0529,0x0529,0x0529}, /* 0528 */
2616 {0x052A,0x052A,0x052A}, {0x052B,0x052B,0x052B}, /* 052A */
2617 {0x052C,0x052C,0x052C}, {0x052D,0x052D,0x052D}, /* 052C */
2618 {0x052E,0x052E,0x052E}, {0x052F,0x052F,0x052F}, /* 052E */
2619 {0x0530,0x0530,0x0530}, {0x0531,0x0561,0x0531}, /* 0530 */
2620 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533}, /* 0532 */
2621 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535}, /* 0534 */
2622 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537}, /* 0536 */
2623 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539}, /* 0538 */
2624 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B}, /* 053A */
2625 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D}, /* 053C */
2626 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F}, /* 053E */
2627 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541}, /* 0540 */
2628 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543}, /* 0542 */
2629 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545}, /* 0544 */
2630 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547}, /* 0546 */
2631 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549}, /* 0548 */
2632 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B}, /* 054A */
2633 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D}, /* 054C */
2634 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F}, /* 054E */
2635 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551}, /* 0550 */
2636 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553}, /* 0552 */
2637 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555}, /* 0554 */
2638 {0x0556,0x0586,0x0556}, {0x0557,0x0557,0x0557}, /* 0556 */
2639 {0x0558,0x0558,0x0558}, {0x0559,0x0559,0x0559}, /* 0558 */
2640 {0x055A,0x055A,0x055A}, {0x055B,0x055B,0x055B}, /* 055A */
2641 {0x055C,0x055C,0x055C}, {0x055D,0x055D,0x055D}, /* 055C */
2642 {0x055E,0x055E,0x055E}, {0x055F,0x055F,0x055F}, /* 055E */
2643 {0x0560,0x0560,0x0560}, {0x0531,0x0561,0x0531}, /* 0560 */
2644 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533}, /* 0562 */
2645 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535}, /* 0564 */
2646 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537}, /* 0566 */
2647 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539}, /* 0568 */
2648 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B}, /* 056A */
2649 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D}, /* 056C */
2650 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F}, /* 056E */
2651 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541}, /* 0570 */
2652 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543}, /* 0572 */
2653 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545}, /* 0574 */
2654 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547}, /* 0576 */
2655 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549}, /* 0578 */
2656 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B}, /* 057A */
2657 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D}, /* 057C */
2658 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F}, /* 057E */
2659 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551}, /* 0580 */
2660 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553}, /* 0582 */
2661 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555}, /* 0584 */
2662 {0x0556,0x0586,0x0556}, {0x0587,0x0587,0x0587}, /* 0586 */
2663 {0x0588,0x0588,0x0588}, {0x0589,0x0589,0x0589}, /* 0588 */
2664 {0x058A,0x058A,0x058A}, {0x058B,0x058B,0x058B}, /* 058A */
2665 {0x058C,0x058C,0x058C}, {0x058D,0x058D,0x058D}, /* 058C */
2666 {0x058E,0x058E,0x058E}, {0x058F,0x058F,0x058F}, /* 058E */
2667 {0x0590,0x0590,0x0590}, {0x0591,0x0591,0x0591}, /* 0590 */
2668 {0x0592,0x0592,0x0592}, {0x0593,0x0593,0x0593}, /* 0592 */
2669 {0x0594,0x0594,0x0594}, {0x0595,0x0595,0x0595}, /* 0594 */
2670 {0x0596,0x0596,0x0596}, {0x0597,0x0597,0x0597}, /* 0596 */
2671 {0x0598,0x0598,0x0598}, {0x0599,0x0599,0x0599}, /* 0598 */
2672 {0x059A,0x059A,0x059A}, {0x059B,0x059B,0x059B}, /* 059A */
2673 {0x059C,0x059C,0x059C}, {0x059D,0x059D,0x059D}, /* 059C */
2674 {0x059E,0x059E,0x059E}, {0x059F,0x059F,0x059F}, /* 059E */
2675 {0x05A0,0x05A0,0x05A0}, {0x05A1,0x05A1,0x05A1}, /* 05A0 */
2676 {0x05A2,0x05A2,0x05A2}, {0x05A3,0x05A3,0x05A3}, /* 05A2 */
2677 {0x05A4,0x05A4,0x05A4}, {0x05A5,0x05A5,0x05A5}, /* 05A4 */
2678 {0x05A6,0x05A6,0x05A6}, {0x05A7,0x05A7,0x05A7}, /* 05A6 */
2679 {0x05A8,0x05A8,0x05A8}, {0x05A9,0x05A9,0x05A9}, /* 05A8 */
2680 {0x05AA,0x05AA,0x05AA}, {0x05AB,0x05AB,0x05AB}, /* 05AA */
2681 {0x05AC,0x05AC,0x05AC}, {0x05AD,0x05AD,0x05AD}, /* 05AC */
2682 {0x05AE,0x05AE,0x05AE}, {0x05AF,0x05AF,0x05AF}, /* 05AE */
2683 {0x05B0,0x05B0,0x05B0}, {0x05B1,0x05B1,0x05B1}, /* 05B0 */
2684 {0x05B2,0x05B2,0x05B2}, {0x05B3,0x05B3,0x05B3}, /* 05B2 */
2685 {0x05B4,0x05B4,0x05B4}, {0x05B5,0x05B5,0x05B5}, /* 05B4 */
2686 {0x05B6,0x05B6,0x05B6}, {0x05B7,0x05B7,0x05B7}, /* 05B6 */
2687 {0x05B8,0x05B8,0x05B8}, {0x05B9,0x05B9,0x05B9}, /* 05B8 */
2688 {0x05BA,0x05BA,0x05BA}, {0x05BB,0x05BB,0x05BB}, /* 05BA */
2689 {0x05BC,0x05BC,0x05BC}, {0x05BD,0x05BD,0x05BD}, /* 05BC */
2690 {0x05BE,0x05BE,0x05BE}, {0x05BF,0x05BF,0x05BF}, /* 05BE */
2691 {0x05C0,0x05C0,0x05C0}, {0x05C1,0x05C1,0x05C1}, /* 05C0 */
2692 {0x05C2,0x05C2,0x05C2}, {0x05C3,0x05C3,0x05C3}, /* 05C2 */
2693 {0x05C4,0x05C4,0x05C4}, {0x05C5,0x05C5,0x05C5}, /* 05C4 */
2694 {0x05C6,0x05C6,0x05C6}, {0x05C7,0x05C7,0x05C7}, /* 05C6 */
2695 {0x05C8,0x05C8,0x05C8}, {0x05C9,0x05C9,0x05C9}, /* 05C8 */
2696 {0x05CA,0x05CA,0x05CA}, {0x05CB,0x05CB,0x05CB}, /* 05CA */
2697 {0x05CC,0x05CC,0x05CC}, {0x05CD,0x05CD,0x05CD}, /* 05CC */
2698 {0x05CE,0x05CE,0x05CE}, {0x05CF,0x05CF,0x05CF}, /* 05CE */
2699 {0x05D0,0x05D0,0x05D0}, {0x05D1,0x05D1,0x05D1}, /* 05D0 */
2700 {0x05D2,0x05D2,0x05D2}, {0x05D3,0x05D3,0x05D3}, /* 05D2 */
2701 {0x05D4,0x05D4,0x05D4}, {0x05D5,0x05D5,0x05D5}, /* 05D4 */
2702 {0x05D6,0x05D6,0x05D6}, {0x05D7,0x05D7,0x05D7}, /* 05D6 */
2703 {0x05D8,0x05D8,0x05D8}, {0x05D9,0x05D9,0x05D9}, /* 05D8 */
2704 {0x05DA,0x05DA,0x05DA}, {0x05DB,0x05DB,0x05DB}, /* 05DA */
2705 {0x05DC,0x05DC,0x05DC}, {0x05DD,0x05DD,0x05DD}, /* 05DC */
2706 {0x05DE,0x05DE,0x05DE}, {0x05DF,0x05DF,0x05DF}, /* 05DE */
2707 {0x05E0,0x05E0,0x05E0}, {0x05E1,0x05E1,0x05E1}, /* 05E0 */
2708 {0x05E2,0x05E2,0x05E2}, {0x05E3,0x05E3,0x05E3}, /* 05E2 */
2709 {0x05E4,0x05E4,0x05E4}, {0x05E5,0x05E5,0x05E5}, /* 05E4 */
2710 {0x05E6,0x05E6,0x05E6}, {0x05E7,0x05E7,0x05E7}, /* 05E6 */
2711 {0x05E8,0x05E8,0x05E8}, {0x05E9,0x05E9,0x05E9}, /* 05E8 */
2712 {0x05EA,0x05EA,0x05EA}, {0x05EB,0x05EB,0x05EB}, /* 05EA */
2713 {0x05EC,0x05EC,0x05EC}, {0x05ED,0x05ED,0x05ED}, /* 05EC */
2714 {0x05EE,0x05EE,0x05EE}, {0x05EF,0x05EF,0x05EF}, /* 05EE */
2715 {0x05F0,0x05F0,0x05F0}, {0x05F1,0x05F1,0x05F1}, /* 05F0 */
2716 {0x05F2,0x05F2,0x05F2}, {0x05F3,0x05F3,0x05F3}, /* 05F2 */
2717 {0x05F4,0x05F4,0x05F4}, {0x05F5,0x05F5,0x05F5}, /* 05F4 */
2718 {0x05F6,0x05F6,0x05F6}, {0x05F7,0x05F7,0x05F7}, /* 05F6 */
2719 {0x05F8,0x05F8,0x05F8}, {0x05F9,0x05F9,0x05F9}, /* 05F8 */
2720 {0x05FA,0x05FA,0x05FA}, {0x05FB,0x05FB,0x05FB}, /* 05FA */
2721 {0x05FC,0x05FC,0x05FC}, {0x05FD,0x05FD,0x05FD}, /* 05FC */
2722 {0x05FE,0x05FE,0x05FE}, {0x05FF,0x05FF,0x05FF} /* 05FE */
2723 };
2724
2725 static const MY_UNICASE_CHARACTER u520p10[]={
2726 {0x1000,0x1000,0x1000}, {0x1001,0x1001,0x1001}, /* 1000 */
2727 {0x1002,0x1002,0x1002}, {0x1003,0x1003,0x1003}, /* 1002 */
2728 {0x1004,0x1004,0x1004}, {0x1005,0x1005,0x1005}, /* 1004 */
2729 {0x1006,0x1006,0x1006}, {0x1007,0x1007,0x1007}, /* 1006 */
2730 {0x1008,0x1008,0x1008}, {0x1009,0x1009,0x1009}, /* 1008 */
2731 {0x100A,0x100A,0x100A}, {0x100B,0x100B,0x100B}, /* 100A */
2732 {0x100C,0x100C,0x100C}, {0x100D,0x100D,0x100D}, /* 100C */
2733 {0x100E,0x100E,0x100E}, {0x100F,0x100F,0x100F}, /* 100E */
2734 {0x1010,0x1010,0x1010}, {0x1011,0x1011,0x1011}, /* 1010 */
2735 {0x1012,0x1012,0x1012}, {0x1013,0x1013,0x1013}, /* 1012 */
2736 {0x1014,0x1014,0x1014}, {0x1015,0x1015,0x1015}, /* 1014 */
2737 {0x1016,0x1016,0x1016}, {0x1017,0x1017,0x1017}, /* 1016 */
2738 {0x1018,0x1018,0x1018}, {0x1019,0x1019,0x1019}, /* 1018 */
2739 {0x101A,0x101A,0x101A}, {0x101B,0x101B,0x101B}, /* 101A */
2740 {0x101C,0x101C,0x101C}, {0x101D,0x101D,0x101D}, /* 101C */
2741 {0x101E,0x101E,0x101E}, {0x101F,0x101F,0x101F}, /* 101E */
2742 {0x1020,0x1020,0x1020}, {0x1021,0x1021,0x1021}, /* 1020 */
2743 {0x1022,0x1022,0x1022}, {0x1023,0x1023,0x1023}, /* 1022 */
2744 {0x1024,0x1024,0x1024}, {0x1025,0x1025,0x1025}, /* 1024 */
2745 {0x1026,0x1026,0x1026}, {0x1027,0x1027,0x1027}, /* 1026 */
2746 {0x1028,0x1028,0x1028}, {0x1029,0x1029,0x1029}, /* 1028 */
2747 {0x102A,0x102A,0x102A}, {0x102B,0x102B,0x102B}, /* 102A */
2748 {0x102C,0x102C,0x102C}, {0x102D,0x102D,0x102D}, /* 102C */
2749 {0x102E,0x102E,0x102E}, {0x102F,0x102F,0x102F}, /* 102E */
2750 {0x1030,0x1030,0x1030}, {0x1031,0x1031,0x1031}, /* 1030 */
2751 {0x1032,0x1032,0x1032}, {0x1033,0x1033,0x1033}, /* 1032 */
2752 {0x1034,0x1034,0x1034}, {0x1035,0x1035,0x1035}, /* 1034 */
2753 {0x1036,0x1036,0x1036}, {0x1037,0x1037,0x1037}, /* 1036 */
2754 {0x1038,0x1038,0x1038}, {0x1039,0x1039,0x1039}, /* 1038 */
2755 {0x103A,0x103A,0x103A}, {0x103B,0x103B,0x103B}, /* 103A */
2756 {0x103C,0x103C,0x103C}, {0x103D,0x103D,0x103D}, /* 103C */
2757 {0x103E,0x103E,0x103E}, {0x103F,0x103F,0x103F}, /* 103E */
2758 {0x1040,0x1040,0x1040}, {0x1041,0x1041,0x1041}, /* 1040 */
2759 {0x1042,0x1042,0x1042}, {0x1043,0x1043,0x1043}, /* 1042 */
2760 {0x1044,0x1044,0x1044}, {0x1045,0x1045,0x1045}, /* 1044 */
2761 {0x1046,0x1046,0x1046}, {0x1047,0x1047,0x1047}, /* 1046 */
2762 {0x1048,0x1048,0x1048}, {0x1049,0x1049,0x1049}, /* 1048 */
2763 {0x104A,0x104A,0x104A}, {0x104B,0x104B,0x104B}, /* 104A */
2764 {0x104C,0x104C,0x104C}, {0x104D,0x104D,0x104D}, /* 104C */
2765 {0x104E,0x104E,0x104E}, {0x104F,0x104F,0x104F}, /* 104E */
2766 {0x1050,0x1050,0x1050}, {0x1051,0x1051,0x1051}, /* 1050 */
2767 {0x1052,0x1052,0x1052}, {0x1053,0x1053,0x1053}, /* 1052 */
2768 {0x1054,0x1054,0x1054}, {0x1055,0x1055,0x1055}, /* 1054 */
2769 {0x1056,0x1056,0x1056}, {0x1057,0x1057,0x1057}, /* 1056 */
2770 {0x1058,0x1058,0x1058}, {0x1059,0x1059,0x1059}, /* 1058 */
2771 {0x105A,0x105A,0x105A}, {0x105B,0x105B,0x105B}, /* 105A */
2772 {0x105C,0x105C,0x105C}, {0x105D,0x105D,0x105D}, /* 105C */
2773 {0x105E,0x105E,0x105E}, {0x105F,0x105F,0x105F}, /* 105E */
2774 {0x1060,0x1060,0x1060}, {0x1061,0x1061,0x1061}, /* 1060 */
2775 {0x1062,0x1062,0x1062}, {0x1063,0x1063,0x1063}, /* 1062 */
2776 {0x1064,0x1064,0x1064}, {0x1065,0x1065,0x1065}, /* 1064 */
2777 {0x1066,0x1066,0x1066}, {0x1067,0x1067,0x1067}, /* 1066 */
2778 {0x1068,0x1068,0x1068}, {0x1069,0x1069,0x1069}, /* 1068 */
2779 {0x106A,0x106A,0x106A}, {0x106B,0x106B,0x106B}, /* 106A */
2780 {0x106C,0x106C,0x106C}, {0x106D,0x106D,0x106D}, /* 106C */
2781 {0x106E,0x106E,0x106E}, {0x106F,0x106F,0x106F}, /* 106E */
2782 {0x1070,0x1070,0x1070}, {0x1071,0x1071,0x1071}, /* 1070 */
2783 {0x1072,0x1072,0x1072}, {0x1073,0x1073,0x1073}, /* 1072 */
2784 {0x1074,0x1074,0x1074}, {0x1075,0x1075,0x1075}, /* 1074 */
2785 {0x1076,0x1076,0x1076}, {0x1077,0x1077,0x1077}, /* 1076 */
2786 {0x1078,0x1078,0x1078}, {0x1079,0x1079,0x1079}, /* 1078 */
2787 {0x107A,0x107A,0x107A}, {0x107B,0x107B,0x107B}, /* 107A */
2788 {0x107C,0x107C,0x107C}, {0x107D,0x107D,0x107D}, /* 107C */
2789 {0x107E,0x107E,0x107E}, {0x107F,0x107F,0x107F}, /* 107E */
2790 {0x1080,0x1080,0x1080}, {0x1081,0x1081,0x1081}, /* 1080 */
2791 {0x1082,0x1082,0x1082}, {0x1083,0x1083,0x1083}, /* 1082 */
2792 {0x1084,0x1084,0x1084}, {0x1085,0x1085,0x1085}, /* 1084 */
2793 {0x1086,0x1086,0x1086}, {0x1087,0x1087,0x1087}, /* 1086 */
2794 {0x1088,0x1088,0x1088}, {0x1089,0x1089,0x1089}, /* 1088 */
2795 {0x108A,0x108A,0x108A}, {0x108B,0x108B,0x108B}, /* 108A */
2796 {0x108C,0x108C,0x108C}, {0x108D,0x108D,0x108D}, /* 108C */
2797 {0x108E,0x108E,0x108E}, {0x108F,0x108F,0x108F}, /* 108E */
2798 {0x1090,0x1090,0x1090}, {0x1091,0x1091,0x1091}, /* 1090 */
2799 {0x1092,0x1092,0x1092}, {0x1093,0x1093,0x1093}, /* 1092 */
2800 {0x1094,0x1094,0x1094}, {0x1095,0x1095,0x1095}, /* 1094 */
2801 {0x1096,0x1096,0x1096}, {0x1097,0x1097,0x1097}, /* 1096 */
2802 {0x1098,0x1098,0x1098}, {0x1099,0x1099,0x1099}, /* 1098 */
2803 {0x109A,0x109A,0x109A}, {0x109B,0x109B,0x109B}, /* 109A */
2804 {0x109C,0x109C,0x109C}, {0x109D,0x109D,0x109D}, /* 109C */
2805 {0x109E,0x109E,0x109E}, {0x109F,0x109F,0x109F}, /* 109E */
2806 {0x10A0,0x2D00,0x10A0}, {0x10A1,0x2D01,0x10A1}, /* 10A0 */
2807 {0x10A2,0x2D02,0x10A2}, {0x10A3,0x2D03,0x10A3}, /* 10A2 */
2808 {0x10A4,0x2D04,0x10A4}, {0x10A5,0x2D05,0x10A5}, /* 10A4 */
2809 {0x10A6,0x2D06,0x10A6}, {0x10A7,0x2D07,0x10A7}, /* 10A6 */
2810 {0x10A8,0x2D08,0x10A8}, {0x10A9,0x2D09,0x10A9}, /* 10A8 */
2811 {0x10AA,0x2D0A,0x10AA}, {0x10AB,0x2D0B,0x10AB}, /* 10AA */
2812 {0x10AC,0x2D0C,0x10AC}, {0x10AD,0x2D0D,0x10AD}, /* 10AC */
2813 {0x10AE,0x2D0E,0x10AE}, {0x10AF,0x2D0F,0x10AF}, /* 10AE */
2814 {0x10B0,0x2D10,0x10B0}, {0x10B1,0x2D11,0x10B1}, /* 10B0 */
2815 {0x10B2,0x2D12,0x10B2}, {0x10B3,0x2D13,0x10B3}, /* 10B2 */
2816 {0x10B4,0x2D14,0x10B4}, {0x10B5,0x2D15,0x10B5}, /* 10B4 */
2817 {0x10B6,0x2D16,0x10B6}, {0x10B7,0x2D17,0x10B7}, /* 10B6 */
2818 {0x10B8,0x2D18,0x10B8}, {0x10B9,0x2D19,0x10B9}, /* 10B8 */
2819 {0x10BA,0x2D1A,0x10BA}, {0x10BB,0x2D1B,0x10BB}, /* 10BA */
2820 {0x10BC,0x2D1C,0x10BC}, {0x10BD,0x2D1D,0x10BD}, /* 10BC */
2821 {0x10BE,0x2D1E,0x10BE}, {0x10BF,0x2D1F,0x10BF}, /* 10BE */
2822 {0x10C0,0x2D20,0x10C0}, {0x10C1,0x2D21,0x10C1}, /* 10C0 */
2823 {0x10C2,0x2D22,0x10C2}, {0x10C3,0x2D23,0x10C3}, /* 10C2 */
2824 {0x10C4,0x2D24,0x10C4}, {0x10C5,0x2D25,0x10C5}, /* 10C4 */
2825 {0x10C6,0x10C6,0x10C6}, {0x10C7,0x10C7,0x10C7}, /* 10C6 */
2826 {0x10C8,0x10C8,0x10C8}, {0x10C9,0x10C9,0x10C9}, /* 10C8 */
2827 {0x10CA,0x10CA,0x10CA}, {0x10CB,0x10CB,0x10CB}, /* 10CA */
2828 {0x10CC,0x10CC,0x10CC}, {0x10CD,0x10CD,0x10CD}, /* 10CC */
2829 {0x10CE,0x10CE,0x10CE}, {0x10CF,0x10CF,0x10CF}, /* 10CE */
2830 {0x10D0,0x10D0,0x10D0}, {0x10D1,0x10D1,0x10D1}, /* 10D0 */
2831 {0x10D2,0x10D2,0x10D2}, {0x10D3,0x10D3,0x10D3}, /* 10D2 */
2832 {0x10D4,0x10D4,0x10D4}, {0x10D5,0x10D5,0x10D5}, /* 10D4 */
2833 {0x10D6,0x10D6,0x10D6}, {0x10D7,0x10D7,0x10D7}, /* 10D6 */
2834 {0x10D8,0x10D8,0x10D8}, {0x10D9,0x10D9,0x10D9}, /* 10D8 */
2835 {0x10DA,0x10DA,0x10DA}, {0x10DB,0x10DB,0x10DB}, /* 10DA */
2836 {0x10DC,0x10DC,0x10DC}, {0x10DD,0x10DD,0x10DD}, /* 10DC */
2837 {0x10DE,0x10DE,0x10DE}, {0x10DF,0x10DF,0x10DF}, /* 10DE */
2838 {0x10E0,0x10E0,0x10E0}, {0x10E1,0x10E1,0x10E1}, /* 10E0 */
2839 {0x10E2,0x10E2,0x10E2}, {0x10E3,0x10E3,0x10E3}, /* 10E2 */
2840 {0x10E4,0x10E4,0x10E4}, {0x10E5,0x10E5,0x10E5}, /* 10E4 */
2841 {0x10E6,0x10E6,0x10E6}, {0x10E7,0x10E7,0x10E7}, /* 10E6 */
2842 {0x10E8,0x10E8,0x10E8}, {0x10E9,0x10E9,0x10E9}, /* 10E8 */
2843 {0x10EA,0x10EA,0x10EA}, {0x10EB,0x10EB,0x10EB}, /* 10EA */
2844 {0x10EC,0x10EC,0x10EC}, {0x10ED,0x10ED,0x10ED}, /* 10EC */
2845 {0x10EE,0x10EE,0x10EE}, {0x10EF,0x10EF,0x10EF}, /* 10EE */
2846 {0x10F0,0x10F0,0x10F0}, {0x10F1,0x10F1,0x10F1}, /* 10F0 */
2847 {0x10F2,0x10F2,0x10F2}, {0x10F3,0x10F3,0x10F3}, /* 10F2 */
2848 {0x10F4,0x10F4,0x10F4}, {0x10F5,0x10F5,0x10F5}, /* 10F4 */
2849 {0x10F6,0x10F6,0x10F6}, {0x10F7,0x10F7,0x10F7}, /* 10F6 */
2850 {0x10F8,0x10F8,0x10F8}, {0x10F9,0x10F9,0x10F9}, /* 10F8 */
2851 {0x10FA,0x10FA,0x10FA}, {0x10FB,0x10FB,0x10FB}, /* 10FA */
2852 {0x10FC,0x10FC,0x10FC}, {0x10FD,0x10FD,0x10FD}, /* 10FC */
2853 {0x10FE,0x10FE,0x10FE}, {0x10FF,0x10FF,0x10FF} /* 10FE */
2854 };
2855
2856 static const MY_UNICASE_CHARACTER u520p1D[]={
2857 {0x1D00,0x1D00,0x1D00}, {0x1D01,0x1D01,0x1D01}, /* 1D00 */
2858 {0x1D02,0x1D02,0x1D02}, {0x1D03,0x1D03,0x1D03}, /* 1D02 */
2859 {0x1D04,0x1D04,0x1D04}, {0x1D05,0x1D05,0x1D05}, /* 1D04 */
2860 {0x1D06,0x1D06,0x1D06}, {0x1D07,0x1D07,0x1D07}, /* 1D06 */
2861 {0x1D08,0x1D08,0x1D08}, {0x1D09,0x1D09,0x1D09}, /* 1D08 */
2862 {0x1D0A,0x1D0A,0x1D0A}, {0x1D0B,0x1D0B,0x1D0B}, /* 1D0A */
2863 {0x1D0C,0x1D0C,0x1D0C}, {0x1D0D,0x1D0D,0x1D0D}, /* 1D0C */
2864 {0x1D0E,0x1D0E,0x1D0E}, {0x1D0F,0x1D0F,0x1D0F}, /* 1D0E */
2865 {0x1D10,0x1D10,0x1D10}, {0x1D11,0x1D11,0x1D11}, /* 1D10 */
2866 {0x1D12,0x1D12,0x1D12}, {0x1D13,0x1D13,0x1D13}, /* 1D12 */
2867 {0x1D14,0x1D14,0x1D14}, {0x1D15,0x1D15,0x1D15}, /* 1D14 */
2868 {0x1D16,0x1D16,0x1D16}, {0x1D17,0x1D17,0x1D17}, /* 1D16 */
2869 {0x1D18,0x1D18,0x1D18}, {0x1D19,0x1D19,0x1D19}, /* 1D18 */
2870 {0x1D1A,0x1D1A,0x1D1A}, {0x1D1B,0x1D1B,0x1D1B}, /* 1D1A */
2871 {0x1D1C,0x1D1C,0x1D1C}, {0x1D1D,0x1D1D,0x1D1D}, /* 1D1C */
2872 {0x1D1E,0x1D1E,0x1D1E}, {0x1D1F,0x1D1F,0x1D1F}, /* 1D1E */
2873 {0x1D20,0x1D20,0x1D20}, {0x1D21,0x1D21,0x1D21}, /* 1D20 */
2874 {0x1D22,0x1D22,0x1D22}, {0x1D23,0x1D23,0x1D23}, /* 1D22 */
2875 {0x1D24,0x1D24,0x1D24}, {0x1D25,0x1D25,0x1D25}, /* 1D24 */
2876 {0x1D26,0x1D26,0x1D26}, {0x1D27,0x1D27,0x1D27}, /* 1D26 */
2877 {0x1D28,0x1D28,0x1D28}, {0x1D29,0x1D29,0x1D29}, /* 1D28 */
2878 {0x1D2A,0x1D2A,0x1D2A}, {0x1D2B,0x1D2B,0x1D2B}, /* 1D2A */
2879 {0x1D2C,0x1D2C,0x1D2C}, {0x1D2D,0x1D2D,0x1D2D}, /* 1D2C */
2880 {0x1D2E,0x1D2E,0x1D2E}, {0x1D2F,0x1D2F,0x1D2F}, /* 1D2E */
2881 {0x1D30,0x1D30,0x1D30}, {0x1D31,0x1D31,0x1D31}, /* 1D30 */
2882 {0x1D32,0x1D32,0x1D32}, {0x1D33,0x1D33,0x1D33}, /* 1D32 */
2883 {0x1D34,0x1D34,0x1D34}, {0x1D35,0x1D35,0x1D35}, /* 1D34 */
2884 {0x1D36,0x1D36,0x1D36}, {0x1D37,0x1D37,0x1D37}, /* 1D36 */
2885 {0x1D38,0x1D38,0x1D38}, {0x1D39,0x1D39,0x1D39}, /* 1D38 */
2886 {0x1D3A,0x1D3A,0x1D3A}, {0x1D3B,0x1D3B,0x1D3B}, /* 1D3A */
2887 {0x1D3C,0x1D3C,0x1D3C}, {0x1D3D,0x1D3D,0x1D3D}, /* 1D3C */
2888 {0x1D3E,0x1D3E,0x1D3E}, {0x1D3F,0x1D3F,0x1D3F}, /* 1D3E */
2889 {0x1D40,0x1D40,0x1D40}, {0x1D41,0x1D41,0x1D41}, /* 1D40 */
2890 {0x1D42,0x1D42,0x1D42}, {0x1D43,0x1D43,0x1D43}, /* 1D42 */
2891 {0x1D44,0x1D44,0x1D44}, {0x1D45,0x1D45,0x1D45}, /* 1D44 */
2892 {0x1D46,0x1D46,0x1D46}, {0x1D47,0x1D47,0x1D47}, /* 1D46 */
2893 {0x1D48,0x1D48,0x1D48}, {0x1D49,0x1D49,0x1D49}, /* 1D48 */
2894 {0x1D4A,0x1D4A,0x1D4A}, {0x1D4B,0x1D4B,0x1D4B}, /* 1D4A */
2895 {0x1D4C,0x1D4C,0x1D4C}, {0x1D4D,0x1D4D,0x1D4D}, /* 1D4C */
2896 {0x1D4E,0x1D4E,0x1D4E}, {0x1D4F,0x1D4F,0x1D4F}, /* 1D4E */
2897 {0x1D50,0x1D50,0x1D50}, {0x1D51,0x1D51,0x1D51}, /* 1D50 */
2898 {0x1D52,0x1D52,0x1D52}, {0x1D53,0x1D53,0x1D53}, /* 1D52 */
2899 {0x1D54,0x1D54,0x1D54}, {0x1D55,0x1D55,0x1D55}, /* 1D54 */
2900 {0x1D56,0x1D56,0x1D56}, {0x1D57,0x1D57,0x1D57}, /* 1D56 */
2901 {0x1D58,0x1D58,0x1D58}, {0x1D59,0x1D59,0x1D59}, /* 1D58 */
2902 {0x1D5A,0x1D5A,0x1D5A}, {0x1D5B,0x1D5B,0x1D5B}, /* 1D5A */
2903 {0x1D5C,0x1D5C,0x1D5C}, {0x1D5D,0x1D5D,0x1D5D}, /* 1D5C */
2904 {0x1D5E,0x1D5E,0x1D5E}, {0x1D5F,0x1D5F,0x1D5F}, /* 1D5E */
2905 {0x1D60,0x1D60,0x1D60}, {0x1D61,0x1D61,0x1D61}, /* 1D60 */
2906 {0x1D62,0x1D62,0x1D62}, {0x1D63,0x1D63,0x1D63}, /* 1D62 */
2907 {0x1D64,0x1D64,0x1D64}, {0x1D65,0x1D65,0x1D65}, /* 1D64 */
2908 {0x1D66,0x1D66,0x1D66}, {0x1D67,0x1D67,0x1D67}, /* 1D66 */
2909 {0x1D68,0x1D68,0x1D68}, {0x1D69,0x1D69,0x1D69}, /* 1D68 */
2910 {0x1D6A,0x1D6A,0x1D6A}, {0x1D6B,0x1D6B,0x1D6B}, /* 1D6A */
2911 {0x1D6C,0x1D6C,0x1D6C}, {0x1D6D,0x1D6D,0x1D6D}, /* 1D6C */
2912 {0x1D6E,0x1D6E,0x1D6E}, {0x1D6F,0x1D6F,0x1D6F}, /* 1D6E */
2913 {0x1D70,0x1D70,0x1D70}, {0x1D71,0x1D71,0x1D71}, /* 1D70 */
2914 {0x1D72,0x1D72,0x1D72}, {0x1D73,0x1D73,0x1D73}, /* 1D72 */
2915 {0x1D74,0x1D74,0x1D74}, {0x1D75,0x1D75,0x1D75}, /* 1D74 */
2916 {0x1D76,0x1D76,0x1D76}, {0x1D77,0x1D77,0x1D77}, /* 1D76 */
2917 {0x1D78,0x1D78,0x1D78}, {0xA77D,0x1D79,0xA77D}, /* 1D78 */
2918 {0x1D7A,0x1D7A,0x1D7A}, {0x1D7B,0x1D7B,0x1D7B}, /* 1D7A */
2919 {0x1D7C,0x1D7C,0x1D7C}, {0x2C63,0x1D7D,0x2C63}, /* 1D7C */
2920 {0x1D7E,0x1D7E,0x1D7E}, {0x1D7F,0x1D7F,0x1D7F}, /* 1D7E */
2921 {0x1D80,0x1D80,0x1D80}, {0x1D81,0x1D81,0x1D81}, /* 1D80 */
2922 {0x1D82,0x1D82,0x1D82}, {0x1D83,0x1D83,0x1D83}, /* 1D82 */
2923 {0x1D84,0x1D84,0x1D84}, {0x1D85,0x1D85,0x1D85}, /* 1D84 */
2924 {0x1D86,0x1D86,0x1D86}, {0x1D87,0x1D87,0x1D87}, /* 1D86 */
2925 {0x1D88,0x1D88,0x1D88}, {0x1D89,0x1D89,0x1D89}, /* 1D88 */
2926 {0x1D8A,0x1D8A,0x1D8A}, {0x1D8B,0x1D8B,0x1D8B}, /* 1D8A */
2927 {0x1D8C,0x1D8C,0x1D8C}, {0x1D8D,0x1D8D,0x1D8D}, /* 1D8C */
2928 {0x1D8E,0x1D8E,0x1D8E}, {0x1D8F,0x1D8F,0x1D8F}, /* 1D8E */
2929 {0x1D90,0x1D90,0x1D90}, {0x1D91,0x1D91,0x1D91}, /* 1D90 */
2930 {0x1D92,0x1D92,0x1D92}, {0x1D93,0x1D93,0x1D93}, /* 1D92 */
2931 {0x1D94,0x1D94,0x1D94}, {0x1D95,0x1D95,0x1D95}, /* 1D94 */
2932 {0x1D96,0x1D96,0x1D96}, {0x1D97,0x1D97,0x1D97}, /* 1D96 */
2933 {0x1D98,0x1D98,0x1D98}, {0x1D99,0x1D99,0x1D99}, /* 1D98 */
2934 {0x1D9A,0x1D9A,0x1D9A}, {0x1D9B,0x1D9B,0x1D9B}, /* 1D9A */
2935 {0x1D9C,0x1D9C,0x1D9C}, {0x1D9D,0x1D9D,0x1D9D}, /* 1D9C */
2936 {0x1D9E,0x1D9E,0x1D9E}, {0x1D9F,0x1D9F,0x1D9F}, /* 1D9E */
2937 {0x1DA0,0x1DA0,0x1DA0}, {0x1DA1,0x1DA1,0x1DA1}, /* 1DA0 */
2938 {0x1DA2,0x1DA2,0x1DA2}, {0x1DA3,0x1DA3,0x1DA3}, /* 1DA2 */
2939 {0x1DA4,0x1DA4,0x1DA4}, {0x1DA5,0x1DA5,0x1DA5}, /* 1DA4 */
2940 {0x1DA6,0x1DA6,0x1DA6}, {0x1DA7,0x1DA7,0x1DA7}, /* 1DA6 */
2941 {0x1DA8,0x1DA8,0x1DA8}, {0x1DA9,0x1DA9,0x1DA9}, /* 1DA8 */
2942 {0x1DAA,0x1DAA,0x1DAA}, {0x1DAB,0x1DAB,0x1DAB}, /* 1DAA */
2943 {0x1DAC,0x1DAC,0x1DAC}, {0x1DAD,0x1DAD,0x1DAD}, /* 1DAC */
2944 {0x1DAE,0x1DAE,0x1DAE}, {0x1DAF,0x1DAF,0x1DAF}, /* 1DAE */
2945 {0x1DB0,0x1DB0,0x1DB0}, {0x1DB1,0x1DB1,0x1DB1}, /* 1DB0 */
2946 {0x1DB2,0x1DB2,0x1DB2}, {0x1DB3,0x1DB3,0x1DB3}, /* 1DB2 */
2947 {0x1DB4,0x1DB4,0x1DB4}, {0x1DB5,0x1DB5,0x1DB5}, /* 1DB4 */
2948 {0x1DB6,0x1DB6,0x1DB6}, {0x1DB7,0x1DB7,0x1DB7}, /* 1DB6 */
2949 {0x1DB8,0x1DB8,0x1DB8}, {0x1DB9,0x1DB9,0x1DB9}, /* 1DB8 */
2950 {0x1DBA,0x1DBA,0x1DBA}, {0x1DBB,0x1DBB,0x1DBB}, /* 1DBA */
2951 {0x1DBC,0x1DBC,0x1DBC}, {0x1DBD,0x1DBD,0x1DBD}, /* 1DBC */
2952 {0x1DBE,0x1DBE,0x1DBE}, {0x1DBF,0x1DBF,0x1DBF}, /* 1DBE */
2953 {0x1DC0,0x1DC0,0x1DC0}, {0x1DC1,0x1DC1,0x1DC1}, /* 1DC0 */
2954 {0x1DC2,0x1DC2,0x1DC2}, {0x1DC3,0x1DC3,0x1DC3}, /* 1DC2 */
2955 {0x1DC4,0x1DC4,0x1DC4}, {0x1DC5,0x1DC5,0x1DC5}, /* 1DC4 */
2956 {0x1DC6,0x1DC6,0x1DC6}, {0x1DC7,0x1DC7,0x1DC7}, /* 1DC6 */
2957 {0x1DC8,0x1DC8,0x1DC8}, {0x1DC9,0x1DC9,0x1DC9}, /* 1DC8 */
2958 {0x1DCA,0x1DCA,0x1DCA}, {0x1DCB,0x1DCB,0x1DCB}, /* 1DCA */
2959 {0x1DCC,0x1DCC,0x1DCC}, {0x1DCD,0x1DCD,0x1DCD}, /* 1DCC */
2960 {0x1DCE,0x1DCE,0x1DCE}, {0x1DCF,0x1DCF,0x1DCF}, /* 1DCE */
2961 {0x1DD0,0x1DD0,0x1DD0}, {0x1DD1,0x1DD1,0x1DD1}, /* 1DD0 */
2962 {0x1DD2,0x1DD2,0x1DD2}, {0x1DD3,0x1DD3,0x1DD3}, /* 1DD2 */
2963 {0x1DD4,0x1DD4,0x1DD4}, {0x1DD5,0x1DD5,0x1DD5}, /* 1DD4 */
2964 {0x1DD6,0x1DD6,0x1DD6}, {0x1DD7,0x1DD7,0x1DD7}, /* 1DD6 */
2965 {0x1DD8,0x1DD8,0x1DD8}, {0x1DD9,0x1DD9,0x1DD9}, /* 1DD8 */
2966 {0x1DDA,0x1DDA,0x1DDA}, {0x1DDB,0x1DDB,0x1DDB}, /* 1DDA */
2967 {0x1DDC,0x1DDC,0x1DDC}, {0x1DDD,0x1DDD,0x1DDD}, /* 1DDC */
2968 {0x1DDE,0x1DDE,0x1DDE}, {0x1DDF,0x1DDF,0x1DDF}, /* 1DDE */
2969 {0x1DE0,0x1DE0,0x1DE0}, {0x1DE1,0x1DE1,0x1DE1}, /* 1DE0 */
2970 {0x1DE2,0x1DE2,0x1DE2}, {0x1DE3,0x1DE3,0x1DE3}, /* 1DE2 */
2971 {0x1DE4,0x1DE4,0x1DE4}, {0x1DE5,0x1DE5,0x1DE5}, /* 1DE4 */
2972 {0x1DE6,0x1DE6,0x1DE6}, {0x1DE7,0x1DE7,0x1DE7}, /* 1DE6 */
2973 {0x1DE8,0x1DE8,0x1DE8}, {0x1DE9,0x1DE9,0x1DE9}, /* 1DE8 */
2974 {0x1DEA,0x1DEA,0x1DEA}, {0x1DEB,0x1DEB,0x1DEB}, /* 1DEA */
2975 {0x1DEC,0x1DEC,0x1DEC}, {0x1DED,0x1DED,0x1DED}, /* 1DEC */
2976 {0x1DEE,0x1DEE,0x1DEE}, {0x1DEF,0x1DEF,0x1DEF}, /* 1DEE */
2977 {0x1DF0,0x1DF0,0x1DF0}, {0x1DF1,0x1DF1,0x1DF1}, /* 1DF0 */
2978 {0x1DF2,0x1DF2,0x1DF2}, {0x1DF3,0x1DF3,0x1DF3}, /* 1DF2 */
2979 {0x1DF4,0x1DF4,0x1DF4}, {0x1DF5,0x1DF5,0x1DF5}, /* 1DF4 */
2980 {0x1DF6,0x1DF6,0x1DF6}, {0x1DF7,0x1DF7,0x1DF7}, /* 1DF6 */
2981 {0x1DF8,0x1DF8,0x1DF8}, {0x1DF9,0x1DF9,0x1DF9}, /* 1DF8 */
2982 {0x1DFA,0x1DFA,0x1DFA}, {0x1DFB,0x1DFB,0x1DFB}, /* 1DFA */
2983 {0x1DFC,0x1DFC,0x1DFC}, {0x1DFD,0x1DFD,0x1DFD}, /* 1DFC */
2984 {0x1DFE,0x1DFE,0x1DFE}, {0x1DFF,0x1DFF,0x1DFF} /* 1DFE */
2985 };
2986
2987 static const MY_UNICASE_CHARACTER u520p1E[]={
2988 {0x1E00,0x1E01,0x0041}, {0x1E00,0x1E01,0x0041}, /* 1E00 */
2989 {0x1E02,0x1E03,0x0042}, {0x1E02,0x1E03,0x0042}, /* 1E02 */
2990 {0x1E04,0x1E05,0x0042}, {0x1E04,0x1E05,0x0042}, /* 1E04 */
2991 {0x1E06,0x1E07,0x0042}, {0x1E06,0x1E07,0x0042}, /* 1E06 */
2992 {0x1E08,0x1E09,0x0043}, {0x1E08,0x1E09,0x0043}, /* 1E08 */
2993 {0x1E0A,0x1E0B,0x0044}, {0x1E0A,0x1E0B,0x0044}, /* 1E0A */
2994 {0x1E0C,0x1E0D,0x0044}, {0x1E0C,0x1E0D,0x0044}, /* 1E0C */
2995 {0x1E0E,0x1E0F,0x0044}, {0x1E0E,0x1E0F,0x0044}, /* 1E0E */
2996 {0x1E10,0x1E11,0x0044}, {0x1E10,0x1E11,0x0044}, /* 1E10 */
2997 {0x1E12,0x1E13,0x0044}, {0x1E12,0x1E13,0x0044}, /* 1E12 */
2998 {0x1E14,0x1E15,0x0045}, {0x1E14,0x1E15,0x0045}, /* 1E14 */
2999 {0x1E16,0x1E17,0x0045}, {0x1E16,0x1E17,0x0045}, /* 1E16 */
3000 {0x1E18,0x1E19,0x0045}, {0x1E18,0x1E19,0x0045}, /* 1E18 */
3001 {0x1E1A,0x1E1B,0x0045}, {0x1E1A,0x1E1B,0x0045}, /* 1E1A */
3002 {0x1E1C,0x1E1D,0x0045}, {0x1E1C,0x1E1D,0x0045}, /* 1E1C */
3003 {0x1E1E,0x1E1F,0x0046}, {0x1E1E,0x1E1F,0x0046}, /* 1E1E */
3004 {0x1E20,0x1E21,0x0047}, {0x1E20,0x1E21,0x0047}, /* 1E20 */
3005 {0x1E22,0x1E23,0x0048}, {0x1E22,0x1E23,0x0048}, /* 1E22 */
3006 {0x1E24,0x1E25,0x0048}, {0x1E24,0x1E25,0x0048}, /* 1E24 */
3007 {0x1E26,0x1E27,0x0048}, {0x1E26,0x1E27,0x0048}, /* 1E26 */
3008 {0x1E28,0x1E29,0x0048}, {0x1E28,0x1E29,0x0048}, /* 1E28 */
3009 {0x1E2A,0x1E2B,0x0048}, {0x1E2A,0x1E2B,0x0048}, /* 1E2A */
3010 {0x1E2C,0x1E2D,0x0049}, {0x1E2C,0x1E2D,0x0049}, /* 1E2C */
3011 {0x1E2E,0x1E2F,0x0049}, {0x1E2E,0x1E2F,0x0049}, /* 1E2E */
3012 {0x1E30,0x1E31,0x004B}, {0x1E30,0x1E31,0x004B}, /* 1E30 */
3013 {0x1E32,0x1E33,0x004B}, {0x1E32,0x1E33,0x004B}, /* 1E32 */
3014 {0x1E34,0x1E35,0x004B}, {0x1E34,0x1E35,0x004B}, /* 1E34 */
3015 {0x1E36,0x1E37,0x004C}, {0x1E36,0x1E37,0x004C}, /* 1E36 */
3016 {0x1E38,0x1E39,0x004C}, {0x1E38,0x1E39,0x004C}, /* 1E38 */
3017 {0x1E3A,0x1E3B,0x004C}, {0x1E3A,0x1E3B,0x004C}, /* 1E3A */
3018 {0x1E3C,0x1E3D,0x004C}, {0x1E3C,0x1E3D,0x004C}, /* 1E3C */
3019 {0x1E3E,0x1E3F,0x004D}, {0x1E3E,0x1E3F,0x004D}, /* 1E3E */
3020 {0x1E40,0x1E41,0x004D}, {0x1E40,0x1E41,0x004D}, /* 1E40 */
3021 {0x1E42,0x1E43,0x004D}, {0x1E42,0x1E43,0x004D}, /* 1E42 */
3022 {0x1E44,0x1E45,0x004E}, {0x1E44,0x1E45,0x004E}, /* 1E44 */
3023 {0x1E46,0x1E47,0x004E}, {0x1E46,0x1E47,0x004E}, /* 1E46 */
3024 {0x1E48,0x1E49,0x004E}, {0x1E48,0x1E49,0x004E}, /* 1E48 */
3025 {0x1E4A,0x1E4B,0x004E}, {0x1E4A,0x1E4B,0x004E}, /* 1E4A */
3026 {0x1E4C,0x1E4D,0x004F}, {0x1E4C,0x1E4D,0x004F}, /* 1E4C */
3027 {0x1E4E,0x1E4F,0x004F}, {0x1E4E,0x1E4F,0x004F}, /* 1E4E */
3028 {0x1E50,0x1E51,0x004F}, {0x1E50,0x1E51,0x004F}, /* 1E50 */
3029 {0x1E52,0x1E53,0x004F}, {0x1E52,0x1E53,0x004F}, /* 1E52 */
3030 {0x1E54,0x1E55,0x0050}, {0x1E54,0x1E55,0x0050}, /* 1E54 */
3031 {0x1E56,0x1E57,0x0050}, {0x1E56,0x1E57,0x0050}, /* 1E56 */
3032 {0x1E58,0x1E59,0x0052}, {0x1E58,0x1E59,0x0052}, /* 1E58 */
3033 {0x1E5A,0x1E5B,0x0052}, {0x1E5A,0x1E5B,0x0052}, /* 1E5A */
3034 {0x1E5C,0x1E5D,0x0052}, {0x1E5C,0x1E5D,0x0052}, /* 1E5C */
3035 {0x1E5E,0x1E5F,0x0052}, {0x1E5E,0x1E5F,0x0052}, /* 1E5E */
3036 {0x1E60,0x1E61,0x0053}, {0x1E60,0x1E61,0x0053}, /* 1E60 */
3037 {0x1E62,0x1E63,0x0053}, {0x1E62,0x1E63,0x0053}, /* 1E62 */
3038 {0x1E64,0x1E65,0x0053}, {0x1E64,0x1E65,0x0053}, /* 1E64 */
3039 {0x1E66,0x1E67,0x0053}, {0x1E66,0x1E67,0x0053}, /* 1E66 */
3040 {0x1E68,0x1E69,0x0053}, {0x1E68,0x1E69,0x0053}, /* 1E68 */
3041 {0x1E6A,0x1E6B,0x0054}, {0x1E6A,0x1E6B,0x0054}, /* 1E6A */
3042 {0x1E6C,0x1E6D,0x0054}, {0x1E6C,0x1E6D,0x0054}, /* 1E6C */
3043 {0x1E6E,0x1E6F,0x0054}, {0x1E6E,0x1E6F,0x0054}, /* 1E6E */
3044 {0x1E70,0x1E71,0x0054}, {0x1E70,0x1E71,0x0054}, /* 1E70 */
3045 {0x1E72,0x1E73,0x0055}, {0x1E72,0x1E73,0x0055}, /* 1E72 */
3046 {0x1E74,0x1E75,0x0055}, {0x1E74,0x1E75,0x0055}, /* 1E74 */
3047 {0x1E76,0x1E77,0x0055}, {0x1E76,0x1E77,0x0055}, /* 1E76 */
3048 {0x1E78,0x1E79,0x0055}, {0x1E78,0x1E79,0x0055}, /* 1E78 */
3049 {0x1E7A,0x1E7B,0x0055}, {0x1E7A,0x1E7B,0x0055}, /* 1E7A */
3050 {0x1E7C,0x1E7D,0x0056}, {0x1E7C,0x1E7D,0x0056}, /* 1E7C */
3051 {0x1E7E,0x1E7F,0x0056}, {0x1E7E,0x1E7F,0x0056}, /* 1E7E */
3052 {0x1E80,0x1E81,0x0057}, {0x1E80,0x1E81,0x0057}, /* 1E80 */
3053 {0x1E82,0x1E83,0x0057}, {0x1E82,0x1E83,0x0057}, /* 1E82 */
3054 {0x1E84,0x1E85,0x0057}, {0x1E84,0x1E85,0x0057}, /* 1E84 */
3055 {0x1E86,0x1E87,0x0057}, {0x1E86,0x1E87,0x0057}, /* 1E86 */
3056 {0x1E88,0x1E89,0x0057}, {0x1E88,0x1E89,0x0057}, /* 1E88 */
3057 {0x1E8A,0x1E8B,0x0058}, {0x1E8A,0x1E8B,0x0058}, /* 1E8A */
3058 {0x1E8C,0x1E8D,0x0058}, {0x1E8C,0x1E8D,0x0058}, /* 1E8C */
3059 {0x1E8E,0x1E8F,0x0059}, {0x1E8E,0x1E8F,0x0059}, /* 1E8E */
3060 {0x1E90,0x1E91,0x005A}, {0x1E90,0x1E91,0x005A}, /* 1E90 */
3061 {0x1E92,0x1E93,0x005A}, {0x1E92,0x1E93,0x005A}, /* 1E92 */
3062 {0x1E94,0x1E95,0x005A}, {0x1E94,0x1E95,0x005A}, /* 1E94 */
3063 {0x1E96,0x1E96,0x0048}, {0x1E97,0x1E97,0x0054}, /* 1E96 */
3064 {0x1E98,0x1E98,0x0057}, {0x1E99,0x1E99,0x0059}, /* 1E98 */
3065 {0x1E9A,0x1E9A,0x1E9A}, {0x1E60,0x1E9B,0x0053}, /* 1E9A */
3066 {0x1E9C,0x1E9C,0x1E9C}, {0x1E9D,0x1E9D,0x1E9D}, /* 1E9C */
3067 {0x1E9E,0x00DF,0x1E9E}, {0x1E9F,0x1E9F,0x1E9F}, /* 1E9E */
3068 {0x1EA0,0x1EA1,0x0041}, {0x1EA0,0x1EA1,0x0041}, /* 1EA0 */
3069 {0x1EA2,0x1EA3,0x0041}, {0x1EA2,0x1EA3,0x0041}, /* 1EA2 */
3070 {0x1EA4,0x1EA5,0x0041}, {0x1EA4,0x1EA5,0x0041}, /* 1EA4 */
3071 {0x1EA6,0x1EA7,0x0041}, {0x1EA6,0x1EA7,0x0041}, /* 1EA6 */
3072 {0x1EA8,0x1EA9,0x0041}, {0x1EA8,0x1EA9,0x0041}, /* 1EA8 */
3073 {0x1EAA,0x1EAB,0x0041}, {0x1EAA,0x1EAB,0x0041}, /* 1EAA */
3074 {0x1EAC,0x1EAD,0x0041}, {0x1EAC,0x1EAD,0x0041}, /* 1EAC */
3075 {0x1EAE,0x1EAF,0x0041}, {0x1EAE,0x1EAF,0x0041}, /* 1EAE */
3076 {0x1EB0,0x1EB1,0x0041}, {0x1EB0,0x1EB1,0x0041}, /* 1EB0 */
3077 {0x1EB2,0x1EB3,0x0041}, {0x1EB2,0x1EB3,0x0041}, /* 1EB2 */
3078 {0x1EB4,0x1EB5,0x0041}, {0x1EB4,0x1EB5,0x0041}, /* 1EB4 */
3079 {0x1EB6,0x1EB7,0x0041}, {0x1EB6,0x1EB7,0x0041}, /* 1EB6 */
3080 {0x1EB8,0x1EB9,0x0045}, {0x1EB8,0x1EB9,0x0045}, /* 1EB8 */
3081 {0x1EBA,0x1EBB,0x0045}, {0x1EBA,0x1EBB,0x0045}, /* 1EBA */
3082 {0x1EBC,0x1EBD,0x0045}, {0x1EBC,0x1EBD,0x0045}, /* 1EBC */
3083 {0x1EBE,0x1EBF,0x0045}, {0x1EBE,0x1EBF,0x0045}, /* 1EBE */
3084 {0x1EC0,0x1EC1,0x0045}, {0x1EC0,0x1EC1,0x0045}, /* 1EC0 */
3085 {0x1EC2,0x1EC3,0x0045}, {0x1EC2,0x1EC3,0x0045}, /* 1EC2 */
3086 {0x1EC4,0x1EC5,0x0045}, {0x1EC4,0x1EC5,0x0045}, /* 1EC4 */
3087 {0x1EC6,0x1EC7,0x0045}, {0x1EC6,0x1EC7,0x0045}, /* 1EC6 */
3088 {0x1EC8,0x1EC9,0x0049}, {0x1EC8,0x1EC9,0x0049}, /* 1EC8 */
3089 {0x1ECA,0x1ECB,0x0049}, {0x1ECA,0x1ECB,0x0049}, /* 1ECA */
3090 {0x1ECC,0x1ECD,0x004F}, {0x1ECC,0x1ECD,0x004F}, /* 1ECC */
3091 {0x1ECE,0x1ECF,0x004F}, {0x1ECE,0x1ECF,0x004F}, /* 1ECE */
3092 {0x1ED0,0x1ED1,0x004F}, {0x1ED0,0x1ED1,0x004F}, /* 1ED0 */
3093 {0x1ED2,0x1ED3,0x004F}, {0x1ED2,0x1ED3,0x004F}, /* 1ED2 */
3094 {0x1ED4,0x1ED5,0x004F}, {0x1ED4,0x1ED5,0x004F}, /* 1ED4 */
3095 {0x1ED6,0x1ED7,0x004F}, {0x1ED6,0x1ED7,0x004F}, /* 1ED6 */
3096 {0x1ED8,0x1ED9,0x004F}, {0x1ED8,0x1ED9,0x004F}, /* 1ED8 */
3097 {0x1EDA,0x1EDB,0x004F}, {0x1EDA,0x1EDB,0x004F}, /* 1EDA */
3098 {0x1EDC,0x1EDD,0x004F}, {0x1EDC,0x1EDD,0x004F}, /* 1EDC */
3099 {0x1EDE,0x1EDF,0x004F}, {0x1EDE,0x1EDF,0x004F}, /* 1EDE */
3100 {0x1EE0,0x1EE1,0x004F}, {0x1EE0,0x1EE1,0x004F}, /* 1EE0 */
3101 {0x1EE2,0x1EE3,0x004F}, {0x1EE2,0x1EE3,0x004F}, /* 1EE2 */
3102 {0x1EE4,0x1EE5,0x0055}, {0x1EE4,0x1EE5,0x0055}, /* 1EE4 */
3103 {0x1EE6,0x1EE7,0x0055}, {0x1EE6,0x1EE7,0x0055}, /* 1EE6 */
3104 {0x1EE8,0x1EE9,0x0055}, {0x1EE8,0x1EE9,0x0055}, /* 1EE8 */
3105 {0x1EEA,0x1EEB,0x0055}, {0x1EEA,0x1EEB,0x0055}, /* 1EEA */
3106 {0x1EEC,0x1EED,0x0055}, {0x1EEC,0x1EED,0x0055}, /* 1EEC */
3107 {0x1EEE,0x1EEF,0x0055}, {0x1EEE,0x1EEF,0x0055}, /* 1EEE */
3108 {0x1EF0,0x1EF1,0x0055}, {0x1EF0,0x1EF1,0x0055}, /* 1EF0 */
3109 {0x1EF2,0x1EF3,0x0059}, {0x1EF2,0x1EF3,0x0059}, /* 1EF2 */
3110 {0x1EF4,0x1EF5,0x0059}, {0x1EF4,0x1EF5,0x0059}, /* 1EF4 */
3111 {0x1EF6,0x1EF7,0x0059}, {0x1EF6,0x1EF7,0x0059}, /* 1EF6 */
3112 {0x1EF8,0x1EF9,0x0059}, {0x1EF8,0x1EF9,0x0059}, /* 1EF8 */
3113 {0x1EFA,0x1EFB,0x1EFA}, {0x1EFA,0x1EFB,0x1EFA}, /* 1EFA */
3114 {0x1EFC,0x1EFD,0x1EFC}, {0x1EFC,0x1EFD,0x1EFC}, /* 1EFC */
3115 {0x1EFE,0x1EFF,0x1EFE}, {0x1EFE,0x1EFF,0x1EFE} /* 1EFE */
3116 };
3117
3118 static const MY_UNICASE_CHARACTER u520p1F[]={
3119 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391}, /* 1F00 */
3120 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391}, /* 1F02 */
3121 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391}, /* 1F04 */
3122 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391}, /* 1F06 */
3123 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391}, /* 1F08 */
3124 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391}, /* 1F0A */
3125 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391}, /* 1F0C */
3126 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391}, /* 1F0E */
3127 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395}, /* 1F10 */
3128 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395}, /* 1F12 */
3129 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395}, /* 1F14 */
3130 {0x1F16,0x1F16,0x1F16}, {0x1F17,0x1F17,0x1F17}, /* 1F16 */
3131 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395}, /* 1F18 */
3132 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395}, /* 1F1A */
3133 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395}, /* 1F1C */
3134 {0x1F1E,0x1F1E,0x1F1E}, {0x1F1F,0x1F1F,0x1F1F}, /* 1F1E */
3135 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397}, /* 1F20 */
3136 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397}, /* 1F22 */
3137 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397}, /* 1F24 */
3138 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397}, /* 1F26 */
3139 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397}, /* 1F28 */
3140 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397}, /* 1F2A */
3141 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397}, /* 1F2C */
3142 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397}, /* 1F2E */
3143 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399}, /* 1F30 */
3144 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399}, /* 1F32 */
3145 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399}, /* 1F34 */
3146 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399}, /* 1F36 */
3147 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399}, /* 1F38 */
3148 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399}, /* 1F3A */
3149 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399}, /* 1F3C */
3150 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399}, /* 1F3E */
3151 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F}, /* 1F40 */
3152 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F}, /* 1F42 */
3153 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F}, /* 1F44 */
3154 {0x1F46,0x1F46,0x1F46}, {0x1F47,0x1F47,0x1F47}, /* 1F46 */
3155 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F}, /* 1F48 */
3156 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F}, /* 1F4A */
3157 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F}, /* 1F4C */
3158 {0x1F4E,0x1F4E,0x1F4E}, {0x1F4F,0x1F4F,0x1F4F}, /* 1F4E */
3159 {0x1F50,0x1F50,0x03A5}, {0x1F59,0x1F51,0x03A5}, /* 1F50 */
3160 {0x1F52,0x1F52,0x03A5}, {0x1F5B,0x1F53,0x03A5}, /* 1F52 */
3161 {0x1F54,0x1F54,0x03A5}, {0x1F5D,0x1F55,0x03A5}, /* 1F54 */
3162 {0x1F56,0x1F56,0x03A5}, {0x1F5F,0x1F57,0x03A5}, /* 1F56 */
3163 {0x1F58,0x1F58,0x1F58}, {0x1F59,0x1F51,0x03A5}, /* 1F58 */
3164 {0x1F5A,0x1F5A,0x1F5A}, {0x1F5B,0x1F53,0x03A5}, /* 1F5A */
3165 {0x1F5C,0x1F5C,0x1F5C}, {0x1F5D,0x1F55,0x03A5}, /* 1F5C */
3166 {0x1F5E,0x1F5E,0x1F5E}, {0x1F5F,0x1F57,0x03A5}, /* 1F5E */
3167 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9}, /* 1F60 */
3168 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9}, /* 1F62 */
3169 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9}, /* 1F64 */
3170 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9}, /* 1F66 */
3171 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9}, /* 1F68 */
3172 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9}, /* 1F6A */
3173 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9}, /* 1F6C */
3174 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9}, /* 1F6E */
3175 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB}, /* 1F70 */
3176 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9}, /* 1F72 */
3177 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB}, /* 1F74 */
3178 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB}, /* 1F76 */
3179 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9}, /* 1F78 */
3180 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB}, /* 1F7A */
3181 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB}, /* 1F7C */
3182 {0x1F7E,0x1F7E,0x1F7E}, {0x1F7F,0x1F7F,0x1F7F}, /* 1F7E */
3183 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391}, /* 1F80 */
3184 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391}, /* 1F82 */
3185 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391}, /* 1F84 */
3186 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391}, /* 1F86 */
3187 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391}, /* 1F88 */
3188 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391}, /* 1F8A */
3189 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391}, /* 1F8C */
3190 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391}, /* 1F8E */
3191 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397}, /* 1F90 */
3192 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397}, /* 1F92 */
3193 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397}, /* 1F94 */
3194 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397}, /* 1F96 */
3195 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397}, /* 1F98 */
3196 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397}, /* 1F9A */
3197 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397}, /* 1F9C */
3198 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397}, /* 1F9E */
3199 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9}, /* 1FA0 */
3200 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9}, /* 1FA2 */
3201 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9}, /* 1FA4 */
3202 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9}, /* 1FA6 */
3203 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9}, /* 1FA8 */
3204 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9}, /* 1FAA */
3205 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9}, /* 1FAC */
3206 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9}, /* 1FAE */
3207 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391}, /* 1FB0 */
3208 {0x1FB2,0x1FB2,0x0391}, {0x1FBC,0x1FB3,0x0391}, /* 1FB2 */
3209 {0x1FB4,0x1FB4,0x0391}, {0x1FB5,0x1FB5,0x1FB5}, /* 1FB4 */
3210 {0x1FB6,0x1FB6,0x0391}, {0x1FB7,0x1FB7,0x0391}, /* 1FB6 */
3211 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391}, /* 1FB8 */
3212 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB}, /* 1FBA */
3213 {0x1FBC,0x1FB3,0x0391}, {0x1FBD,0x1FBD,0x1FBD}, /* 1FBC */
3214 {0x0399,0x1FBE,0x0399}, {0x1FBF,0x1FBF,0x1FBF}, /* 1FBE */
3215 {0x1FC0,0x1FC0,0x1FC0}, {0x1FC1,0x1FC1,0x1FC1}, /* 1FC0 */
3216 {0x1FC2,0x1FC2,0x0397}, {0x1FCC,0x1FC3,0x0397}, /* 1FC2 */
3217 {0x1FC4,0x1FC4,0x0397}, {0x1FC5,0x1FC5,0x1FC5}, /* 1FC4 */
3218 {0x1FC6,0x1FC6,0x0397}, {0x1FC7,0x1FC7,0x0397}, /* 1FC6 */
3219 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9}, /* 1FC8 */
3220 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB}, /* 1FCA */
3221 {0x1FCC,0x1FC3,0x0397}, {0x1FCD,0x1FCD,0x1FCD}, /* 1FCC */
3222 {0x1FCE,0x1FCE,0x1FCE}, {0x1FCF,0x1FCF,0x1FCF}, /* 1FCE */
3223 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399}, /* 1FD0 */
3224 {0x1FD2,0x1FD2,0x0399}, {0x1FD3,0x1FD3,0x1FD3}, /* 1FD2 */
3225 {0x1FD4,0x1FD4,0x1FD4}, {0x1FD5,0x1FD5,0x1FD5}, /* 1FD4 */
3226 {0x1FD6,0x1FD6,0x0399}, {0x1FD7,0x1FD7,0x0399}, /* 1FD6 */
3227 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399}, /* 1FD8 */
3228 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB}, /* 1FDA */
3229 {0x1FDC,0x1FDC,0x1FDC}, {0x1FDD,0x1FDD,0x1FDD}, /* 1FDC */
3230 {0x1FDE,0x1FDE,0x1FDE}, {0x1FDF,0x1FDF,0x1FDF}, /* 1FDE */
3231 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5}, /* 1FE0 */
3232 {0x1FE2,0x1FE2,0x03A5}, {0x1FE3,0x1FE3,0x1FE3}, /* 1FE2 */
3233 {0x1FE4,0x1FE4,0x03A1}, {0x1FEC,0x1FE5,0x03A1}, /* 1FE4 */
3234 {0x1FE6,0x1FE6,0x03A5}, {0x1FE7,0x1FE7,0x03A5}, /* 1FE6 */
3235 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5}, /* 1FE8 */
3236 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB}, /* 1FEA */
3237 {0x1FEC,0x1FE5,0x03A1}, {0x1FED,0x1FED,0x1FED}, /* 1FEC */
3238 {0x1FEE,0x1FEE,0x1FEE}, {0x1FEF,0x1FEF,0x1FEF}, /* 1FEE */
3239 {0x1FF0,0x1FF0,0x1FF0}, {0x1FF1,0x1FF1,0x1FF1}, /* 1FF0 */
3240 {0x1FF2,0x1FF2,0x03A9}, {0x1FFC,0x1FF3,0x03A9}, /* 1FF2 */
3241 {0x1FF4,0x1FF4,0x03A9}, {0x1FF5,0x1FF5,0x1FF5}, /* 1FF4 */
3242 {0x1FF6,0x1FF6,0x03A9}, {0x1FF7,0x1FF7,0x03A9}, /* 1FF6 */
3243 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9}, /* 1FF8 */
3244 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB}, /* 1FFA */
3245 {0x1FFC,0x1FF3,0x03A9}, {0x1FFD,0x1FFD,0x1FFD}, /* 1FFC */
3246 {0x1FFE,0x1FFE,0x1FFE}, {0x1FFF,0x1FFF,0x1FFF} /* 1FFE */
3247 };
3248
3249 static const MY_UNICASE_CHARACTER u520p21[]={
3250 {0x2100,0x2100,0x2100}, {0x2101,0x2101,0x2101}, /* 2100 */
3251 {0x2102,0x2102,0x2102}, {0x2103,0x2103,0x2103}, /* 2102 */
3252 {0x2104,0x2104,0x2104}, {0x2105,0x2105,0x2105}, /* 2104 */
3253 {0x2106,0x2106,0x2106}, {0x2107,0x2107,0x2107}, /* 2106 */
3254 {0x2108,0x2108,0x2108}, {0x2109,0x2109,0x2109}, /* 2108 */
3255 {0x210A,0x210A,0x210A}, {0x210B,0x210B,0x210B}, /* 210A */
3256 {0x210C,0x210C,0x210C}, {0x210D,0x210D,0x210D}, /* 210C */
3257 {0x210E,0x210E,0x210E}, {0x210F,0x210F,0x210F}, /* 210E */
3258 {0x2110,0x2110,0x2110}, {0x2111,0x2111,0x2111}, /* 2110 */
3259 {0x2112,0x2112,0x2112}, {0x2113,0x2113,0x2113}, /* 2112 */
3260 {0x2114,0x2114,0x2114}, {0x2115,0x2115,0x2115}, /* 2114 */
3261 {0x2116,0x2116,0x2116}, {0x2117,0x2117,0x2117}, /* 2116 */
3262 {0x2118,0x2118,0x2118}, {0x2119,0x2119,0x2119}, /* 2118 */
3263 {0x211A,0x211A,0x211A}, {0x211B,0x211B,0x211B}, /* 211A */
3264 {0x211C,0x211C,0x211C}, {0x211D,0x211D,0x211D}, /* 211C */
3265 {0x211E,0x211E,0x211E}, {0x211F,0x211F,0x211F}, /* 211E */
3266 {0x2120,0x2120,0x2120}, {0x2121,0x2121,0x2121}, /* 2120 */
3267 {0x2122,0x2122,0x2122}, {0x2123,0x2123,0x2123}, /* 2122 */
3268 {0x2124,0x2124,0x2124}, {0x2125,0x2125,0x2125}, /* 2124 */
3269 {0x2126,0x03C9,0x2126}, {0x2127,0x2127,0x2127}, /* 2126 */
3270 {0x2128,0x2128,0x2128}, {0x2129,0x2129,0x2129}, /* 2128 */
3271 {0x212A,0x006B,0x212A}, {0x212B,0x00E5,0x212B}, /* 212A */
3272 {0x212C,0x212C,0x212C}, {0x212D,0x212D,0x212D}, /* 212C */
3273 {0x212E,0x212E,0x212E}, {0x212F,0x212F,0x212F}, /* 212E */
3274 {0x2130,0x2130,0x2130}, {0x2131,0x2131,0x2131}, /* 2130 */
3275 {0x2132,0x214E,0x2132}, {0x2133,0x2133,0x2133}, /* 2132 */
3276 {0x2134,0x2134,0x2134}, {0x2135,0x2135,0x2135}, /* 2134 */
3277 {0x2136,0x2136,0x2136}, {0x2137,0x2137,0x2137}, /* 2136 */
3278 {0x2138,0x2138,0x2138}, {0x2139,0x2139,0x2139}, /* 2138 */
3279 {0x213A,0x213A,0x213A}, {0x213B,0x213B,0x213B}, /* 213A */
3280 {0x213C,0x213C,0x213C}, {0x213D,0x213D,0x213D}, /* 213C */
3281 {0x213E,0x213E,0x213E}, {0x213F,0x213F,0x213F}, /* 213E */
3282 {0x2140,0x2140,0x2140}, {0x2141,0x2141,0x2141}, /* 2140 */
3283 {0x2142,0x2142,0x2142}, {0x2143,0x2143,0x2143}, /* 2142 */
3284 {0x2144,0x2144,0x2144}, {0x2145,0x2145,0x2145}, /* 2144 */
3285 {0x2146,0x2146,0x2146}, {0x2147,0x2147,0x2147}, /* 2146 */
3286 {0x2148,0x2148,0x2148}, {0x2149,0x2149,0x2149}, /* 2148 */
3287 {0x214A,0x214A,0x214A}, {0x214B,0x214B,0x214B}, /* 214A */
3288 {0x214C,0x214C,0x214C}, {0x214D,0x214D,0x214D}, /* 214C */
3289 {0x2132,0x214E,0x2132}, {0x214F,0x214F,0x214F}, /* 214E */
3290 {0x2150,0x2150,0x2150}, {0x2151,0x2151,0x2151}, /* 2150 */
3291 {0x2152,0x2152,0x2152}, {0x2153,0x2153,0x2153}, /* 2152 */
3292 {0x2154,0x2154,0x2154}, {0x2155,0x2155,0x2155}, /* 2154 */
3293 {0x2156,0x2156,0x2156}, {0x2157,0x2157,0x2157}, /* 2156 */
3294 {0x2158,0x2158,0x2158}, {0x2159,0x2159,0x2159}, /* 2158 */
3295 {0x215A,0x215A,0x215A}, {0x215B,0x215B,0x215B}, /* 215A */
3296 {0x215C,0x215C,0x215C}, {0x215D,0x215D,0x215D}, /* 215C */
3297 {0x215E,0x215E,0x215E}, {0x215F,0x215F,0x215F}, /* 215E */
3298 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161}, /* 2160 */
3299 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163}, /* 2162 */
3300 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165}, /* 2164 */
3301 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167}, /* 2166 */
3302 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169}, /* 2168 */
3303 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B}, /* 216A */
3304 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D}, /* 216C */
3305 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F}, /* 216E */
3306 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161}, /* 2170 */
3307 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163}, /* 2172 */
3308 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165}, /* 2174 */
3309 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167}, /* 2176 */
3310 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169}, /* 2178 */
3311 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B}, /* 217A */
3312 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D}, /* 217C */
3313 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F}, /* 217E */
3314 {0x2180,0x2180,0x2180}, {0x2181,0x2181,0x2181}, /* 2180 */
3315 {0x2182,0x2182,0x2182}, {0x2183,0x2184,0x2183}, /* 2182 */
3316 {0x2183,0x2184,0x2183}, {0x2185,0x2185,0x2185}, /* 2184 */
3317 {0x2186,0x2186,0x2186}, {0x2187,0x2187,0x2187}, /* 2186 */
3318 {0x2188,0x2188,0x2188}, {0x2189,0x2189,0x2189}, /* 2188 */
3319 {0x218A,0x218A,0x218A}, {0x218B,0x218B,0x218B}, /* 218A */
3320 {0x218C,0x218C,0x218C}, {0x218D,0x218D,0x218D}, /* 218C */
3321 {0x218E,0x218E,0x218E}, {0x218F,0x218F,0x218F}, /* 218E */
3322 {0x2190,0x2190,0x2190}, {0x2191,0x2191,0x2191}, /* 2190 */
3323 {0x2192,0x2192,0x2192}, {0x2193,0x2193,0x2193}, /* 2192 */
3324 {0x2194,0x2194,0x2194}, {0x2195,0x2195,0x2195}, /* 2194 */
3325 {0x2196,0x2196,0x2196}, {0x2197,0x2197,0x2197}, /* 2196 */
3326 {0x2198,0x2198,0x2198}, {0x2199,0x2199,0x2199}, /* 2198 */
3327 {0x219A,0x219A,0x219A}, {0x219B,0x219B,0x219B}, /* 219A */
3328 {0x219C,0x219C,0x219C}, {0x219D,0x219D,0x219D}, /* 219C */
3329 {0x219E,0x219E,0x219E}, {0x219F,0x219F,0x219F}, /* 219E */
3330 {0x21A0,0x21A0,0x21A0}, {0x21A1,0x21A1,0x21A1}, /* 21A0 */
3331 {0x21A2,0x21A2,0x21A2}, {0x21A3,0x21A3,0x21A3}, /* 21A2 */
3332 {0x21A4,0x21A4,0x21A4}, {0x21A5,0x21A5,0x21A5}, /* 21A4 */
3333 {0x21A6,0x21A6,0x21A6}, {0x21A7,0x21A7,0x21A7}, /* 21A6 */
3334 {0x21A8,0x21A8,0x21A8}, {0x21A9,0x21A9,0x21A9}, /* 21A8 */
3335 {0x21AA,0x21AA,0x21AA}, {0x21AB,0x21AB,0x21AB}, /* 21AA */
3336 {0x21AC,0x21AC,0x21AC}, {0x21AD,0x21AD,0x21AD}, /* 21AC */
3337 {0x21AE,0x21AE,0x21AE}, {0x21AF,0x21AF,0x21AF}, /* 21AE */
3338 {0x21B0,0x21B0,0x21B0}, {0x21B1,0x21B1,0x21B1}, /* 21B0 */
3339 {0x21B2,0x21B2,0x21B2}, {0x21B3,0x21B3,0x21B3}, /* 21B2 */
3340 {0x21B4,0x21B4,0x21B4}, {0x21B5,0x21B5,0x21B5}, /* 21B4 */
3341 {0x21B6,0x21B6,0x21B6}, {0x21B7,0x21B7,0x21B7}, /* 21B6 */
3342 {0x21B8,0x21B8,0x21B8}, {0x21B9,0x21B9,0x21B9}, /* 21B8 */
3343 {0x21BA,0x21BA,0x21BA}, {0x21BB,0x21BB,0x21BB}, /* 21BA */
3344 {0x21BC,0x21BC,0x21BC}, {0x21BD,0x21BD,0x21BD}, /* 21BC */
3345 {0x21BE,0x21BE,0x21BE}, {0x21BF,0x21BF,0x21BF}, /* 21BE */
3346 {0x21C0,0x21C0,0x21C0}, {0x21C1,0x21C1,0x21C1}, /* 21C0 */
3347 {0x21C2,0x21C2,0x21C2}, {0x21C3,0x21C3,0x21C3}, /* 21C2 */
3348 {0x21C4,0x21C4,0x21C4}, {0x21C5,0x21C5,0x21C5}, /* 21C4 */
3349 {0x21C6,0x21C6,0x21C6}, {0x21C7,0x21C7,0x21C7}, /* 21C6 */
3350 {0x21C8,0x21C8,0x21C8}, {0x21C9,0x21C9,0x21C9}, /* 21C8 */
3351 {0x21CA,0x21CA,0x21CA}, {0x21CB,0x21CB,0x21CB}, /* 21CA */
3352 {0x21CC,0x21CC,0x21CC}, {0x21CD,0x21CD,0x21CD}, /* 21CC */
3353 {0x21CE,0x21CE,0x21CE}, {0x21CF,0x21CF,0x21CF}, /* 21CE */
3354 {0x21D0,0x21D0,0x21D0}, {0x21D1,0x21D1,0x21D1}, /* 21D0 */
3355 {0x21D2,0x21D2,0x21D2}, {0x21D3,0x21D3,0x21D3}, /* 21D2 */
3356 {0x21D4,0x21D4,0x21D4}, {0x21D5,0x21D5,0x21D5}, /* 21D4 */
3357 {0x21D6,0x21D6,0x21D6}, {0x21D7,0x21D7,0x21D7}, /* 21D6 */
3358 {0x21D8,0x21D8,0x21D8}, {0x21D9,0x21D9,0x21D9}, /* 21D8 */
3359 {0x21DA,0x21DA,0x21DA}, {0x21DB,0x21DB,0x21DB}, /* 21DA */
3360 {0x21DC,0x21DC,0x21DC}, {0x21DD,0x21DD,0x21DD}, /* 21DC */
3361 {0x21DE,0x21DE,0x21DE}, {0x21DF,0x21DF,0x21DF}, /* 21DE */
3362 {0x21E0,0x21E0,0x21E0}, {0x21E1,0x21E1,0x21E1}, /* 21E0 */
3363 {0x21E2,0x21E2,0x21E2}, {0x21E3,0x21E3,0x21E3}, /* 21E2 */
3364 {0x21E4,0x21E4,0x21E4}, {0x21E5,0x21E5,0x21E5}, /* 21E4 */
3365 {0x21E6,0x21E6,0x21E6}, {0x21E7,0x21E7,0x21E7}, /* 21E6 */
3366 {0x21E8,0x21E8,0x21E8}, {0x21E9,0x21E9,0x21E9}, /* 21E8 */
3367 {0x21EA,0x21EA,0x21EA}, {0x21EB,0x21EB,0x21EB}, /* 21EA */
3368 {0x21EC,0x21EC,0x21EC}, {0x21ED,0x21ED,0x21ED}, /* 21EC */
3369 {0x21EE,0x21EE,0x21EE}, {0x21EF,0x21EF,0x21EF}, /* 21EE */
3370 {0x21F0,0x21F0,0x21F0}, {0x21F1,0x21F1,0x21F1}, /* 21F0 */
3371 {0x21F2,0x21F2,0x21F2}, {0x21F3,0x21F3,0x21F3}, /* 21F2 */
3372 {0x21F4,0x21F4,0x21F4}, {0x21F5,0x21F5,0x21F5}, /* 21F4 */
3373 {0x21F6,0x21F6,0x21F6}, {0x21F7,0x21F7,0x21F7}, /* 21F6 */
3374 {0x21F8,0x21F8,0x21F8}, {0x21F9,0x21F9,0x21F9}, /* 21F8 */
3375 {0x21FA,0x21FA,0x21FA}, {0x21FB,0x21FB,0x21FB}, /* 21FA */
3376 {0x21FC,0x21FC,0x21FC}, {0x21FD,0x21FD,0x21FD}, /* 21FC */
3377 {0x21FE,0x21FE,0x21FE}, {0x21FF,0x21FF,0x21FF} /* 21FE */
3378 };
3379
3380 static const MY_UNICASE_CHARACTER u520p24[]={
3381 {0x2400,0x2400,0x2400}, {0x2401,0x2401,0x2401}, /* 2400 */
3382 {0x2402,0x2402,0x2402}, {0x2403,0x2403,0x2403}, /* 2402 */
3383 {0x2404,0x2404,0x2404}, {0x2405,0x2405,0x2405}, /* 2404 */
3384 {0x2406,0x2406,0x2406}, {0x2407,0x2407,0x2407}, /* 2406 */
3385 {0x2408,0x2408,0x2408}, {0x2409,0x2409,0x2409}, /* 2408 */
3386 {0x240A,0x240A,0x240A}, {0x240B,0x240B,0x240B}, /* 240A */
3387 {0x240C,0x240C,0x240C}, {0x240D,0x240D,0x240D}, /* 240C */
3388 {0x240E,0x240E,0x240E}, {0x240F,0x240F,0x240F}, /* 240E */
3389 {0x2410,0x2410,0x2410}, {0x2411,0x2411,0x2411}, /* 2410 */
3390 {0x2412,0x2412,0x2412}, {0x2413,0x2413,0x2413}, /* 2412 */
3391 {0x2414,0x2414,0x2414}, {0x2415,0x2415,0x2415}, /* 2414 */
3392 {0x2416,0x2416,0x2416}, {0x2417,0x2417,0x2417}, /* 2416 */
3393 {0x2418,0x2418,0x2418}, {0x2419,0x2419,0x2419}, /* 2418 */
3394 {0x241A,0x241A,0x241A}, {0x241B,0x241B,0x241B}, /* 241A */
3395 {0x241C,0x241C,0x241C}, {0x241D,0x241D,0x241D}, /* 241C */
3396 {0x241E,0x241E,0x241E}, {0x241F,0x241F,0x241F}, /* 241E */
3397 {0x2420,0x2420,0x2420}, {0x2421,0x2421,0x2421}, /* 2420 */
3398 {0x2422,0x2422,0x2422}, {0x2423,0x2423,0x2423}, /* 2422 */
3399 {0x2424,0x2424,0x2424}, {0x2425,0x2425,0x2425}, /* 2424 */
3400 {0x2426,0x2426,0x2426}, {0x2427,0x2427,0x2427}, /* 2426 */
3401 {0x2428,0x2428,0x2428}, {0x2429,0x2429,0x2429}, /* 2428 */
3402 {0x242A,0x242A,0x242A}, {0x242B,0x242B,0x242B}, /* 242A */
3403 {0x242C,0x242C,0x242C}, {0x242D,0x242D,0x242D}, /* 242C */
3404 {0x242E,0x242E,0x242E}, {0x242F,0x242F,0x242F}, /* 242E */
3405 {0x2430,0x2430,0x2430}, {0x2431,0x2431,0x2431}, /* 2430 */
3406 {0x2432,0x2432,0x2432}, {0x2433,0x2433,0x2433}, /* 2432 */
3407 {0x2434,0x2434,0x2434}, {0x2435,0x2435,0x2435}, /* 2434 */
3408 {0x2436,0x2436,0x2436}, {0x2437,0x2437,0x2437}, /* 2436 */
3409 {0x2438,0x2438,0x2438}, {0x2439,0x2439,0x2439}, /* 2438 */
3410 {0x243A,0x243A,0x243A}, {0x243B,0x243B,0x243B}, /* 243A */
3411 {0x243C,0x243C,0x243C}, {0x243D,0x243D,0x243D}, /* 243C */
3412 {0x243E,0x243E,0x243E}, {0x243F,0x243F,0x243F}, /* 243E */
3413 {0x2440,0x2440,0x2440}, {0x2441,0x2441,0x2441}, /* 2440 */
3414 {0x2442,0x2442,0x2442}, {0x2443,0x2443,0x2443}, /* 2442 */
3415 {0x2444,0x2444,0x2444}, {0x2445,0x2445,0x2445}, /* 2444 */
3416 {0x2446,0x2446,0x2446}, {0x2447,0x2447,0x2447}, /* 2446 */
3417 {0x2448,0x2448,0x2448}, {0x2449,0x2449,0x2449}, /* 2448 */
3418 {0x244A,0x244A,0x244A}, {0x244B,0x244B,0x244B}, /* 244A */
3419 {0x244C,0x244C,0x244C}, {0x244D,0x244D,0x244D}, /* 244C */
3420 {0x244E,0x244E,0x244E}, {0x244F,0x244F,0x244F}, /* 244E */
3421 {0x2450,0x2450,0x2450}, {0x2451,0x2451,0x2451}, /* 2450 */
3422 {0x2452,0x2452,0x2452}, {0x2453,0x2453,0x2453}, /* 2452 */
3423 {0x2454,0x2454,0x2454}, {0x2455,0x2455,0x2455}, /* 2454 */
3424 {0x2456,0x2456,0x2456}, {0x2457,0x2457,0x2457}, /* 2456 */
3425 {0x2458,0x2458,0x2458}, {0x2459,0x2459,0x2459}, /* 2458 */
3426 {0x245A,0x245A,0x245A}, {0x245B,0x245B,0x245B}, /* 245A */
3427 {0x245C,0x245C,0x245C}, {0x245D,0x245D,0x245D}, /* 245C */
3428 {0x245E,0x245E,0x245E}, {0x245F,0x245F,0x245F}, /* 245E */
3429 {0x2460,0x2460,0x2460}, {0x2461,0x2461,0x2461}, /* 2460 */
3430 {0x2462,0x2462,0x2462}, {0x2463,0x2463,0x2463}, /* 2462 */
3431 {0x2464,0x2464,0x2464}, {0x2465,0x2465,0x2465}, /* 2464 */
3432 {0x2466,0x2466,0x2466}, {0x2467,0x2467,0x2467}, /* 2466 */
3433 {0x2468,0x2468,0x2468}, {0x2469,0x2469,0x2469}, /* 2468 */
3434 {0x246A,0x246A,0x246A}, {0x246B,0x246B,0x246B}, /* 246A */
3435 {0x246C,0x246C,0x246C}, {0x246D,0x246D,0x246D}, /* 246C */
3436 {0x246E,0x246E,0x246E}, {0x246F,0x246F,0x246F}, /* 246E */
3437 {0x2470,0x2470,0x2470}, {0x2471,0x2471,0x2471}, /* 2470 */
3438 {0x2472,0x2472,0x2472}, {0x2473,0x2473,0x2473}, /* 2472 */
3439 {0x2474,0x2474,0x2474}, {0x2475,0x2475,0x2475}, /* 2474 */
3440 {0x2476,0x2476,0x2476}, {0x2477,0x2477,0x2477}, /* 2476 */
3441 {0x2478,0x2478,0x2478}, {0x2479,0x2479,0x2479}, /* 2478 */
3442 {0x247A,0x247A,0x247A}, {0x247B,0x247B,0x247B}, /* 247A */
3443 {0x247C,0x247C,0x247C}, {0x247D,0x247D,0x247D}, /* 247C */
3444 {0x247E,0x247E,0x247E}, {0x247F,0x247F,0x247F}, /* 247E */
3445 {0x2480,0x2480,0x2480}, {0x2481,0x2481,0x2481}, /* 2480 */
3446 {0x2482,0x2482,0x2482}, {0x2483,0x2483,0x2483}, /* 2482 */
3447 {0x2484,0x2484,0x2484}, {0x2485,0x2485,0x2485}, /* 2484 */
3448 {0x2486,0x2486,0x2486}, {0x2487,0x2487,0x2487}, /* 2486 */
3449 {0x2488,0x2488,0x2488}, {0x2489,0x2489,0x2489}, /* 2488 */
3450 {0x248A,0x248A,0x248A}, {0x248B,0x248B,0x248B}, /* 248A */
3451 {0x248C,0x248C,0x248C}, {0x248D,0x248D,0x248D}, /* 248C */
3452 {0x248E,0x248E,0x248E}, {0x248F,0x248F,0x248F}, /* 248E */
3453 {0x2490,0x2490,0x2490}, {0x2491,0x2491,0x2491}, /* 2490 */
3454 {0x2492,0x2492,0x2492}, {0x2493,0x2493,0x2493}, /* 2492 */
3455 {0x2494,0x2494,0x2494}, {0x2495,0x2495,0x2495}, /* 2494 */
3456 {0x2496,0x2496,0x2496}, {0x2497,0x2497,0x2497}, /* 2496 */
3457 {0x2498,0x2498,0x2498}, {0x2499,0x2499,0x2499}, /* 2498 */
3458 {0x249A,0x249A,0x249A}, {0x249B,0x249B,0x249B}, /* 249A */
3459 {0x249C,0x249C,0x249C}, {0x249D,0x249D,0x249D}, /* 249C */
3460 {0x249E,0x249E,0x249E}, {0x249F,0x249F,0x249F}, /* 249E */
3461 {0x24A0,0x24A0,0x24A0}, {0x24A1,0x24A1,0x24A1}, /* 24A0 */
3462 {0x24A2,0x24A2,0x24A2}, {0x24A3,0x24A3,0x24A3}, /* 24A2 */
3463 {0x24A4,0x24A4,0x24A4}, {0x24A5,0x24A5,0x24A5}, /* 24A4 */
3464 {0x24A6,0x24A6,0x24A6}, {0x24A7,0x24A7,0x24A7}, /* 24A6 */
3465 {0x24A8,0x24A8,0x24A8}, {0x24A9,0x24A9,0x24A9}, /* 24A8 */
3466 {0x24AA,0x24AA,0x24AA}, {0x24AB,0x24AB,0x24AB}, /* 24AA */
3467 {0x24AC,0x24AC,0x24AC}, {0x24AD,0x24AD,0x24AD}, /* 24AC */
3468 {0x24AE,0x24AE,0x24AE}, {0x24AF,0x24AF,0x24AF}, /* 24AE */
3469 {0x24B0,0x24B0,0x24B0}, {0x24B1,0x24B1,0x24B1}, /* 24B0 */
3470 {0x24B2,0x24B2,0x24B2}, {0x24B3,0x24B3,0x24B3}, /* 24B2 */
3471 {0x24B4,0x24B4,0x24B4}, {0x24B5,0x24B5,0x24B5}, /* 24B4 */
3472 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7}, /* 24B6 */
3473 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9}, /* 24B8 */
3474 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB}, /* 24BA */
3475 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD}, /* 24BC */
3476 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF}, /* 24BE */
3477 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1}, /* 24C0 */
3478 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3}, /* 24C2 */
3479 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5}, /* 24C4 */
3480 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7}, /* 24C6 */
3481 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9}, /* 24C8 */
3482 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB}, /* 24CA */
3483 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD}, /* 24CC */
3484 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF}, /* 24CE */
3485 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7}, /* 24D0 */
3486 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9}, /* 24D2 */
3487 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB}, /* 24D4 */
3488 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD}, /* 24D6 */
3489 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF}, /* 24D8 */
3490 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1}, /* 24DA */
3491 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3}, /* 24DC */
3492 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5}, /* 24DE */
3493 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7}, /* 24E0 */
3494 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9}, /* 24E2 */
3495 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB}, /* 24E4 */
3496 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD}, /* 24E6 */
3497 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF}, /* 24E8 */
3498 {0x24EA,0x24EA,0x24EA}, {0x24EB,0x24EB,0x24EB}, /* 24EA */
3499 {0x24EC,0x24EC,0x24EC}, {0x24ED,0x24ED,0x24ED}, /* 24EC */
3500 {0x24EE,0x24EE,0x24EE}, {0x24EF,0x24EF,0x24EF}, /* 24EE */
3501 {0x24F0,0x24F0,0x24F0}, {0x24F1,0x24F1,0x24F1}, /* 24F0 */
3502 {0x24F2,0x24F2,0x24F2}, {0x24F3,0x24F3,0x24F3}, /* 24F2 */
3503 {0x24F4,0x24F4,0x24F4}, {0x24F5,0x24F5,0x24F5}, /* 24F4 */
3504 {0x24F6,0x24F6,0x24F6}, {0x24F7,0x24F7,0x24F7}, /* 24F6 */
3505 {0x24F8,0x24F8,0x24F8}, {0x24F9,0x24F9,0x24F9}, /* 24F8 */
3506 {0x24FA,0x24FA,0x24FA}, {0x24FB,0x24FB,0x24FB}, /* 24FA */
3507 {0x24FC,0x24FC,0x24FC}, {0x24FD,0x24FD,0x24FD}, /* 24FC */
3508 {0x24FE,0x24FE,0x24FE}, {0x24FF,0x24FF,0x24FF} /* 24FE */
3509 };
3510
3511 static const MY_UNICASE_CHARACTER u520p2C[]={
3512 {0x2C00,0x2C30,0x2C00}, {0x2C01,0x2C31,0x2C01}, /* 2C00 */
3513 {0x2C02,0x2C32,0x2C02}, {0x2C03,0x2C33,0x2C03}, /* 2C02 */
3514 {0x2C04,0x2C34,0x2C04}, {0x2C05,0x2C35,0x2C05}, /* 2C04 */
3515 {0x2C06,0x2C36,0x2C06}, {0x2C07,0x2C37,0x2C07}, /* 2C06 */
3516 {0x2C08,0x2C38,0x2C08}, {0x2C09,0x2C39,0x2C09}, /* 2C08 */
3517 {0x2C0A,0x2C3A,0x2C0A}, {0x2C0B,0x2C3B,0x2C0B}, /* 2C0A */
3518 {0x2C0C,0x2C3C,0x2C0C}, {0x2C0D,0x2C3D,0x2C0D}, /* 2C0C */
3519 {0x2C0E,0x2C3E,0x2C0E}, {0x2C0F,0x2C3F,0x2C0F}, /* 2C0E */
3520 {0x2C10,0x2C40,0x2C10}, {0x2C11,0x2C41,0x2C11}, /* 2C10 */
3521 {0x2C12,0x2C42,0x2C12}, {0x2C13,0x2C43,0x2C13}, /* 2C12 */
3522 {0x2C14,0x2C44,0x2C14}, {0x2C15,0x2C45,0x2C15}, /* 2C14 */
3523 {0x2C16,0x2C46,0x2C16}, {0x2C17,0x2C47,0x2C17}, /* 2C16 */
3524 {0x2C18,0x2C48,0x2C18}, {0x2C19,0x2C49,0x2C19}, /* 2C18 */
3525 {0x2C1A,0x2C4A,0x2C1A}, {0x2C1B,0x2C4B,0x2C1B}, /* 2C1A */
3526 {0x2C1C,0x2C4C,0x2C1C}, {0x2C1D,0x2C4D,0x2C1D}, /* 2C1C */
3527 {0x2C1E,0x2C4E,0x2C1E}, {0x2C1F,0x2C4F,0x2C1F}, /* 2C1E */
3528 {0x2C20,0x2C50,0x2C20}, {0x2C21,0x2C51,0x2C21}, /* 2C20 */
3529 {0x2C22,0x2C52,0x2C22}, {0x2C23,0x2C53,0x2C23}, /* 2C22 */
3530 {0x2C24,0x2C54,0x2C24}, {0x2C25,0x2C55,0x2C25}, /* 2C24 */
3531 {0x2C26,0x2C56,0x2C26}, {0x2C27,0x2C57,0x2C27}, /* 2C26 */
3532 {0x2C28,0x2C58,0x2C28}, {0x2C29,0x2C59,0x2C29}, /* 2C28 */
3533 {0x2C2A,0x2C5A,0x2C2A}, {0x2C2B,0x2C5B,0x2C2B}, /* 2C2A */
3534 {0x2C2C,0x2C5C,0x2C2C}, {0x2C2D,0x2C5D,0x2C2D}, /* 2C2C */
3535 {0x2C2E,0x2C5E,0x2C2E}, {0x2C2F,0x2C2F,0x2C2F}, /* 2C2E */
3536 {0x2C00,0x2C30,0x2C00}, {0x2C01,0x2C31,0x2C01}, /* 2C30 */
3537 {0x2C02,0x2C32,0x2C02}, {0x2C03,0x2C33,0x2C03}, /* 2C32 */
3538 {0x2C04,0x2C34,0x2C04}, {0x2C05,0x2C35,0x2C05}, /* 2C34 */
3539 {0x2C06,0x2C36,0x2C06}, {0x2C07,0x2C37,0x2C07}, /* 2C36 */
3540 {0x2C08,0x2C38,0x2C08}, {0x2C09,0x2C39,0x2C09}, /* 2C38 */
3541 {0x2C0A,0x2C3A,0x2C0A}, {0x2C0B,0x2C3B,0x2C0B}, /* 2C3A */
3542 {0x2C0C,0x2C3C,0x2C0C}, {0x2C0D,0x2C3D,0x2C0D}, /* 2C3C */
3543 {0x2C0E,0x2C3E,0x2C0E}, {0x2C0F,0x2C3F,0x2C0F}, /* 2C3E */
3544 {0x2C10,0x2C40,0x2C10}, {0x2C11,0x2C41,0x2C11}, /* 2C40 */
3545 {0x2C12,0x2C42,0x2C12}, {0x2C13,0x2C43,0x2C13}, /* 2C42 */
3546 {0x2C14,0x2C44,0x2C14}, {0x2C15,0x2C45,0x2C15}, /* 2C44 */
3547 {0x2C16,0x2C46,0x2C16}, {0x2C17,0x2C47,0x2C17}, /* 2C46 */
3548 {0x2C18,0x2C48,0x2C18}, {0x2C19,0x2C49,0x2C19}, /* 2C48 */
3549 {0x2C1A,0x2C4A,0x2C1A}, {0x2C1B,0x2C4B,0x2C1B}, /* 2C4A */
3550 {0x2C1C,0x2C4C,0x2C1C}, {0x2C1D,0x2C4D,0x2C1D}, /* 2C4C */
3551 {0x2C1E,0x2C4E,0x2C1E}, {0x2C1F,0x2C4F,0x2C1F}, /* 2C4E */
3552 {0x2C20,0x2C50,0x2C20}, {0x2C21,0x2C51,0x2C21}, /* 2C50 */
3553 {0x2C22,0x2C52,0x2C22}, {0x2C23,0x2C53,0x2C23}, /* 2C52 */
3554 {0x2C24,0x2C54,0x2C24}, {0x2C25,0x2C55,0x2C25}, /* 2C54 */
3555 {0x2C26,0x2C56,0x2C26}, {0x2C27,0x2C57,0x2C27}, /* 2C56 */
3556 {0x2C28,0x2C58,0x2C28}, {0x2C29,0x2C59,0x2C29}, /* 2C58 */
3557 {0x2C2A,0x2C5A,0x2C2A}, {0x2C2B,0x2C5B,0x2C2B}, /* 2C5A */
3558 {0x2C2C,0x2C5C,0x2C2C}, {0x2C2D,0x2C5D,0x2C2D}, /* 2C5C */
3559 {0x2C2E,0x2C5E,0x2C2E}, {0x2C5F,0x2C5F,0x2C5F}, /* 2C5E */
3560 {0x2C60,0x2C61,0x2C60}, {0x2C60,0x2C61,0x2C60}, /* 2C60 */
3561 {0x2C62,0x026B,0x2C62}, {0x2C63,0x1D7D,0x2C63}, /* 2C62 */
3562 {0x2C64,0x027D,0x2C64}, {0x023A,0x2C65,0x023A}, /* 2C64 */
3563 {0x023E,0x2C66,0x023E}, {0x2C67,0x2C68,0x2C67}, /* 2C66 */
3564 {0x2C67,0x2C68,0x2C67}, {0x2C69,0x2C6A,0x2C69}, /* 2C68 */
3565 {0x2C69,0x2C6A,0x2C69}, {0x2C6B,0x2C6C,0x2C6B}, /* 2C6A */
3566 {0x2C6B,0x2C6C,0x2C6B}, {0x2C6D,0x0251,0x2C6D}, /* 2C6C */
3567 {0x2C6E,0x0271,0x2C6E}, {0x2C6F,0x0250,0x2C6F}, /* 2C6E */
3568 {0x2C70,0x0252,0x2C70}, {0x2C71,0x2C71,0x2C71}, /* 2C70 */
3569 {0x2C72,0x2C73,0x2C72}, {0x2C72,0x2C73,0x2C72}, /* 2C72 */
3570 {0x2C74,0x2C74,0x2C74}, {0x2C75,0x2C76,0x2C75}, /* 2C74 */
3571 {0x2C75,0x2C76,0x2C75}, {0x2C77,0x2C77,0x2C77}, /* 2C76 */
3572 {0x2C78,0x2C78,0x2C78}, {0x2C79,0x2C79,0x2C79}, /* 2C78 */
3573 {0x2C7A,0x2C7A,0x2C7A}, {0x2C7B,0x2C7B,0x2C7B}, /* 2C7A */
3574 {0x2C7C,0x2C7C,0x2C7C}, {0x2C7D,0x2C7D,0x2C7D}, /* 2C7C */
3575 {0x2C7E,0x023F,0x2C7E}, {0x2C7F,0x0240,0x2C7F}, /* 2C7E */
3576 {0x2C80,0x2C81,0x2C80}, {0x2C80,0x2C81,0x2C80}, /* 2C80 */
3577 {0x2C82,0x2C83,0x2C82}, {0x2C82,0x2C83,0x2C82}, /* 2C82 */
3578 {0x2C84,0x2C85,0x2C84}, {0x2C84,0x2C85,0x2C84}, /* 2C84 */
3579 {0x2C86,0x2C87,0x2C86}, {0x2C86,0x2C87,0x2C86}, /* 2C86 */
3580 {0x2C88,0x2C89,0x2C88}, {0x2C88,0x2C89,0x2C88}, /* 2C88 */
3581 {0x2C8A,0x2C8B,0x2C8A}, {0x2C8A,0x2C8B,0x2C8A}, /* 2C8A */
3582 {0x2C8C,0x2C8D,0x2C8C}, {0x2C8C,0x2C8D,0x2C8C}, /* 2C8C */
3583 {0x2C8E,0x2C8F,0x2C8E}, {0x2C8E,0x2C8F,0x2C8E}, /* 2C8E */
3584 {0x2C90,0x2C91,0x2C90}, {0x2C90,0x2C91,0x2C90}, /* 2C90 */
3585 {0x2C92,0x2C93,0x2C92}, {0x2C92,0x2C93,0x2C92}, /* 2C92 */
3586 {0x2C94,0x2C95,0x2C94}, {0x2C94,0x2C95,0x2C94}, /* 2C94 */
3587 {0x2C96,0x2C97,0x2C96}, {0x2C96,0x2C97,0x2C96}, /* 2C96 */
3588 {0x2C98,0x2C99,0x2C98}, {0x2C98,0x2C99,0x2C98}, /* 2C98 */
3589 {0x2C9A,0x2C9B,0x2C9A}, {0x2C9A,0x2C9B,0x2C9A}, /* 2C9A */
3590 {0x2C9C,0x2C9D,0x2C9C}, {0x2C9C,0x2C9D,0x2C9C}, /* 2C9C */
3591 {0x2C9E,0x2C9F,0x2C9E}, {0x2C9E,0x2C9F,0x2C9E}, /* 2C9E */
3592 {0x2CA0,0x2CA1,0x2CA0}, {0x2CA0,0x2CA1,0x2CA0}, /* 2CA0 */
3593 {0x2CA2,0x2CA3,0x2CA2}, {0x2CA2,0x2CA3,0x2CA2}, /* 2CA2 */
3594 {0x2CA4,0x2CA5,0x2CA4}, {0x2CA4,0x2CA5,0x2CA4}, /* 2CA4 */
3595 {0x2CA6,0x2CA7,0x2CA6}, {0x2CA6,0x2CA7,0x2CA6}, /* 2CA6 */
3596 {0x2CA8,0x2CA9,0x2CA8}, {0x2CA8,0x2CA9,0x2CA8}, /* 2CA8 */
3597 {0x2CAA,0x2CAB,0x2CAA}, {0x2CAA,0x2CAB,0x2CAA}, /* 2CAA */
3598 {0x2CAC,0x2CAD,0x2CAC}, {0x2CAC,0x2CAD,0x2CAC}, /* 2CAC */
3599 {0x2CAE,0x2CAF,0x2CAE}, {0x2CAE,0x2CAF,0x2CAE}, /* 2CAE */
3600 {0x2CB0,0x2CB1,0x2CB0}, {0x2CB0,0x2CB1,0x2CB0}, /* 2CB0 */
3601 {0x2CB2,0x2CB3,0x2CB2}, {0x2CB2,0x2CB3,0x2CB2}, /* 2CB2 */
3602 {0x2CB4,0x2CB5,0x2CB4}, {0x2CB4,0x2CB5,0x2CB4}, /* 2CB4 */
3603 {0x2CB6,0x2CB7,0x2CB6}, {0x2CB6,0x2CB7,0x2CB6}, /* 2CB6 */
3604 {0x2CB8,0x2CB9,0x2CB8}, {0x2CB8,0x2CB9,0x2CB8}, /* 2CB8 */
3605 {0x2CBA,0x2CBB,0x2CBA}, {0x2CBA,0x2CBB,0x2CBA}, /* 2CBA */
3606 {0x2CBC,0x2CBD,0x2CBC}, {0x2CBC,0x2CBD,0x2CBC}, /* 2CBC */
3607 {0x2CBE,0x2CBF,0x2CBE}, {0x2CBE,0x2CBF,0x2CBE}, /* 2CBE */
3608 {0x2CC0,0x2CC1,0x2CC0}, {0x2CC0,0x2CC1,0x2CC0}, /* 2CC0 */
3609 {0x2CC2,0x2CC3,0x2CC2}, {0x2CC2,0x2CC3,0x2CC2}, /* 2CC2 */
3610 {0x2CC4,0x2CC5,0x2CC4}, {0x2CC4,0x2CC5,0x2CC4}, /* 2CC4 */
3611 {0x2CC6,0x2CC7,0x2CC6}, {0x2CC6,0x2CC7,0x2CC6}, /* 2CC6 */
3612 {0x2CC8,0x2CC9,0x2CC8}, {0x2CC8,0x2CC9,0x2CC8}, /* 2CC8 */
3613 {0x2CCA,0x2CCB,0x2CCA}, {0x2CCA,0x2CCB,0x2CCA}, /* 2CCA */
3614 {0x2CCC,0x2CCD,0x2CCC}, {0x2CCC,0x2CCD,0x2CCC}, /* 2CCC */
3615 {0x2CCE,0x2CCF,0x2CCE}, {0x2CCE,0x2CCF,0x2CCE}, /* 2CCE */
3616 {0x2CD0,0x2CD1,0x2CD0}, {0x2CD0,0x2CD1,0x2CD0}, /* 2CD0 */
3617 {0x2CD2,0x2CD3,0x2CD2}, {0x2CD2,0x2CD3,0x2CD2}, /* 2CD2 */
3618 {0x2CD4,0x2CD5,0x2CD4}, {0x2CD4,0x2CD5,0x2CD4}, /* 2CD4 */
3619 {0x2CD6,0x2CD7,0x2CD6}, {0x2CD6,0x2CD7,0x2CD6}, /* 2CD6 */
3620 {0x2CD8,0x2CD9,0x2CD8}, {0x2CD8,0x2CD9,0x2CD8}, /* 2CD8 */
3621 {0x2CDA,0x2CDB,0x2CDA}, {0x2CDA,0x2CDB,0x2CDA}, /* 2CDA */
3622 {0x2CDC,0x2CDD,0x2CDC}, {0x2CDC,0x2CDD,0x2CDC}, /* 2CDC */
3623 {0x2CDE,0x2CDF,0x2CDE}, {0x2CDE,0x2CDF,0x2CDE}, /* 2CDE */
3624 {0x2CE0,0x2CE1,0x2CE0}, {0x2CE0,0x2CE1,0x2CE0}, /* 2CE0 */
3625 {0x2CE2,0x2CE3,0x2CE2}, {0x2CE2,0x2CE3,0x2CE2}, /* 2CE2 */
3626 {0x2CE4,0x2CE4,0x2CE4}, {0x2CE5,0x2CE5,0x2CE5}, /* 2CE4 */
3627 {0x2CE6,0x2CE6,0x2CE6}, {0x2CE7,0x2CE7,0x2CE7}, /* 2CE6 */
3628 {0x2CE8,0x2CE8,0x2CE8}, {0x2CE9,0x2CE9,0x2CE9}, /* 2CE8 */
3629 {0x2CEA,0x2CEA,0x2CEA}, {0x2CEB,0x2CEC,0x2CEB}, /* 2CEA */
3630 {0x2CEB,0x2CEC,0x2CEB}, {0x2CED,0x2CEE,0x2CED}, /* 2CEC */
3631 {0x2CED,0x2CEE,0x2CED}, {0x2CEF,0x2CEF,0x2CEF}, /* 2CEE */
3632 {0x2CF0,0x2CF0,0x2CF0}, {0x2CF1,0x2CF1,0x2CF1}, /* 2CF0 */
3633 {0x2CF2,0x2CF2,0x2CF2}, {0x2CF3,0x2CF3,0x2CF3}, /* 2CF2 */
3634 {0x2CF4,0x2CF4,0x2CF4}, {0x2CF5,0x2CF5,0x2CF5}, /* 2CF4 */
3635 {0x2CF6,0x2CF6,0x2CF6}, {0x2CF7,0x2CF7,0x2CF7}, /* 2CF6 */
3636 {0x2CF8,0x2CF8,0x2CF8}, {0x2CF9,0x2CF9,0x2CF9}, /* 2CF8 */
3637 {0x2CFA,0x2CFA,0x2CFA}, {0x2CFB,0x2CFB,0x2CFB}, /* 2CFA */
3638 {0x2CFC,0x2CFC,0x2CFC}, {0x2CFD,0x2CFD,0x2CFD}, /* 2CFC */
3639 {0x2CFE,0x2CFE,0x2CFE}, {0x2CFF,0x2CFF,0x2CFF} /* 2CFE */
3640 };
3641
3642 static const MY_UNICASE_CHARACTER u520p2D[]={
3643 {0x10A0,0x2D00,0x10A0}, {0x10A1,0x2D01,0x10A1}, /* 2D00 */
3644 {0x10A2,0x2D02,0x10A2}, {0x10A3,0x2D03,0x10A3}, /* 2D02 */
3645 {0x10A4,0x2D04,0x10A4}, {0x10A5,0x2D05,0x10A5}, /* 2D04 */
3646 {0x10A6,0x2D06,0x10A6}, {0x10A7,0x2D07,0x10A7}, /* 2D06 */
3647 {0x10A8,0x2D08,0x10A8}, {0x10A9,0x2D09,0x10A9}, /* 2D08 */
3648 {0x10AA,0x2D0A,0x10AA}, {0x10AB,0x2D0B,0x10AB}, /* 2D0A */
3649 {0x10AC,0x2D0C,0x10AC}, {0x10AD,0x2D0D,0x10AD}, /* 2D0C */
3650 {0x10AE,0x2D0E,0x10AE}, {0x10AF,0x2D0F,0x10AF}, /* 2D0E */
3651 {0x10B0,0x2D10,0x10B0}, {0x10B1,0x2D11,0x10B1}, /* 2D10 */
3652 {0x10B2,0x2D12,0x10B2}, {0x10B3,0x2D13,0x10B3}, /* 2D12 */
3653 {0x10B4,0x2D14,0x10B4}, {0x10B5,0x2D15,0x10B5}, /* 2D14 */
3654 {0x10B6,0x2D16,0x10B6}, {0x10B7,0x2D17,0x10B7}, /* 2D16 */
3655 {0x10B8,0x2D18,0x10B8}, {0x10B9,0x2D19,0x10B9}, /* 2D18 */
3656 {0x10BA,0x2D1A,0x10BA}, {0x10BB,0x2D1B,0x10BB}, /* 2D1A */
3657 {0x10BC,0x2D1C,0x10BC}, {0x10BD,0x2D1D,0x10BD}, /* 2D1C */
3658 {0x10BE,0x2D1E,0x10BE}, {0x10BF,0x2D1F,0x10BF}, /* 2D1E */
3659 {0x10C0,0x2D20,0x10C0}, {0x10C1,0x2D21,0x10C1}, /* 2D20 */
3660 {0x10C2,0x2D22,0x10C2}, {0x10C3,0x2D23,0x10C3}, /* 2D22 */
3661 {0x10C4,0x2D24,0x10C4}, {0x10C5,0x2D25,0x10C5}, /* 2D24 */
3662 {0x2D26,0x2D26,0x2D26}, {0x2D27,0x2D27,0x2D27}, /* 2D26 */
3663 {0x2D28,0x2D28,0x2D28}, {0x2D29,0x2D29,0x2D29}, /* 2D28 */
3664 {0x2D2A,0x2D2A,0x2D2A}, {0x2D2B,0x2D2B,0x2D2B}, /* 2D2A */
3665 {0x2D2C,0x2D2C,0x2D2C}, {0x2D2D,0x2D2D,0x2D2D}, /* 2D2C */
3666 {0x2D2E,0x2D2E,0x2D2E}, {0x2D2F,0x2D2F,0x2D2F}, /* 2D2E */
3667 {0x2D30,0x2D30,0x2D30}, {0x2D31,0x2D31,0x2D31}, /* 2D30 */
3668 {0x2D32,0x2D32,0x2D32}, {0x2D33,0x2D33,0x2D33}, /* 2D32 */
3669 {0x2D34,0x2D34,0x2D34}, {0x2D35,0x2D35,0x2D35}, /* 2D34 */
3670 {0x2D36,0x2D36,0x2D36}, {0x2D37,0x2D37,0x2D37}, /* 2D36 */
3671 {0x2D38,0x2D38,0x2D38}, {0x2D39,0x2D39,0x2D39}, /* 2D38 */
3672 {0x2D3A,0x2D3A,0x2D3A}, {0x2D3B,0x2D3B,0x2D3B}, /* 2D3A */
3673 {0x2D3C,0x2D3C,0x2D3C}, {0x2D3D,0x2D3D,0x2D3D}, /* 2D3C */
3674 {0x2D3E,0x2D3E,0x2D3E}, {0x2D3F,0x2D3F,0x2D3F}, /* 2D3E */
3675 {0x2D40,0x2D40,0x2D40}, {0x2D41,0x2D41,0x2D41}, /* 2D40 */
3676 {0x2D42,0x2D42,0x2D42}, {0x2D43,0x2D43,0x2D43}, /* 2D42 */
3677 {0x2D44,0x2D44,0x2D44}, {0x2D45,0x2D45,0x2D45}, /* 2D44 */
3678 {0x2D46,0x2D46,0x2D46}, {0x2D47,0x2D47,0x2D47}, /* 2D46 */
3679 {0x2D48,0x2D48,0x2D48}, {0x2D49,0x2D49,0x2D49}, /* 2D48 */
3680 {0x2D4A,0x2D4A,0x2D4A}, {0x2D4B,0x2D4B,0x2D4B}, /* 2D4A */
3681 {0x2D4C,0x2D4C,0x2D4C}, {0x2D4D,0x2D4D,0x2D4D}, /* 2D4C */
3682 {0x2D4E,0x2D4E,0x2D4E}, {0x2D4F,0x2D4F,0x2D4F}, /* 2D4E */
3683 {0x2D50,0x2D50,0x2D50}, {0x2D51,0x2D51,0x2D51}, /* 2D50 */
3684 {0x2D52,0x2D52,0x2D52}, {0x2D53,0x2D53,0x2D53}, /* 2D52 */
3685 {0x2D54,0x2D54,0x2D54}, {0x2D55,0x2D55,0x2D55}, /* 2D54 */
3686 {0x2D56,0x2D56,0x2D56}, {0x2D57,0x2D57,0x2D57}, /* 2D56 */
3687 {0x2D58,0x2D58,0x2D58}, {0x2D59,0x2D59,0x2D59}, /* 2D58 */
3688 {0x2D5A,0x2D5A,0x2D5A}, {0x2D5B,0x2D5B,0x2D5B}, /* 2D5A */
3689 {0x2D5C,0x2D5C,0x2D5C}, {0x2D5D,0x2D5D,0x2D5D}, /* 2D5C */
3690 {0x2D5E,0x2D5E,0x2D5E}, {0x2D5F,0x2D5F,0x2D5F}, /* 2D5E */
3691 {0x2D60,0x2D60,0x2D60}, {0x2D61,0x2D61,0x2D61}, /* 2D60 */
3692 {0x2D62,0x2D62,0x2D62}, {0x2D63,0x2D63,0x2D63}, /* 2D62 */
3693 {0x2D64,0x2D64,0x2D64}, {0x2D65,0x2D65,0x2D65}, /* 2D64 */
3694 {0x2D66,0x2D66,0x2D66}, {0x2D67,0x2D67,0x2D67}, /* 2D66 */
3695 {0x2D68,0x2D68,0x2D68}, {0x2D69,0x2D69,0x2D69}, /* 2D68 */
3696 {0x2D6A,0x2D6A,0x2D6A}, {0x2D6B,0x2D6B,0x2D6B}, /* 2D6A */
3697 {0x2D6C,0x2D6C,0x2D6C}, {0x2D6D,0x2D6D,0x2D6D}, /* 2D6C */
3698 {0x2D6E,0x2D6E,0x2D6E}, {0x2D6F,0x2D6F,0x2D6F}, /* 2D6E */
3699 {0x2D70,0x2D70,0x2D70}, {0x2D71,0x2D71,0x2D71}, /* 2D70 */
3700 {0x2D72,0x2D72,0x2D72}, {0x2D73,0x2D73,0x2D73}, /* 2D72 */
3701 {0x2D74,0x2D74,0x2D74}, {0x2D75,0x2D75,0x2D75}, /* 2D74 */
3702 {0x2D76,0x2D76,0x2D76}, {0x2D77,0x2D77,0x2D77}, /* 2D76 */
3703 {0x2D78,0x2D78,0x2D78}, {0x2D79,0x2D79,0x2D79}, /* 2D78 */
3704 {0x2D7A,0x2D7A,0x2D7A}, {0x2D7B,0x2D7B,0x2D7B}, /* 2D7A */
3705 {0x2D7C,0x2D7C,0x2D7C}, {0x2D7D,0x2D7D,0x2D7D}, /* 2D7C */
3706 {0x2D7E,0x2D7E,0x2D7E}, {0x2D7F,0x2D7F,0x2D7F}, /* 2D7E */
3707 {0x2D80,0x2D80,0x2D80}, {0x2D81,0x2D81,0x2D81}, /* 2D80 */
3708 {0x2D82,0x2D82,0x2D82}, {0x2D83,0x2D83,0x2D83}, /* 2D82 */
3709 {0x2D84,0x2D84,0x2D84}, {0x2D85,0x2D85,0x2D85}, /* 2D84 */
3710 {0x2D86,0x2D86,0x2D86}, {0x2D87,0x2D87,0x2D87}, /* 2D86 */
3711 {0x2D88,0x2D88,0x2D88}, {0x2D89,0x2D89,0x2D89}, /* 2D88 */
3712 {0x2D8A,0x2D8A,0x2D8A}, {0x2D8B,0x2D8B,0x2D8B}, /* 2D8A */
3713 {0x2D8C,0x2D8C,0x2D8C}, {0x2D8D,0x2D8D,0x2D8D}, /* 2D8C */
3714 {0x2D8E,0x2D8E,0x2D8E}, {0x2D8F,0x2D8F,0x2D8F}, /* 2D8E */
3715 {0x2D90,0x2D90,0x2D90}, {0x2D91,0x2D91,0x2D91}, /* 2D90 */
3716 {0x2D92,0x2D92,0x2D92}, {0x2D93,0x2D93,0x2D93}, /* 2D92 */
3717 {0x2D94,0x2D94,0x2D94}, {0x2D95,0x2D95,0x2D95}, /* 2D94 */
3718 {0x2D96,0x2D96,0x2D96}, {0x2D97,0x2D97,0x2D97}, /* 2D96 */
3719 {0x2D98,0x2D98,0x2D98}, {0x2D99,0x2D99,0x2D99}, /* 2D98 */
3720 {0x2D9A,0x2D9A,0x2D9A}, {0x2D9B,0x2D9B,0x2D9B}, /* 2D9A */
3721 {0x2D9C,0x2D9C,0x2D9C}, {0x2D9D,0x2D9D,0x2D9D}, /* 2D9C */
3722 {0x2D9E,0x2D9E,0x2D9E}, {0x2D9F,0x2D9F,0x2D9F}, /* 2D9E */
3723 {0x2DA0,0x2DA0,0x2DA0}, {0x2DA1,0x2DA1,0x2DA1}, /* 2DA0 */
3724 {0x2DA2,0x2DA2,0x2DA2}, {0x2DA3,0x2DA3,0x2DA3}, /* 2DA2 */
3725 {0x2DA4,0x2DA4,0x2DA4}, {0x2DA5,0x2DA5,0x2DA5}, /* 2DA4 */
3726 {0x2DA6,0x2DA6,0x2DA6}, {0x2DA7,0x2DA7,0x2DA7}, /* 2DA6 */
3727 {0x2DA8,0x2DA8,0x2DA8}, {0x2DA9,0x2DA9,0x2DA9}, /* 2DA8 */
3728 {0x2DAA,0x2DAA,0x2DAA}, {0x2DAB,0x2DAB,0x2DAB}, /* 2DAA */
3729 {0x2DAC,0x2DAC,0x2DAC}, {0x2DAD,0x2DAD,0x2DAD}, /* 2DAC */
3730 {0x2DAE,0x2DAE,0x2DAE}, {0x2DAF,0x2DAF,0x2DAF}, /* 2DAE */
3731 {0x2DB0,0x2DB0,0x2DB0}, {0x2DB1,0x2DB1,0x2DB1}, /* 2DB0 */
3732 {0x2DB2,0x2DB2,0x2DB2}, {0x2DB3,0x2DB3,0x2DB3}, /* 2DB2 */
3733 {0x2DB4,0x2DB4,0x2DB4}, {0x2DB5,0x2DB5,0x2DB5}, /* 2DB4 */
3734 {0x2DB6,0x2DB6,0x2DB6}, {0x2DB7,0x2DB7,0x2DB7}, /* 2DB6 */
3735 {0x2DB8,0x2DB8,0x2DB8}, {0x2DB9,0x2DB9,0x2DB9}, /* 2DB8 */
3736 {0x2DBA,0x2DBA,0x2DBA}, {0x2DBB,0x2DBB,0x2DBB}, /* 2DBA */
3737 {0x2DBC,0x2DBC,0x2DBC}, {0x2DBD,0x2DBD,0x2DBD}, /* 2DBC */
3738 {0x2DBE,0x2DBE,0x2DBE}, {0x2DBF,0x2DBF,0x2DBF}, /* 2DBE */
3739 {0x2DC0,0x2DC0,0x2DC0}, {0x2DC1,0x2DC1,0x2DC1}, /* 2DC0 */
3740 {0x2DC2,0x2DC2,0x2DC2}, {0x2DC3,0x2DC3,0x2DC3}, /* 2DC2 */
3741 {0x2DC4,0x2DC4,0x2DC4}, {0x2DC5,0x2DC5,0x2DC5}, /* 2DC4 */
3742 {0x2DC6,0x2DC6,0x2DC6}, {0x2DC7,0x2DC7,0x2DC7}, /* 2DC6 */
3743 {0x2DC8,0x2DC8,0x2DC8}, {0x2DC9,0x2DC9,0x2DC9}, /* 2DC8 */
3744 {0x2DCA,0x2DCA,0x2DCA}, {0x2DCB,0x2DCB,0x2DCB}, /* 2DCA */
3745 {0x2DCC,0x2DCC,0x2DCC}, {0x2DCD,0x2DCD,0x2DCD}, /* 2DCC */
3746 {0x2DCE,0x2DCE,0x2DCE}, {0x2DCF,0x2DCF,0x2DCF}, /* 2DCE */
3747 {0x2DD0,0x2DD0,0x2DD0}, {0x2DD1,0x2DD1,0x2DD1}, /* 2DD0 */
3748 {0x2DD2,0x2DD2,0x2DD2}, {0x2DD3,0x2DD3,0x2DD3}, /* 2DD2 */
3749 {0x2DD4,0x2DD4,0x2DD4}, {0x2DD5,0x2DD5,0x2DD5}, /* 2DD4 */
3750 {0x2DD6,0x2DD6,0x2DD6}, {0x2DD7,0x2DD7,0x2DD7}, /* 2DD6 */
3751 {0x2DD8,0x2DD8,0x2DD8}, {0x2DD9,0x2DD9,0x2DD9}, /* 2DD8 */
3752 {0x2DDA,0x2DDA,0x2DDA}, {0x2DDB,0x2DDB,0x2DDB}, /* 2DDA */
3753 {0x2DDC,0x2DDC,0x2DDC}, {0x2DDD,0x2DDD,0x2DDD}, /* 2DDC */
3754 {0x2DDE,0x2DDE,0x2DDE}, {0x2DDF,0x2DDF,0x2DDF}, /* 2DDE */
3755 {0x2DE0,0x2DE0,0x2DE0}, {0x2DE1,0x2DE1,0x2DE1}, /* 2DE0 */
3756 {0x2DE2,0x2DE2,0x2DE2}, {0x2DE3,0x2DE3,0x2DE3}, /* 2DE2 */
3757 {0x2DE4,0x2DE4,0x2DE4}, {0x2DE5,0x2DE5,0x2DE5}, /* 2DE4 */
3758 {0x2DE6,0x2DE6,0x2DE6}, {0x2DE7,0x2DE7,0x2DE7}, /* 2DE6 */
3759 {0x2DE8,0x2DE8,0x2DE8}, {0x2DE9,0x2DE9,0x2DE9}, /* 2DE8 */
3760 {0x2DEA,0x2DEA,0x2DEA}, {0x2DEB,0x2DEB,0x2DEB}, /* 2DEA */
3761 {0x2DEC,0x2DEC,0x2DEC}, {0x2DED,0x2DED,0x2DED}, /* 2DEC */
3762 {0x2DEE,0x2DEE,0x2DEE}, {0x2DEF,0x2DEF,0x2DEF}, /* 2DEE */
3763 {0x2DF0,0x2DF0,0x2DF0}, {0x2DF1,0x2DF1,0x2DF1}, /* 2DF0 */
3764 {0x2DF2,0x2DF2,0x2DF2}, {0x2DF3,0x2DF3,0x2DF3}, /* 2DF2 */
3765 {0x2DF4,0x2DF4,0x2DF4}, {0x2DF5,0x2DF5,0x2DF5}, /* 2DF4 */
3766 {0x2DF6,0x2DF6,0x2DF6}, {0x2DF7,0x2DF7,0x2DF7}, /* 2DF6 */
3767 {0x2DF8,0x2DF8,0x2DF8}, {0x2DF9,0x2DF9,0x2DF9}, /* 2DF8 */
3768 {0x2DFA,0x2DFA,0x2DFA}, {0x2DFB,0x2DFB,0x2DFB}, /* 2DFA */
3769 {0x2DFC,0x2DFC,0x2DFC}, {0x2DFD,0x2DFD,0x2DFD}, /* 2DFC */
3770 {0x2DFE,0x2DFE,0x2DFE}, {0x2DFF,0x2DFF,0x2DFF} /* 2DFE */
3771 };
3772
3773 static const MY_UNICASE_CHARACTER u520pA6[]={
3774 {0xA600,0xA600,0xA600}, {0xA601,0xA601,0xA601}, /* A600 */
3775 {0xA602,0xA602,0xA602}, {0xA603,0xA603,0xA603}, /* A602 */
3776 {0xA604,0xA604,0xA604}, {0xA605,0xA605,0xA605}, /* A604 */
3777 {0xA606,0xA606,0xA606}, {0xA607,0xA607,0xA607}, /* A606 */
3778 {0xA608,0xA608,0xA608}, {0xA609,0xA609,0xA609}, /* A608 */
3779 {0xA60A,0xA60A,0xA60A}, {0xA60B,0xA60B,0xA60B}, /* A60A */
3780 {0xA60C,0xA60C,0xA60C}, {0xA60D,0xA60D,0xA60D}, /* A60C */
3781 {0xA60E,0xA60E,0xA60E}, {0xA60F,0xA60F,0xA60F}, /* A60E */
3782 {0xA610,0xA610,0xA610}, {0xA611,0xA611,0xA611}, /* A610 */
3783 {0xA612,0xA612,0xA612}, {0xA613,0xA613,0xA613}, /* A612 */
3784 {0xA614,0xA614,0xA614}, {0xA615,0xA615,0xA615}, /* A614 */
3785 {0xA616,0xA616,0xA616}, {0xA617,0xA617,0xA617}, /* A616 */
3786 {0xA618,0xA618,0xA618}, {0xA619,0xA619,0xA619}, /* A618 */
3787 {0xA61A,0xA61A,0xA61A}, {0xA61B,0xA61B,0xA61B}, /* A61A */
3788 {0xA61C,0xA61C,0xA61C}, {0xA61D,0xA61D,0xA61D}, /* A61C */
3789 {0xA61E,0xA61E,0xA61E}, {0xA61F,0xA61F,0xA61F}, /* A61E */
3790 {0xA620,0xA620,0xA620}, {0xA621,0xA621,0xA621}, /* A620 */
3791 {0xA622,0xA622,0xA622}, {0xA623,0xA623,0xA623}, /* A622 */
3792 {0xA624,0xA624,0xA624}, {0xA625,0xA625,0xA625}, /* A624 */
3793 {0xA626,0xA626,0xA626}, {0xA627,0xA627,0xA627}, /* A626 */
3794 {0xA628,0xA628,0xA628}, {0xA629,0xA629,0xA629}, /* A628 */
3795 {0xA62A,0xA62A,0xA62A}, {0xA62B,0xA62B,0xA62B}, /* A62A */
3796 {0xA62C,0xA62C,0xA62C}, {0xA62D,0xA62D,0xA62D}, /* A62C */
3797 {0xA62E,0xA62E,0xA62E}, {0xA62F,0xA62F,0xA62F}, /* A62E */
3798 {0xA630,0xA630,0xA630}, {0xA631,0xA631,0xA631}, /* A630 */
3799 {0xA632,0xA632,0xA632}, {0xA633,0xA633,0xA633}, /* A632 */
3800 {0xA634,0xA634,0xA634}, {0xA635,0xA635,0xA635}, /* A634 */
3801 {0xA636,0xA636,0xA636}, {0xA637,0xA637,0xA637}, /* A636 */
3802 {0xA638,0xA638,0xA638}, {0xA639,0xA639,0xA639}, /* A638 */
3803 {0xA63A,0xA63A,0xA63A}, {0xA63B,0xA63B,0xA63B}, /* A63A */
3804 {0xA63C,0xA63C,0xA63C}, {0xA63D,0xA63D,0xA63D}, /* A63C */
3805 {0xA63E,0xA63E,0xA63E}, {0xA63F,0xA63F,0xA63F}, /* A63E */
3806 {0xA640,0xA641,0xA640}, {0xA640,0xA641,0xA640}, /* A640 */
3807 {0xA642,0xA643,0xA642}, {0xA642,0xA643,0xA642}, /* A642 */
3808 {0xA644,0xA645,0xA644}, {0xA644,0xA645,0xA644}, /* A644 */
3809 {0xA646,0xA647,0xA646}, {0xA646,0xA647,0xA646}, /* A646 */
3810 {0xA648,0xA649,0xA648}, {0xA648,0xA649,0xA648}, /* A648 */
3811 {0xA64A,0xA64B,0xA64A}, {0xA64A,0xA64B,0xA64A}, /* A64A */
3812 {0xA64C,0xA64D,0xA64C}, {0xA64C,0xA64D,0xA64C}, /* A64C */
3813 {0xA64E,0xA64F,0xA64E}, {0xA64E,0xA64F,0xA64E}, /* A64E */
3814 {0xA650,0xA651,0xA650}, {0xA650,0xA651,0xA650}, /* A650 */
3815 {0xA652,0xA653,0xA652}, {0xA652,0xA653,0xA652}, /* A652 */
3816 {0xA654,0xA655,0xA654}, {0xA654,0xA655,0xA654}, /* A654 */
3817 {0xA656,0xA657,0xA656}, {0xA656,0xA657,0xA656}, /* A656 */
3818 {0xA658,0xA659,0xA658}, {0xA658,0xA659,0xA658}, /* A658 */
3819 {0xA65A,0xA65B,0xA65A}, {0xA65A,0xA65B,0xA65A}, /* A65A */
3820 {0xA65C,0xA65D,0xA65C}, {0xA65C,0xA65D,0xA65C}, /* A65C */
3821 {0xA65E,0xA65F,0xA65E}, {0xA65E,0xA65F,0xA65E}, /* A65E */
3822 {0xA660,0xA660,0xA660}, {0xA661,0xA661,0xA661}, /* A660 */
3823 {0xA662,0xA663,0xA662}, {0xA662,0xA663,0xA662}, /* A662 */
3824 {0xA664,0xA665,0xA664}, {0xA664,0xA665,0xA664}, /* A664 */
3825 {0xA666,0xA667,0xA666}, {0xA666,0xA667,0xA666}, /* A666 */
3826 {0xA668,0xA669,0xA668}, {0xA668,0xA669,0xA668}, /* A668 */
3827 {0xA66A,0xA66B,0xA66A}, {0xA66A,0xA66B,0xA66A}, /* A66A */
3828 {0xA66C,0xA66D,0xA66C}, {0xA66C,0xA66D,0xA66C}, /* A66C */
3829 {0xA66E,0xA66E,0xA66E}, {0xA66F,0xA66F,0xA66F}, /* A66E */
3830 {0xA670,0xA670,0xA670}, {0xA671,0xA671,0xA671}, /* A670 */
3831 {0xA672,0xA672,0xA672}, {0xA673,0xA673,0xA673}, /* A672 */
3832 {0xA674,0xA674,0xA674}, {0xA675,0xA675,0xA675}, /* A674 */
3833 {0xA676,0xA676,0xA676}, {0xA677,0xA677,0xA677}, /* A676 */
3834 {0xA678,0xA678,0xA678}, {0xA679,0xA679,0xA679}, /* A678 */
3835 {0xA67A,0xA67A,0xA67A}, {0xA67B,0xA67B,0xA67B}, /* A67A */
3836 {0xA67C,0xA67C,0xA67C}, {0xA67D,0xA67D,0xA67D}, /* A67C */
3837 {0xA67E,0xA67E,0xA67E}, {0xA67F,0xA67F,0xA67F}, /* A67E */
3838 {0xA680,0xA681,0xA680}, {0xA680,0xA681,0xA680}, /* A680 */
3839 {0xA682,0xA683,0xA682}, {0xA682,0xA683,0xA682}, /* A682 */
3840 {0xA684,0xA685,0xA684}, {0xA684,0xA685,0xA684}, /* A684 */
3841 {0xA686,0xA687,0xA686}, {0xA686,0xA687,0xA686}, /* A686 */
3842 {0xA688,0xA689,0xA688}, {0xA688,0xA689,0xA688}, /* A688 */
3843 {0xA68A,0xA68B,0xA68A}, {0xA68A,0xA68B,0xA68A}, /* A68A */
3844 {0xA68C,0xA68D,0xA68C}, {0xA68C,0xA68D,0xA68C}, /* A68C */
3845 {0xA68E,0xA68F,0xA68E}, {0xA68E,0xA68F,0xA68E}, /* A68E */
3846 {0xA690,0xA691,0xA690}, {0xA690,0xA691,0xA690}, /* A690 */
3847 {0xA692,0xA693,0xA692}, {0xA692,0xA693,0xA692}, /* A692 */
3848 {0xA694,0xA695,0xA694}, {0xA694,0xA695,0xA694}, /* A694 */
3849 {0xA696,0xA697,0xA696}, {0xA696,0xA697,0xA696}, /* A696 */
3850 {0xA698,0xA698,0xA698}, {0xA699,0xA699,0xA699}, /* A698 */
3851 {0xA69A,0xA69A,0xA69A}, {0xA69B,0xA69B,0xA69B}, /* A69A */
3852 {0xA69C,0xA69C,0xA69C}, {0xA69D,0xA69D,0xA69D}, /* A69C */
3853 {0xA69E,0xA69E,0xA69E}, {0xA69F,0xA69F,0xA69F}, /* A69E */
3854 {0xA6A0,0xA6A0,0xA6A0}, {0xA6A1,0xA6A1,0xA6A1}, /* A6A0 */
3855 {0xA6A2,0xA6A2,0xA6A2}, {0xA6A3,0xA6A3,0xA6A3}, /* A6A2 */
3856 {0xA6A4,0xA6A4,0xA6A4}, {0xA6A5,0xA6A5,0xA6A5}, /* A6A4 */
3857 {0xA6A6,0xA6A6,0xA6A6}, {0xA6A7,0xA6A7,0xA6A7}, /* A6A6 */
3858 {0xA6A8,0xA6A8,0xA6A8}, {0xA6A9,0xA6A9,0xA6A9}, /* A6A8 */
3859 {0xA6AA,0xA6AA,0xA6AA}, {0xA6AB,0xA6AB,0xA6AB}, /* A6AA */
3860 {0xA6AC,0xA6AC,0xA6AC}, {0xA6AD,0xA6AD,0xA6AD}, /* A6AC */
3861 {0xA6AE,0xA6AE,0xA6AE}, {0xA6AF,0xA6AF,0xA6AF}, /* A6AE */
3862 {0xA6B0,0xA6B0,0xA6B0}, {0xA6B1,0xA6B1,0xA6B1}, /* A6B0 */
3863 {0xA6B2,0xA6B2,0xA6B2}, {0xA6B3,0xA6B3,0xA6B3}, /* A6B2 */
3864 {0xA6B4,0xA6B4,0xA6B4}, {0xA6B5,0xA6B5,0xA6B5}, /* A6B4 */
3865 {0xA6B6,0xA6B6,0xA6B6}, {0xA6B7,0xA6B7,0xA6B7}, /* A6B6 */
3866 {0xA6B8,0xA6B8,0xA6B8}, {0xA6B9,0xA6B9,0xA6B9}, /* A6B8 */
3867 {0xA6BA,0xA6BA,0xA6BA}, {0xA6BB,0xA6BB,0xA6BB}, /* A6BA */
3868 {0xA6BC,0xA6BC,0xA6BC}, {0xA6BD,0xA6BD,0xA6BD}, /* A6BC */
3869 {0xA6BE,0xA6BE,0xA6BE}, {0xA6BF,0xA6BF,0xA6BF}, /* A6BE */
3870 {0xA6C0,0xA6C0,0xA6C0}, {0xA6C1,0xA6C1,0xA6C1}, /* A6C0 */
3871 {0xA6C2,0xA6C2,0xA6C2}, {0xA6C3,0xA6C3,0xA6C3}, /* A6C2 */
3872 {0xA6C4,0xA6C4,0xA6C4}, {0xA6C5,0xA6C5,0xA6C5}, /* A6C4 */
3873 {0xA6C6,0xA6C6,0xA6C6}, {0xA6C7,0xA6C7,0xA6C7}, /* A6C6 */
3874 {0xA6C8,0xA6C8,0xA6C8}, {0xA6C9,0xA6C9,0xA6C9}, /* A6C8 */
3875 {0xA6CA,0xA6CA,0xA6CA}, {0xA6CB,0xA6CB,0xA6CB}, /* A6CA */
3876 {0xA6CC,0xA6CC,0xA6CC}, {0xA6CD,0xA6CD,0xA6CD}, /* A6CC */
3877 {0xA6CE,0xA6CE,0xA6CE}, {0xA6CF,0xA6CF,0xA6CF}, /* A6CE */
3878 {0xA6D0,0xA6D0,0xA6D0}, {0xA6D1,0xA6D1,0xA6D1}, /* A6D0 */
3879 {0xA6D2,0xA6D2,0xA6D2}, {0xA6D3,0xA6D3,0xA6D3}, /* A6D2 */
3880 {0xA6D4,0xA6D4,0xA6D4}, {0xA6D5,0xA6D5,0xA6D5}, /* A6D4 */
3881 {0xA6D6,0xA6D6,0xA6D6}, {0xA6D7,0xA6D7,0xA6D7}, /* A6D6 */
3882 {0xA6D8,0xA6D8,0xA6D8}, {0xA6D9,0xA6D9,0xA6D9}, /* A6D8 */
3883 {0xA6DA,0xA6DA,0xA6DA}, {0xA6DB,0xA6DB,0xA6DB}, /* A6DA */
3884 {0xA6DC,0xA6DC,0xA6DC}, {0xA6DD,0xA6DD,0xA6DD}, /* A6DC */
3885 {0xA6DE,0xA6DE,0xA6DE}, {0xA6DF,0xA6DF,0xA6DF}, /* A6DE */
3886 {0xA6E0,0xA6E0,0xA6E0}, {0xA6E1,0xA6E1,0xA6E1}, /* A6E0 */
3887 {0xA6E2,0xA6E2,0xA6E2}, {0xA6E3,0xA6E3,0xA6E3}, /* A6E2 */
3888 {0xA6E4,0xA6E4,0xA6E4}, {0xA6E5,0xA6E5,0xA6E5}, /* A6E4 */
3889 {0xA6E6,0xA6E6,0xA6E6}, {0xA6E7,0xA6E7,0xA6E7}, /* A6E6 */
3890 {0xA6E8,0xA6E8,0xA6E8}, {0xA6E9,0xA6E9,0xA6E9}, /* A6E8 */
3891 {0xA6EA,0xA6EA,0xA6EA}, {0xA6EB,0xA6EB,0xA6EB}, /* A6EA */
3892 {0xA6EC,0xA6EC,0xA6EC}, {0xA6ED,0xA6ED,0xA6ED}, /* A6EC */
3893 {0xA6EE,0xA6EE,0xA6EE}, {0xA6EF,0xA6EF,0xA6EF}, /* A6EE */
3894 {0xA6F0,0xA6F0,0xA6F0}, {0xA6F1,0xA6F1,0xA6F1}, /* A6F0 */
3895 {0xA6F2,0xA6F2,0xA6F2}, {0xA6F3,0xA6F3,0xA6F3}, /* A6F2 */
3896 {0xA6F4,0xA6F4,0xA6F4}, {0xA6F5,0xA6F5,0xA6F5}, /* A6F4 */
3897 {0xA6F6,0xA6F6,0xA6F6}, {0xA6F7,0xA6F7,0xA6F7}, /* A6F6 */
3898 {0xA6F8,0xA6F8,0xA6F8}, {0xA6F9,0xA6F9,0xA6F9}, /* A6F8 */
3899 {0xA6FA,0xA6FA,0xA6FA}, {0xA6FB,0xA6FB,0xA6FB}, /* A6FA */
3900 {0xA6FC,0xA6FC,0xA6FC}, {0xA6FD,0xA6FD,0xA6FD}, /* A6FC */
3901 {0xA6FE,0xA6FE,0xA6FE}, {0xA6FF,0xA6FF,0xA6FF} /* A6FE */
3902 };
3903
3904 static const MY_UNICASE_CHARACTER u520pA7[]={
3905 {0xA700,0xA700,0xA700}, {0xA701,0xA701,0xA701}, /* A700 */
3906 {0xA702,0xA702,0xA702}, {0xA703,0xA703,0xA703}, /* A702 */
3907 {0xA704,0xA704,0xA704}, {0xA705,0xA705,0xA705}, /* A704 */
3908 {0xA706,0xA706,0xA706}, {0xA707,0xA707,0xA707}, /* A706 */
3909 {0xA708,0xA708,0xA708}, {0xA709,0xA709,0xA709}, /* A708 */
3910 {0xA70A,0xA70A,0xA70A}, {0xA70B,0xA70B,0xA70B}, /* A70A */
3911 {0xA70C,0xA70C,0xA70C}, {0xA70D,0xA70D,0xA70D}, /* A70C */
3912 {0xA70E,0xA70E,0xA70E}, {0xA70F,0xA70F,0xA70F}, /* A70E */
3913 {0xA710,0xA710,0xA710}, {0xA711,0xA711,0xA711}, /* A710 */
3914 {0xA712,0xA712,0xA712}, {0xA713,0xA713,0xA713}, /* A712 */
3915 {0xA714,0xA714,0xA714}, {0xA715,0xA715,0xA715}, /* A714 */
3916 {0xA716,0xA716,0xA716}, {0xA717,0xA717,0xA717}, /* A716 */
3917 {0xA718,0xA718,0xA718}, {0xA719,0xA719,0xA719}, /* A718 */
3918 {0xA71A,0xA71A,0xA71A}, {0xA71B,0xA71B,0xA71B}, /* A71A */
3919 {0xA71C,0xA71C,0xA71C}, {0xA71D,0xA71D,0xA71D}, /* A71C */
3920 {0xA71E,0xA71E,0xA71E}, {0xA71F,0xA71F,0xA71F}, /* A71E */
3921 {0xA720,0xA720,0xA720}, {0xA721,0xA721,0xA721}, /* A720 */
3922 {0xA722,0xA723,0xA722}, {0xA722,0xA723,0xA722}, /* A722 */
3923 {0xA724,0xA725,0xA724}, {0xA724,0xA725,0xA724}, /* A724 */
3924 {0xA726,0xA727,0xA726}, {0xA726,0xA727,0xA726}, /* A726 */
3925 {0xA728,0xA729,0xA728}, {0xA728,0xA729,0xA728}, /* A728 */
3926 {0xA72A,0xA72B,0xA72A}, {0xA72A,0xA72B,0xA72A}, /* A72A */
3927 {0xA72C,0xA72D,0xA72C}, {0xA72C,0xA72D,0xA72C}, /* A72C */
3928 {0xA72E,0xA72F,0xA72E}, {0xA72E,0xA72F,0xA72E}, /* A72E */
3929 {0xA730,0xA730,0xA730}, {0xA731,0xA731,0xA731}, /* A730 */
3930 {0xA732,0xA733,0xA732}, {0xA732,0xA733,0xA732}, /* A732 */
3931 {0xA734,0xA735,0xA734}, {0xA734,0xA735,0xA734}, /* A734 */
3932 {0xA736,0xA737,0xA736}, {0xA736,0xA737,0xA736}, /* A736 */
3933 {0xA738,0xA739,0xA738}, {0xA738,0xA739,0xA738}, /* A738 */
3934 {0xA73A,0xA73B,0xA73A}, {0xA73A,0xA73B,0xA73A}, /* A73A */
3935 {0xA73C,0xA73D,0xA73C}, {0xA73C,0xA73D,0xA73C}, /* A73C */
3936 {0xA73E,0xA73F,0xA73E}, {0xA73E,0xA73F,0xA73E}, /* A73E */
3937 {0xA740,0xA741,0xA740}, {0xA740,0xA741,0xA740}, /* A740 */
3938 {0xA742,0xA743,0xA742}, {0xA742,0xA743,0xA742}, /* A742 */
3939 {0xA744,0xA745,0xA744}, {0xA744,0xA745,0xA744}, /* A744 */
3940 {0xA746,0xA747,0xA746}, {0xA746,0xA747,0xA746}, /* A746 */
3941 {0xA748,0xA749,0xA748}, {0xA748,0xA749,0xA748}, /* A748 */
3942 {0xA74A,0xA74B,0xA74A}, {0xA74A,0xA74B,0xA74A}, /* A74A */
3943 {0xA74C,0xA74D,0xA74C}, {0xA74C,0xA74D,0xA74C}, /* A74C */
3944 {0xA74E,0xA74F,0xA74E}, {0xA74E,0xA74F,0xA74E}, /* A74E */
3945 {0xA750,0xA751,0xA750}, {0xA750,0xA751,0xA750}, /* A750 */
3946 {0xA752,0xA753,0xA752}, {0xA752,0xA753,0xA752}, /* A752 */
3947 {0xA754,0xA755,0xA754}, {0xA754,0xA755,0xA754}, /* A754 */
3948 {0xA756,0xA757,0xA756}, {0xA756,0xA757,0xA756}, /* A756 */
3949 {0xA758,0xA759,0xA758}, {0xA758,0xA759,0xA758}, /* A758 */
3950 {0xA75A,0xA75B,0xA75A}, {0xA75A,0xA75B,0xA75A}, /* A75A */
3951 {0xA75C,0xA75D,0xA75C}, {0xA75C,0xA75D,0xA75C}, /* A75C */
3952 {0xA75E,0xA75F,0xA75E}, {0xA75E,0xA75F,0xA75E}, /* A75E */
3953 {0xA760,0xA761,0xA760}, {0xA760,0xA761,0xA760}, /* A760 */
3954 {0xA762,0xA763,0xA762}, {0xA762,0xA763,0xA762}, /* A762 */
3955 {0xA764,0xA765,0xA764}, {0xA764,0xA765,0xA764}, /* A764 */
3956 {0xA766,0xA767,0xA766}, {0xA766,0xA767,0xA766}, /* A766 */
3957 {0xA768,0xA769,0xA768}, {0xA768,0xA769,0xA768}, /* A768 */
3958 {0xA76A,0xA76B,0xA76A}, {0xA76A,0xA76B,0xA76A}, /* A76A */
3959 {0xA76C,0xA76D,0xA76C}, {0xA76C,0xA76D,0xA76C}, /* A76C */
3960 {0xA76E,0xA76F,0xA76E}, {0xA76E,0xA76F,0xA76E}, /* A76E */
3961 {0xA770,0xA770,0xA770}, {0xA771,0xA771,0xA771}, /* A770 */
3962 {0xA772,0xA772,0xA772}, {0xA773,0xA773,0xA773}, /* A772 */
3963 {0xA774,0xA774,0xA774}, {0xA775,0xA775,0xA775}, /* A774 */
3964 {0xA776,0xA776,0xA776}, {0xA777,0xA777,0xA777}, /* A776 */
3965 {0xA778,0xA778,0xA778}, {0xA779,0xA77A,0xA779}, /* A778 */
3966 {0xA779,0xA77A,0xA779}, {0xA77B,0xA77C,0xA77B}, /* A77A */
3967 {0xA77B,0xA77C,0xA77B}, {0xA77D,0x1D79,0xA77D}, /* A77C */
3968 {0xA77E,0xA77F,0xA77E}, {0xA77E,0xA77F,0xA77E}, /* A77E */
3969 {0xA780,0xA781,0xA780}, {0xA780,0xA781,0xA780}, /* A780 */
3970 {0xA782,0xA783,0xA782}, {0xA782,0xA783,0xA782}, /* A782 */
3971 {0xA784,0xA785,0xA784}, {0xA784,0xA785,0xA784}, /* A784 */
3972 {0xA786,0xA787,0xA786}, {0xA786,0xA787,0xA786}, /* A786 */
3973 {0xA788,0xA788,0xA788}, {0xA789,0xA789,0xA789}, /* A788 */
3974 {0xA78A,0xA78A,0xA78A}, {0xA78B,0xA78C,0xA78B}, /* A78A */
3975 {0xA78B,0xA78C,0xA78B}, {0xA78D,0xA78D,0xA78D}, /* A78C */
3976 {0xA78E,0xA78E,0xA78E}, {0xA78F,0xA78F,0xA78F}, /* A78E */
3977 {0xA790,0xA790,0xA790}, {0xA791,0xA791,0xA791}, /* A790 */
3978 {0xA792,0xA792,0xA792}, {0xA793,0xA793,0xA793}, /* A792 */
3979 {0xA794,0xA794,0xA794}, {0xA795,0xA795,0xA795}, /* A794 */
3980 {0xA796,0xA796,0xA796}, {0xA797,0xA797,0xA797}, /* A796 */
3981 {0xA798,0xA798,0xA798}, {0xA799,0xA799,0xA799}, /* A798 */
3982 {0xA79A,0xA79A,0xA79A}, {0xA79B,0xA79B,0xA79B}, /* A79A */
3983 {0xA79C,0xA79C,0xA79C}, {0xA79D,0xA79D,0xA79D}, /* A79C */
3984 {0xA79E,0xA79E,0xA79E}, {0xA79F,0xA79F,0xA79F}, /* A79E */
3985 {0xA7A0,0xA7A0,0xA7A0}, {0xA7A1,0xA7A1,0xA7A1}, /* A7A0 */
3986 {0xA7A2,0xA7A2,0xA7A2}, {0xA7A3,0xA7A3,0xA7A3}, /* A7A2 */
3987 {0xA7A4,0xA7A4,0xA7A4}, {0xA7A5,0xA7A5,0xA7A5}, /* A7A4 */
3988 {0xA7A6,0xA7A6,0xA7A6}, {0xA7A7,0xA7A7,0xA7A7}, /* A7A6 */
3989 {0xA7A8,0xA7A8,0xA7A8}, {0xA7A9,0xA7A9,0xA7A9}, /* A7A8 */
3990 {0xA7AA,0xA7AA,0xA7AA}, {0xA7AB,0xA7AB,0xA7AB}, /* A7AA */
3991 {0xA7AC,0xA7AC,0xA7AC}, {0xA7AD,0xA7AD,0xA7AD}, /* A7AC */
3992 {0xA7AE,0xA7AE,0xA7AE}, {0xA7AF,0xA7AF,0xA7AF}, /* A7AE */
3993 {0xA7B0,0xA7B0,0xA7B0}, {0xA7B1,0xA7B1,0xA7B1}, /* A7B0 */
3994 {0xA7B2,0xA7B2,0xA7B2}, {0xA7B3,0xA7B3,0xA7B3}, /* A7B2 */
3995 {0xA7B4,0xA7B4,0xA7B4}, {0xA7B5,0xA7B5,0xA7B5}, /* A7B4 */
3996 {0xA7B6,0xA7B6,0xA7B6}, {0xA7B7,0xA7B7,0xA7B7}, /* A7B6 */
3997 {0xA7B8,0xA7B8,0xA7B8}, {0xA7B9,0xA7B9,0xA7B9}, /* A7B8 */
3998 {0xA7BA,0xA7BA,0xA7BA}, {0xA7BB,0xA7BB,0xA7BB}, /* A7BA */
3999 {0xA7BC,0xA7BC,0xA7BC}, {0xA7BD,0xA7BD,0xA7BD}, /* A7BC */
4000 {0xA7BE,0xA7BE,0xA7BE}, {0xA7BF,0xA7BF,0xA7BF}, /* A7BE */
4001 {0xA7C0,0xA7C0,0xA7C0}, {0xA7C1,0xA7C1,0xA7C1}, /* A7C0 */
4002 {0xA7C2,0xA7C2,0xA7C2}, {0xA7C3,0xA7C3,0xA7C3}, /* A7C2 */
4003 {0xA7C4,0xA7C4,0xA7C4}, {0xA7C5,0xA7C5,0xA7C5}, /* A7C4 */
4004 {0xA7C6,0xA7C6,0xA7C6}, {0xA7C7,0xA7C7,0xA7C7}, /* A7C6 */
4005 {0xA7C8,0xA7C8,0xA7C8}, {0xA7C9,0xA7C9,0xA7C9}, /* A7C8 */
4006 {0xA7CA,0xA7CA,0xA7CA}, {0xA7CB,0xA7CB,0xA7CB}, /* A7CA */
4007 {0xA7CC,0xA7CC,0xA7CC}, {0xA7CD,0xA7CD,0xA7CD}, /* A7CC */
4008 {0xA7CE,0xA7CE,0xA7CE}, {0xA7CF,0xA7CF,0xA7CF}, /* A7CE */
4009 {0xA7D0,0xA7D0,0xA7D0}, {0xA7D1,0xA7D1,0xA7D1}, /* A7D0 */
4010 {0xA7D2,0xA7D2,0xA7D2}, {0xA7D3,0xA7D3,0xA7D3}, /* A7D2 */
4011 {0xA7D4,0xA7D4,0xA7D4}, {0xA7D5,0xA7D5,0xA7D5}, /* A7D4 */
4012 {0xA7D6,0xA7D6,0xA7D6}, {0xA7D7,0xA7D7,0xA7D7}, /* A7D6 */
4013 {0xA7D8,0xA7D8,0xA7D8}, {0xA7D9,0xA7D9,0xA7D9}, /* A7D8 */
4014 {0xA7DA,0xA7DA,0xA7DA}, {0xA7DB,0xA7DB,0xA7DB}, /* A7DA */
4015 {0xA7DC,0xA7DC,0xA7DC}, {0xA7DD,0xA7DD,0xA7DD}, /* A7DC */
4016 {0xA7DE,0xA7DE,0xA7DE}, {0xA7DF,0xA7DF,0xA7DF}, /* A7DE */
4017 {0xA7E0,0xA7E0,0xA7E0}, {0xA7E1,0xA7E1,0xA7E1}, /* A7E0 */
4018 {0xA7E2,0xA7E2,0xA7E2}, {0xA7E3,0xA7E3,0xA7E3}, /* A7E2 */
4019 {0xA7E4,0xA7E4,0xA7E4}, {0xA7E5,0xA7E5,0xA7E5}, /* A7E4 */
4020 {0xA7E6,0xA7E6,0xA7E6}, {0xA7E7,0xA7E7,0xA7E7}, /* A7E6 */
4021 {0xA7E8,0xA7E8,0xA7E8}, {0xA7E9,0xA7E9,0xA7E9}, /* A7E8 */
4022 {0xA7EA,0xA7EA,0xA7EA}, {0xA7EB,0xA7EB,0xA7EB}, /* A7EA */
4023 {0xA7EC,0xA7EC,0xA7EC}, {0xA7ED,0xA7ED,0xA7ED}, /* A7EC */
4024 {0xA7EE,0xA7EE,0xA7EE}, {0xA7EF,0xA7EF,0xA7EF}, /* A7EE */
4025 {0xA7F0,0xA7F0,0xA7F0}, {0xA7F1,0xA7F1,0xA7F1}, /* A7F0 */
4026 {0xA7F2,0xA7F2,0xA7F2}, {0xA7F3,0xA7F3,0xA7F3}, /* A7F2 */
4027 {0xA7F4,0xA7F4,0xA7F4}, {0xA7F5,0xA7F5,0xA7F5}, /* A7F4 */
4028 {0xA7F6,0xA7F6,0xA7F6}, {0xA7F7,0xA7F7,0xA7F7}, /* A7F6 */
4029 {0xA7F8,0xA7F8,0xA7F8}, {0xA7F9,0xA7F9,0xA7F9}, /* A7F8 */
4030 {0xA7FA,0xA7FA,0xA7FA}, {0xA7FB,0xA7FB,0xA7FB}, /* A7FA */
4031 {0xA7FC,0xA7FC,0xA7FC}, {0xA7FD,0xA7FD,0xA7FD}, /* A7FC */
4032 {0xA7FE,0xA7FE,0xA7FE}, {0xA7FF,0xA7FF,0xA7FF} /* A7FE */
4033 };
4034
4035 static const MY_UNICASE_CHARACTER u520pFF[]={
4036 {0xFF00,0xFF00,0xFF00}, {0xFF01,0xFF01,0xFF01}, /* FF00 */
4037 {0xFF02,0xFF02,0xFF02}, {0xFF03,0xFF03,0xFF03}, /* FF02 */
4038 {0xFF04,0xFF04,0xFF04}, {0xFF05,0xFF05,0xFF05}, /* FF04 */
4039 {0xFF06,0xFF06,0xFF06}, {0xFF07,0xFF07,0xFF07}, /* FF06 */
4040 {0xFF08,0xFF08,0xFF08}, {0xFF09,0xFF09,0xFF09}, /* FF08 */
4041 {0xFF0A,0xFF0A,0xFF0A}, {0xFF0B,0xFF0B,0xFF0B}, /* FF0A */
4042 {0xFF0C,0xFF0C,0xFF0C}, {0xFF0D,0xFF0D,0xFF0D}, /* FF0C */
4043 {0xFF0E,0xFF0E,0xFF0E}, {0xFF0F,0xFF0F,0xFF0F}, /* FF0E */
4044 {0xFF10,0xFF10,0xFF10}, {0xFF11,0xFF11,0xFF11}, /* FF10 */
4045 {0xFF12,0xFF12,0xFF12}, {0xFF13,0xFF13,0xFF13}, /* FF12 */
4046 {0xFF14,0xFF14,0xFF14}, {0xFF15,0xFF15,0xFF15}, /* FF14 */
4047 {0xFF16,0xFF16,0xFF16}, {0xFF17,0xFF17,0xFF17}, /* FF16 */
4048 {0xFF18,0xFF18,0xFF18}, {0xFF19,0xFF19,0xFF19}, /* FF18 */
4049 {0xFF1A,0xFF1A,0xFF1A}, {0xFF1B,0xFF1B,0xFF1B}, /* FF1A */
4050 {0xFF1C,0xFF1C,0xFF1C}, {0xFF1D,0xFF1D,0xFF1D}, /* FF1C */
4051 {0xFF1E,0xFF1E,0xFF1E}, {0xFF1F,0xFF1F,0xFF1F}, /* FF1E */
4052 {0xFF20,0xFF20,0xFF20}, {0xFF21,0xFF41,0xFF21}, /* FF20 */
4053 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23}, /* FF22 */
4054 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25}, /* FF24 */
4055 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27}, /* FF26 */
4056 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29}, /* FF28 */
4057 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B}, /* FF2A */
4058 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D}, /* FF2C */
4059 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F}, /* FF2E */
4060 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31}, /* FF30 */
4061 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33}, /* FF32 */
4062 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35}, /* FF34 */
4063 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37}, /* FF36 */
4064 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39}, /* FF38 */
4065 {0xFF3A,0xFF5A,0xFF3A}, {0xFF3B,0xFF3B,0xFF3B}, /* FF3A */
4066 {0xFF3C,0xFF3C,0xFF3C}, {0xFF3D,0xFF3D,0xFF3D}, /* FF3C */
4067 {0xFF3E,0xFF3E,0xFF3E}, {0xFF3F,0xFF3F,0xFF3F}, /* FF3E */
4068 {0xFF40,0xFF40,0xFF40}, {0xFF21,0xFF41,0xFF21}, /* FF40 */
4069 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23}, /* FF42 */
4070 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25}, /* FF44 */
4071 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27}, /* FF46 */
4072 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29}, /* FF48 */
4073 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B}, /* FF4A */
4074 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D}, /* FF4C */
4075 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F}, /* FF4E */
4076 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31}, /* FF50 */
4077 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33}, /* FF52 */
4078 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35}, /* FF54 */
4079 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37}, /* FF56 */
4080 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39}, /* FF58 */
4081 {0xFF3A,0xFF5A,0xFF3A}, {0xFF5B,0xFF5B,0xFF5B}, /* FF5A */
4082 {0xFF5C,0xFF5C,0xFF5C}, {0xFF5D,0xFF5D,0xFF5D}, /* FF5C */
4083 {0xFF5E,0xFF5E,0xFF5E}, {0xFF5F,0xFF5F,0xFF5F}, /* FF5E */
4084 {0xFF60,0xFF60,0xFF60}, {0xFF61,0xFF61,0xFF61}, /* FF60 */
4085 {0xFF62,0xFF62,0xFF62}, {0xFF63,0xFF63,0xFF63}, /* FF62 */
4086 {0xFF64,0xFF64,0xFF64}, {0xFF65,0xFF65,0xFF65}, /* FF64 */
4087 {0xFF66,0xFF66,0xFF66}, {0xFF67,0xFF67,0xFF67}, /* FF66 */
4088 {0xFF68,0xFF68,0xFF68}, {0xFF69,0xFF69,0xFF69}, /* FF68 */
4089 {0xFF6A,0xFF6A,0xFF6A}, {0xFF6B,0xFF6B,0xFF6B}, /* FF6A */
4090 {0xFF6C,0xFF6C,0xFF6C}, {0xFF6D,0xFF6D,0xFF6D}, /* FF6C */
4091 {0xFF6E,0xFF6E,0xFF6E}, {0xFF6F,0xFF6F,0xFF6F}, /* FF6E */
4092 {0xFF70,0xFF70,0xFF70}, {0xFF71,0xFF71,0xFF71}, /* FF70 */
4093 {0xFF72,0xFF72,0xFF72}, {0xFF73,0xFF73,0xFF73}, /* FF72 */
4094 {0xFF74,0xFF74,0xFF74}, {0xFF75,0xFF75,0xFF75}, /* FF74 */
4095 {0xFF76,0xFF76,0xFF76}, {0xFF77,0xFF77,0xFF77}, /* FF76 */
4096 {0xFF78,0xFF78,0xFF78}, {0xFF79,0xFF79,0xFF79}, /* FF78 */
4097 {0xFF7A,0xFF7A,0xFF7A}, {0xFF7B,0xFF7B,0xFF7B}, /* FF7A */
4098 {0xFF7C,0xFF7C,0xFF7C}, {0xFF7D,0xFF7D,0xFF7D}, /* FF7C */
4099 {0xFF7E,0xFF7E,0xFF7E}, {0xFF7F,0xFF7F,0xFF7F}, /* FF7E */
4100 {0xFF80,0xFF80,0xFF80}, {0xFF81,0xFF81,0xFF81}, /* FF80 */
4101 {0xFF82,0xFF82,0xFF82}, {0xFF83,0xFF83,0xFF83}, /* FF82 */
4102 {0xFF84,0xFF84,0xFF84}, {0xFF85,0xFF85,0xFF85}, /* FF84 */
4103 {0xFF86,0xFF86,0xFF86}, {0xFF87,0xFF87,0xFF87}, /* FF86 */
4104 {0xFF88,0xFF88,0xFF88}, {0xFF89,0xFF89,0xFF89}, /* FF88 */
4105 {0xFF8A,0xFF8A,0xFF8A}, {0xFF8B,0xFF8B,0xFF8B}, /* FF8A */
4106 {0xFF8C,0xFF8C,0xFF8C}, {0xFF8D,0xFF8D,0xFF8D}, /* FF8C */
4107 {0xFF8E,0xFF8E,0xFF8E}, {0xFF8F,0xFF8F,0xFF8F}, /* FF8E */
4108 {0xFF90,0xFF90,0xFF90}, {0xFF91,0xFF91,0xFF91}, /* FF90 */
4109 {0xFF92,0xFF92,0xFF92}, {0xFF93,0xFF93,0xFF93}, /* FF92 */
4110 {0xFF94,0xFF94,0xFF94}, {0xFF95,0xFF95,0xFF95}, /* FF94 */
4111 {0xFF96,0xFF96,0xFF96}, {0xFF97,0xFF97,0xFF97}, /* FF96 */
4112 {0xFF98,0xFF98,0xFF98}, {0xFF99,0xFF99,0xFF99}, /* FF98 */
4113 {0xFF9A,0xFF9A,0xFF9A}, {0xFF9B,0xFF9B,0xFF9B}, /* FF9A */
4114 {0xFF9C,0xFF9C,0xFF9C}, {0xFF9D,0xFF9D,0xFF9D}, /* FF9C */
4115 {0xFF9E,0xFF9E,0xFF9E}, {0xFF9F,0xFF9F,0xFF9F}, /* FF9E */
4116 {0xFFA0,0xFFA0,0xFFA0}, {0xFFA1,0xFFA1,0xFFA1}, /* FFA0 */
4117 {0xFFA2,0xFFA2,0xFFA2}, {0xFFA3,0xFFA3,0xFFA3}, /* FFA2 */
4118 {0xFFA4,0xFFA4,0xFFA4}, {0xFFA5,0xFFA5,0xFFA5}, /* FFA4 */
4119 {0xFFA6,0xFFA6,0xFFA6}, {0xFFA7,0xFFA7,0xFFA7}, /* FFA6 */
4120 {0xFFA8,0xFFA8,0xFFA8}, {0xFFA9,0xFFA9,0xFFA9}, /* FFA8 */
4121 {0xFFAA,0xFFAA,0xFFAA}, {0xFFAB,0xFFAB,0xFFAB}, /* FFAA */
4122 {0xFFAC,0xFFAC,0xFFAC}, {0xFFAD,0xFFAD,0xFFAD}, /* FFAC */
4123 {0xFFAE,0xFFAE,0xFFAE}, {0xFFAF,0xFFAF,0xFFAF}, /* FFAE */
4124 {0xFFB0,0xFFB0,0xFFB0}, {0xFFB1,0xFFB1,0xFFB1}, /* FFB0 */
4125 {0xFFB2,0xFFB2,0xFFB2}, {0xFFB3,0xFFB3,0xFFB3}, /* FFB2 */
4126 {0xFFB4,0xFFB4,0xFFB4}, {0xFFB5,0xFFB5,0xFFB5}, /* FFB4 */
4127 {0xFFB6,0xFFB6,0xFFB6}, {0xFFB7,0xFFB7,0xFFB7}, /* FFB6 */
4128 {0xFFB8,0xFFB8,0xFFB8}, {0xFFB9,0xFFB9,0xFFB9}, /* FFB8 */
4129 {0xFFBA,0xFFBA,0xFFBA}, {0xFFBB,0xFFBB,0xFFBB}, /* FFBA */
4130 {0xFFBC,0xFFBC,0xFFBC}, {0xFFBD,0xFFBD,0xFFBD}, /* FFBC */
4131 {0xFFBE,0xFFBE,0xFFBE}, {0xFFBF,0xFFBF,0xFFBF}, /* FFBE */
4132 {0xFFC0,0xFFC0,0xFFC0}, {0xFFC1,0xFFC1,0xFFC1}, /* FFC0 */
4133 {0xFFC2,0xFFC2,0xFFC2}, {0xFFC3,0xFFC3,0xFFC3}, /* FFC2 */
4134 {0xFFC4,0xFFC4,0xFFC4}, {0xFFC5,0xFFC5,0xFFC5}, /* FFC4 */
4135 {0xFFC6,0xFFC6,0xFFC6}, {0xFFC7,0xFFC7,0xFFC7}, /* FFC6 */
4136 {0xFFC8,0xFFC8,0xFFC8}, {0xFFC9,0xFFC9,0xFFC9}, /* FFC8 */
4137 {0xFFCA,0xFFCA,0xFFCA}, {0xFFCB,0xFFCB,0xFFCB}, /* FFCA */
4138 {0xFFCC,0xFFCC,0xFFCC}, {0xFFCD,0xFFCD,0xFFCD}, /* FFCC */
4139 {0xFFCE,0xFFCE,0xFFCE}, {0xFFCF,0xFFCF,0xFFCF}, /* FFCE */
4140 {0xFFD0,0xFFD0,0xFFD0}, {0xFFD1,0xFFD1,0xFFD1}, /* FFD0 */
4141 {0xFFD2,0xFFD2,0xFFD2}, {0xFFD3,0xFFD3,0xFFD3}, /* FFD2 */
4142 {0xFFD4,0xFFD4,0xFFD4}, {0xFFD5,0xFFD5,0xFFD5}, /* FFD4 */
4143 {0xFFD6,0xFFD6,0xFFD6}, {0xFFD7,0xFFD7,0xFFD7}, /* FFD6 */
4144 {0xFFD8,0xFFD8,0xFFD8}, {0xFFD9,0xFFD9,0xFFD9}, /* FFD8 */
4145 {0xFFDA,0xFFDA,0xFFDA}, {0xFFDB,0xFFDB,0xFFDB}, /* FFDA */
4146 {0xFFDC,0xFFDC,0xFFDC}, {0xFFDD,0xFFDD,0xFFDD}, /* FFDC */
4147 {0xFFDE,0xFFDE,0xFFDE}, {0xFFDF,0xFFDF,0xFFDF}, /* FFDE */
4148 {0xFFE0,0xFFE0,0xFFE0}, {0xFFE1,0xFFE1,0xFFE1}, /* FFE0 */
4149 {0xFFE2,0xFFE2,0xFFE2}, {0xFFE3,0xFFE3,0xFFE3}, /* FFE2 */
4150 {0xFFE4,0xFFE4,0xFFE4}, {0xFFE5,0xFFE5,0xFFE5}, /* FFE4 */
4151 {0xFFE6,0xFFE6,0xFFE6}, {0xFFE7,0xFFE7,0xFFE7}, /* FFE6 */
4152 {0xFFE8,0xFFE8,0xFFE8}, {0xFFE9,0xFFE9,0xFFE9}, /* FFE8 */
4153 {0xFFEA,0xFFEA,0xFFEA}, {0xFFEB,0xFFEB,0xFFEB}, /* FFEA */
4154 {0xFFEC,0xFFEC,0xFFEC}, {0xFFED,0xFFED,0xFFED}, /* FFEC */
4155 {0xFFEE,0xFFEE,0xFFEE}, {0xFFEF,0xFFEF,0xFFEF}, /* FFEE */
4156 {0xFFF0,0xFFF0,0xFFF0}, {0xFFF1,0xFFF1,0xFFF1}, /* FFF0 */
4157 {0xFFF2,0xFFF2,0xFFF2}, {0xFFF3,0xFFF3,0xFFF3}, /* FFF2 */
4158 {0xFFF4,0xFFF4,0xFFF4}, {0xFFF5,0xFFF5,0xFFF5}, /* FFF4 */
4159 {0xFFF6,0xFFF6,0xFFF6}, {0xFFF7,0xFFF7,0xFFF7}, /* FFF6 */
4160 {0xFFF8,0xFFF8,0xFFF8}, {0xFFF9,0xFFF9,0xFFF9}, /* FFF8 */
4161 {0xFFFA,0xFFFA,0xFFFA}, {0xFFFB,0xFFFB,0xFFFB}, /* FFFA */
4162 {0xFFFC,0xFFFC,0xFFFC}, {0xFFFD,0xFFFD,0xFFFD}, /* FFFC */
4163 {0xFFFE,0xFFFE,0xFFFE}, {0xFFFF,0xFFFF,0xFFFF} /* FFFE */
4164 };
4165
4166 static const MY_UNICASE_CHARACTER u520p104[]={
4167 {0x10400,0x10428,0x10400}, {0x10401,0x10429,0x10401}, /* 10400 */
4168 {0x10402,0x1042A,0x10402}, {0x10403,0x1042B,0x10403}, /* 10402 */
4169 {0x10404,0x1042C,0x10404}, {0x10405,0x1042D,0x10405}, /* 10404 */
4170 {0x10406,0x1042E,0x10406}, {0x10407,0x1042F,0x10407}, /* 10406 */
4171 {0x10408,0x10430,0x10408}, {0x10409,0x10431,0x10409}, /* 10408 */
4172 {0x1040A,0x10432,0x1040A}, {0x1040B,0x10433,0x1040B}, /* 1040A */
4173 {0x1040C,0x10434,0x1040C}, {0x1040D,0x10435,0x1040D}, /* 1040C */
4174 {0x1040E,0x10436,0x1040E}, {0x1040F,0x10437,0x1040F}, /* 1040E */
4175 {0x10410,0x10438,0x10410}, {0x10411,0x10439,0x10411}, /* 10410 */
4176 {0x10412,0x1043A,0x10412}, {0x10413,0x1043B,0x10413}, /* 10412 */
4177 {0x10414,0x1043C,0x10414}, {0x10415,0x1043D,0x10415}, /* 10414 */
4178 {0x10416,0x1043E,0x10416}, {0x10417,0x1043F,0x10417}, /* 10416 */
4179 {0x10418,0x10440,0x10418}, {0x10419,0x10441,0x10419}, /* 10418 */
4180 {0x1041A,0x10442,0x1041A}, {0x1041B,0x10443,0x1041B}, /* 1041A */
4181 {0x1041C,0x10444,0x1041C}, {0x1041D,0x10445,0x1041D}, /* 1041C */
4182 {0x1041E,0x10446,0x1041E}, {0x1041F,0x10447,0x1041F}, /* 1041E */
4183 {0x10420,0x10448,0x10420}, {0x10421,0x10449,0x10421}, /* 10420 */
4184 {0x10422,0x1044A,0x10422}, {0x10423,0x1044B,0x10423}, /* 10422 */
4185 {0x10424,0x1044C,0x10424}, {0x10425,0x1044D,0x10425}, /* 10424 */
4186 {0x10426,0x1044E,0x10426}, {0x10427,0x1044F,0x10427}, /* 10426 */
4187 {0x10400,0x10428,0x10400}, {0x10401,0x10429,0x10401}, /* 10428 */
4188 {0x10402,0x1042A,0x10402}, {0x10403,0x1042B,0x10403}, /* 1042A */
4189 {0x10404,0x1042C,0x10404}, {0x10405,0x1042D,0x10405}, /* 1042C */
4190 {0x10406,0x1042E,0x10406}, {0x10407,0x1042F,0x10407}, /* 1042E */
4191 {0x10408,0x10430,0x10408}, {0x10409,0x10431,0x10409}, /* 10430 */
4192 {0x1040A,0x10432,0x1040A}, {0x1040B,0x10433,0x1040B}, /* 10432 */
4193 {0x1040C,0x10434,0x1040C}, {0x1040D,0x10435,0x1040D}, /* 10434 */
4194 {0x1040E,0x10436,0x1040E}, {0x1040F,0x10437,0x1040F}, /* 10436 */
4195 {0x10410,0x10438,0x10410}, {0x10411,0x10439,0x10411}, /* 10438 */
4196 {0x10412,0x1043A,0x10412}, {0x10413,0x1043B,0x10413}, /* 1043A */
4197 {0x10414,0x1043C,0x10414}, {0x10415,0x1043D,0x10415}, /* 1043C */
4198 {0x10416,0x1043E,0x10416}, {0x10417,0x1043F,0x10417}, /* 1043E */
4199 {0x10418,0x10440,0x10418}, {0x10419,0x10441,0x10419}, /* 10440 */
4200 {0x1041A,0x10442,0x1041A}, {0x1041B,0x10443,0x1041B}, /* 10442 */
4201 {0x1041C,0x10444,0x1041C}, {0x1041D,0x10445,0x1041D}, /* 10444 */
4202 {0x1041E,0x10446,0x1041E}, {0x1041F,0x10447,0x1041F}, /* 10446 */
4203 {0x10420,0x10448,0x10420}, {0x10421,0x10449,0x10421}, /* 10448 */
4204 {0x10422,0x1044A,0x10422}, {0x10423,0x1044B,0x10423}, /* 1044A */
4205 {0x10424,0x1044C,0x10424}, {0x10425,0x1044D,0x10425}, /* 1044C */
4206 {0x10426,0x1044E,0x10426}, {0x10427,0x1044F,0x10427}, /* 1044E */
4207 {0x10450,0x10450,0x10450}, {0x10451,0x10451,0x10451}, /* 10450 */
4208 {0x10452,0x10452,0x10452}, {0x10453,0x10453,0x10453}, /* 10452 */
4209 {0x10454,0x10454,0x10454}, {0x10455,0x10455,0x10455}, /* 10454 */
4210 {0x10456,0x10456,0x10456}, {0x10457,0x10457,0x10457}, /* 10456 */
4211 {0x10458,0x10458,0x10458}, {0x10459,0x10459,0x10459}, /* 10458 */
4212 {0x1045A,0x1045A,0x1045A}, {0x1045B,0x1045B,0x1045B}, /* 1045A */
4213 {0x1045C,0x1045C,0x1045C}, {0x1045D,0x1045D,0x1045D}, /* 1045C */
4214 {0x1045E,0x1045E,0x1045E}, {0x1045F,0x1045F,0x1045F}, /* 1045E */
4215 {0x10460,0x10460,0x10460}, {0x10461,0x10461,0x10461}, /* 10460 */
4216 {0x10462,0x10462,0x10462}, {0x10463,0x10463,0x10463}, /* 10462 */
4217 {0x10464,0x10464,0x10464}, {0x10465,0x10465,0x10465}, /* 10464 */
4218 {0x10466,0x10466,0x10466}, {0x10467,0x10467,0x10467}, /* 10466 */
4219 {0x10468,0x10468,0x10468}, {0x10469,0x10469,0x10469}, /* 10468 */
4220 {0x1046A,0x1046A,0x1046A}, {0x1046B,0x1046B,0x1046B}, /* 1046A */
4221 {0x1046C,0x1046C,0x1046C}, {0x1046D,0x1046D,0x1046D}, /* 1046C */
4222 {0x1046E,0x1046E,0x1046E}, {0x1046F,0x1046F,0x1046F}, /* 1046E */
4223 {0x10470,0x10470,0x10470}, {0x10471,0x10471,0x10471}, /* 10470 */
4224 {0x10472,0x10472,0x10472}, {0x10473,0x10473,0x10473}, /* 10472 */
4225 {0x10474,0x10474,0x10474}, {0x10475,0x10475,0x10475}, /* 10474 */
4226 {0x10476,0x10476,0x10476}, {0x10477,0x10477,0x10477}, /* 10476 */
4227 {0x10478,0x10478,0x10478}, {0x10479,0x10479,0x10479}, /* 10478 */
4228 {0x1047A,0x1047A,0x1047A}, {0x1047B,0x1047B,0x1047B}, /* 1047A */
4229 {0x1047C,0x1047C,0x1047C}, {0x1047D,0x1047D,0x1047D}, /* 1047C */
4230 {0x1047E,0x1047E,0x1047E}, {0x1047F,0x1047F,0x1047F}, /* 1047E */
4231 {0x10480,0x10480,0x10480}, {0x10481,0x10481,0x10481}, /* 10480 */
4232 {0x10482,0x10482,0x10482}, {0x10483,0x10483,0x10483}, /* 10482 */
4233 {0x10484,0x10484,0x10484}, {0x10485,0x10485,0x10485}, /* 10484 */
4234 {0x10486,0x10486,0x10486}, {0x10487,0x10487,0x10487}, /* 10486 */
4235 {0x10488,0x10488,0x10488}, {0x10489,0x10489,0x10489}, /* 10488 */
4236 {0x1048A,0x1048A,0x1048A}, {0x1048B,0x1048B,0x1048B}, /* 1048A */
4237 {0x1048C,0x1048C,0x1048C}, {0x1048D,0x1048D,0x1048D}, /* 1048C */
4238 {0x1048E,0x1048E,0x1048E}, {0x1048F,0x1048F,0x1048F}, /* 1048E */
4239 {0x10490,0x10490,0x10490}, {0x10491,0x10491,0x10491}, /* 10490 */
4240 {0x10492,0x10492,0x10492}, {0x10493,0x10493,0x10493}, /* 10492 */
4241 {0x10494,0x10494,0x10494}, {0x10495,0x10495,0x10495}, /* 10494 */
4242 {0x10496,0x10496,0x10496}, {0x10497,0x10497,0x10497}, /* 10496 */
4243 {0x10498,0x10498,0x10498}, {0x10499,0x10499,0x10499}, /* 10498 */
4244 {0x1049A,0x1049A,0x1049A}, {0x1049B,0x1049B,0x1049B}, /* 1049A */
4245 {0x1049C,0x1049C,0x1049C}, {0x1049D,0x1049D,0x1049D}, /* 1049C */
4246 {0x1049E,0x1049E,0x1049E}, {0x1049F,0x1049F,0x1049F}, /* 1049E */
4247 {0x104A0,0x104A0,0x104A0}, {0x104A1,0x104A1,0x104A1}, /* 104A0 */
4248 {0x104A2,0x104A2,0x104A2}, {0x104A3,0x104A3,0x104A3}, /* 104A2 */
4249 {0x104A4,0x104A4,0x104A4}, {0x104A5,0x104A5,0x104A5}, /* 104A4 */
4250 {0x104A6,0x104A6,0x104A6}, {0x104A7,0x104A7,0x104A7}, /* 104A6 */
4251 {0x104A8,0x104A8,0x104A8}, {0x104A9,0x104A9,0x104A9}, /* 104A8 */
4252 {0x104AA,0x104AA,0x104AA}, {0x104AB,0x104AB,0x104AB}, /* 104AA */
4253 {0x104AC,0x104AC,0x104AC}, {0x104AD,0x104AD,0x104AD}, /* 104AC */
4254 {0x104AE,0x104AE,0x104AE}, {0x104AF,0x104AF,0x104AF}, /* 104AE */
4255 {0x104B0,0x104B0,0x104B0}, {0x104B1,0x104B1,0x104B1}, /* 104B0 */
4256 {0x104B2,0x104B2,0x104B2}, {0x104B3,0x104B3,0x104B3}, /* 104B2 */
4257 {0x104B4,0x104B4,0x104B4}, {0x104B5,0x104B5,0x104B5}, /* 104B4 */
4258 {0x104B6,0x104B6,0x104B6}, {0x104B7,0x104B7,0x104B7}, /* 104B6 */
4259 {0x104B8,0x104B8,0x104B8}, {0x104B9,0x104B9,0x104B9}, /* 104B8 */
4260 {0x104BA,0x104BA,0x104BA}, {0x104BB,0x104BB,0x104BB}, /* 104BA */
4261 {0x104BC,0x104BC,0x104BC}, {0x104BD,0x104BD,0x104BD}, /* 104BC */
4262 {0x104BE,0x104BE,0x104BE}, {0x104BF,0x104BF,0x104BF}, /* 104BE */
4263 {0x104C0,0x104C0,0x104C0}, {0x104C1,0x104C1,0x104C1}, /* 104C0 */
4264 {0x104C2,0x104C2,0x104C2}, {0x104C3,0x104C3,0x104C3}, /* 104C2 */
4265 {0x104C4,0x104C4,0x104C4}, {0x104C5,0x104C5,0x104C5}, /* 104C4 */
4266 {0x104C6,0x104C6,0x104C6}, {0x104C7,0x104C7,0x104C7}, /* 104C6 */
4267 {0x104C8,0x104C8,0x104C8}, {0x104C9,0x104C9,0x104C9}, /* 104C8 */
4268 {0x104CA,0x104CA,0x104CA}, {0x104CB,0x104CB,0x104CB}, /* 104CA */
4269 {0x104CC,0x104CC,0x104CC}, {0x104CD,0x104CD,0x104CD}, /* 104CC */
4270 {0x104CE,0x104CE,0x104CE}, {0x104CF,0x104CF,0x104CF}, /* 104CE */
4271 {0x104D0,0x104D0,0x104D0}, {0x104D1,0x104D1,0x104D1}, /* 104D0 */
4272 {0x104D2,0x104D2,0x104D2}, {0x104D3,0x104D3,0x104D3}, /* 104D2 */
4273 {0x104D4,0x104D4,0x104D4}, {0x104D5,0x104D5,0x104D5}, /* 104D4 */
4274 {0x104D6,0x104D6,0x104D6}, {0x104D7,0x104D7,0x104D7}, /* 104D6 */
4275 {0x104D8,0x104D8,0x104D8}, {0x104D9,0x104D9,0x104D9}, /* 104D8 */
4276 {0x104DA,0x104DA,0x104DA}, {0x104DB,0x104DB,0x104DB}, /* 104DA */
4277 {0x104DC,0x104DC,0x104DC}, {0x104DD,0x104DD,0x104DD}, /* 104DC */
4278 {0x104DE,0x104DE,0x104DE}, {0x104DF,0x104DF,0x104DF}, /* 104DE */
4279 {0x104E0,0x104E0,0x104E0}, {0x104E1,0x104E1,0x104E1}, /* 104E0 */
4280 {0x104E2,0x104E2,0x104E2}, {0x104E3,0x104E3,0x104E3}, /* 104E2 */
4281 {0x104E4,0x104E4,0x104E4}, {0x104E5,0x104E5,0x104E5}, /* 104E4 */
4282 {0x104E6,0x104E6,0x104E6}, {0x104E7,0x104E7,0x104E7}, /* 104E6 */
4283 {0x104E8,0x104E8,0x104E8}, {0x104E9,0x104E9,0x104E9}, /* 104E8 */
4284 {0x104EA,0x104EA,0x104EA}, {0x104EB,0x104EB,0x104EB}, /* 104EA */
4285 {0x104EC,0x104EC,0x104EC}, {0x104ED,0x104ED,0x104ED}, /* 104EC */
4286 {0x104EE,0x104EE,0x104EE}, {0x104EF,0x104EF,0x104EF}, /* 104EE */
4287 {0x104F0,0x104F0,0x104F0}, {0x104F1,0x104F1,0x104F1}, /* 104F0 */
4288 {0x104F2,0x104F2,0x104F2}, {0x104F3,0x104F3,0x104F3}, /* 104F2 */
4289 {0x104F4,0x104F4,0x104F4}, {0x104F5,0x104F5,0x104F5}, /* 104F4 */
4290 {0x104F6,0x104F6,0x104F6}, {0x104F7,0x104F7,0x104F7}, /* 104F6 */
4291 {0x104F8,0x104F8,0x104F8}, {0x104F9,0x104F9,0x104F9}, /* 104F8 */
4292 {0x104FA,0x104FA,0x104FA}, {0x104FB,0x104FB,0x104FB}, /* 104FA */
4293 {0x104FC,0x104FC,0x104FC}, {0x104FD,0x104FD,0x104FD}, /* 104FC */
4294 {0x104FE,0x104FE,0x104FE}, {0x104FF,0x104FF,0x104FF} /* 104FE */
4295 };
4296
4297
4298 const MY_UNICASE_CHARACTER *my_unicase_pages_unicode520[4352]=
4299 {
4300 u520p00, u520p01, u520p02, u520p03, u520p04, u520p05, NULL, NULL,
4301 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4302 u520p10, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4303 NULL, NULL, NULL, NULL, NULL, u520p1D, u520p1E, u520p1F,
4304 NULL, u520p21, NULL, NULL, u520p24, NULL, NULL, NULL,
4305 NULL, NULL, NULL, NULL, u520p2C, u520p2D, NULL, NULL,
4306 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4307 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4308 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4309 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4310 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4311 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4312 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4313 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4314 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4315 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4316 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4317 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4318 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4319 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4320 NULL, NULL, NULL, NULL, NULL, NULL, u520pA6, u520pA7,
4321 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4322 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4323 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4324 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4325 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4326 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4327 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4328 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4329 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4330 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4331 NULL, NULL, NULL, NULL, NULL, NULL, NULL, u520pFF,
4332 NULL, NULL, NULL, NULL,u520p104, NULL, NULL, NULL,
4333 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4334 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4335 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4336 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4337 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4338 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4339 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4340 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4341 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4342 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4343 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4344 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4345 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4346 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4347 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4348 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4349 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4350 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4351 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4352 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4353 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4354 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4355 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4356 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4357 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4358 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4359 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4360 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4361 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4362 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4363 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4364 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4365 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4366 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4367 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4368 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4369 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4370 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4371 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4372 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4373 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4374 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4375 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4376 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4377 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4378 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4379 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4380 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4381 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4382 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4383 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4384 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4385 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4386 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4387 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4388 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4389 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4390 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4391 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4392 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4393 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4394 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4395 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4396 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4397 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4398 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4399 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4400 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4401 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4402 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4403 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4404 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4405 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4406 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4407 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4408 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4409 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4410 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4411 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4412 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4413 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4414 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4415 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4416 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4417 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4418 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4419 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4420 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4421 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4422 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4423 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4424 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4425 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4426 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4427 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4428 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4429 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4430 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4431 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4432 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4433 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4434 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4435 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4436 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4437 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4438 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4439 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4440 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4441 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4442 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4443 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4444 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4445 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4446 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4447 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4448 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4449 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4450 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4451 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4452 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4453 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4454 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4455 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4456 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4457 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4458 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4459 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4460 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4461 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4462 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4463 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4464 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4465 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4466 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4467 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4468 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4469 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4470 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4471 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4472 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4473 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4474 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4475 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4476 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4477 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4478 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4479 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4480 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4481 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4482 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4483 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4484 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4485 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4486 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4487 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4488 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4489 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4490 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4491 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4492 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4493 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4494 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4495 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4496 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4497 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4498 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4499 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4500 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4501 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4502 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4503 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4504 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4505 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4506 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4507 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4508 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4509 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4510 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4511 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4512 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4513 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4514 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4515 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4516 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4517 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4518 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4519 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4520 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4521 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4522 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4523 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4524 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4525 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4526 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4527 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4528 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4529 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4530 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4531 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4532 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4533 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4534 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4535 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4536 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4537 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4538 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4539 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4540 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4541 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4542 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4543 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4544 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4545 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4546 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4547 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4548 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4549 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4550 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4551 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4552 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4553 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4554 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4555 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4556 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4557 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4558 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4559 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4560 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4561 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4562 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4563 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4564 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4565 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4566 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4567 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4568 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4569 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4570 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4571 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4572 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4573 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4574 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4575 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4576 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4577 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4578 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4579 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4580 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4581 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4582 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4583 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4584 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4585 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4586 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4587 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4588 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4589 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4590 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4591 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4592 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4593 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4594 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4595 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4596 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4597 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4598 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4599 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4600 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4601 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4602 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4603 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4604 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4605 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4606 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4607 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4608 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4609 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4610 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4611 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4612 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4613 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4614 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4615 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4616 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4617 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4618 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4619 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4620 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4621 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4622 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4623 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4624 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4625 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4626 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4627 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4628 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4629 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4630 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4631 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4632 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4633 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4634 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4635 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4636 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4637 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4638 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4639 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4640 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4641 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4642 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4643 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4644 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4645 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4646 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4647 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4648 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4649 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4650 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4651 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4652 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4653 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4654 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4655 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4656 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4657 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4658 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4659 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4660 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4661 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4662 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4663 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4664 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4665 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4666 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4667 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4668 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4669 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4670 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4671 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4672 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4673 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4674 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4675 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4676 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4677 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4678 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4679 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4680 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4681 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4682 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4683 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4684 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4685 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4686 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4687 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4688 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4689 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4690 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4691 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4692 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4693 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4694 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4695 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4696 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4697 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4698 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4699 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4700 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4701 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4702 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4703 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4704 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4705 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4706 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4707 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4708 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4709 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4710 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4711 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4712 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4713 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4714 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4715 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4716 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4717 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4718 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4719 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4720 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4721 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4722 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4723 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4724 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4725 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4726 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4727 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4728 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4729 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4730 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4731 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4732 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4733 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4734 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4735 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4736 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4737 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4738 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4739 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4740 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4741 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4742 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4743 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4744 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4745 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4746 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4747 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4748 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4749 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4750 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4751 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4752 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4753 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4754 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4755 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4756 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4757 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4758 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4759 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4760 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4761 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4762 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4763 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4764 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4765 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4766 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4767 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4768 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4769 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4770 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4771 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4772 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4773 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4774 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4775 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4776 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4777 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4778 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4779 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4780 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4781 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4782 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4783 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4784 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4785 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4786 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4787 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4788 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4789 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4790 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4791 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4792 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4793 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4794 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4795 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4796 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4797 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4798 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4799 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4800 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4801 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4802 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4803 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4804 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4805 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4806 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4807 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4808 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4809 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4810 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4811 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4812 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4813 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4814 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4815 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4816 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4817 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4818 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4819 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4820 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4821 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4822 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4823 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4824 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4825 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4826 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4827 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4828 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4829 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4830 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4831 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4832 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4833 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4834 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4835 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4836 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4837 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4838 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4839 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4840 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4841 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4842 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4843 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4844 };
4845
4846
4847 MY_UNICASE_INFO my_unicase_unicode520=
4848 {
4849 0x10FFFF,
4850 my_unicase_pages_unicode520
4851 };
4852
4853
4854 static inline void
my_tosort_unicode(const MY_UNICASE_INFO * uni_plane,my_wc_t * wc,uint flags)4855 my_tosort_unicode(const MY_UNICASE_INFO *uni_plane, my_wc_t *wc, uint flags)
4856 {
4857 if (*wc <= uni_plane->maxchar)
4858 {
4859 const MY_UNICASE_CHARACTER *page;
4860 if ((page= uni_plane->page[*wc >> 8]))
4861 *wc= (flags & MY_CS_LOWER_SORT) ?
4862 page[*wc & 0xFF].tolower :
4863 page[*wc & 0xFF].sort;
4864 }
4865 else
4866 {
4867 *wc= MY_CS_REPLACEMENT_CHARACTER;
4868 }
4869 }
4870
4871
4872 /*
4873 ** Compare string against string with wildcard
4874 ** This function is used in UTF8 and UCS2
4875 **
4876 ** 0 if matched
4877 ** -1 if not matched with wildcard
4878 ** 1 if matched with wildcard
4879 */
4880
4881 static
4882 int
my_wildcmp_unicode_impl(const CHARSET_INFO * cs,const char * str,const char * str_end,const char * wildstr,const char * wildend,int escape,int w_one,int w_many,const MY_UNICASE_INFO * weights,int recurse_level)4883 my_wildcmp_unicode_impl(const CHARSET_INFO *cs,
4884 const char *str,const char *str_end,
4885 const char *wildstr,const char *wildend,
4886 int escape, int w_one, int w_many,
4887 const MY_UNICASE_INFO *weights, int recurse_level)
4888 {
4889 int result= -1; /* Not found, using wildcards */
4890 my_wc_t s_wc, w_wc;
4891 int scan;
4892 int (*mb_wc)(const struct charset_info_st *, my_wc_t *,
4893 const uchar *, const uchar *);
4894 mb_wc= cs->cset->mb_wc;
4895
4896 if (my_string_stack_guard && my_string_stack_guard(recurse_level))
4897 return 1;
4898 while (wildstr != wildend)
4899 {
4900 while (1)
4901 {
4902 my_bool escaped= 0;
4903 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4904 (const uchar*)wildend)) <= 0)
4905 return 1;
4906
4907 if (w_wc == (my_wc_t) w_many)
4908 {
4909 result= 1; /* Found an anchor char */
4910 break;
4911 }
4912
4913 wildstr+= scan;
4914 if (w_wc == (my_wc_t) escape && wildstr < wildend)
4915 {
4916 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4917 (const uchar*)wildend)) <= 0)
4918 return 1;
4919 wildstr+= scan;
4920 escaped= 1;
4921 }
4922
4923 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
4924 (const uchar*)str_end)) <= 0)
4925 return 1;
4926 str+= scan;
4927
4928 if (!escaped && w_wc == (my_wc_t) w_one)
4929 {
4930 result= 1; /* Found an anchor char */
4931 }
4932 else
4933 {
4934 if (weights)
4935 {
4936 my_tosort_unicode(weights, &s_wc, cs->state);
4937 my_tosort_unicode(weights, &w_wc, cs->state);
4938 }
4939 if (s_wc != w_wc)
4940 return 1; /* No match */
4941 }
4942 if (wildstr == wildend)
4943 return (str != str_end); /* Match if both are at end */
4944 }
4945
4946
4947 if (w_wc == (my_wc_t) w_many)
4948 { /* Found w_many */
4949
4950 /* Remove any '%' and '_' from the wild search string */
4951 for ( ; wildstr != wildend ; )
4952 {
4953 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4954 (const uchar*)wildend)) <= 0)
4955 return 1;
4956
4957 if (w_wc == (my_wc_t)w_many)
4958 {
4959 wildstr+= scan;
4960 continue;
4961 }
4962
4963 if (w_wc == (my_wc_t)w_one)
4964 {
4965 wildstr+= scan;
4966 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
4967 (const uchar*)str_end)) <=0)
4968 return 1;
4969 str+= scan;
4970 continue;
4971 }
4972 break; /* Not a wild character */
4973 }
4974
4975 if (wildstr == wildend)
4976 return 0; /* Ok if w_many is last */
4977
4978 if (str == str_end)
4979 return -1;
4980
4981 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4982 (const uchar*)wildend)) <=0)
4983 return 1;
4984 wildstr+= scan;
4985
4986 if (w_wc == (my_wc_t)escape)
4987 {
4988 if (wildstr < wildend)
4989 {
4990 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4991 (const uchar*)wildend)) <=0)
4992 return 1;
4993 wildstr+= scan;
4994 }
4995 }
4996
4997 while (1)
4998 {
4999 /* Skip until the first character from wildstr is found */
5000 while (str != str_end)
5001 {
5002 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
5003 (const uchar*)str_end)) <=0)
5004 return 1;
5005 if (weights)
5006 {
5007 my_tosort_unicode(weights, &s_wc, cs->state);
5008 my_tosort_unicode(weights, &w_wc, cs->state);
5009 }
5010
5011 if (s_wc == w_wc)
5012 break;
5013 str+= scan;
5014 }
5015 if (str == str_end)
5016 return -1;
5017
5018 str+= scan;
5019 result= my_wildcmp_unicode_impl(cs, str, str_end, wildstr, wildend,
5020 escape, w_one, w_many,
5021 weights, recurse_level + 1);
5022 if (result <= 0)
5023 return result;
5024 }
5025 }
5026 }
5027 return (str != str_end ? 1 : 0);
5028 }
5029
5030 int
my_wildcmp_unicode(const CHARSET_INFO * cs,const char * str,const char * str_end,const char * wildstr,const char * wildend,int escape,int w_one,int w_many,const MY_UNICASE_INFO * weights)5031 my_wildcmp_unicode(const CHARSET_INFO *cs,
5032 const char *str,const char *str_end,
5033 const char *wildstr,const char *wildend,
5034 int escape, int w_one, int w_many,
5035 const MY_UNICASE_INFO *weights)
5036 {
5037 return my_wildcmp_unicode_impl(cs, str, str_end,
5038 wildstr, wildend,
5039 escape, w_one, w_many, weights, 1);
5040 }
5041
5042
5043 /**
5044 Pad buffer with weights for space characters.
5045
5046 @details
5047 This functions fills the buffer pointed by "str"
5048 with weights of space character. Not more than
5049 "nweights" weights are put. If at some iteration
5050 step only a half of weight can fit
5051 (which is possible if buffer length is an odd number)
5052 then a half of this weight is put - this gives
5053 a little bit better ORDER BY result for long strings.
5054
5055 @str Buffer
5056 @strend End of buffer
5057 @nweights Number of weights
5058
5059 @return Result length
5060 */
5061
5062 static size_t
my_strxfrm_pad_nweights_unicode(uchar * str,const uchar * const strend,size_t nweights)5063 my_strxfrm_pad_nweights_unicode(uchar *str,
5064 const uchar *const strend,
5065 size_t nweights)
5066 {
5067 const uchar *const str0 = str;
5068 const uchar *const weightend = str + (nweights*2);
5069 const uchar *const end = (weightend < strend) ? weightend : strend;
5070 assert(str && str <= strend);
5071
5072 while (str < end-3)
5073 {
5074 *str++= 0x00;
5075 *str++= 0x20;
5076 *str++= 0x00;
5077 *str++= 0x20;
5078 }
5079 if (str < end-1)
5080 {
5081 *str++= 0x00;
5082 *str++= 0x20;
5083 }
5084 if (str < end)
5085 {
5086 *str++= 0x00;
5087 }
5088 return str - str0;
5089 }
5090
5091
5092 /**
5093 Pad buffer with weights for space characters.
5094
5095 @details
5096 This functions fills the buffer pointed by "str"
5097 with weights of space character. Putting half of weight
5098 (when buffer length is an odd number) is OK.
5099
5100 @str Buffer
5101 @strend End of buffer
5102
5103 @return Result length
5104 */
5105
5106 static size_t
my_strxfrm_pad_unicode(uchar * str,const uchar * const strend)5107 my_strxfrm_pad_unicode(uchar *str, const uchar *const strend)
5108 {
5109 const uchar *const str0 = str;
5110 assert(str && str <= strend);
5111
5112 while (str < strend-3)
5113 {
5114 *str++= 0x00;
5115 *str++= 0x20;
5116 *str++= 0x00;
5117 *str++= 0x20;
5118 }
5119 if (str < strend-1)
5120 {
5121 *str++= 0x00;
5122 *str++= 0x20;
5123 }
5124 if (str < strend)
5125 {
5126 *str++= 0x00;
5127 }
5128 return str - str0;
5129 }
5130
5131
5132 /*
5133 Store sorting weights using 2 bytes per character.
5134
5135 This function is shared between
5136 - utf8mb3_general_ci, utf8_bin, ucs2_general_ci, ucs2_bin
5137 which support BMP only (U+0000..U+FFFF).
5138 - utf8mb4_general_ci, utf16_general_ci, utf32_general_ci,
5139 which map all supplementary characters to weight 0xFFFD.
5140 */
5141 size_t
my_strnxfrm_unicode(const CHARSET_INFO * cs,uchar * dst,size_t dstlen,uint nweights,const uchar * src,size_t srclen,uint flags)5142 my_strnxfrm_unicode(const CHARSET_INFO *cs,
5143 uchar *dst, size_t dstlen, uint nweights,
5144 const uchar *src, size_t srclen, uint flags)
5145 {
5146 my_wc_t wc= 0;
5147 int res;
5148 uchar *const dst0= dst;
5149 const uchar *const de= dst + dstlen;
5150 const uchar *const se= src + srclen;
5151 const MY_UNICASE_INFO *uni_plane= (cs->state & MY_CS_BINSORT) ?
5152 NULL : cs->caseinfo;
5153 assert(src || srclen == 0);
5154
5155 for (; dst < de && nweights; nweights--)
5156 {
5157 if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0)
5158 break;
5159 src+= res;
5160
5161 if (uni_plane)
5162 my_tosort_unicode(uni_plane, &wc, cs->state);
5163
5164 *dst++= (uchar) (wc >> 8);
5165 if (dst < de)
5166 *dst++= (uchar) (wc & 0xFF);
5167 }
5168
5169 if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
5170 dst+= my_strxfrm_pad_nweights_unicode(dst, de, nweights);
5171
5172 my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
5173
5174 if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de)
5175 dst+= my_strxfrm_pad_unicode(dst, de);
5176 return dst - dst0;
5177 }
5178
5179
5180 /*
5181 Store sorting weights using 3 bytes per character.
5182 This function is shared between utf8mb4_bin, utf16_bin, utf32_bin.
5183 */
5184 size_t
my_strnxfrm_unicode_full_bin(const CHARSET_INFO * cs,uchar * dst,size_t dstlen,uint nweights,const uchar * src,size_t srclen,uint flags)5185 my_strnxfrm_unicode_full_bin(const CHARSET_INFO *cs,
5186 uchar *dst, size_t dstlen, uint nweights,
5187 const uchar *src, size_t srclen, uint flags)
5188 {
5189 my_wc_t wc= 0;
5190 uchar *const dst0= dst;
5191 const uchar *const de= dst + dstlen;
5192 const uchar *const se= src + srclen;
5193
5194 assert(src || srclen == 0);
5195 assert(cs->state & MY_CS_BINSORT);
5196
5197 for ( ; dst < de && nweights; nweights--)
5198 {
5199 int res;
5200 if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0)
5201 break;
5202 src+= res;
5203 *dst++= (uchar) (wc >> 16);
5204 if (dst < de)
5205 {
5206 *dst++= (uchar) ((wc >> 8) & 0xFF);
5207 if (dst < de)
5208 *dst++= (uchar) (wc & 0xFF);
5209 }
5210 }
5211
5212 if (flags & MY_STRXFRM_PAD_WITH_SPACE)
5213 {
5214 const uchar *const weightend = dst + (nweights*3);
5215 const uchar *const end = (weightend < de) ? weightend : de;
5216
5217 while (dst < end-2)
5218 {
5219 *dst++= 0x00;
5220 *dst++= 0x00;
5221 *dst++= 0x20;
5222 nweights--;
5223 }
5224 if (dst < de && nweights > 0)
5225 {
5226 *dst++= 0x00;
5227 if (dst < de)
5228 {
5229 *dst++= 0x00;
5230 if (dst < de)
5231 *dst++= 0x20;
5232 }
5233 }
5234 }
5235
5236 my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
5237
5238 if (flags & MY_STRXFRM_PAD_TO_MAXLEN)
5239 {
5240 while (dst < de-2)
5241 {
5242 *dst++= 0x00;
5243 *dst++= 0x00;
5244 *dst++= 0x20;
5245 }
5246 if (dst < de)
5247 {
5248 *dst++= 0x00;
5249 if (dst < de)
5250 {
5251 *dst++= 0x00;
5252 if (dst < de)
5253 *dst++= 0x20;
5254 }
5255 }
5256 }
5257 return dst - dst0;
5258 }
5259
5260
5261 size_t
my_strnxfrmlen_unicode_full_bin(const CHARSET_INFO * cs,size_t len)5262 my_strnxfrmlen_unicode_full_bin(const CHARSET_INFO *cs, size_t len)
5263 {
5264 return ((len + 3) / cs->mbmaxlen) * 3;
5265 }
5266
5267
5268 #ifdef HAVE_CHARSET_utf8
5269
5270 /*
5271 We consider bytes with code more than 127 as a letter.
5272 This garantees that word boundaries work fine with regular
5273 expressions. Note, there is no need to mark byte 255 as a
5274 letter, it is illegal byte in UTF8.
5275 */
5276 static const uchar ctype_utf8[] = {
5277 0,
5278 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
5279 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
5280 72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
5281 132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
5282 16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5283 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
5284 16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
5285 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
5286 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5287 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5288 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5289 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5290 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5291 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5292 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
5293 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
5294 };
5295
5296 /* The below are taken from usa7 implementation */
5297
5298 static const uchar to_lower_utf8[] = {
5299 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
5300 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
5301 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
5302 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
5303 64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
5304 112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
5305 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
5306 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
5307 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
5308 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
5309 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
5310 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
5311 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
5312 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
5313 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
5314 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
5315 };
5316
5317 static const uchar to_upper_utf8[] = {
5318 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
5319 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
5320 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
5321 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
5322 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
5323 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
5324 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
5325 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
5326 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
5327 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
5328 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
5329 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
5330 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
5331 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
5332 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
5333 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
5334 };
5335
bincmp(const uchar * s,const uchar * se,const uchar * t,const uchar * te)5336 static inline int bincmp(const uchar *s, const uchar *se,
5337 const uchar *t, const uchar *te)
5338 {
5339 int slen= (int) (se-s), tlen= (int) (te-t);
5340 int len= MY_MIN(slen,tlen);
5341 int cmp= memcmp(s,t,len);
5342 return cmp ? cmp : slen-tlen;
5343 }
5344
5345
my_utf8_uni(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),my_wc_t * pwc,const uchar * s,const uchar * e)5346 static int my_utf8_uni(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
5347 my_wc_t * pwc, const uchar *s, const uchar *e)
5348 {
5349 uchar c;
5350
5351 if (s >= e)
5352 return MY_CS_TOOSMALL;
5353
5354 c= s[0];
5355 if (c < 0x80)
5356 {
5357 *pwc = c;
5358 return 1;
5359 }
5360 else if (c < 0xc2)
5361 return MY_CS_ILSEQ;
5362 else if (c < 0xe0)
5363 {
5364 if (s+2 > e) /* We need 2 characters */
5365 return MY_CS_TOOSMALL2;
5366
5367 if (!(IS_CONTINUATION_BYTE(s[1])))
5368 return MY_CS_ILSEQ;
5369
5370 *pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
5371 return 2;
5372 }
5373 else if (c < 0xf0)
5374 {
5375 if (s+3 > e) /* We need 3 characters */
5376 return MY_CS_TOOSMALL3;
5377
5378 if (!(IS_CONTINUATION_BYTE(s[1]) && IS_CONTINUATION_BYTE(s[2]) &&
5379 (c >= 0xe1 || s[1] >= 0xa0)))
5380 return MY_CS_ILSEQ;
5381
5382 *pwc = ((my_wc_t) (c & 0x0f) << 12) |
5383 ((my_wc_t) (s[1] ^ 0x80) << 6) |
5384 (my_wc_t) (s[2] ^ 0x80);
5385
5386 return 3;
5387 }
5388 return MY_CS_ILSEQ;
5389 }
5390
5391
5392 /*
5393 The same as above, but without range check
5394 for example, for a null-terminated string
5395 */
my_utf8_uni_no_range(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),my_wc_t * pwc,const uchar * s)5396 static int my_utf8_uni_no_range(const CHARSET_INFO *cs
5397 MY_ATTRIBUTE((unused)),
5398 my_wc_t * pwc, const uchar *s)
5399 {
5400 uchar c;
5401
5402 c= s[0];
5403 if (c < 0x80)
5404 {
5405 *pwc = c;
5406 return 1;
5407 }
5408
5409 if (c < 0xc2)
5410 return MY_CS_ILSEQ;
5411
5412 if (c < 0xe0)
5413 {
5414 if (!((s[1] ^ 0x80) < 0x40))
5415 return MY_CS_ILSEQ;
5416
5417 *pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
5418 return 2;
5419 }
5420
5421 if (c < 0xf0)
5422 {
5423 if (!(IS_CONTINUATION_BYTE(s[1]) &&
5424 IS_CONTINUATION_BYTE(s[2]) &&
5425 (c >= 0xe1 || s[1] >= 0xa0)))
5426 return MY_CS_ILSEQ;
5427
5428 *pwc= ((my_wc_t) (c & 0x0f) << 12) |
5429 ((my_wc_t) (s[1] ^ 0x80) << 6) |
5430 (my_wc_t) (s[2] ^ 0x80);
5431
5432 return 3;
5433 }
5434 return MY_CS_ILSEQ;
5435 }
5436
5437
my_uni_utf8(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),my_wc_t wc,uchar * r,uchar * e)5438 static int my_uni_utf8 (const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
5439 my_wc_t wc, uchar *r, uchar *e)
5440 {
5441 int count;
5442
5443 if (r >= e)
5444 return MY_CS_TOOSMALL;
5445
5446 if (wc < 0x80)
5447 count = 1;
5448 else if (wc < 0x800)
5449 count = 2;
5450 else if (wc < 0x10000)
5451 count = 3;
5452 else return MY_CS_ILUNI;
5453
5454 /*
5455 e is a character after the string r, not the last character of it.
5456 Because of it (r+count > e), not (r+count-1 >e )
5457 */
5458 if ( r+count > e )
5459 return MY_CS_TOOSMALLN(count);
5460
5461 switch (count) {
5462 case 3: r[2] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800; // Fall through
5463 case 2: r[1] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0; // Fall through
5464 case 1: r[0] = (uchar) wc;
5465 }
5466 return count;
5467 }
5468
5469
5470 /*
5471 The same as above, but without range check.
5472 */
my_uni_utf8_no_range(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),my_wc_t wc,uchar * r)5473 static int my_uni_utf8_no_range(const CHARSET_INFO *cs
5474 MY_ATTRIBUTE((unused)),
5475 my_wc_t wc, uchar *r)
5476 {
5477 int count;
5478
5479 if (wc < 0x80)
5480 count= 1;
5481 else if (wc < 0x800)
5482 count= 2;
5483 else if (wc < 0x10000)
5484 count= 3;
5485 else
5486 return MY_CS_ILUNI;
5487
5488 switch (count)
5489 {
5490 case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800; // Fall through
5491 case 2: r[1]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0; // Fall through
5492 case 1: r[0]= (uchar) wc;
5493 }
5494 return count;
5495 }
5496
5497
5498 static inline void
my_tolower_utf8mb3(const MY_UNICASE_INFO * uni_plane,my_wc_t * wc)5499 my_tolower_utf8mb3(const MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
5500 {
5501 const MY_UNICASE_CHARACTER *page;
5502 if ((page= uni_plane->page[(*wc >> 8) & 0xFF]))
5503 *wc= page[*wc & 0xFF].tolower;
5504 }
5505
5506
5507 static inline void
my_toupper_utf8mb3(const MY_UNICASE_INFO * uni_plane,my_wc_t * wc)5508 my_toupper_utf8mb3(const MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
5509 {
5510 const MY_UNICASE_CHARACTER *page;
5511 if ((page= uni_plane->page[(*wc >> 8) & 0xFF]))
5512 *wc= page[*wc & 0xFF].toupper;
5513 }
5514
5515
5516 static size_t
my_caseup_utf8(const CHARSET_INFO * cs,char * src,size_t srclen,char * dst,size_t dstlen)5517 my_caseup_utf8(const CHARSET_INFO *cs, char *src, size_t srclen,
5518 char *dst, size_t dstlen)
5519 {
5520 my_wc_t wc;
5521 int srcres, dstres;
5522 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
5523 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5524 assert(src != dst || cs->caseup_multiply == 1);
5525
5526 while ((src < srcend) &&
5527 (srcres= my_utf8_uni(cs, &wc, (uchar *) src, (uchar*) srcend)) > 0)
5528 {
5529 my_toupper_utf8mb3(uni_plane, &wc);
5530 if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
5531 break;
5532 src+= srcres;
5533 dst+= dstres;
5534 }
5535 return (size_t) (dst - dst0);
5536 }
5537
5538
my_hash_sort_utf8(const CHARSET_INFO * cs,const uchar * s,size_t slen,ulong * n1,ulong * n2)5539 static void my_hash_sort_utf8(const CHARSET_INFO *cs, const uchar *s,
5540 size_t slen, ulong *n1, ulong *n2)
5541 {
5542 my_wc_t wc;
5543 int res;
5544 const uchar *e=s+slen;
5545 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5546 ulong tmp1;
5547 ulong tmp2;
5548
5549 /*
5550 Remove end space. We have to do this to be able to compare
5551 'A ' and 'A' as identical
5552 */
5553 while (e > s && e[-1] == ' ')
5554 e--;
5555
5556 tmp1= *n1;
5557 tmp2= *n2;
5558
5559 while ((s < e) && (res=my_utf8_uni(cs,&wc, (uchar *)s, (uchar*)e))>0 )
5560 {
5561 my_tosort_unicode(uni_plane, &wc, cs->state);
5562 tmp1^= (((tmp1 & 63) + tmp2) * (wc & 0xFF)) + (tmp1 << 8);
5563 tmp2+=3;
5564 tmp1^= (((tmp1 & 63) + tmp2) * (wc >> 8)) + (tmp1 << 8);
5565 tmp2+=3;
5566 s+=res;
5567 }
5568
5569 *n1= tmp1;
5570 *n2= tmp2;
5571 }
5572
5573
my_caseup_str_utf8(const CHARSET_INFO * cs,char * src)5574 static size_t my_caseup_str_utf8(const CHARSET_INFO *cs, char *src)
5575 {
5576 my_wc_t wc;
5577 int srcres, dstres;
5578 char *dst= src, *dst0= src;
5579 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5580 assert(cs->caseup_multiply == 1);
5581
5582 while (*src &&
5583 (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
5584 {
5585 my_toupper_utf8mb3(uni_plane, &wc);
5586 if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
5587 break;
5588 src+= srcres;
5589 dst+= dstres;
5590 }
5591 *dst= '\0';
5592 return (size_t) (dst - dst0);
5593 }
5594
5595
my_casedn_utf8(const CHARSET_INFO * cs,char * src,size_t srclen,char * dst,size_t dstlen)5596 static size_t my_casedn_utf8(const CHARSET_INFO *cs, char *src, size_t srclen,
5597 char *dst, size_t dstlen)
5598 {
5599 my_wc_t wc;
5600 int srcres, dstres;
5601 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
5602 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5603 assert(src != dst || cs->casedn_multiply == 1);
5604
5605 while ((src < srcend) &&
5606 (srcres= my_utf8_uni(cs, &wc, (uchar*) src, (uchar*)srcend)) > 0)
5607 {
5608 my_tolower_utf8mb3(uni_plane, &wc);
5609 if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
5610 break;
5611 src+= srcres;
5612 dst+= dstres;
5613 }
5614 return (size_t) (dst - dst0);
5615 }
5616
5617
my_casedn_str_utf8(const CHARSET_INFO * cs,char * src)5618 static size_t my_casedn_str_utf8(const CHARSET_INFO *cs, char *src)
5619 {
5620 my_wc_t wc;
5621 int srcres, dstres;
5622 char *dst= src, *dst0= src;
5623 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5624 assert(cs->casedn_multiply == 1);
5625
5626 while (*src &&
5627 (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
5628 {
5629 my_tolower_utf8mb3(uni_plane, &wc);
5630 if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
5631 break;
5632 src+= srcres;
5633 dst+= dstres;
5634 }
5635
5636 /*
5637 In rare cases lower string can be shorter than
5638 the original string, for example:
5639
5640 "U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
5641 (which is 0xC4B0 in utf8, i.e. two bytes)
5642
5643 is converted into
5644
5645 "U+0069 LATIN SMALL LETTER I"
5646 (which is 0x69 in utf8, i.e. one byte)
5647
5648 So, we need to put '\0' terminator after converting.
5649 */
5650
5651 *dst= '\0';
5652 return (size_t) (dst - dst0);
5653 }
5654
5655
my_strnncoll_utf8(const CHARSET_INFO * cs,const uchar * s,size_t slen,const uchar * t,size_t tlen,my_bool t_is_prefix)5656 static int my_strnncoll_utf8(const CHARSET_INFO *cs,
5657 const uchar *s, size_t slen,
5658 const uchar *t, size_t tlen,
5659 my_bool t_is_prefix)
5660 {
5661 int s_res,t_res;
5662 my_wc_t s_wc= 0, t_wc= 0;
5663 const uchar *se=s+slen;
5664 const uchar *te=t+tlen;
5665 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5666
5667 while ( s < se && t < te )
5668 {
5669 s_res=my_utf8_uni(cs,&s_wc, s, se);
5670 t_res=my_utf8_uni(cs,&t_wc, t, te);
5671
5672 if ( s_res <= 0 || t_res <= 0 )
5673 {
5674 /* Incorrect string, compare byte by byte value */
5675 return bincmp(s, se, t, te);
5676 }
5677
5678 my_tosort_unicode(uni_plane, &s_wc, cs->state);
5679 my_tosort_unicode(uni_plane, &t_wc, cs->state);
5680
5681 if ( s_wc != t_wc )
5682 {
5683 return s_wc > t_wc ? 1 : -1;
5684 }
5685
5686 s+=s_res;
5687 t+=t_res;
5688 }
5689 return (int) (t_is_prefix ? t-te : ((se-s) - (te-t)));
5690 }
5691
5692
5693
5694 /*
5695 Compare strings, discarding end space
5696
5697 SYNOPSIS
5698 my_strnncollsp_utf8()
5699 cs character set handler
5700 a First string to compare
5701 a_length Length of 'a'
5702 b Second string to compare
5703 b_length Length of 'b'
5704 diff_if_only_endspace_difference
5705 Set to 1 if the strings should be regarded as different
5706 if they only difference in end space
5707
5708 IMPLEMENTATION
5709 If one string is shorter as the other, then we space extend the other
5710 so that the strings have equal length.
5711
5712 This will ensure that the following things hold:
5713
5714 "a" == "a "
5715 "a\0" < "a"
5716 "a\0" < "a "
5717
5718 RETURN
5719 < 0 a < b
5720 = 0 a == b
5721 > 0 a > b
5722 */
5723
my_strnncollsp_utf8(const CHARSET_INFO * cs,const uchar * s,size_t slen,const uchar * t,size_t tlen,my_bool diff_if_only_endspace_difference)5724 static int my_strnncollsp_utf8(const CHARSET_INFO *cs,
5725 const uchar *s, size_t slen,
5726 const uchar *t, size_t tlen,
5727 my_bool diff_if_only_endspace_difference)
5728 {
5729 int s_res, t_res, res;
5730 my_wc_t s_wc= 0, t_wc= 0;
5731 const uchar *se= s+slen, *te= t+tlen;
5732 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5733
5734 #ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
5735 diff_if_only_endspace_difference= 0;
5736 #endif
5737
5738 while ( s < se && t < te )
5739 {
5740 s_res=my_utf8_uni(cs,&s_wc, s, se);
5741 t_res=my_utf8_uni(cs,&t_wc, t, te);
5742
5743 if ( s_res <= 0 || t_res <= 0 )
5744 {
5745 /* Incorrect string, compare byte by byte value */
5746 return bincmp(s, se, t, te);
5747 }
5748
5749 my_tosort_unicode(uni_plane, &s_wc, cs->state);
5750 my_tosort_unicode(uni_plane, &t_wc, cs->state);
5751
5752 if ( s_wc != t_wc )
5753 {
5754 return s_wc > t_wc ? 1 : -1;
5755 }
5756
5757 s+=s_res;
5758 t+=t_res;
5759 }
5760
5761 slen= (size_t) (se-s);
5762 tlen= (size_t) (te-t);
5763 res= 0;
5764
5765 if (slen != tlen)
5766 {
5767 int swap= 1;
5768 if (diff_if_only_endspace_difference)
5769 res= 1; /* Assume 'a' is bigger */
5770 if (slen < tlen)
5771 {
5772 slen= tlen;
5773 s= t;
5774 se= te;
5775 swap= -1;
5776 res= -res;
5777 }
5778 /*
5779 This following loop uses the fact that in UTF-8
5780 all multibyte characters are greater than space,
5781 and all multibyte head characters are greater than
5782 space. It means if we meet a character greater
5783 than space, it always means that the longer string
5784 is greater. So we can reuse the same loop from the
5785 8bit version, without having to process full multibute
5786 sequences.
5787 */
5788 for ( ; s < se; s++)
5789 {
5790 if (*s != ' ')
5791 return (*s < ' ') ? -swap : swap;
5792 }
5793 }
5794 return res;
5795 }
5796
5797
5798 /*
5799 Compare 0-terminated UTF8 strings.
5800
5801 SYNOPSIS
5802 my_strcasecmp_utf8()
5803 cs character set handler
5804 s First 0-terminated string to compare
5805 t Second 0-terminated string to compare
5806
5807 IMPLEMENTATION
5808
5809 RETURN
5810 - negative number if s < t
5811 - positive number if s > t
5812 - 0 is the strings are equal
5813 */
5814
5815 static
my_strcasecmp_utf8(const CHARSET_INFO * cs,const char * s,const char * t)5816 int my_strcasecmp_utf8(const CHARSET_INFO *cs, const char *s, const char *t)
5817 {
5818 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5819 while (s[0] && t[0])
5820 {
5821 my_wc_t s_wc,t_wc;
5822
5823 if ((uchar) s[0] < 128)
5824 {
5825 /*
5826 s[0] is between 0 and 127.
5827 It represents a single byte character.
5828 Convert it into weight according to collation.
5829 */
5830 s_wc= plane00[(uchar) s[0]].tolower;
5831 s++;
5832 }
5833 else
5834 {
5835 int res;
5836
5837 /*
5838 Scan a multibyte character.
5839
5840 In the future it is worth to write a special version of my_utf8_uni()
5841 for 0-terminated strings which will not take in account length. Now
5842 we call the regular version of my_utf8_uni() with s+3 in the
5843 last argument. s+3 is enough to scan any multibyte sequence.
5844
5845 Calling the regular version of my_utf8_uni is safe for 0-terminated
5846 strings: we will never lose the end of the string:
5847 If we have 0 character in the middle of a multibyte sequence,
5848 then my_utf8_uni will always return a negative number, so the
5849 loop with finish.
5850 */
5851
5852 res= my_utf8_uni(cs,&s_wc, (const uchar*)s, (const uchar*) s + 3);
5853
5854 /*
5855 In the case of wrong multibyte sequence we will
5856 call strcmp() for byte-to-byte comparison.
5857 */
5858 if (res <= 0)
5859 return strcmp(s, t);
5860 s+= res;
5861
5862 /* Convert Unicode code into weight according to collation */
5863 my_tolower_utf8mb3(uni_plane, &s_wc);
5864 }
5865
5866
5867 /* Do the same for the second string */
5868
5869 if ((uchar) t[0] < 128)
5870 {
5871 /* Convert single byte character into weight */
5872 t_wc= plane00[(uchar) t[0]].tolower;
5873 t++;
5874 }
5875 else
5876 {
5877 int res=my_utf8_uni(cs,&t_wc, (const uchar*)t, (const uchar*) t + 3);
5878 if (res <= 0)
5879 return strcmp(s, t);
5880 t+= res;
5881
5882 /* Convert code into weight */
5883 my_tolower_utf8mb3(uni_plane, &t_wc);
5884 }
5885
5886 /* Now we have two weights, let's compare them */
5887 if ( s_wc != t_wc )
5888 return ((int) s_wc) - ((int) t_wc);
5889 }
5890 return ((int)(uchar)s[0]) - ((int) (uchar) t[0]);
5891 }
5892
5893
5894 static
my_wildcmp_utf8(const CHARSET_INFO * cs,const char * str,const char * str_end,const char * wildstr,const char * wildend,int escape,int w_one,int w_many)5895 int my_wildcmp_utf8(const CHARSET_INFO *cs,
5896 const char *str,const char *str_end,
5897 const char *wildstr,const char *wildend,
5898 int escape, int w_one, int w_many)
5899 {
5900 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5901 return my_wildcmp_unicode(cs,str,str_end,wildstr,wildend,
5902 escape,w_one,w_many,uni_plane);
5903 }
5904
5905
5906 static
my_strnxfrmlen_utf8(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),size_t len)5907 size_t my_strnxfrmlen_utf8(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
5908 size_t len)
5909 {
5910 return (len * 2 + 2) / 3;
5911 }
5912
5913
5914 static
my_valid_mbcharlen_utf8(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),const uchar * s,const uchar * e)5915 int my_valid_mbcharlen_utf8(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
5916 const uchar *s, const uchar *e)
5917 {
5918 uchar c;
5919
5920 if (s >= e)
5921 return MY_CS_TOOSMALL;
5922
5923 c= s[0];
5924 if (c < 0xf0)
5925 return my_valid_mbcharlen_utf8mb3(s, e);
5926
5927 #ifdef UNICODE_32BIT
5928 if (c < 0xf8 && sizeof(my_wc_t)*8 >= 32)
5929 {
5930 if (s+4 > e) /* We need 4 characters */
5931 return MY_CS_TOOSMALL4;
5932
5933 if (!(IS_CONTINUATION_BYTE(s[1]) &&
5934 IS_CONTINUATION_BYTE(s[2]) &&
5935 IS_CONTINUATION_BYTE(s[3]) &&
5936 (c >= 0xf1 || s[1] >= 0x90)))
5937 return MY_CS_ILSEQ;
5938
5939 return 4;
5940 }
5941 if (c < 0xfc && sizeof(my_wc_t)*8 >= 32)
5942 {
5943 if (s+5 >e) /* We need 5 characters */
5944 return MY_CS_TOOSMALL5;
5945
5946 if (!(IS_CONTINUATION_BYTE(s[1]) &&
5947 IS_CONTINUATION_BYTE(s[2]) &&
5948 IS_CONTINUATION_BYTE(s[3]) &&
5949 IS_CONTINUATION_BYTE(s[4]) &&
5950 (c >= 0xf9 || s[1] >= 0x88)))
5951 return MY_CS_ILSEQ;
5952
5953 return 5;
5954 }
5955 if (c < 0xfe && sizeof(my_wc_t)*8 >= 32)
5956 {
5957 if ( s+6 >e ) /* We need 6 characters */
5958 return MY_CS_TOOSMALL6;
5959
5960 if (!(IS_CONTINUATION_BYTE(s[1]) &&
5961 IS_CONTINUATION_BYTE(s[2]) &&
5962 IS_CONTINUATION_BYTE(s[3]) &&
5963 IS_CONTINUATION_BYTE(s[4]) &&
5964 IS_CONTINUATION_BYTE(s[5]) &&
5965 (c >= 0xfd || s[1] >= 0x84)))
5966 return MY_CS_ILSEQ;
5967
5968 return 6;
5969 }
5970 #endif
5971 return MY_CS_ILSEQ;
5972 }
5973
5974 static size_t
my_well_formed_len_utf8(const CHARSET_INFO * cs,const char * b,const char * e,size_t pos,int * error)5975 my_well_formed_len_utf8(const CHARSET_INFO *cs, const char *b, const char *e,
5976 size_t pos, int *error)
5977 {
5978 const char *b_start= b;
5979 *error= 0;
5980 while (pos)
5981 {
5982 int mb_len;
5983
5984 if ((mb_len= my_valid_mbcharlen_utf8(cs, (uchar*) b, (uchar*) e)) <= 0)
5985 {
5986 *error= b < e ? 1 : 0;
5987 break;
5988 }
5989 b+= mb_len;
5990 pos--;
5991 }
5992 return (size_t) (b - b_start);
5993 }
5994
my_ismbchar_utf8(const CHARSET_INFO * cs,const char * b,const char * e)5995 static uint my_ismbchar_utf8(const CHARSET_INFO *cs,const char *b,
5996 const char *e)
5997 {
5998 int res= my_valid_mbcharlen_utf8(cs, (const uchar*)b, (const uchar*)e);
5999 return (res>1) ? res : 0;
6000 }
6001
my_mbcharlen_utf8(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),uint c)6002 static uint my_mbcharlen_utf8(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
6003 uint c)
6004 {
6005 if (c < 0x80)
6006 return 1;
6007 else if (c < 0xc2)
6008 return 0; /* Illegal mb head */
6009 else if (c < 0xe0)
6010 return 2;
6011 else if (c < 0xf0)
6012 return 3;
6013 return 0; /* Illegal mb head */;
6014 }
6015
6016
6017 static MY_COLLATION_HANDLER my_collation_utf8_general_ci_handler =
6018 {
6019 NULL, /* init */
6020 my_strnncoll_utf8,
6021 my_strnncollsp_utf8,
6022 my_strnxfrm_unicode,
6023 my_strnxfrmlen_utf8,
6024 my_like_range_mb,
6025 my_wildcmp_utf8,
6026 my_strcasecmp_utf8,
6027 my_instr_mb,
6028 my_hash_sort_utf8,
6029 my_propagate_complex
6030 };
6031
6032
6033 static MY_COLLATION_HANDLER my_collation_utf8_bin_handler =
6034 {
6035 NULL, /* init */
6036 my_strnncoll_mb_bin,
6037 my_strnncollsp_mb_bin,
6038 my_strnxfrm_unicode,
6039 my_strnxfrmlen_utf8,
6040 my_like_range_mb,
6041 my_wildcmp_mb_bin,
6042 my_strcasecmp_mb_bin,
6043 my_instr_mb,
6044 my_hash_sort_mb_bin,
6045 my_propagate_simple
6046 };
6047
6048 MY_CHARSET_HANDLER my_charset_utf8_handler=
6049 {
6050 NULL, /* init */
6051 my_ismbchar_utf8,
6052 my_mbcharlen_utf8,
6053 my_numchars_mb,
6054 my_charpos_mb,
6055 my_well_formed_len_utf8,
6056 my_lengthsp_8bit,
6057 my_numcells_mb,
6058 my_utf8_uni,
6059 my_uni_utf8,
6060 my_mb_ctype_mb,
6061 my_caseup_str_utf8,
6062 my_casedn_str_utf8,
6063 my_caseup_utf8,
6064 my_casedn_utf8,
6065 my_snprintf_8bit,
6066 my_long10_to_str_8bit,
6067 my_longlong10_to_str_8bit,
6068 my_fill_8bit,
6069 my_strntol_8bit,
6070 my_strntoul_8bit,
6071 my_strntoll_8bit,
6072 my_strntoull_8bit,
6073 my_strntod_8bit,
6074 my_strtoll10_8bit,
6075 my_strntoull10rnd_8bit,
6076 my_scan_8bit
6077 };
6078
6079
6080
6081 CHARSET_INFO my_charset_utf8_general_ci=
6082 {
6083 33,0,0, /* number */
6084 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
6085 "utf8", /* cs name */
6086 "utf8_general_ci", /* name */
6087 "", /* comment */
6088 NULL, /* tailoring */
6089 ctype_utf8, /* ctype */
6090 to_lower_utf8, /* to_lower */
6091 to_upper_utf8, /* to_upper */
6092 to_upper_utf8, /* sort_order */
6093 NULL, /* uca */
6094 NULL, /* tab_to_uni */
6095 NULL, /* tab_from_uni */
6096 &my_unicase_default,/* caseinfo */
6097 NULL, /* state_map */
6098 NULL, /* ident_map */
6099 1, /* strxfrm_multiply */
6100 1, /* caseup_multiply */
6101 1, /* casedn_multiply */
6102 1, /* mbminlen */
6103 3, /* mbmaxlen */
6104 1, /* mbmaxlenlen */
6105 0, /* min_sort_char */
6106 0xFFFF, /* max_sort_char */
6107 ' ', /* pad char */
6108 0, /* escape_with_backslash_is_dangerous */
6109 1, /* levels_for_compare */
6110 1, /* levels_for_order */
6111 &my_charset_utf8_handler,
6112 &my_collation_utf8_general_ci_handler
6113 };
6114
6115
6116 CHARSET_INFO my_charset_utf8_tolower_ci=
6117 {
6118 56,0,0, /* number */
6119 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_LOWER_SORT,
6120 "utf8", /* cs name */
6121 "utf8_tolower_ci", /* name */
6122 "", /* comment */
6123 NULL, /* tailoring */
6124 ctype_utf8, /* ctype */
6125 to_lower_utf8, /* to_lower */
6126 to_upper_utf8, /* to_upper */
6127 to_upper_utf8, /* sort_order */
6128 NULL, /* uca */
6129 NULL, /* tab_to_uni */
6130 NULL, /* tab_from_uni */
6131 &my_unicase_default,/* caseinfo */
6132 NULL, /* state_map */
6133 NULL, /* ident_map */
6134 1, /* strxfrm_multiply */
6135 1, /* caseup_multiply */
6136 1, /* casedn_multiply */
6137 1, /* mbminlen */
6138 3, /* mbmaxlen */
6139 1, /* mbmaxlenlen */
6140 0, /* min_sort_char */
6141 0xFFFF, /* max_sort_char */
6142 ' ', /* pad char */
6143 0, /* escape_with_backslash_is_dangerous */
6144 1, /* levels_for_compare */
6145 1, /* levels_for_order */
6146 &my_charset_utf8_handler,
6147 &my_collation_utf8_general_ci_handler
6148 };
6149
6150
6151 CHARSET_INFO my_charset_utf8_general_mysql500_ci=
6152 {
6153 223,0,0, /* number */
6154 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
6155 "utf8", /* cs name */
6156 "utf8_general_mysql500_ci", /* name */
6157 "", /* comment */
6158 NULL, /* tailoring */
6159 ctype_utf8, /* ctype */
6160 to_lower_utf8, /* to_lower */
6161 to_upper_utf8, /* to_upper */
6162 to_upper_utf8, /* sort_order */
6163 NULL, /* uca */
6164 NULL, /* tab_to_uni */
6165 NULL, /* tab_from_uni */
6166 &my_unicase_mysql500, /* caseinfo */
6167 NULL, /* state_map */
6168 NULL, /* ident_map */
6169 1, /* strxfrm_multiply */
6170 1, /* caseup_multiply */
6171 1, /* casedn_multiply */
6172 1, /* mbminlen */
6173 3, /* mbmaxlen */
6174 1, /* mbmaxlenlen */
6175 0, /* min_sort_char */
6176 0xFFFF, /* max_sort_char */
6177 ' ', /* pad char */
6178 0, /* escape_with_backslash_is_dangerous */
6179 1, /* levels_for_compare */
6180 1, /* levels_for_order */
6181 &my_charset_utf8_handler,
6182 &my_collation_utf8_general_ci_handler
6183 };
6184
6185
6186 CHARSET_INFO my_charset_utf8_bin=
6187 {
6188 83,0,0, /* number */
6189 MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|
6190 MY_CS_UNICODE, /* state */
6191 "utf8", /* cs name */
6192 "utf8_bin", /* name */
6193 "", /* comment */
6194 NULL, /* tailoring */
6195 ctype_utf8, /* ctype */
6196 to_lower_utf8, /* to_lower */
6197 to_upper_utf8, /* to_upper */
6198 NULL, /* sort_order */
6199 NULL, /* uca */
6200 NULL, /* tab_to_uni */
6201 NULL, /* tab_from_uni */
6202 &my_unicase_default,/* caseinfo */
6203 NULL, /* state_map */
6204 NULL, /* ident_map */
6205 1, /* strxfrm_multiply */
6206 1, /* caseup_multiply */
6207 1, /* casedn_multiply */
6208 1, /* mbminlen */
6209 3, /* mbmaxlen */
6210 1, /* mbmaxlenlen */
6211 0, /* min_sort_char */
6212 0xFFFF, /* max_sort_char */
6213 ' ', /* pad char */
6214 0, /* escape_with_backslash_is_dangerous */
6215 1, /* levels_for_compare */
6216 1, /* levels_for_order */
6217 &my_charset_utf8_handler,
6218 &my_collation_utf8_bin_handler
6219 };
6220
6221 #ifdef HAVE_UTF8_GENERAL_CS
6222
6223 /*
6224 * These functions bacically do the same as their original, except
6225 * that they return 0 only when two comparing unicode strings are
6226 * strictly the same in case-sensitive way. See "save_diff" local
6227 * variable to what they actually do.
6228 */
6229
my_strnncoll_utf8_cs(const CHARSET_INFO * cs,const uchar * s,size_t slen,const uchar * t,size_t tlen,my_bool t_is_prefix)6230 static int my_strnncoll_utf8_cs(const CHARSET_INFO *cs,
6231 const uchar *s, size_t slen,
6232 const uchar *t, size_t tlen,
6233 my_bool t_is_prefix)
6234 {
6235 int s_res,t_res;
6236 my_wc_t s_wc,t_wc;
6237 const uchar *se=s+slen;
6238 const uchar *te=t+tlen;
6239 int save_diff = 0;
6240 int diff;
6241 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
6242
6243 while ( s < se && t < te )
6244 {
6245 s_res=my_utf8_uni(cs,&s_wc, s, se);
6246 t_res=my_utf8_uni(cs,&t_wc, t, te);
6247
6248 if ( s_res <= 0 || t_res <= 0 )
6249
6250 {
6251 /* Incorrect string, compare by char value */
6252 return ((int)s[0]-(int)t[0]);
6253 }
6254
6255 if ( save_diff == 0 )
6256 {
6257 save_diff = ((int)s_wc) - ((int)t_wc);
6258 }
6259
6260 my_tosort_unicode(uni_plane, &s_wc, cs->state);
6261 my_tosort_unicode(uni_plane, &t_wc, cs->state);
6262
6263 if ( s_wc != t_wc )
6264 {
6265 return ((int) s_wc) - ((int) t_wc);
6266 }
6267
6268 s+=s_res;
6269 t+=t_res;
6270 }
6271 diff = ( (se-s) - (te-t) );
6272 return t_is_prefix ? t-te : ((diff == 0) ? save_diff : diff);
6273 }
6274
my_strnncollsp_utf8_cs(const CHARSET_INFO * cs,const uchar * s,size_t slen,const uchar * t,size_t tlen,my_bool diff_if_only_endspace_difference)6275 static int my_strnncollsp_utf8_cs(const CHARSET_INFO *cs,
6276 const uchar *s, size_t slen,
6277 const uchar *t, size_t tlen,
6278 my_bool diff_if_only_endspace_difference)
6279 {
6280 int s_res, t_res, res;
6281 my_wc_t s_wc, t_wc;
6282 const uchar *se= s + slen;
6283 const uchar *te= t + tlen;
6284 int save_diff= 0;
6285 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
6286
6287 #ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
6288 diff_if_only_endspace_difference= 0;
6289 #endif
6290
6291 while ( s < se && t < te )
6292 {
6293 s_res=my_utf8_uni(cs,&s_wc, s, se);
6294 t_res=my_utf8_uni(cs,&t_wc, t, te);
6295
6296 if ( s_res <= 0 || t_res <= 0 )
6297 {
6298 /* Incorrect string, compare by char value */
6299 return ((int)s[0]-(int)t[0]);
6300 }
6301
6302 if ( save_diff == 0 )
6303 {
6304 save_diff = ((int)s_wc) - ((int)t_wc);
6305 }
6306
6307 my_tosort_unicode(uni_plane, &s_wc, cs->state);
6308 my_tosort_unicode(uni_plane, &t_wc, cs->state);
6309
6310 if ( s_wc != t_wc )
6311 {
6312 return ((int) s_wc) - ((int) t_wc);
6313 }
6314
6315 s+=s_res;
6316 t+=t_res;
6317 }
6318
6319 slen= se-s;
6320 tlen= te-t;
6321 res= 0;
6322
6323 if (slen != tlen)
6324 {
6325 int swap= 1;
6326 if (diff_if_only_endspace_difference)
6327 res= 1; /* Assume 'a' is bigger */
6328 if (slen < tlen)
6329 {
6330 slen= tlen;
6331 s= t;
6332 se= te;
6333 swap= -1;
6334 res= -res;
6335 }
6336 /*
6337 This following loop uses the fact that in UTF-8
6338 all multibyte characters are greater than space,
6339 and all multibyte head characters are greater than
6340 space. It means if we meet a character greater
6341 than space, it always means that the longer string
6342 is greater. So we can reuse the same loop from the
6343 8bit version, without having to process full multibute
6344 sequences.
6345 */
6346 for ( ; s < se; s++)
6347 {
6348 if (*s != (uchar) ' ')
6349 return (*s < (uchar) ' ') ? -swap : swap;
6350 }
6351 }
6352 return save_diff;
6353 }
6354
6355 static MY_COLLATION_HANDLER my_collation_cs_handler =
6356 {
6357 NULL, /* init */
6358 my_strnncoll_utf8_cs,
6359 my_strnncollsp_utf8_cs,
6360 my_strnxfrm_unicode,
6361 my_strnxfrmlen_utf8,
6362 my_like_range_simple,
6363 my_wildcmp_mb,
6364 my_strcasecmp_utf8,
6365 my_instr_mb,
6366 my_hash_sort_utf8,
6367 my_propagate_simple
6368 };
6369
6370 CHARSET_INFO my_charset_utf8_general_cs=
6371 {
6372 254,0,0, /* number */
6373 MY_CS_COMPILED|MY_CS_UNICODE, /* state */
6374 "utf8", /* cs name */
6375 "utf8_general_cs", /* name */
6376 "", /* comment */
6377 NULL, /* tailoring */
6378 ctype_utf8, /* ctype */
6379 to_lower_utf8, /* to_lower */
6380 to_upper_utf8, /* to_upper */
6381 to_upper_utf8, /* sort_order */
6382 NULL, /* uca */
6383 NULL, /* tab_to_uni */
6384 NULL, /* tab_from_uni */
6385 &my_unicase_default,/* caseinfo */
6386 NULL, /* state_map */
6387 NULL, /* ident_map */
6388 1, /* strxfrm_multiply */
6389 1, /* caseup_multiply */
6390 1, /* casedn_multiply */
6391 1, /* mbminlen */
6392 3, /* mbmaxlen */
6393 1, /* mbmaxlenlen */
6394 0, /* min_sort_char */
6395 255, /* max_sort_char */
6396 ' ', /* pad char */
6397 0, /* escape_with_backslash_is_dangerous */
6398 1, /* levels_for_compare */
6399 1, /* levels_for_order */
6400 &my_charset_utf8_handler,
6401 &my_collation_cs_handler
6402 };
6403 #endif /* Cybozu Hack */
6404
6405
6406 /*
6407 File system encoding components:
6408
6409 Code range Pattern Number Used Unused Blocks
6410 -----------------------------------------------------------------------------
6411 00C0..017F [.][0..4][g..z] 5*20= 100 97 3 Latin1 Supplement + Ext A
6412 0370..03FF [.][5..9][g..z] 5*20= 100 88 12 Greek + Coptic
6413 0400..052F [.][g..z][0..6] 20*7= 140 140 137 Cyrillic
6414 0530..058F [.][g..z][7..8] 20*2= 40 38 2 Armenian
6415 2160..217F [.][g..z][9] 20*1= 20 16 4 Number Forms
6416 0180..02AF [.][g..z][a..k] 28*11=220 203 17 Latin Ext B + IPA
6417 1E00..0EFF [.][g..z][l..r] 20*7= 140 136 4 Latin Additional Extended
6418 1F00..1FFF [.][g..z][s..z] 20*8= 160 144 16 Greek Extended
6419 .... .... [.][a..f][g..z] 6*20= 120 0 120 RESERVED
6420 24B6..24E9 [.][@][a..z] 26 26 0 Enclosed Alphanumerics
6421 FF21..FF5A [.][a..z][@] 26 26 0 Full Width forms
6422
6423 All other characters are encoded using five bytes:
6424
6425 [.][0..9a..z][0..9a..z][0..9a..z][0..9a..z]
6426
6427 */
6428
6429
6430 static const uint16 touni[5994]=
6431 {
6432 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6433 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6434 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00C0,
6435 0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,0x00C8,
6436 0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,0x00D0,
6437 0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x0000,0x0000,0x0000,
6438 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00E0,
6439 0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,0x00E8,
6440 0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,0x00F0,
6441 0x00F1,0x00F2,0x00F3,0x0000,0x0000,0x0000,0x0000,0x0000,
6442 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6443 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6444 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00D4,
6445 0x00D5,0x00D6,0x0000,0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,
6446 0x00DD,0x00DE,0x0178,0x0100,0x0102,0x0104,0x0106,0x0108,
6447 0x010A,0x010C,0x010E,0x0000,0x0000,0x0000,0x0000,0x0000,
6448 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00F4,
6449 0x00F5,0x00F6,0x00DF,0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,
6450 0x00FD,0x00FE,0x00FF,0x0101,0x0103,0x0105,0x0107,0x0109,
6451 0x010B,0x010D,0x010F,0x0000,0x0000,0x0000,0x0000,0x0000,
6452 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6453 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6454 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0110,
6455 0x0112,0x0114,0x0116,0x0118,0x011A,0x011C,0x011E,0x0120,
6456 0x0122,0x0124,0x0126,0x0128,0x012A,0x012C,0x012E,0x0000,
6457 0x0132,0x0134,0x0136,0x0000,0x0000,0x0000,0x0000,0x0000,
6458 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0111,
6459 0x0113,0x0115,0x0117,0x0119,0x011B,0x011D,0x011F,0x0121,
6460 0x0123,0x0125,0x0127,0x0129,0x012B,0x012D,0x012F,0x0131,
6461 0x0133,0x0135,0x0137,0x0000,0x0000,0x0000,0x0000,0x0000,
6462 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6463 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6464 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6465 0x0139,0x013B,0x013D,0x013F,0x0141,0x0143,0x0145,0x0147,
6466 0x0000,0x014A,0x014C,0x014E,0x0150,0x0152,0x0154,0x0156,
6467 0x0158,0x015A,0x015C,0x0000,0x0000,0x0000,0x0000,0x0000,
6468 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0138,
6469 0x013A,0x013C,0x013E,0x0140,0x0142,0x0144,0x0146,0x0148,
6470 0x0149,0x014B,0x014D,0x014F,0x0151,0x0153,0x0155,0x0157,
6471 0x0159,0x015B,0x015D,0x0000,0x0000,0x0000,0x0000,0x0000,
6472 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6473 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6474 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015E,
6475 0x0160,0x0162,0x0164,0x0166,0x0168,0x016A,0x016C,0x016E,
6476 0x0170,0x0172,0x0174,0x0176,0x0179,0x017B,0x017D,0x0000,
6477 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6478 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015F,
6479 0x0161,0x0163,0x0165,0x0167,0x0169,0x016B,0x016D,0x016F,
6480 0x0171,0x0173,0x0175,0x0177,0x017A,0x017C,0x017E,0x017F,
6481 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6482 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6483 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6484 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6485 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6486 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6487 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6488 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6489 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6490 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6491 0x0000,0x0390,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6492 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6493 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6494 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0386,
6495 0x0388,0x0389,0x038A,0x0000,0x0391,0x0000,0x0393,0x0394,
6496 0x0395,0x0396,0x0397,0x0000,0x0399,0x0000,0x039B,0x039C,
6497 0x039D,0x039E,0x039F,0x0000,0x0000,0x0000,0x0000,0x0000,
6498 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03AC,
6499 0x03AD,0x03AE,0x03AF,0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,
6500 0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,
6501 0x03BD,0x03BE,0x03BF,0x0000,0x0000,0x0000,0x0000,0x0000,
6502 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6503 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6504 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6505 0x03A1,0x0000,0x0000,0x03A4,0x03A5,0x0000,0x03A7,0x03A8,
6506 0x03A9,0x03AA,0x03AB,0x038C,0x038E,0x038F,0x0000,0x0392,
6507 0x0398,0x03D2,0x03D3,0x0000,0x0000,0x0000,0x0000,0x0000,
6508 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03C0,
6509 0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,
6510 0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x0000,0x03D0,
6511 0x03D1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6512 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6513 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6514 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03D4,
6515 0x03A6,0x03A0,0x0000,0x0000,0x03DA,0x03DC,0x03DE,0x03E0,
6516 0x03E2,0x03E4,0x03E6,0x03E8,0x03EA,0x03EC,0x03EE,0x039A,
6517 0x0000,0x03A3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6518 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6519 0x03D5,0x03D6,0x03D7,0x03D9,0x03DB,0x03DD,0x03DF,0x03E1,
6520 0x03E3,0x03E5,0x03E7,0x03E9,0x03EB,0x03ED,0x03EF,0x03F0,
6521 0x03F1,0x03F2,0x03F3,0x0000,0x0000,0x0000,0x0000,0x0000,
6522 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6523 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6524 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6525 0x0000,0x0000,0x0000,0x0000,0x03FD,0x03FE,0x03FF,0x0000,
6526 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6527 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6528 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03F5,
6529 0x03F6,0x03F8,0x03FB,0x03FC,0x0000,0x0000,0x0000,0x0000,
6530 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6531 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6532 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6533 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6534 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6535 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6536 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6537 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6538 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6539 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6540 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6541 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6542 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6543 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6544 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6545 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6546 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6547 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6548 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6549 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6550 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6551 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6552 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6553 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6554 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6555 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6556 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6557 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6558 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6559 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6560 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6561 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6562 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6563 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6564 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6565 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6566 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6567 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6568 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6569 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6570 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6571 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6572 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6573 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6574 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6575 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6576 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6577 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6578 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6579 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6580 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6581 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6582 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6583 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6584 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6585 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6586 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6587 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6588 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6589 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6590 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6591 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6592 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6593 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6594 0x0000,0x24B6,0x24B7,0x24B8,0x24B9,0x24BA,0x24BB,0x24BC,
6595 0x24BD,0x24BE,0x24BF,0x24C0,0x24C1,0x24C2,0x24C3,0x24C4,
6596 0x24C5,0x24C6,0x24C7,0x24C8,0x24C9,0x24CA,0x24CB,0x24CC,
6597 0x24CD,0x24CE,0x24CF,0x0000,0x0000,0x0000,0x0000,0x0000,
6598 0x0000,0x24D0,0x24D1,0x24D2,0x24D3,0x24D4,0x24D5,0x24D6,
6599 0x24D7,0x24D8,0x24D9,0x24DA,0x24DB,0x24DC,0x24DD,0x24DE,
6600 0x24DF,0x24E0,0x24E1,0x24E2,0x24E3,0x24E4,0x24E5,0x24E6,
6601 0x24E7,0x24E8,0x24E9,0x0000,0x0000,0x0000,0x0000,0x0000,
6602 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6603 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6604 0xFF21,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6605 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6606 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6607 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6608 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6609 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6610 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6611 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6612 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6613 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6614 0xFF22,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6615 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6616 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6617 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6618 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6619 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6620 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6621 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6622 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6623 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6624 0xFF23,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6625 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6626 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6627 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6628 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6629 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6630 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6631 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6632 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6633 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6634 0xFF24,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6635 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6636 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6637 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6638 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6639 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6640 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6641 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6642 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6643 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6644 0xFF25,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6645 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6646 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6647 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6648 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6649 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6650 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6651 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6652 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6653 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6654 0xFF26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6655 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6656 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6657 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6658 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6659 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6660 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6661 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6662 0x0410,0x0424,0x0408,0x0478,0x04A6,0x04CD,0x04F4,0x0000,
6663 0x0544,0x2160,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6664 0xFF27,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6665 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6666 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6667 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6668 0x0000,0x0000,0x01B3,0x01DE,0x0208,0x0230,0x0000,0x0000,
6669 0x0000,0x0000,0x0000,0x0000,0x1E00,0x1E28,0x1E50,0x1E78,
6670 0x1E60,0x1EBE,0x1EE6,0x1F08,0x1F2A,0x0000,0x1F6C,0x1F88,
6671 0x1FAC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6672 0x0411,0x0425,0x0409,0x047A,0x04A8,0x0000,0x04F6,0x0531,
6673 0x0545,0x2161,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6674 0xFF28,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6675 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6676 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6677 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6678 0x0000,0x0182,0x01B5,0x01E0,0x020A,0x0232,0x0000,0x0000,
6679 0x019D,0x0000,0x0000,0x0000,0x1E02,0x1E2A,0x1E52,0x1E7A,
6680 0x0000,0x1EC0,0x1EE8,0x1F09,0x1F2B,0x0000,0x1F6D,0x1F89,
6681 0x1FAD,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6682 0x0412,0x0426,0x040A,0x047C,0x04AA,0x04D0,0x04F8,0x0532,
6683 0x0546,0x2162,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6684 0xFF29,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6685 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6686 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6687 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6688 0x0000,0x0184,0x01B8,0x01E2,0x020C,0x0000,0x0000,0x0000,
6689 0x0000,0x0000,0x0000,0x0000,0x1E04,0x1E2C,0x1E54,0x1E7C,
6690 0x0000,0x1EC2,0x1EEA,0x1F0A,0x1F2C,0x0000,0x1F6E,0x1F8A,
6691 0x1FAE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6692 0x0413,0x0427,0x040B,0x047E,0x04AC,0x04D2,0x0000,0x0533,
6693 0x0547,0x2163,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6694 0xFF2A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6695 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6696 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6697 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6698 0x0000,0x0187,0x0000,0x01E4,0x020E,0x0000,0x0000,0x0193,
6699 0x0000,0x01AE,0x0000,0x0000,0x1E06,0x1E2E,0x1E56,0x1E7E,
6700 0x0000,0x1EC4,0x1EEC,0x1F0B,0x1F2D,0x0000,0x1F6F,0x1F8B,
6701 0x1FAF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6702 0x0414,0x0428,0x040C,0x0480,0x04AE,0x04D4,0x0000,0x0534,
6703 0x0548,0x2164,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6704 0xFF2B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6705 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6706 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6707 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6708 0x0000,0x018B,0x0000,0x01E6,0x0210,0x0000,0x0000,0x0000,
6709 0x019F,0x0000,0x0000,0x0000,0x1E08,0x1E30,0x1E58,0x1E80,
6710 0x0000,0x1EC6,0x1EEE,0x1F0C,0x1F2E,0x0000,0x1FBA,0x1F8C,
6711 0x1FB8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6712 0x0415,0x0429,0x040D,0x0000,0x04B0,0x04D6,0x0000,0x0535,
6713 0x0549,0x2165,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6714 0xFF2C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6715 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6716 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6717 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6718 0x0000,0x0000,0x0000,0x01E8,0x0212,0x0000,0x0000,0x0000,
6719 0x0000,0x01B1,0x0000,0x0000,0x1E0A,0x1E32,0x1E5A,0x1E82,
6720 0x1EA0,0x1EC8,0x1EF0,0x1F0D,0x1F2F,0x1F59,0x1FBB,0x1F8D,
6721 0x1FB9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6722 0x0416,0x042A,0x040E,0x048A,0x04B2,0x04D8,0x0000,0x0536,
6723 0x054A,0x2166,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6724 0xFF2D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6725 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6726 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6727 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6728 0x0000,0x0191,0x0000,0x01EA,0x0214,0x0000,0x0000,0x0194,
6729 0x0000,0x01B2,0x0000,0x0000,0x1E0C,0x1E34,0x1E5C,0x1E84,
6730 0x1EA2,0x1ECA,0x1EF2,0x1F0E,0x1F38,0x0000,0x1FC8,0x1F8E,
6731 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6732 0x0417,0x042B,0x040F,0x048C,0x04B4,0x04DA,0x0000,0x0537,
6733 0x054B,0x2167,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6734 0xFF2E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6735 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6736 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6737 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6738 0x0000,0x01F6,0x01BC,0x01EC,0x0216,0x0000,0x0000,0x0000,
6739 0x0000,0x0000,0x0000,0x0000,0x1E0E,0x1E36,0x1E5E,0x1E86,
6740 0x1EA4,0x1ECC,0x1EF4,0x1F0F,0x1F39,0x1F5B,0x1FC9,0x1F8F,
6741 0x1FBC,0x1FE8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6742 0x0418,0x042C,0x0460,0x048E,0x04B6,0x04DC,0x0000,0x0538,
6743 0x054C,0x2168,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6744 0xFF2F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6745 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6746 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6747 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6748 0x0000,0x0198,0x01C4,0x01EE,0x0218,0x023A,0x0000,0x0000,
6749 0x0000,0x0000,0x0000,0x0000,0x1E10,0x1E38,0x0000,0x1E88,
6750 0x1EA6,0x1ECE,0x1EF6,0x1F18,0x1F3A,0x0000,0x1FCA,0x1F98,
6751 0x0000,0x1FE9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6752 0x0419,0x042D,0x0462,0x0490,0x04B8,0x04DE,0x0500,0x0539,
6753 0x054D,0x2169,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6754 0xFF30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6755 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6756 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6757 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6758 0x0000,0x023D,0x01C7,0x0000,0x021A,0x023B,0x0000,0x0000,
6759 0x0000,0x0000,0x0000,0x0000,0x1E12,0x1E3A,0x1E62,0x1E8A,
6760 0x1EA8,0x1ED0,0x1EF8,0x1F19,0x1F3B,0x1F5D,0x1FCB,0x1F99,
6761 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6762 0x041A,0x042E,0x0464,0x0492,0x04BA,0x04E0,0x0502,0x053A,
6763 0x054E,0x216A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6764 0xFF31,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6765 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6766 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6767 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6768 0x0000,0x0000,0x01CA,0x01F1,0x021C,0x023E,0x0181,0x0000,
6769 0x0000,0x0000,0x0000,0x0000,0x1E14,0x1E3C,0x1E64,0x1E8C,
6770 0x1EAA,0x1ED2,0x0000,0x1F1A,0x1F3C,0x0000,0x1FDA,0x1F9A,
6771 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6772 0x041B,0x042F,0x0466,0x0494,0x04BC,0x04E2,0x0504,0x053B,
6773 0x054F,0x216B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6774 0xFF32,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6775 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6776 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6777 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6778 0x0000,0x0220,0x01CD,0x01F4,0x021E,0x0000,0x0186,0x0197,
6779 0x0000,0x0000,0x0000,0x0000,0x1E16,0x1E3E,0x1E66,0x1E8E,
6780 0x1EAC,0x1ED4,0x0000,0x1F1B,0x1F3D,0x1F5F,0x1FDB,0x1F9B,
6781 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6782 0x041C,0x0400,0x0468,0x0496,0x04BE,0x04E4,0x0506,0x053C,
6783 0x0550,0x216C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6784 0xFF33,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6785 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6786 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6787 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6788 0x0000,0x01A0,0x01CF,0x01F8,0x0000,0x0000,0x0000,0x0196,
6789 0x0000,0x0000,0x0000,0x0000,0x1E18,0x1E40,0x1E68,0x1E90,
6790 0x1EAE,0x1ED6,0x0000,0x1F1C,0x1F3E,0x0000,0x1FF8,0x1F9C,
6791 0x0000,0x1FEC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6792 0x041D,0x0401,0x046A,0x0498,0x04C0,0x04E6,0x0508,0x053D,
6793 0x0551,0x216D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6794 0xFF34,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6795 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6796 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6797 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6798 0x0000,0x01A2,0x01D1,0x01FA,0x0222,0x0000,0x0189,0x0000,
6799 0x0000,0x01B7,0x0000,0x0000,0x1E1A,0x1E42,0x1E6A,0x1E92,
6800 0x1EB0,0x1ED8,0x0000,0x1F1D,0x1F3F,0x0000,0x1FF9,0x1F9D,
6801 0x1FCC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6802 0x041E,0x0402,0x046C,0x049A,0x04C1,0x04E8,0x050A,0x053E,
6803 0x0552,0x216E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6804 0xFF35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6805 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6806 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6807 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6808 0x0000,0x01A4,0x01D3,0x01FC,0x0224,0x0000,0x018A,0x0000,
6809 0x0000,0x0000,0x0000,0x0000,0x1E1C,0x1E44,0x1E6C,0x1E94,
6810 0x1EB2,0x1EDA,0x0000,0x0000,0x1F48,0x0000,0x1FEA,0x1F9E,
6811 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6812 0x041F,0x0403,0x046E,0x049C,0x04C3,0x04EA,0x050C,0x053F,
6813 0x0553,0x216F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6814 0xFF36,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6815 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6816 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6817 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6818 0x0000,0x01A7,0x01D5,0x01FE,0x0226,0x0000,0x0000,0x0000,
6819 0x01A6,0x0241,0x0000,0x0000,0x1E1E,0x1E46,0x1E6E,0x0000,
6820 0x1EB4,0x1EDC,0x0000,0x0000,0x1F49,0x0000,0x1FEB,0x1F9F,
6821 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6822 0x0420,0x0404,0x0470,0x049E,0x04C5,0x04EC,0x050E,0x0540,
6823 0x0554,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6824 0xFF37,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6825 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6826 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6827 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6828 0x0000,0x0000,0x01D7,0x0200,0x0228,0x0000,0x018F,0x0000,
6829 0x0000,0x0000,0x0000,0x0000,0x1E20,0x1E48,0x1E70,0x0000,
6830 0x1EB6,0x1EDE,0x0000,0x0000,0x1F4A,0x1F68,0x1FFA,0x1FA8,
6831 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6832 0x0421,0x0405,0x0472,0x04A0,0x04C7,0x04EE,0x0000,0x0541,
6833 0x0555,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6834 0xFF38,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6835 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6836 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6837 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6838 0x0000,0x0000,0x01D9,0x0202,0x022A,0x0000,0x0000,0x0000,
6839 0x0000,0x0000,0x0000,0x0000,0x1E22,0x1E4A,0x1E72,0x0000,
6840 0x1EB8,0x1EE0,0x0000,0x0000,0x1F4B,0x1F69,0x1FFB,0x1FA9,
6841 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6842 0x0422,0x0406,0x0474,0x04A2,0x04C9,0x04F0,0x0000,0x0542,
6843 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6844 0xFF39,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6845 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6846 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6847 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6848 0x0000,0x01AC,0x01DB,0x0204,0x022C,0x0000,0x0190,0x019C,
6849 0x01A9,0x0000,0x0000,0x0000,0x1E24,0x1E4C,0x1E74,0x0000,
6850 0x1EBA,0x1EE2,0x0000,0x1F28,0x1F4C,0x1F6A,0x0000,0x1FAA,
6851 0x1FD8,0x1FFC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6852 0x0423,0x0407,0x0476,0x04A4,0x04CB,0x04F2,0x0000,0x0543,
6853 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6854 0xFF3A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6855 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6856 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6857 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6858 0x0000,0x01AF,0x018E,0x0206,0x022E,0x0000,0x0000,0x0000,
6859 0x0000,0x0000,0x0000,0x0000,0x1E26,0x1E4E,0x1E76,0x0000,
6860 0x1EBC,0x1EE4,0x0000,0x1F29,0x1F4D,0x1F6B,0x0000,0x1FAB,
6861 0x1FD9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6862 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6863 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6864 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6865 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6866 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6867 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6868 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6869 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6870 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6871 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6872 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6873 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6874 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6875 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6876 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6877 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6878 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6879 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6880 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6881 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6882 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6883 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6884 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6885 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6886 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6887 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6888 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6889 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6890 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6891 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6892 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6893 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6894 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6895 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6896 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6897 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6898 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6899 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6900 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6901 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6902 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6903 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6904 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6905 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6906 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6907 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6908 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6909 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6910 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6911 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6912 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6913 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6914 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6915 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6916 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6917 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6918 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6919 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6920 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6921 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6922 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6923 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6924 0xFF41,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6925 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6926 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6927 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6928 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6929 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6930 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6931 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6932 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6933 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6934 0xFF42,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6935 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6936 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6937 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6938 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6939 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6940 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6941 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6942 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6943 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6944 0xFF43,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6945 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6946 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6947 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6948 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6949 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6950 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6951 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6952 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6953 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6954 0xFF44,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6955 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6956 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6957 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6958 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6959 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6960 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6961 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6962 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6963 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6964 0xFF45,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6965 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6966 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6967 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6968 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6969 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6970 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6971 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6972 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6973 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6974 0xFF46,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6975 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6976 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6977 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6978 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6979 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6980 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6981 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6982 0x0430,0x0444,0x0458,0x0479,0x04A7,0x04CE,0x04F5,0x0000,
6983 0x0574,0x2170,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6984 0xFF47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6985 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6986 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6987 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6988 0x0000,0x0180,0x01B4,0x01DF,0x0209,0x0231,0x0000,0x025D,
6989 0x0271,0x0285,0x0299,0x02AD,0x1E01,0x1E29,0x1E51,0x1E79,
6990 0x1E9B,0x1EBF,0x1EE7,0x1F00,0x1F22,0x0000,0x1F64,0x1F80,
6991 0x1FA4,0x1FD2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6992 0x0431,0x0445,0x0459,0x047B,0x04A9,0x0000,0x04F7,0x0561,
6993 0x0575,0x2171,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6994 0xFF48,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6995 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6996 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6997 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6998 0x0000,0x0183,0x01B6,0x01E1,0x020B,0x0233,0x0000,0x025E,
6999 0x0272,0x0286,0x029A,0x02AE,0x1E03,0x1E2B,0x1E53,0x1E7B,
7000 0x0000,0x1EC1,0x1EE9,0x1F01,0x1F23,0x0000,0x1F65,0x1F81,
7001 0x1FA5,0x1FD3,0x1FF6,0x0000,0x0000,0x0000,0x0000,0x0000,
7002 0x0432,0x0446,0x045A,0x047D,0x04AB,0x04D1,0x04F9,0x0562,
7003 0x0576,0x2172,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7004 0xFF49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7005 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7006 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7007 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7008 0x0000,0x0185,0x01B9,0x01E3,0x020D,0x0234,0x0000,0x025F,
7009 0x0273,0x0287,0x029B,0x02AF,0x1E05,0x1E2D,0x1E55,0x1E7D,
7010 0x0000,0x1EC3,0x1EEB,0x1F02,0x1F24,0x0000,0x1F66,0x1F82,
7011 0x1FA6,0x0000,0x1FF7,0x0000,0x0000,0x0000,0x0000,0x0000,
7012 0x0433,0x0447,0x045B,0x047F,0x04AD,0x04D3,0x0000,0x0563,
7013 0x0577,0x2173,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7014 0xFF4A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7015 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7016 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7017 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7018 0x0000,0x0188,0x01BA,0x01E5,0x020F,0x0235,0x0000,0x0260,
7019 0x0274,0x0288,0x029C,0x0000,0x1E07,0x1E2F,0x1E57,0x1E7F,
7020 0x0000,0x1EC5,0x1EED,0x1F03,0x1F25,0x0000,0x1F67,0x1F83,
7021 0x1FA7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7022 0x0434,0x0448,0x045C,0x0481,0x04AF,0x04D5,0x0000,0x0564,
7023 0x0578,0x2174,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7024 0xFF4B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7025 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7026 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7027 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7028 0x0000,0x018C,0x01BB,0x01E7,0x0211,0x0236,0x0000,0x0261,
7029 0x0275,0x0289,0x029D,0x0000,0x1E09,0x1E31,0x1E59,0x1E81,
7030 0x0000,0x1EC7,0x1EEF,0x1F04,0x1F26,0x1F50,0x1F70,0x1F84,
7031 0x1FB0,0x1FD6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7032 0x0435,0x0449,0x045D,0x0000,0x04B1,0x04D7,0x0000,0x0565,
7033 0x0579,0x2175,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7034 0xFF4C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7035 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7036 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7037 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7038 0x0000,0x018D,0x0000,0x01E9,0x0213,0x0237,0x0000,0x0262,
7039 0x0276,0x028A,0x029E,0x0000,0x1E0B,0x1E33,0x1E5B,0x1E83,
7040 0x1EA1,0x1EC9,0x1EF1,0x1F05,0x1F27,0x1F51,0x1F71,0x1F85,
7041 0x1FB1,0x1FD7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7042 0x0436,0x044A,0x045E,0x048B,0x04B3,0x04D9,0x0000,0x0566,
7043 0x057A,0x2176,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7044 0xFF4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7045 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7046 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7047 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7048 0x0000,0x0192,0x01BE,0x01EB,0x0215,0x0238,0x0000,0x0263,
7049 0x0277,0x028B,0x029F,0x0000,0x1E0D,0x1E35,0x1E5D,0x1E85,
7050 0x1EA3,0x1ECB,0x1EF3,0x1F06,0x1F30,0x1F52,0x1F72,0x1F86,
7051 0x1FB2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7052 0x0437,0x044B,0x045F,0x048D,0x04B5,0x04DB,0x0000,0x0567,
7053 0x057B,0x2177,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7054 0xFF4E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7055 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7056 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7057 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7058 0x0000,0x0195,0x01BD,0x01ED,0x0217,0x0239,0x0250,0x0264,
7059 0x0278,0x028C,0x02A0,0x0000,0x1E0F,0x1E37,0x1E5F,0x1E87,
7060 0x1EA5,0x1ECD,0x1EF5,0x1F07,0x1F31,0x1F53,0x1F73,0x1F87,
7061 0x1FB3,0x1FE0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7062 0x0438,0x044C,0x0461,0x048F,0x04B7,0x04DD,0x0000,0x0568,
7063 0x057C,0x2178,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7064 0xFF4F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7065 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7066 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7067 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7068 0x0000,0x0199,0x01C6,0x01EF,0x0219,0x0000,0x0251,0x0265,
7069 0x0279,0x028D,0x02A1,0x0000,0x1E11,0x1E39,0x1E61,0x1E89,
7070 0x1EA7,0x1ECF,0x1EF7,0x1F10,0x1F32,0x1F54,0x1F74,0x1F90,
7071 0x1FB4,0x1FE1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7072 0x0439,0x044D,0x0463,0x0491,0x04B9,0x04DF,0x0501,0x0569,
7073 0x057D,0x2179,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7074 0xFF50,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7075 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7076 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7077 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7078 0x0000,0x019A,0x01C9,0x01F0,0x021B,0x023C,0x0252,0x0266,
7079 0x027A,0x028E,0x02A2,0x0000,0x1E13,0x1E3B,0x1E63,0x1E8B,
7080 0x1EA9,0x1ED1,0x1EF9,0x1F11,0x1F33,0x1F55,0x1F75,0x1F91,
7081 0x0000,0x1FE2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7082 0x043A,0x044E,0x0465,0x0493,0x04BB,0x04E1,0x0503,0x056A,
7083 0x057E,0x217A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7084 0xFF51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7085 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7086 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7087 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7088 0x0000,0x019B,0x01CC,0x01F3,0x021D,0x0000,0x0253,0x0267,
7089 0x027B,0x028F,0x02A3,0x0000,0x1E15,0x1E3D,0x1E65,0x1E8D,
7090 0x1EAB,0x1ED3,0x0000,0x1F12,0x1F34,0x1F56,0x1F76,0x1F92,
7091 0x1FB6,0x1FE3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7092 0x043B,0x044F,0x0467,0x0495,0x04BD,0x04E3,0x0505,0x056B,
7093 0x057F,0x217B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7094 0xFF52,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7095 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7096 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7097 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7098 0x0000,0x019E,0x01CE,0x01F5,0x021F,0x023F,0x0254,0x0268,
7099 0x027C,0x0290,0x02A4,0x0000,0x1E17,0x1E3F,0x1E67,0x1E8F,
7100 0x1EAD,0x1ED5,0x0000,0x1F13,0x1F35,0x1F57,0x1F77,0x1F93,
7101 0x1FB7,0x1FE4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7102 0x043C,0x0450,0x0469,0x0497,0x04BF,0x04E5,0x0507,0x056C,
7103 0x0580,0x217C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7104 0xFF53,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7105 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7106 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7107 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7108 0x0000,0x01A1,0x01D0,0x01F9,0x0221,0x0240,0x0255,0x0269,
7109 0x027D,0x0291,0x02A5,0x0000,0x1E19,0x1E41,0x1E69,0x1E91,
7110 0x1EAF,0x1ED7,0x0000,0x1F14,0x1F36,0x0000,0x1F78,0x1F94,
7111 0x1FC2,0x1FE5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7112 0x043D,0x0451,0x046B,0x0499,0x0000,0x04E7,0x0509,0x056D,
7113 0x0581,0x217D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7114 0xFF54,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7115 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7116 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7117 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7118 0x0000,0x01A3,0x01D2,0x01FB,0x0223,0x0000,0x0256,0x026A,
7119 0x027E,0x0292,0x02A6,0x0000,0x1E1B,0x1E43,0x1E6B,0x1E93,
7120 0x1EB1,0x1ED9,0x0000,0x1F15,0x1F37,0x0000,0x1F79,0x1F95,
7121 0x1FC3,0x1FE6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7122 0x043E,0x0452,0x046D,0x049B,0x04C2,0x04E9,0x050B,0x056E,
7123 0x0582,0x217E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7124 0xFF55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7125 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7126 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7127 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7128 0x0000,0x01A5,0x01D4,0x01FD,0x0225,0x0000,0x0257,0x026B,
7129 0x027F,0x0293,0x02A7,0x0000,0x1E1D,0x1E45,0x1E6D,0x1E95,
7130 0x1EB3,0x1EDB,0x0000,0x0000,0x1F40,0x0000,0x1F7A,0x1F96,
7131 0x1FC4,0x1FE7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7132 0x043F,0x0453,0x046F,0x049D,0x04C4,0x04EB,0x050D,0x056F,
7133 0x0583,0x217F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7134 0xFF56,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7135 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7136 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7137 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7138 0x0000,0x01A8,0x01D6,0x01FF,0x0227,0x0000,0x0258,0x026C,
7139 0x0280,0x0294,0x02A8,0x0000,0x1E1F,0x1E47,0x1E6F,0x1E96,
7140 0x1EB5,0x1EDD,0x0000,0x0000,0x1F41,0x0000,0x1F7B,0x1F97,
7141 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7142 0x0440,0x0454,0x0471,0x049F,0x04C6,0x04ED,0x050F,0x0570,
7143 0x0584,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7144 0xFF57,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7145 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7146 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7147 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7148 0x0000,0x01AA,0x01D8,0x0201,0x0229,0x0000,0x0259,0x026D,
7149 0x0281,0x0295,0x02A9,0x0000,0x1E21,0x1E49,0x1E71,0x1E97,
7150 0x1EB7,0x1EDF,0x0000,0x0000,0x1F42,0x1F60,0x1F7C,0x1FA0,
7151 0x1FC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7152 0x0441,0x0455,0x0473,0x04A1,0x04C8,0x04EF,0x0000,0x0571,
7153 0x0585,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7154 0xFF58,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7155 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7156 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7157 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7158 0x0000,0x01AB,0x01DA,0x0203,0x022B,0x0000,0x025A,0x026E,
7159 0x0282,0x0296,0x02AA,0x0000,0x1E23,0x1E4B,0x1E73,0x1E98,
7160 0x1EB9,0x1EE1,0x0000,0x0000,0x1F43,0x1F61,0x1F7D,0x1FA1,
7161 0x1FC7,0x1FF2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7162 0x0442,0x0456,0x0475,0x04A3,0x04CA,0x04F1,0x0000,0x0572,
7163 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7164 0xFF59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7165 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7166 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7167 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7168 0x0000,0x01AD,0x01DC,0x0205,0x022D,0x0000,0x025B,0x026F,
7169 0x0283,0x0297,0x02AB,0x0000,0x1E25,0x1E4D,0x1E75,0x1E99,
7170 0x1EBB,0x1EE3,0x0000,0x1F20,0x1F44,0x1F62,0x0000,0x1FA2,
7171 0x1FD0,0x1FF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7172 0x0443,0x0457,0x0477,0x04A5,0x04CC,0x04F3,0x0000,0x0573,
7173 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7174 0xFF5A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7175 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7176 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7177 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7178 0x0000,0x01B0,0x01DD,0x0207,0x022F,0x0000,0x025C,0x0270,
7179 0x0284,0x0298,0x02AC,0x0000,0x1E27,0x1E4F,0x1E77,0x1E9A,
7180 0x1EBD,0x1EE5,0x0000,0x1F21,0x1F45,0x1F63,0x0000,0x1FA3,
7181 0x1FD1,0x1FF4
7182 };
7183
7184
7185 /* 00C0-05FF */
7186 static const uint16 uni_0C00_05FF[1344]=
7187 {
7188 0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
7189 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,
7190 0x0027,0x0028,0x0029,0x002A,0x0067,0x0068,0x0069,0x0000,
7191 0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x008A,
7192 0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,
7193 0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
7194 0x0047,0x0048,0x0049,0x004A,0x0087,0x0088,0x0089,0x0000,
7195 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,
7196 0x0073,0x0093,0x0074,0x0094,0x0075,0x0095,0x0076,0x0096,
7197 0x0077,0x0097,0x0078,0x0098,0x0079,0x0099,0x007A,0x009A,
7198 0x00B7,0x00D7,0x00B8,0x00D8,0x00B9,0x00D9,0x00BA,0x00DA,
7199 0x00BB,0x00DB,0x00BC,0x00DC,0x00BD,0x00DD,0x00BE,0x00DE,
7200 0x00BF,0x00DF,0x00C0,0x00E0,0x00C1,0x00E1,0x00C2,0x00E2,
7201 0x00C3,0x00E3,0x00C4,0x00E4,0x00C5,0x00E5,0x00C6,0x00E6,
7202 0x0000,0x00E7,0x00C8,0x00E8,0x00C9,0x00E9,0x00CA,0x00EA,
7203 0x0127,0x0108,0x0128,0x0109,0x0129,0x010A,0x012A,0x010B,
7204 0x012B,0x010C,0x012C,0x010D,0x012D,0x010E,0x012E,0x010F,
7205 0x012F,0x0130,0x0111,0x0131,0x0112,0x0132,0x0113,0x0133,
7206 0x0114,0x0134,0x0115,0x0135,0x0116,0x0136,0x0117,0x0137,
7207 0x0118,0x0138,0x0119,0x0139,0x011A,0x013A,0x0157,0x0177,
7208 0x0158,0x0178,0x0159,0x0179,0x015A,0x017A,0x015B,0x017B,
7209 0x015C,0x017C,0x015D,0x017D,0x015E,0x017E,0x015F,0x017F,
7210 0x0160,0x0180,0x0161,0x0181,0x0162,0x0182,0x0163,0x0183,
7211 0x0072,0x0164,0x0184,0x0165,0x0185,0x0166,0x0186,0x0187,
7212 0x1161,0x0A86,0x07B1,0x11B1,0x0801,0x1201,0x0AD6,0x0851,
7213 0x1251,0x0B76,0x0BC6,0x08A1,0x12A1,0x12F1,0x0D52,0x0C66,
7214 0x0D06,0x0941,0x1341,0x0857,0x0947,0x1391,0x0B27,0x0AD7,
7215 0x09E1,0x13E1,0x1431,0x1481,0x0D07,0x07B8,0x14D1,0x08A8,
7216 0x0B21,0x1521,0x0B71,0x1571,0x0BC1,0x15C1,0x0C18,0x0C11,
7217 0x1611,0x0D08,0x1661,0x16B1,0x0D01,0x1701,0x0859,0x0D51,
7218 0x1751,0x08F9,0x0949,0x0762,0x1162,0x07B2,0x11B2,0x0B79,
7219 0x0802,0x1202,0x1252,0x12A2,0x0992,0x1392,0x1342,0x0000,
7220 0x0000,0x0000,0x0000,0x0000,0x09E2,0x0000,0x13E2,0x0A32,
7221 0x0000,0x1432,0x0A82,0x0000,0x1482,0x0AD2,0x14D2,0x0B22,
7222 0x1522,0x0B72,0x1572,0x0BC2,0x15C2,0x0C12,0x1612,0x0C62,
7223 0x1662,0x0CB2,0x16B2,0x0D02,0x1702,0x1752,0x0763,0x1163,
7224 0x07B3,0x11B3,0x0803,0x1203,0x0853,0x1253,0x08A3,0x12A3,
7225 0x08F3,0x12F3,0x0943,0x1343,0x0993,0x1393,0x09E3,0x13E3,
7226 0x1433,0x0A83,0x0000,0x1483,0x0AD3,0x14D3,0x0991,0x0000,
7227 0x0B23,0x1523,0x0B73,0x1573,0x0BC3,0x15C3,0x0C13,0x1613,
7228 0x0C63,0x1663,0x0CB3,0x16B3,0x0D03,0x1703,0x0D53,0x1753,
7229 0x0764,0x1164,0x07B4,0x11B4,0x0804,0x1204,0x0854,0x1254,
7230 0x08A4,0x12A4,0x08F4,0x12F4,0x0944,0x1344,0x0994,0x1394,
7231 0x09E4,0x13E4,0x0A34,0x1434,0x0A84,0x1484,0x0AD4,0x14D4,
7232 0x0AD1,0x1524,0x0B74,0x1574,0x0BC4,0x15C4,0x0C14,0x1614,
7233 0x0C64,0x1664,0x0CB4,0x16B4,0x0D04,0x1704,0x0D54,0x1754,
7234 0x0765,0x1165,0x07B5,0x11B5,0x1205,0x1255,0x12A5,0x12F5,
7235 0x1345,0x1395,0x09E5,0x0A35,0x1435,0x0A31,0x0A85,0x14D5,
7236 0x1525,0x0C19,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7237 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7238 0x1396,0x13E6,0x1436,0x1486,0x14D6,0x1526,0x1576,0x15C6,
7239 0x1616,0x1666,0x16B6,0x1706,0x1756,0x1167,0x11B7,0x1207,
7240 0x1257,0x12A7,0x12F7,0x1347,0x1397,0x13E7,0x1437,0x1487,
7241 0x14D7,0x1527,0x1577,0x15C7,0x1617,0x1667,0x16B7,0x1707,
7242 0x1757,0x1168,0x11B8,0x1208,0x1258,0x12A8,0x12F8,0x1348,
7243 0x1398,0x13E8,0x1438,0x1488,0x14D8,0x1528,0x1578,0x15C8,
7244 0x1618,0x1668,0x16B8,0x1708,0x1758,0x1169,0x11B9,0x1209,
7245 0x1259,0x12A9,0x12F9,0x1349,0x1399,0x13E9,0x1439,0x1489,
7246 0x14D9,0x1529,0x1579,0x15C9,0x1619,0x1669,0x16B9,0x1709,
7247 0x1759,0x116A,0x11BA,0x120A,0x125A,0x12AA,0x12FA,0x134A,
7248 0x139A,0x13EA,0x143A,0x148A,0x14DA,0x152A,0x157A,0x15CA,
7249 0x161A,0x166A,0x16BA,0x170A,0x175A,0x116B,0x11BB,0x120B,
7250 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7251 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7252 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7253 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7254 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7255 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7256 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7257 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7258 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7259 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7260 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7261 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7262 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7263 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7264 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7265 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7266 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7267 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7268 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7269 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7270 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7271 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7272 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7273 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7274 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7275 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7276 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01F7,0x0000,
7277 0x01F8,0x01F9,0x01FA,0x0000,0x0253,0x0000,0x0254,0x0255,
7278 0x01D9,0x01FC,0x0257,0x01FE,0x01FF,0x0200,0x0201,0x0202,
7279 0x0258,0x0204,0x02A7,0x0206,0x0207,0x0208,0x0209,0x020A,
7280 0x0299,0x0248,0x0000,0x02A9,0x024B,0x024C,0x0298,0x024E,
7281 0x024F,0x0250,0x0251,0x0252,0x0217,0x0218,0x0219,0x021A,
7282 0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,
7283 0x0223,0x0224,0x0225,0x0226,0x0227,0x0228,0x0229,0x022A,
7284 0x0267,0x0268,0x0269,0x026A,0x026B,0x026C,0x026D,0x026E,
7285 0x026F,0x0270,0x0271,0x0272,0x0273,0x0274,0x0275,0x0000,
7286 0x0277,0x0278,0x0259,0x025A,0x0297,0x02B8,0x02B9,0x02BA,
7287 0x0000,0x02BB,0x029C,0x02BC,0x029D,0x02BD,0x029E,0x02BE,
7288 0x029F,0x02BF,0x02A0,0x02C0,0x02A1,0x02C1,0x02A2,0x02C2,
7289 0x02A3,0x02C3,0x02A4,0x02C4,0x02A5,0x02C5,0x02A6,0x02C6,
7290 0x02C7,0x02C8,0x02C9,0x02CA,0x0000,0x0307,0x0308,0x0000,
7291 0x0309,0x0000,0x0000,0x030A,0x030B,0x02EC,0x02ED,0x02EE,
7292 0x0AF1,0x0B41,0x0B91,0x0BE1,0x0C31,0x0C81,0x0CD1,0x0D21,
7293 0x0732,0x0782,0x07D2,0x0822,0x0872,0x08C2,0x0912,0x0962,
7294 0x0730,0x0780,0x07D0,0x0820,0x0870,0x08C0,0x0910,0x0960,
7295 0x09B0,0x0A00,0x0A50,0x0AA0,0x0AF0,0x0B40,0x0B90,0x0BE0,
7296 0x0C30,0x0C80,0x0CD0,0x0D20,0x0731,0x0781,0x07D1,0x0821,
7297 0x0871,0x08C1,0x0911,0x0961,0x09B1,0x0A01,0x0A51,0x0AA1,
7298 0x1130,0x1180,0x11D0,0x1220,0x1270,0x12C0,0x1310,0x1360,
7299 0x13B0,0x1400,0x1450,0x14A0,0x14F0,0x1540,0x1590,0x15E0,
7300 0x1630,0x1680,0x16D0,0x1720,0x1131,0x1181,0x11D1,0x1221,
7301 0x1271,0x12C1,0x1311,0x1361,0x13B1,0x1401,0x1451,0x14A1,
7302 0x14F1,0x1541,0x1591,0x15E1,0x1631,0x1681,0x16D1,0x1721,
7303 0x1132,0x1182,0x11D2,0x1222,0x1272,0x12C2,0x1312,0x1362,
7304 0x09B2,0x13B2,0x0A02,0x1402,0x0A52,0x1452,0x0AA2,0x14A2,
7305 0x0AF2,0x14F2,0x0B42,0x1542,0x0B92,0x1592,0x0BE2,0x15E2,
7306 0x0C32,0x1632,0x0C82,0x1682,0x0CD2,0x16D2,0x0D22,0x1722,
7307 0x0733,0x1133,0x0783,0x1183,0x07D3,0x11D3,0x0823,0x1223,
7308 0x0873,0x1273,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7309 0x0000,0x0000,0x0913,0x1313,0x0963,0x1363,0x09B3,0x13B3,
7310 0x0A03,0x1403,0x0A53,0x1453,0x0AA3,0x14A3,0x0AF3,0x14F3,
7311 0x0B43,0x1543,0x0B93,0x1593,0x0BE3,0x15E3,0x0C33,0x1633,
7312 0x0C83,0x1683,0x0CD3,0x16D3,0x0D23,0x1723,0x0734,0x1134,
7313 0x0784,0x1184,0x07D4,0x11D4,0x0824,0x1224,0x0874,0x1274,
7314 0x08C4,0x12C4,0x0914,0x1314,0x0964,0x1364,0x09B4,0x13B4,
7315 0x0A04,0x1404,0x0A54,0x1454,0x0AA4,0x14A4,0x0AF4,0x14F4,
7316 0x0B44,0x0B94,0x1594,0x0BE4,0x15E4,0x0C34,0x1634,0x0C84,
7317 0x1684,0x0CD4,0x16D4,0x0D24,0x1724,0x0735,0x1135,0x0000,
7318 0x07D5,0x11D5,0x0825,0x1225,0x0875,0x1275,0x08C5,0x12C5,
7319 0x0915,0x1315,0x0965,0x1365,0x09B5,0x13B5,0x0A05,0x1405,
7320 0x0A55,0x1455,0x0AA5,0x14A5,0x0AF5,0x14F5,0x0B45,0x1545,
7321 0x0B95,0x1595,0x0BE5,0x15E5,0x0C35,0x1635,0x0C85,0x1685,
7322 0x0CD5,0x16D5,0x0D25,0x1725,0x0736,0x1136,0x0786,0x1186,
7323 0x07D6,0x11D6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7324 0x0A06,0x1406,0x0A56,0x1456,0x0AA6,0x14A6,0x0AF6,0x14F6,
7325 0x0B46,0x1546,0x0B96,0x1596,0x0BE6,0x15E6,0x0C36,0x1636,
7326 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7327 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7328 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7329 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7330 0x0000,0x0787,0x07D7,0x0827,0x0877,0x08C7,0x0917,0x0967,
7331 0x09B7,0x0A07,0x0A57,0x0AA7,0x0AF7,0x0B47,0x0B97,0x0BE7,
7332 0x0C37,0x0C87,0x0CD7,0x0D27,0x0738,0x0788,0x07D8,0x0828,
7333 0x0878,0x08C8,0x0918,0x0968,0x09B8,0x0A08,0x0A58,0x0AA8,
7334 0x0AF8,0x0B48,0x0B98,0x0BE8,0x0C38,0x0C88,0x0000,0x0000,
7335 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7336 0x0000,0x1187,0x11D7,0x1227,0x1277,0x12C7,0x1317,0x1367,
7337 0x13B7,0x1407,0x1457,0x14A7,0x14F7,0x1547,0x1597,0x15E7,
7338 0x1637,0x1687,0x16D7,0x1727,0x1138,0x1188,0x11D8,0x1228,
7339 0x1278,0x12C8,0x1318,0x1368,0x13B8,0x1408,0x1458,0x14A8,
7340 0x14F8,0x1548,0x1598,0x15E8,0x1638,0x1688,0x0000,0x0000,
7341 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7342 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7343 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7344 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7345 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7346 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7347 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7348 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7349 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7350 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7351 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7352 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7353 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7354 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7355 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
7356 };
7357
7358
7359 /* 1E00-1FFF */
7360 static const uint16 uni_1E00_1FFF[512]=
7361 {
7362 0x076C,0x116C,0x07BC,0x11BC,0x080C,0x120C,0x085C,0x125C,
7363 0x08AC,0x12AC,0x08FC,0x12FC,0x094C,0x134C,0x099C,0x139C,
7364 0x09EC,0x13EC,0x0A3C,0x143C,0x0A8C,0x148C,0x0ADC,0x14DC,
7365 0x0B2C,0x152C,0x0B7C,0x157C,0x0BCC,0x15CC,0x0C1C,0x161C,
7366 0x0C6C,0x166C,0x0CBC,0x16BC,0x0D0C,0x170C,0x0D5C,0x175C,
7367 0x076D,0x116D,0x07BD,0x11BD,0x080D,0x120D,0x085D,0x125D,
7368 0x08AD,0x12AD,0x08FD,0x12FD,0x094D,0x134D,0x099D,0x139D,
7369 0x09ED,0x13ED,0x0A3D,0x143D,0x0A8D,0x148D,0x0ADD,0x14DD,
7370 0x0B2D,0x152D,0x0B7D,0x157D,0x0BCD,0x15CD,0x0C1D,0x161D,
7371 0x0C6D,0x166D,0x0CBD,0x16BD,0x0D0D,0x170D,0x0D5D,0x175D,
7372 0x076E,0x116E,0x07BE,0x11BE,0x080E,0x120E,0x085E,0x125E,
7373 0x08AE,0x12AE,0x08FE,0x12FE,0x094E,0x134E,0x099E,0x139E,
7374 0x0770,0x13EE,0x0A3E,0x143E,0x0A8E,0x148E,0x0ADE,0x14DE,
7375 0x0B2E,0x152E,0x0B7E,0x157E,0x0BCE,0x15CE,0x0C1E,0x161E,
7376 0x0C6E,0x166E,0x0CBE,0x16BE,0x0D0E,0x170E,0x0D5E,0x175E,
7377 0x076F,0x116F,0x07BF,0x11BF,0x080F,0x120F,0x085F,0x125F,
7378 0x08AF,0x12AF,0x08FF,0x12FF,0x094F,0x134F,0x099F,0x139F,
7379 0x09EF,0x13EF,0x0A3F,0x143F,0x0A8F,0x148F,0x0ADF,0x14DF,
7380 0x0B2F,0x152F,0x0B7F,0x157F,0x0BCF,0x15CF,0x161F,0x166F,
7381 0x16BF,0x170F,0x175F,0x1170,0x0000,0x0000,0x0000,0x0000,
7382 0x0900,0x1300,0x0950,0x1350,0x09A0,0x13A0,0x09F0,0x13F0,
7383 0x0A40,0x1440,0x0A90,0x1490,0x0AE0,0x14E0,0x0B30,0x1530,
7384 0x0B80,0x1580,0x0BD0,0x15D0,0x0C20,0x1620,0x0C70,0x1670,
7385 0x0CC0,0x16C0,0x0D10,0x1710,0x0D60,0x1760,0x0771,0x1171,
7386 0x07C1,0x11C1,0x0811,0x1211,0x0861,0x1261,0x08B1,0x12B1,
7387 0x0901,0x1301,0x0951,0x1351,0x09A1,0x13A1,0x09F1,0x13F1,
7388 0x0A41,0x1441,0x0A91,0x1491,0x0AE1,0x14E1,0x0B31,0x1531,
7389 0x0B81,0x1581,0x0BD1,0x15D1,0x0C21,0x1621,0x0C71,0x1671,
7390 0x0CC1,0x16C1,0x0D11,0x1711,0x0D61,0x1761,0x0772,0x1172,
7391 0x07C2,0x11C2,0x0812,0x1212,0x0862,0x1262,0x08B2,0x12B2,
7392 0x0902,0x1302,0x0952,0x1352,0x09A2,0x13A2,0x09F2,0x13F2,
7393 0x0A42,0x1442,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
7394 0x1173,0x11C3,0x1213,0x1263,0x12B3,0x1303,0x1353,0x13A3,
7395 0x0773,0x07C3,0x0813,0x0863,0x08B3,0x0903,0x0953,0x09A3,
7396 0x13F3,0x1443,0x1493,0x14E3,0x1533,0x1583,0x0000,0x0000,
7397 0x09F3,0x0A43,0x0A93,0x0AE3,0x0B33,0x0B83,0x0000,0x0000,
7398 0x1713,0x1763,0x1174,0x11C4,0x1214,0x1264,0x12B4,0x1304,
7399 0x0D13,0x0D63,0x0774,0x07C4,0x0814,0x0864,0x08B4,0x0904,
7400 0x1354,0x13A4,0x13F4,0x1444,0x1494,0x14E4,0x1534,0x1584,
7401 0x0954,0x09A4,0x09F4,0x0A44,0x0A94,0x0AE4,0x0B34,0x0B84,
7402 0x15D4,0x1624,0x1674,0x16C4,0x1714,0x1764,0x0000,0x0000,
7403 0x0BD4,0x0C24,0x0C74,0x0CC4,0x0D14,0x0D64,0x0000,0x0000,
7404 0x12B5,0x1305,0x1355,0x13A5,0x13F5,0x1445,0x1495,0x14E5,
7405 0x0000,0x0905,0x0000,0x09A5,0x0000,0x0A45,0x0000,0x0AE5,
7406 0x1675,0x16C5,0x1715,0x1765,0x1176,0x11C6,0x1216,0x1266,
7407 0x0C75,0x0CC5,0x0D15,0x0D65,0x0776,0x07C6,0x0816,0x0866,
7408 0x12B6,0x1306,0x1356,0x13A6,0x13F6,0x1446,0x1496,0x14E6,
7409 0x1536,0x1586,0x15D6,0x1626,0x1676,0x16C6,0x0000,0x0000,
7410 0x1177,0x11C7,0x1217,0x1267,0x12B7,0x1307,0x1357,0x13A7,
7411 0x0777,0x07C7,0x0817,0x0867,0x08B7,0x0907,0x0957,0x09A7,
7412 0x13F7,0x1447,0x1497,0x14E7,0x1537,0x1587,0x15D7,0x1627,
7413 0x09F7,0x0A47,0x0A97,0x0AE7,0x0B37,0x0B87,0x0BD7,0x0C27,
7414 0x1677,0x16C7,0x1717,0x1767,0x1178,0x11C8,0x1218,0x1268,
7415 0x0C77,0x0CC7,0x0D17,0x0D67,0x0778,0x07C8,0x0818,0x0868,
7416 0x12B8,0x1308,0x1358,0x13A8,0x13F8,0x0000,0x1498,0x14E8,
7417 0x08B8,0x0908,0x08B6,0x0906,0x09A8,0x0000,0x0000,0x0000,
7418 0x0000,0x0000,0x1538,0x1588,0x15D8,0x0000,0x1678,0x16C8,
7419 0x0956,0x09A6,0x09F6,0x0A46,0x0B88,0x0000,0x0000,0x0000,
7420 0x1718,0x1768,0x1179,0x11C9,0x0000,0x0000,0x12B9,0x1309,
7421 0x0D18,0x0D68,0x0A96,0x0AE6,0x0000,0x0000,0x0000,0x0000,
7422 0x13A9,0x13F9,0x1449,0x1499,0x14E9,0x1539,0x1589,0x15D9,
7423 0x09A9,0x09F9,0x0BD6,0x0C26,0x0B39,0x0000,0x0000,0x0000,
7424 0x0000,0x0000,0x16C9,0x1719,0x0000,0x0000,0x11CA,0x121A,
7425 0x0B36,0x0B86,0x0C76,0x0CC6,0x0D19,0x0000,0x0000,0x0000
7426 };
7427
7428
7429 /* 2160-217F */
7430 static const uint16 uni_2160_217F[32]=
7431 {
7432 0x0739,0x0789,0x07D9,0x0829,0x0879,0x08C9,0x0919,0x0969,
7433 0x09B9,0x0A09,0x0A59,0x0AA9,0x0AF9,0x0B49,0x0B99,0x0BE9,
7434 0x1139,0x1189,0x11D9,0x1229,0x1279,0x12C9,0x1319,0x1369,
7435 0x13B9,0x1409,0x1459,0x14A9,0x14F9,0x1549,0x1599,0x15E9
7436 };
7437
7438
7439 /* 24B0-24EF */
7440 static const uint16 uni_24B0_24EF[64]=
7441 {
7442 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0511,0x0512,
7443 0x0513,0x0514,0x0515,0x0516,0x0517,0x0518,0x0519,0x051A,
7444 0x051B,0x051C,0x051D,0x051E,0x051F,0x0520,0x0521,0x0522,
7445 0x0523,0x0524,0x0525,0x0526,0x0527,0x0528,0x0529,0x052A,
7446 0x0531,0x0532,0x0533,0x0534,0x0535,0x0536,0x0537,0x0538,
7447 0x0539,0x053A,0x053B,0x053C,0x053D,0x053E,0x053F,0x0540,
7448 0x0541,0x0542,0x0543,0x0544,0x0545,0x0546,0x0547,0x0548,
7449 0x0549,0x054A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
7450 };
7451
7452
7453 /* FF20-FF5F */
7454 static const uint16 uni_FF20_FF5F[64]=
7455 {
7456 0x0000,0x0560,0x05B0,0x0600,0x0650,0x06A0,0x06F0,0x0740,
7457 0x0790,0x07E0,0x0830,0x0880,0x08D0,0x0920,0x0970,0x09C0,
7458 0x0A10,0x0A60,0x0AB0,0x0B00,0x0B50,0x0BA0,0x0BF0,0x0C40,
7459 0x0C90,0x0CE0,0x0D30,0x0000,0x0000,0x0000,0x0000,0x0000,
7460 0x0000,0x0F60,0x0FB0,0x1000,0x1050,0x10A0,0x10F0,0x1140,
7461 0x1190,0x11E0,0x1230,0x1280,0x12D0,0x1320,0x1370,0x13C0,
7462 0x1410,0x1460,0x14B0,0x1500,0x1550,0x15A0,0x15F0,0x1640,
7463 0x1690,0x16E0,0x1730,0x0000,0x0000,0x0000,0x0000,0x0000
7464 };
7465
7466
7467
7468
7469
7470 /*
7471 Returns
7472 a number 0..15, if a valid HEX digit in lower case,
7473 -1 otherwise.
7474 */
7475
hexlo(int x)7476 static int hexlo(int x)
7477 {
7478 static char hex_lo_digit[256]=
7479 {
7480 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7481 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7482 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* !"#$%&'()*+,-./ */
7483 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1, /* 0123456789:;<=>? */
7484 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* @ABCDEFGHIJKLMNO */
7485 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* PQRSTUVWXYZ[\]^_ */
7486 -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* `abcdefghijklmno */
7487 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* pqrstuvwxyz{|}~. */
7488 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7489 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7490 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7491 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7492 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7493 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7494 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7495 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7496 };
7497 return hex_lo_digit[(unsigned int) x];
7498 }
7499
7500
7501 /*
7502 Safe characters:
7503 '\0' NULL
7504 A..Z capital letters,
7505 a..z small letters
7506 0..9 digits
7507 _ underscore
7508 */
7509 static const char filename_safe_char[128]=
7510 {
7511 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
7512 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
7513 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* !"#$%&'()*+,-./ */
7514 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, /* 0123456789:;<=>? */
7515 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* @ABCDEFGHIJKLMNO */
7516 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, /* PQRSTUVWXYZ[\]^_ */
7517 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* `abcdefghijklmno */
7518 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz{|}~. */
7519 };
7520
7521 #define MY_FILENAME_ESCAPE '@'
7522
7523 static int
my_mb_wc_filename(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),my_wc_t * pwc,const uchar * s,const uchar * e)7524 my_mb_wc_filename(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
7525 my_wc_t *pwc, const uchar *s, const uchar *e)
7526 {
7527 int byte1, byte2;
7528 if (s >= e)
7529 return MY_CS_TOOSMALL;
7530
7531 if (*s < 128 && filename_safe_char[*s])
7532 {
7533 *pwc= *s;
7534 return 1;
7535 }
7536
7537 if (*s != MY_FILENAME_ESCAPE)
7538 return MY_CS_ILSEQ;
7539
7540 if (s + 3 > e)
7541 return MY_CS_TOOSMALL3;
7542
7543 byte1= s[1];
7544 if (byte1 == 0)
7545 return MY_CS_ILSEQ; /* avoid possible out-of-bounds read */
7546 byte2= s[2];
7547
7548 if (byte1 >= 0x30 && byte1 <= 0x7F &&
7549 byte2 >= 0x30 && byte2 <= 0x7F)
7550 {
7551 int code= (byte1 - 0x30) * 80 + byte2 - 0x30;
7552 if (code < 5994 && touni[code])
7553 {
7554 *pwc= touni[code];
7555 return 3;
7556 }
7557 if (byte1 == '@' && byte2 == '@')
7558 {
7559 *pwc= 0;
7560 return 3;
7561 }
7562 }
7563
7564 if (s + 4 > e)
7565 return MY_CS_TOOSMALL4;
7566
7567 if ((byte1= hexlo(byte1)) >= 0 &&
7568 (byte2= hexlo(byte2)) >= 0)
7569 {
7570 int byte3= hexlo(s[3]);
7571 int byte4= hexlo(s[4]);
7572 if (byte3 >=0 && byte4 >=0)
7573 {
7574 *pwc= (byte1 << 12) + (byte2 << 8) + (byte3 << 4) + byte4;
7575 return 5;
7576 }
7577 }
7578
7579 return MY_CS_ILSEQ;
7580 }
7581
7582
7583 static int
my_wc_mb_filename(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),my_wc_t wc,uchar * s,uchar * e)7584 my_wc_mb_filename(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
7585 my_wc_t wc, uchar *s, uchar *e)
7586 {
7587 int code;
7588 char hex[]= "0123456789abcdef";
7589
7590 if (s >= e)
7591 return MY_CS_TOOSMALL;
7592
7593 if (wc < 128 && filename_safe_char[wc])
7594 {
7595 *s= (uchar) wc;
7596 return 1;
7597 }
7598
7599 if (s + 3 > e)
7600 return MY_CS_TOOSMALL3;
7601
7602 *s++= MY_FILENAME_ESCAPE;
7603 if ((wc >= 0x00C0 && wc <= 0x05FF && (code= uni_0C00_05FF[wc - 0x00C0])) ||
7604 (wc >= 0x1E00 && wc <= 0x1FFF && (code= uni_1E00_1FFF[wc - 0x1E00])) ||
7605 (wc >= 0x2160 && wc <= 0x217F && (code= uni_2160_217F[wc - 0x2160])) ||
7606 (wc >= 0x24B0 && wc <= 0x24EF && (code= uni_24B0_24EF[wc - 0x24B0])) ||
7607 (wc >= 0xFF20 && wc <= 0xFF5F && (code= uni_FF20_FF5F[wc - 0xFF20])))
7608 {
7609 *s++= (code / 80) + 0x30;
7610 *s++= (code % 80) + 0x30;
7611 return 3;
7612 }
7613
7614 /* Non letter */
7615 if (s + 5 > e)
7616 return MY_CS_TOOSMALL5;
7617
7618 *s++= hex[(wc >> 12) & 15];
7619 *s++= hex[(wc >> 8) & 15];
7620 *s++= hex[(wc >> 4) & 15];
7621 *s++= hex[(wc) & 15];
7622 return 5;
7623 }
7624
7625
7626 static MY_COLLATION_HANDLER my_collation_filename_handler =
7627 {
7628 NULL, /* init */
7629 my_strnncoll_utf8,
7630 my_strnncollsp_utf8,
7631 my_strnxfrm_unicode,
7632 my_strnxfrmlen_utf8,
7633 my_like_range_mb,
7634 my_wildcmp_utf8,
7635 my_strcasecmp_utf8,
7636 my_instr_mb,
7637 my_hash_sort_utf8,
7638 my_propagate_complex
7639 };
7640
7641 static MY_CHARSET_HANDLER my_charset_filename_handler=
7642 {
7643 NULL, /* init */
7644 my_ismbchar_utf8,
7645 my_mbcharlen_utf8,
7646 my_numchars_mb,
7647 my_charpos_mb,
7648 my_well_formed_len_mb,
7649 my_lengthsp_8bit,
7650 my_numcells_mb,
7651 my_mb_wc_filename,
7652 my_wc_mb_filename,
7653 my_mb_ctype_mb,
7654 my_caseup_str_utf8,
7655 my_casedn_str_utf8,
7656 my_caseup_utf8,
7657 my_casedn_utf8,
7658 my_snprintf_8bit,
7659 my_long10_to_str_8bit,
7660 my_longlong10_to_str_8bit,
7661 my_fill_8bit,
7662 my_strntol_8bit,
7663 my_strntoul_8bit,
7664 my_strntoll_8bit,
7665 my_strntoull_8bit,
7666 my_strntod_8bit,
7667 my_strtoll10_8bit,
7668 my_strntoull10rnd_8bit,
7669 my_scan_8bit
7670 };
7671
7672
7673
7674 CHARSET_INFO my_charset_filename=
7675 {
7676 17,0,0, /* number */
7677 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_HIDDEN|MY_CS_NONASCII,
7678 "filename", /* cs name */
7679 "filename", /* name */
7680 "", /* comment */
7681 NULL, /* tailoring */
7682 ctype_utf8, /* ctype */
7683 to_lower_utf8, /* to_lower */
7684 to_upper_utf8, /* to_upper */
7685 to_upper_utf8, /* sort_order */
7686 NULL, /* uca */
7687 NULL, /* tab_to_uni */
7688 NULL, /* tab_from_uni */
7689 &my_unicase_default,/* caseinfo */
7690 NULL, /* state_map */
7691 NULL, /* ident_map */
7692 1, /* strxfrm_multiply */
7693 1, /* caseup_multiply */
7694 1, /* casedn_multiply */
7695 1, /* mbminlen */
7696 5, /* mbmaxlen */
7697 1, /* mbmaxlenlen */
7698 0, /* min_sort_char */
7699 0xFFFF, /* max_sort_char */
7700 ' ', /* pad char */
7701 0, /* escape_with_backslash_is_dangerous */
7702 1, /* levels_for_compare */
7703 1, /* levels_for_order */
7704 &my_charset_filename_handler,
7705 &my_collation_filename_handler
7706 };
7707
7708
7709 #ifdef MY_TEST_UTF8
7710 #include <stdio.h>
7711
test_mb(const CHARSET_INFO * cs,uchar * s)7712 static void test_mb(const CHARSET_INFO *cs, uchar *s)
7713 {
7714 while(*s)
7715 {
7716 if (my_ismbhead_utf8(cs,*s))
7717 {
7718 uint len=my_mbcharlen_utf8(cs,*s);
7719 while(len--)
7720 {
7721 printf("%c",*s);
7722 s++;
7723 }
7724 printf("\n");
7725 }
7726 else
7727 {
7728 printf("%c\n",*s);
7729 s++;
7730 }
7731 }
7732 }
7733
main()7734 int main()
7735 {
7736 char str[1024]=" utf8 test проба ПЕРА по-РУССКИ";
7737 CHARSET_INFO *cs;
7738
7739 test_mb(cs,(uchar*)str);
7740
7741 printf("orig :'%s'\n",str);
7742
7743 my_caseup_utf8(cs,str,15);
7744 printf("caseup :'%s'\n",str);
7745
7746 my_caseup_str_utf8(cs,str);
7747 printf("caseup_str:'%s'\n",str);
7748
7749 my_casedn_utf8(cs,str,15);
7750 printf("casedn :'%s'\n",str);
7751
7752 my_casedn_str_utf8(cs,str);
7753 printf("casedn_str:'%s'\n",str);
7754
7755 return 0;
7756 }
7757
7758 #endif
7759
7760 #endif /* HAVE_CHARSET_UTF8 */
7761
7762
7763
7764 #ifdef HAVE_CHARSET_utf8mb4
7765
7766 /*
7767 We consider bytes with code more than 127 as a letter.
7768 This garantees that word boundaries work fine with regular
7769 expressions. Note, there is no need to mark byte 255 as a
7770 letter, it is illegal byte in UTF8.
7771 */
7772 static const uchar ctype_utf8mb4[]=
7773 {
7774 0,
7775 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
7776 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
7777 72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
7778 132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
7779 16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7780 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
7781 16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7782 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
7783 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7784 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7785 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7786 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7787 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7788 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7789 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7790 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
7791 };
7792
7793
7794 static const uchar to_lower_utf8mb4[]=
7795 {
7796 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
7797 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
7798 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
7799 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
7800 64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
7801 112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
7802 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
7803 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
7804 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
7805 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
7806 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
7807 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
7808 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
7809 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
7810 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
7811 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
7812 };
7813
7814
7815 static const uchar to_upper_utf8mb4[]=
7816 {
7817 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
7818 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
7819 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
7820 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
7821 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
7822 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
7823 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
7824 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
7825 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
7826 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
7827 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
7828 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
7829 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
7830 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
7831 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
7832 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
7833 };
7834
7835
7836 static inline int
bincmp_utf8mb4(const uchar * s,const uchar * se,const uchar * t,const uchar * te)7837 bincmp_utf8mb4(const uchar *s, const uchar *se,
7838 const uchar *t, const uchar *te)
7839 {
7840 int slen= (int) (se - s), tlen= (int) (te - t);
7841 int len= MY_MIN(slen, tlen);
7842 int cmp= memcmp(s, t, len);
7843 return cmp ? cmp : slen - tlen;
7844 }
7845
7846
7847 static int
my_mb_wc_utf8mb4(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),my_wc_t * pwc,const uchar * s,const uchar * e)7848 my_mb_wc_utf8mb4(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
7849 my_wc_t * pwc, const uchar *s, const uchar *e)
7850 {
7851 uchar c;
7852
7853 if (s >= e)
7854 return MY_CS_TOOSMALL;
7855
7856 c= s[0];
7857 if (c < 0x80)
7858 {
7859 *pwc= c;
7860 return 1;
7861 }
7862 else if (c < 0xc2)
7863 return MY_CS_ILSEQ;
7864 else if (c < 0xe0)
7865 {
7866 if (s + 2 > e) /* We need 2 characters */
7867 return MY_CS_TOOSMALL2;
7868
7869 if (!(IS_CONTINUATION_BYTE(s[1])))
7870 return MY_CS_ILSEQ;
7871
7872 *pwc= ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
7873 return 2;
7874 }
7875 else if (c < 0xf0)
7876 {
7877 if (s + 3 > e) /* We need 3 characters */
7878 return MY_CS_TOOSMALL3;
7879
7880 if (!(IS_CONTINUATION_BYTE(s[1]) && IS_CONTINUATION_BYTE(s[2]) &&
7881 (c >= 0xe1 || s[1] >= 0xa0)))
7882 return MY_CS_ILSEQ;
7883
7884 *pwc= ((my_wc_t) (c & 0x0f) << 12) |
7885 ((my_wc_t) (s[1] ^ 0x80) << 6) |
7886 (my_wc_t) (s[2] ^ 0x80);
7887 return 3;
7888 }
7889 else if (c < 0xf5)
7890 {
7891 if (s + 4 > e) /* We need 4 characters */
7892 return MY_CS_TOOSMALL4;
7893
7894 /*
7895 UTF-8 quick four-byte mask:
7896 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
7897 Encoding allows to encode U+00010000..U+001FFFFF
7898
7899 The maximum character defined in the Unicode standard is U+0010FFFF.
7900 Higher characters U+00110000..U+001FFFFF are not used.
7901
7902 11110000.10010000.10xxxxxx.10xxxxxx == F0.90.80.80 == U+00010000 (min)
7903 11110100.10001111.10111111.10111111 == F4.8F.BF.BF == U+0010FFFF (max)
7904
7905 Valid codes:
7906 [F0][90..BF][80..BF][80..BF]
7907 [F1][80..BF][80..BF][80..BF]
7908 [F2][80..BF][80..BF][80..BF]
7909 [F3][80..BF][80..BF][80..BF]
7910 [F4][80..8F][80..BF][80..BF]
7911 */
7912
7913 if (!(IS_CONTINUATION_BYTE(s[1]) &&
7914 IS_CONTINUATION_BYTE(s[2]) &&
7915 IS_CONTINUATION_BYTE(s[3]) &&
7916 (c >= 0xf1 || s[1] >= 0x90) &&
7917 (c <= 0xf3 || s[1] <= 0x8F)))
7918 return MY_CS_ILSEQ;
7919 *pwc = ((my_wc_t) (c & 0x07) << 18) |
7920 ((my_wc_t) (s[1] ^ 0x80) << 12) |
7921 ((my_wc_t) (s[2] ^ 0x80) << 6) |
7922 (my_wc_t) (s[3] ^ 0x80);
7923 return 4;
7924 }
7925 return MY_CS_ILSEQ;
7926 }
7927
7928
7929 /*
7930 The same as above, but without range check
7931 for example, for a null-terminated string
7932 */
7933 static int
my_mb_wc_utf8mb4_no_range(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),my_wc_t * pwc,const uchar * s)7934 my_mb_wc_utf8mb4_no_range(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
7935 my_wc_t *pwc, const uchar *s)
7936 {
7937 uchar c;
7938
7939 c= s[0];
7940 if (c < 0x80)
7941 {
7942 *pwc = c;
7943 return 1;
7944 }
7945
7946 if (c < 0xc2)
7947 return MY_CS_ILSEQ;
7948
7949 if (c < 0xe0)
7950 {
7951 if (!IS_CONTINUATION_BYTE(s[1]))
7952 return MY_CS_ILSEQ;
7953
7954 *pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
7955 return 2;
7956 }
7957
7958 if (c < 0xf0)
7959 {
7960 if (!(IS_CONTINUATION_BYTE(s[1]) &&
7961 IS_CONTINUATION_BYTE(s[2]) &&
7962 (c >= 0xe1 || s[1] >= 0xa0)))
7963 return MY_CS_ILSEQ;
7964 *pwc= ((my_wc_t) (c & 0x0f) << 12) |
7965 ((my_wc_t) (s[1] ^ 0x80) << 6) |
7966 (my_wc_t) (s[2] ^ 0x80);
7967
7968 return 3;
7969 }
7970 else if (c < 0xf5)
7971 {
7972 if (!(IS_CONTINUATION_BYTE(s[1]) &&
7973 IS_CONTINUATION_BYTE(s[2]) &&
7974 IS_CONTINUATION_BYTE(s[3]) &&
7975 (c >= 0xf1 || s[1] >= 0x90) &&
7976 (c <= 0xf3 || s[1] <= 0x8F)))
7977 return MY_CS_ILSEQ;
7978 *pwc = ((my_wc_t) (c & 0x07) << 18) |
7979 ((my_wc_t) (s[1] ^ 0x80) << 12) |
7980 ((my_wc_t) (s[2] ^ 0x80) << 6) |
7981 (my_wc_t) (s[3] ^ 0x80);
7982 return 4;
7983 }
7984 return MY_CS_ILSEQ;
7985 }
7986
7987
7988 static int
my_wc_mb_utf8mb4(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),my_wc_t wc,uchar * r,uchar * e)7989 my_wc_mb_utf8mb4(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
7990 my_wc_t wc, uchar *r, uchar *e)
7991 {
7992 int count;
7993
7994 if (r >= e)
7995 return MY_CS_TOOSMALL;
7996
7997 if (wc < 0x80)
7998 count= 1;
7999 else if (wc < 0x800)
8000 count= 2;
8001 else if (wc < 0x10000)
8002 count= 3;
8003 else if (wc < 0x200000)
8004 count= 4;
8005 else return MY_CS_ILUNI;
8006
8007 if (r + count > e)
8008 return MY_CS_TOOSMALLN(count);
8009
8010 switch (count) {
8011 case 4: r[3] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000; // Fall through
8012 case 3: r[2] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800; // Fall through
8013 case 2: r[1] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0; // Fall through
8014 case 1: r[0] = (uchar) wc;
8015 }
8016 return count;
8017 }
8018
8019
8020 /*
8021 The same as above, but without range check.
8022 */
8023 static int
my_wc_mb_utf8mb4_no_range(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),my_wc_t wc,uchar * r)8024 my_wc_mb_utf8mb4_no_range(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
8025 my_wc_t wc, uchar *r)
8026 {
8027 int count;
8028
8029 if (wc < 0x80)
8030 count= 1;
8031 else if (wc < 0x800)
8032 count= 2;
8033 else if (wc < 0x10000)
8034 count= 3;
8035 else if (wc < 0x200000)
8036 count= 4;
8037 else
8038 return MY_CS_ILUNI;
8039
8040 switch (count)
8041 {
8042 case 4: r[3]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x10000; // Fall through
8043 case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800; // Fall through
8044 case 2: r[1]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0; // Fall through
8045 case 1: r[0]= (uchar) wc;
8046 }
8047 return count;
8048 }
8049
8050
8051 static inline void
my_tolower_utf8mb4(const MY_UNICASE_INFO * uni_plane,my_wc_t * wc)8052 my_tolower_utf8mb4(const MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
8053 {
8054 if (*wc <= uni_plane->maxchar)
8055 {
8056 const MY_UNICASE_CHARACTER *page;
8057 if ((page= uni_plane->page[(*wc >> 8)]))
8058 *wc= page[*wc & 0xFF].tolower;
8059 }
8060 }
8061
8062
8063 static inline void
my_toupper_utf8mb4(const MY_UNICASE_INFO * uni_plane,my_wc_t * wc)8064 my_toupper_utf8mb4(const MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
8065 {
8066 if (*wc <= uni_plane->maxchar)
8067 {
8068 const MY_UNICASE_CHARACTER *page;
8069 if ((page= uni_plane->page[(*wc >> 8)]))
8070 *wc= page[*wc & 0xFF].toupper;
8071 }
8072 }
8073
8074
8075 static size_t
my_caseup_utf8mb4(const CHARSET_INFO * cs,char * src,size_t srclen,char * dst,size_t dstlen)8076 my_caseup_utf8mb4(const CHARSET_INFO *cs, char *src, size_t srclen,
8077 char *dst, size_t dstlen)
8078 {
8079 my_wc_t wc;
8080 int srcres, dstres;
8081 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
8082 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
8083 assert(src != dst || cs->caseup_multiply == 1);
8084
8085 while ((src < srcend) &&
8086 (srcres= my_mb_wc_utf8mb4(cs, &wc,
8087 (uchar *) src, (uchar*) srcend)) > 0)
8088 {
8089 my_toupper_utf8mb4(uni_plane, &wc);
8090 if ((dstres= my_wc_mb_utf8mb4(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
8091 break;
8092 src+= srcres;
8093 dst+= dstres;
8094 }
8095 return (size_t) (dst - dst0);
8096 }
8097
8098
8099 static void
my_hash_sort_utf8mb4(const CHARSET_INFO * cs,const uchar * s,size_t slen,ulong * n1,ulong * n2)8100 my_hash_sort_utf8mb4(const CHARSET_INFO *cs, const uchar *s, size_t slen,
8101 ulong *n1, ulong *n2)
8102 {
8103 my_wc_t wc;
8104 int res;
8105 const uchar *e= s + slen;
8106 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
8107 ulong tmp1;
8108 ulong tmp2;
8109 uint ch;
8110
8111 /*
8112 Remove end space. We do this to be able to compare
8113 'A ' and 'A' as identical
8114 */
8115 while (e > s && e[-1] == ' ')
8116 e--;
8117
8118 tmp1= *n1;
8119 tmp2= *n2;
8120
8121 while ((res= my_mb_wc_utf8mb4(cs, &wc, (uchar*) s, (uchar*) e)) > 0)
8122 {
8123 my_tosort_unicode(uni_plane, &wc, cs->state);
8124
8125 ch= (wc & 0xFF);
8126 tmp1^= (((tmp1 & 63) + tmp2) * ch) + (tmp1 << 8);
8127 tmp2+= 3;
8128
8129 ch= (wc >> 8) & 0xFF;
8130 tmp1^= (((tmp1 & 63) + tmp2) * ch) + (tmp1 << 8);
8131 tmp2+= 3;
8132
8133 if (wc > 0xFFFF)
8134 {
8135 /*
8136 Put the highest byte only if it is non-zero,
8137 to make hash functions for utf8mb3 and utf8mb4
8138 compatible for BMP characters.
8139 This is useful to keep order of records in
8140 test results, e.g. for "SHOW GRANTS".
8141 */
8142 ch= (wc >> 16) & 0xFF;
8143 tmp1^= (((tmp1 & 63) + tmp2) * ch) + (tmp1 << 8);
8144 tmp2+= 3;
8145 }
8146 s+= res;
8147 }
8148
8149 *n1= tmp1;
8150 *n2= tmp2;
8151 }
8152
8153
8154 static size_t
my_caseup_str_utf8mb4(const CHARSET_INFO * cs,char * src)8155 my_caseup_str_utf8mb4(const CHARSET_INFO *cs, char *src)
8156 {
8157 my_wc_t wc;
8158 int srcres, dstres;
8159 char *dst= src, *dst0= src;
8160 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
8161 assert(cs->caseup_multiply == 1);
8162
8163 while (*src &&
8164 (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (uchar *) src)) > 0)
8165 {
8166 my_toupper_utf8mb4(uni_plane, &wc);
8167 if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (uchar*) dst)) <= 0)
8168 break;
8169 src+= srcres;
8170 dst+= dstres;
8171 }
8172 *dst= '\0';
8173 return (size_t) (dst - dst0);
8174 }
8175
8176
8177 static size_t
my_casedn_utf8mb4(const CHARSET_INFO * cs,char * src,size_t srclen,char * dst,size_t dstlen)8178 my_casedn_utf8mb4(const CHARSET_INFO *cs,
8179 char *src, size_t srclen,
8180 char *dst, size_t dstlen)
8181 {
8182 my_wc_t wc;
8183 int srcres, dstres;
8184 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
8185 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
8186 assert(src != dst || cs->casedn_multiply == 1);
8187
8188 while ((src < srcend) &&
8189 (srcres= my_mb_wc_utf8mb4(cs, &wc,
8190 (uchar*) src, (uchar*) srcend)) > 0)
8191 {
8192 my_tolower_utf8mb4(uni_plane, &wc);
8193 if ((dstres= my_wc_mb_utf8mb4(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
8194 break;
8195 src+= srcres;
8196 dst+= dstres;
8197 }
8198 return (size_t) (dst - dst0);
8199 }
8200
8201
8202 static size_t
my_casedn_str_utf8mb4(const CHARSET_INFO * cs,char * src)8203 my_casedn_str_utf8mb4(const CHARSET_INFO *cs, char *src)
8204 {
8205 my_wc_t wc;
8206 int srcres, dstres;
8207 char *dst= src, *dst0= src;
8208 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
8209 assert(cs->casedn_multiply == 1);
8210
8211 while (*src &&
8212 (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (uchar *) src)) > 0)
8213 {
8214 my_tolower_utf8mb4(uni_plane, &wc);
8215 if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (uchar*) dst)) <= 0)
8216 break;
8217 src+= srcres;
8218 dst+= dstres;
8219 }
8220
8221 /*
8222 In rare cases lower string can be shorter than
8223 the original string, for example:
8224
8225 "U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
8226 (which is 0xC4B0 in utf8, i.e. two bytes)
8227
8228 is converted into
8229
8230 "U+0069 LATIN SMALL LETTER I"
8231 (which is 0x69 in utf8, i.e. one byte)
8232
8233 So, we need to put '\0' terminator after converting.
8234 */
8235
8236 *dst= '\0';
8237 return (size_t) (dst - dst0);
8238 }
8239
8240
8241 static int
my_strnncoll_utf8mb4(const CHARSET_INFO * cs,const uchar * s,size_t slen,const uchar * t,size_t tlen,my_bool t_is_prefix)8242 my_strnncoll_utf8mb4(const CHARSET_INFO *cs,
8243 const uchar *s, size_t slen,
8244 const uchar *t, size_t tlen,
8245 my_bool t_is_prefix)
8246 {
8247 my_wc_t s_wc= 0;
8248 my_wc_t t_wc= 0;
8249 const uchar *se= s + slen;
8250 const uchar *te= t + tlen;
8251 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
8252
8253 while ( s < se && t < te )
8254 {
8255 int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
8256 int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
8257
8258 if ( s_res <= 0 || t_res <= 0 )
8259 {
8260 /* Incorrect string, compare bytewise */
8261 return bincmp_utf8mb4(s, se, t, te);
8262 }
8263
8264 my_tosort_unicode(uni_plane, &s_wc, cs->state);
8265 my_tosort_unicode(uni_plane, &t_wc, cs->state);
8266
8267 if ( s_wc != t_wc )
8268 {
8269 return s_wc > t_wc ? 1 : -1;
8270 }
8271
8272 s+= s_res;
8273 t+= t_res;
8274 }
8275 return (int) (t_is_prefix ? (t - te) : ((se - s) - (te - t)));
8276 }
8277
8278
8279 /**
8280
8281 Compare strings, discarding end space
8282
8283 If one string is shorter as the other, then we space extend the other
8284 so that the strings have equal length.
8285
8286 This will ensure that the following things hold:
8287
8288 "a" == "a "
8289 "a\0" < "a"
8290 "a\0" < "a "
8291
8292 @param cs Character set pinter.
8293 @param a First string to compare.
8294 @param a_length Length of 'a'.
8295 @param b Second string to compare.
8296 @param b_length Length of 'b'.
8297 @param diff_if_only_endspace_difference
8298 Set to 1 if the strings should be regarded as different
8299 if they only difference in end space
8300
8301 @return Comparison result.
8302 @retval Negative number, if a less than b.
8303 @retval 0, if a is equal to b
8304 @retval Positive number, if a > b
8305 */
8306
8307 static int
my_strnncollsp_utf8mb4(const CHARSET_INFO * cs,const uchar * s,size_t slen,const uchar * t,size_t tlen,my_bool diff_if_only_endspace_difference)8308 my_strnncollsp_utf8mb4(const CHARSET_INFO *cs,
8309 const uchar *s, size_t slen,
8310 const uchar *t, size_t tlen,
8311 my_bool diff_if_only_endspace_difference)
8312 {
8313 int res;
8314 my_wc_t s_wc= 0;
8315 my_wc_t t_wc= 0;
8316 const uchar *se= s + slen, *te= t + tlen;
8317 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
8318
8319 #ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
8320 diff_if_only_endspace_difference= FALSE;
8321 #endif
8322
8323 while ( s < se && t < te )
8324 {
8325 int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
8326 int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
8327
8328 if ( s_res <= 0 || t_res <= 0 )
8329 {
8330 /* Incorrect string, compare bytewise */
8331 return bincmp_utf8mb4(s, se, t, te);
8332 }
8333
8334 my_tosort_unicode(uni_plane, &s_wc, cs->state);
8335 my_tosort_unicode(uni_plane, &t_wc, cs->state);
8336
8337 if ( s_wc != t_wc )
8338 {
8339 return s_wc > t_wc ? 1 : -1;
8340 }
8341
8342 s+=s_res;
8343 t+=t_res;
8344 }
8345
8346 slen= (size_t) (se-s);
8347 tlen= (size_t) (te-t);
8348 res= 0;
8349
8350 if (slen != tlen)
8351 {
8352 int swap= 1;
8353 if (diff_if_only_endspace_difference)
8354 res= 1; /* Assume 'a' is bigger */
8355 if (slen < tlen)
8356 {
8357 slen= tlen;
8358 s= t;
8359 se= te;
8360 swap= -1;
8361 res= -res;
8362 }
8363 /*
8364 This following loop uses the fact that in UTF-8
8365 all multibyte characters are greater than space,
8366 and all multibyte head characters are greater than
8367 space. It means if we meet a character greater
8368 than space, it always means that the longer string
8369 is greater. So we can reuse the same loop from the
8370 8bit version, without having to process full multibute
8371 sequences.
8372 */
8373 for ( ; s < se; s++)
8374 {
8375 if (*s != ' ')
8376 return (*s < ' ') ? -swap : swap;
8377 }
8378 }
8379 return res;
8380 }
8381
8382
8383 /**
8384 Compare 0-terminated UTF8 strings.
8385
8386 @param cs character set handler
8387 @param s First 0-terminated string to compare
8388 @param t Second 0-terminated string to compare
8389
8390 @return Comparison result.
8391 @retval negative number if s < t
8392 @retval positive number if s > t
8393 @retval 0 is the strings are equal
8394 */
8395
8396 static int
my_strcasecmp_utf8mb4(const CHARSET_INFO * cs,const char * s,const char * t)8397 my_strcasecmp_utf8mb4(const CHARSET_INFO *cs, const char *s, const char *t)
8398 {
8399 const MY_UNICASE_INFO *uni_plane= cs->caseinfo;
8400 while (s[0] && t[0])
8401 {
8402 my_wc_t s_wc,t_wc;
8403
8404 if ((uchar) s[0] < 128)
8405 {
8406 /*
8407 s[0] is between 0 and 127.
8408 It represents a single byte character.
8409 Convert it into weight according to collation.
8410 */
8411 s_wc= plane00[(uchar) s[0]].tolower;
8412 s++;
8413 }
8414 else
8415 {
8416 int res= my_mb_wc_utf8mb4_no_range(cs, &s_wc, (const uchar*) s);
8417
8418 /*
8419 In the case of wrong multibyte sequence we will
8420 call strcmp() for byte-to-byte comparison.
8421 */
8422 if (res <= 0)
8423 return strcmp(s, t);
8424 s+= res;
8425
8426 my_tolower_utf8mb4(uni_plane, &s_wc);
8427 }
8428
8429
8430 /* Do the same for the second string */
8431
8432 if ((uchar) t[0] < 128)
8433 {
8434 /* Convert single byte character into weight */
8435 t_wc= plane00[(uchar) t[0]].tolower;
8436 t++;
8437 }
8438 else
8439 {
8440 int res= my_mb_wc_utf8mb4_no_range(cs, &t_wc, (const uchar*) t);
8441 if (res <= 0)
8442 return strcmp(s, t);
8443 t+= res;
8444
8445 my_tolower_utf8mb4(uni_plane, &t_wc);
8446 }
8447
8448 /* Now we have two weights, let's compare them */
8449 if ( s_wc != t_wc )
8450 return ((int) s_wc) - ((int) t_wc);
8451 }
8452 return ((int) (uchar) s[0]) - ((int) (uchar) t[0]);
8453 }
8454
8455
8456 static int
my_wildcmp_utf8mb4(const CHARSET_INFO * cs,const char * str,const char * strend,const char * wildstr,const char * wildend,int escape,int w_one,int w_many)8457 my_wildcmp_utf8mb4(const CHARSET_INFO *cs,
8458 const char *str, const char *strend,
8459 const char *wildstr, const char *wildend,
8460 int escape, int w_one, int w_many)
8461 {
8462 return my_wildcmp_unicode(cs, str, strend, wildstr, wildend,
8463 escape, w_one, w_many, cs->caseinfo);
8464 }
8465
8466
8467 static size_t
my_strnxfrmlen_utf8mb4(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),size_t len)8468 my_strnxfrmlen_utf8mb4(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
8469 size_t len)
8470 {
8471 /* TODO: fix when working on WL "Unicode new version" */
8472 return (len * 2 + 2) / 4;
8473 }
8474
8475
8476 static int
my_valid_mbcharlen_utf8mb4(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),const uchar * s,const uchar * e)8477 my_valid_mbcharlen_utf8mb4(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)),
8478 const uchar *s, const uchar *e)
8479 {
8480 uchar c;
8481
8482 if (s >= e)
8483 return MY_CS_TOOSMALL;
8484
8485 c= s[0];
8486 if (c < 0xf0)
8487 return my_valid_mbcharlen_utf8mb3(s, e);
8488
8489 if (c < 0xf5)
8490 {
8491 if (s + 4 > e) /* We need 4 characters */
8492 return MY_CS_TOOSMALL4;
8493
8494 /*
8495 UTF-8 quick four-byte mask:
8496 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
8497 Encoding allows to encode U+00010000..U+001FFFFF
8498
8499 The maximum character defined in the Unicode standard is U+0010FFFF.
8500 Higher characters U+00110000..U+001FFFFF are not used.
8501
8502 11110000.10010000.10xxxxxx.10xxxxxx == F0.90.80.80 == U+00010000 (min)
8503 11110100.10001111.10111111.10111111 == F4.8F.BF.BF == U+0010FFFF (max)
8504
8505 Valid codes:
8506 [F0][90..BF][80..BF][80..BF]
8507 [F1][80..BF][80..BF][80..BF]
8508 [F2][80..BF][80..BF][80..BF]
8509 [F3][80..BF][80..BF][80..BF]
8510 [F4][80..8F][80..BF][80..BF]
8511 */
8512
8513 if (!(IS_CONTINUATION_BYTE(s[1]) &&
8514 IS_CONTINUATION_BYTE(s[2]) &&
8515 IS_CONTINUATION_BYTE(s[3]) &&
8516 (c >= 0xf1 || s[1] >= 0x90) &&
8517 (c <= 0xf3 || s[1] <= 0x8F)))
8518 return MY_CS_ILSEQ;
8519
8520 return 4;
8521 }
8522
8523 return MY_CS_ILSEQ;
8524 }
8525
8526
8527 static
my_well_formed_len_utf8mb4(const CHARSET_INFO * cs,const char * b,const char * e,size_t pos,int * error)8528 size_t my_well_formed_len_utf8mb4(const CHARSET_INFO *cs,
8529 const char *b, const char *e,
8530 size_t pos, int *error)
8531 {
8532 const char *b_start= b;
8533 *error= 0;
8534 while (pos)
8535 {
8536 int mb_len;
8537
8538 if ((mb_len= my_valid_mbcharlen_utf8mb4(cs, (uchar*) b, (uchar*) e)) <= 0)
8539 {
8540 *error= b < e ? 1 : 0;
8541 break;
8542 }
8543 b+= mb_len;
8544 pos--;
8545 }
8546 return (size_t) (b - b_start);
8547 }
8548
8549
8550 static uint
my_ismbchar_utf8mb4(const CHARSET_INFO * cs,const char * b,const char * e)8551 my_ismbchar_utf8mb4(const CHARSET_INFO *cs, const char *b, const char *e)
8552 {
8553 int res= my_valid_mbcharlen_utf8mb4(cs, (const uchar*)b, (const uchar*)e);
8554 return (res > 1) ? res : 0;
8555 }
8556
8557
8558 static uint
my_mbcharlen_utf8mb4(const CHARSET_INFO * cs MY_ATTRIBUTE ((unused)),uint c)8559 my_mbcharlen_utf8mb4(const CHARSET_INFO *cs MY_ATTRIBUTE((unused)), uint c)
8560 {
8561 if (c < 0x80)
8562 return 1;
8563 if (c < 0xc2)
8564 return 0; /* Illegal mb head */
8565 if (c < 0xe0)
8566 return 2;
8567 if (c < 0xf0)
8568 return 3;
8569 if (c < 0xf8)
8570 return 4;
8571 return 0; /* Illegal mb head */;
8572 }
8573
8574
8575 static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler=
8576 {
8577 NULL, /* init */
8578 my_strnncoll_utf8mb4,
8579 my_strnncollsp_utf8mb4,
8580 my_strnxfrm_unicode,
8581 my_strnxfrmlen_utf8mb4,
8582 my_like_range_mb,
8583 my_wildcmp_utf8mb4,
8584 my_strcasecmp_utf8mb4,
8585 my_instr_mb,
8586 my_hash_sort_utf8mb4,
8587 my_propagate_complex
8588 };
8589
8590
8591 static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
8592 {
8593 NULL, /* init */
8594 my_strnncoll_mb_bin,
8595 my_strnncollsp_mb_bin,
8596 my_strnxfrm_unicode_full_bin,
8597 my_strnxfrmlen_unicode_full_bin,
8598 my_like_range_mb,
8599 my_wildcmp_mb_bin,
8600 my_strcasecmp_mb_bin,
8601 my_instr_mb,
8602 my_hash_sort_mb_bin,
8603 my_propagate_simple
8604 };
8605
8606
8607 MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
8608 {
8609 NULL, /* init */
8610 my_ismbchar_utf8mb4,
8611 my_mbcharlen_utf8mb4,
8612 my_numchars_mb,
8613 my_charpos_mb,
8614 my_well_formed_len_utf8mb4,
8615 my_lengthsp_8bit,
8616 my_numcells_mb,
8617 my_mb_wc_utf8mb4,
8618 my_wc_mb_utf8mb4,
8619 my_mb_ctype_mb,
8620 my_caseup_str_utf8mb4,
8621 my_casedn_str_utf8mb4,
8622 my_caseup_utf8mb4,
8623 my_casedn_utf8mb4,
8624 my_snprintf_8bit,
8625 my_long10_to_str_8bit,
8626 my_longlong10_to_str_8bit,
8627 my_fill_8bit,
8628 my_strntol_8bit,
8629 my_strntoul_8bit,
8630 my_strntoll_8bit,
8631 my_strntoull_8bit,
8632 my_strntod_8bit,
8633 my_strtoll10_8bit,
8634 my_strntoull10rnd_8bit,
8635 my_scan_8bit
8636 };
8637
8638
8639
8640 CHARSET_INFO my_charset_utf8mb4_general_ci=
8641 {
8642 45,0,0, /* number */
8643 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_UNICODE_SUPPLEMENT, /* state */
8644 MY_UTF8MB4, /* cs name */
8645 MY_UTF8MB4_GENERAL_CI,/* name */
8646 "UTF-8 Unicode", /* comment */
8647 NULL, /* tailoring */
8648 ctype_utf8mb4, /* ctype */
8649 to_lower_utf8mb4, /* to_lower */
8650 to_upper_utf8mb4, /* to_upper */
8651 to_upper_utf8mb4, /* sort_order */
8652 NULL, /* uca */
8653 NULL, /* tab_to_uni */
8654 NULL, /* tab_from_uni */
8655 &my_unicase_default,/* caseinfo */
8656 NULL, /* state_map */
8657 NULL, /* ident_map */
8658 1, /* strxfrm_multiply */
8659 1, /* caseup_multiply */
8660 1, /* casedn_multiply */
8661 1, /* mbminlen */
8662 4, /* mbmaxlen */
8663 1, /* mbmaxlenlen */
8664 0, /* min_sort_char */
8665 0xFFFF, /* max_sort_char */
8666 ' ', /* pad char */
8667 0, /* escape_with_backslash_is_dangerous */
8668 1, /* levels_for_compare */
8669 1, /* levels_for_order */
8670 &my_charset_utf8mb4_handler,
8671 &my_collation_utf8mb4_general_ci_handler
8672 };
8673
8674
8675 CHARSET_INFO my_charset_utf8mb4_bin=
8676 {
8677 46,0,0, /* number */
8678 MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|
8679 MY_CS_UNICODE|MY_CS_UNICODE_SUPPLEMENT, /* state */
8680 MY_UTF8MB4, /* cs name */
8681 MY_UTF8MB4_BIN, /* name */
8682 "UTF-8 Unicode", /* comment */
8683 NULL, /* tailoring */
8684 ctype_utf8mb4, /* ctype */
8685 to_lower_utf8mb4, /* to_lower */
8686 to_upper_utf8mb4, /* to_upper */
8687 NULL, /* sort_order */
8688 NULL, /* uca */
8689 NULL, /* tab_to_uni */
8690 NULL, /* tab_from_uni */
8691 &my_unicase_default,/* caseinfo */
8692 NULL, /* state_map */
8693 NULL, /* ident_map */
8694 1, /* strxfrm_multiply */
8695 1, /* caseup_multiply */
8696 1, /* casedn_multiply */
8697 1, /* mbminlen */
8698 4, /* mbmaxlen */
8699 1, /* mbmaxlenlen */
8700 0, /* min_sort_char */
8701 0xFFFF, /* max_sort_char */
8702 ' ', /* pad char */
8703 0, /* escape_with_backslash_is_dangerous */
8704 1, /* levels_for_compare */
8705 1, /* levels_for_order */
8706 &my_charset_utf8mb4_handler,
8707 &my_collation_utf8mb4_bin_handler
8708 };
8709
8710 #endif /* HAVE_CHARSET_utf8mb4 */
8711