1 /*
2 * Do not edit this file!
3 * This file is generated from:
4 * UnicodeData.txt (version 6.3.0)
5 * DerivedCoreProperties.txt (version 6.3.0)
6 */
7
8 #include <stddef.h>
9 #include <idn/utf32.h>
10 #include <idn/auto/combiningclass.h>
11
12 /*
13 * Canonical combining class tables.
14 */
15 #define COMBININGCLASS_BITS_0 9
16 #define COMBININGCLASS_BITS_1 7
17 #define COMBININGCLASS_BITS_2 5
18
19 static const unsigned short combiningclass_imap[] = {
20 272, 400, 528, 656, 784, 784, 784, 784,
21 784, 784, 912, 784, 784, 784, 784, 1040,
22 1168, 1296, 784, 784, 784, 784, 784, 784,
23 784, 784, 784, 784, 784, 1424, 784, 784,
24 784, 784, 784, 784, 784, 784, 784, 784,
25 784, 784, 784, 784, 784, 784, 784, 784,
26 784, 784, 784, 784, 784, 784, 784, 784,
27 784, 784, 784, 784, 784, 784, 784, 784,
28 784, 784, 784, 784, 784, 784, 784, 784,
29 784, 784, 784, 784, 784, 784, 784, 784,
30 784, 784, 784, 784, 784, 784, 784, 784,
31 784, 784, 784, 784, 784, 784, 784, 784,
32 784, 784, 784, 784, 784, 784, 784, 784,
33 784, 784, 784, 784, 784, 784, 784, 784,
34 784, 784, 784, 784, 784, 784, 784, 784,
35 784, 784, 784, 784, 784, 784, 784, 784,
36 784, 784, 784, 784, 784, 784, 784, 784,
37 784, 784, 784, 784, 784, 784, 784, 784,
38 784, 784, 784, 784, 784, 784, 784, 784,
39 784, 784, 784, 784, 784, 784, 784, 784,
40 784, 784, 784, 784, 784, 784, 784, 784,
41 784, 784, 784, 784, 784, 784, 784, 784,
42 784, 784, 784, 784, 784, 784, 784, 784,
43 784, 784, 784, 784, 784, 784, 784, 784,
44 784, 784, 784, 784, 784, 784, 784, 784,
45 784, 784, 784, 784, 784, 784, 784, 784,
46 784, 784, 784, 784, 784, 784, 784, 784,
47 784, 784, 784, 784, 784, 784, 784, 784,
48 784, 784, 784, 784, 784, 784, 784, 784,
49 784, 784, 784, 784, 784, 784, 784, 784,
50 784, 784, 784, 784, 784, 784, 784, 784,
51 784, 784, 784, 784, 784, 784, 784, 784,
52 784, 784, 784, 784, 784, 784, 784, 784,
53 784, 784, 784, 784, 784, 784, 784, 784,
54 0, 0, 0, 0, 0, 0, 0, 0,
55 0, 0, 0, 0, 0, 0, 0, 0,
56 0, 0, 0, 0, 0, 0, 0, 0,
57 1, 2, 3, 4, 0, 0, 0, 0,
58 0, 0, 0, 0, 5, 0, 0, 0,
59 0, 0, 0, 0, 6, 7, 8, 0,
60 9, 0, 10, 11, 0, 0, 12, 13,
61 14, 15, 16, 0, 0, 0, 0, 17,
62 18, 19, 20, 0, 0, 0, 0, 21,
63 0, 22, 23, 0, 0, 22, 24, 0,
64 0, 22, 24, 0, 0, 22, 24, 0,
65 0, 22, 24, 0, 0, 0, 24, 0,
66 0, 0, 25, 0, 0, 22, 24, 0,
67 0, 0, 24, 0, 0, 0, 26, 0,
68 0, 27, 28, 0, 0, 29, 30, 0,
69 31, 32, 0, 33, 34, 0, 35, 0,
70 0, 36, 0, 0, 37, 0, 0, 0,
71 0, 0, 0, 0, 0, 0, 0, 0,
72 0, 0, 0, 0, 0, 0, 0, 0,
73 0, 0, 38, 0, 0, 0, 0, 0,
74 0, 0, 0, 0, 0, 0, 0, 0,
75 0, 0, 0, 0, 0, 0, 0, 0,
76 0, 0, 0, 0, 0, 0, 0, 0,
77 39, 39, 0, 0, 0, 0, 40, 0,
78 0, 0, 0, 0, 0, 41, 0, 0,
79 0, 42, 0, 0, 0, 0, 0, 0,
80 43, 0, 0, 44, 0, 0, 0, 0,
81 0, 45, 46, 47, 0, 48, 0, 49,
82 0, 50, 0, 0, 0, 0, 51, 52,
83 0, 0, 0, 0, 0, 0, 53, 54,
84 0, 0, 0, 0, 0, 0, 0, 0,
85 0, 0, 0, 0, 0, 0, 0, 0,
86 0, 0, 0, 0, 0, 0, 55, 56,
87 0, 0, 0, 0, 0, 0, 0, 0,
88 0, 0, 0, 0, 0, 0, 0, 0,
89 0, 0, 0, 0, 0, 0, 0, 0,
90 0, 0, 0, 0, 0, 0, 0, 0,
91 0, 0, 0, 0, 0, 0, 0, 0,
92 0, 0, 0, 0, 0, 0, 0, 0,
93 0, 0, 0, 0, 0, 0, 0, 0,
94 0, 0, 0, 0, 0, 0, 0, 0,
95 0, 0, 0, 0, 0, 0, 0, 0,
96 0, 0, 0, 0, 0, 0, 0, 0,
97 0, 0, 0, 0, 0, 0, 0, 0,
98 0, 0, 0, 0, 0, 0, 0, 57,
99 0, 0, 0, 58, 0, 0, 0, 59,
100 0, 0, 0, 0, 0, 0, 0, 0,
101 0, 0, 0, 0, 0, 0, 0, 0,
102 0, 60, 0, 0, 61, 0, 0, 0,
103 0, 0, 0, 0, 0, 0, 0, 0,
104 0, 0, 0, 0, 0, 0, 0, 0,
105 0, 0, 0, 0, 0, 0, 0, 0,
106 0, 0, 0, 0, 0, 0, 0, 0,
107 0, 0, 0, 0, 0, 0, 0, 0,
108 0, 0, 0, 0, 0, 0, 0, 0,
109 0, 0, 0, 0, 0, 0, 0, 0,
110 0, 0, 0, 0, 0, 0, 0, 0,
111 0, 0, 0, 0, 0, 0, 0, 0,
112 0, 0, 0, 0, 0, 0, 0, 0,
113 0, 0, 0, 0, 0, 0, 0, 0,
114 0, 0, 0, 0, 0, 0, 0, 0,
115 0, 0, 0, 0, 0, 0, 0, 0,
116 0, 0, 0, 0, 0, 0, 0, 0,
117 0, 0, 0, 0, 0, 0, 0, 0,
118 0, 0, 0, 0, 0, 0, 0, 0,
119 0, 0, 0, 0, 0, 0, 0, 0,
120 0, 0, 0, 0, 0, 0, 0, 0,
121 0, 0, 0, 0, 0, 0, 0, 0,
122 0, 0, 0, 0, 0, 0, 0, 0,
123 0, 0, 0, 0, 0, 0, 0, 0,
124 0, 0, 0, 0, 0, 0, 0, 0,
125 0, 0, 0, 0, 0, 0, 0, 0,
126 0, 0, 0, 0, 0, 0, 0, 0,
127 0, 0, 0, 0, 0, 0, 0, 0,
128 0, 0, 0, 0, 0, 0, 0, 0,
129 0, 0, 0, 0, 0, 0, 0, 0,
130 0, 0, 0, 0, 0, 0, 0, 0,
131 0, 0, 0, 0, 0, 0, 0, 0,
132 0, 0, 0, 0, 0, 0, 0, 0,
133 0, 0, 0, 0, 0, 0, 0, 0,
134 0, 0, 0, 0, 0, 0, 0, 0,
135 0, 0, 0, 0, 0, 0, 0, 0,
136 0, 0, 0, 0, 0, 0, 0, 0,
137 0, 0, 0, 0, 0, 0, 0, 0,
138 0, 0, 0, 0, 0, 0, 0, 0,
139 0, 0, 0, 0, 0, 0, 0, 0,
140 0, 0, 0, 62, 63, 0, 0, 64,
141 0, 0, 0, 0, 0, 0, 0, 0,
142 65, 0, 0, 0, 0, 0, 46, 66,
143 0, 67, 68, 0, 0, 69, 70, 0,
144 0, 0, 0, 0, 0, 71, 72, 73,
145 0, 0, 0, 0, 0, 0, 0, 24,
146 0, 0, 0, 0, 0, 0, 0, 0,
147 0, 0, 0, 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0, 0,
149 0, 0, 0, 0, 0, 0, 0, 0,
150 0, 0, 0, 0, 0, 0, 0, 0,
151 0, 0, 0, 0, 0, 0, 0, 0,
152 0, 0, 0, 0, 0, 0, 0, 0,
153 0, 0, 0, 0, 0, 0, 0, 0,
154 0, 0, 0, 0, 0, 0, 0, 0,
155 0, 0, 0, 0, 0, 0, 0, 0,
156 0, 0, 0, 0, 0, 0, 0, 0,
157 0, 0, 0, 0, 0, 0, 0, 0,
158 0, 0, 0, 0, 0, 0, 0, 0,
159 0, 0, 0, 0, 0, 0, 0, 0,
160 0, 0, 0, 0, 0, 0, 0, 0,
161 74, 0, 0, 0, 0, 0, 0, 0,
162 0, 0, 0, 0, 0, 0, 0, 0,
163 0, 0, 0, 0, 0, 0, 0, 0,
164 0, 75, 0, 0, 0, 0, 0, 0,
165 0, 0, 0, 0, 0, 0, 0, 0,
166 0, 0, 0, 0, 0, 0, 0, 0,
167 0, 0, 0, 0, 0, 0, 0, 76,
168 0, 0, 0, 0, 0, 0, 0, 0,
169 0, 0, 0, 0, 0, 0, 0, 0,
170 0, 0, 0, 0, 0, 0, 0, 0,
171 0, 0, 0, 0, 0, 0, 0, 0,
172 0, 0, 0, 0, 0, 0, 0, 0,
173 0, 0, 0, 0, 0, 0, 0, 0,
174 0, 0, 0, 0, 0, 0, 0, 0,
175 0, 0, 0, 0, 0, 0, 0, 0,
176 77, 78, 0, 0, 0, 0, 0, 0,
177 0, 0, 0, 0, 0, 0, 0, 0,
178 0, 0, 0, 0, 0, 0, 0, 0,
179 0, 0, 0, 0, 0, 0, 0, 0,
180 0, 0, 0, 0, 0, 0, 0, 0,
181 0, 0, 0, 0, 0, 0, 0, 0,
182 0, 0, 65, 0, 0, 79, 0, 0,
183 80, 81, 0, 0, 0, 0, 70, 0,
184 0, 0, 0, 0, 0, 0, 0, 0,
185 0, 0, 0, 0, 0, 0, 0, 0,
186 0, 0, 0, 0, 0, 0, 0, 0,
187 0, 0, 0, 0, 0, 0, 0, 0,
188 0, 0, 0, 0, 0, 82, 0, 0,
189 0, 0, 0, 0, 0, 0, 0, 0,
190 0, 0, 0, 0, 0, 0, 0, 0,
191 0, 0, 0, 0, 0, 0, 0, 0,
192 0, 0, 0, 0, 0, 0, 0, 0,
193 0, 0, 0, 0, 0, 0, 0, 0,
194 0, 0, 0, 0, 0, 0, 0, 0,
195 0, 0, 0, 0, 0, 0, 0, 0,
196 0, 0, 0, 0, 0, 0, 0, 0,
197 0, 0, 0, 0, 0, 0, 0, 0,
198 0, 0, 0, 0, 0, 0, 0, 0,
199 0, 0, 0, 83, 84, 85, 0, 0,
200 0, 0, 86, 0, 0, 0, 0, 0,
201 0, 0, 0, 0, 0, 0, 0, 0,
202 0, 0, 0, 0, 0, 0, 0, 0,
203 0, 0, 0, 0, 0, 0, 0, 0,
204 0, 0, 0, 0, 0, 0, 0, 0,
205 0, 0, 0, 0, 0, 0, 0, 0,
206 0, 0, 0, 0, 0, 0, 0, 0,
207 0, 0, 0, 0, 0, 0, 0, 0,
208 0, 0, 0, 0, 0, 0, 0, 0,
209 0, 0, 0, 0, 0, 0, 0, 0,
210 0, 0, 0, 0, 0, 0, 0, 0,
211 0, 0, 0, 0, 0, 0, 0, 0,
212 0, 0, 0, 0, 0, 0, 0, 0,
213 0, 0, 0, 0, 0, 0, 0, 0,
214 };
215
216 static const struct {
217 unsigned char tbl[32];
218 } combiningclass_table[] = {
219 {{
220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
221 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
223 }},
224 {{
225 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
226 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232,
227 220, 220, 220, 220, 232, 216, 220, 220, 220, 220,
228 }},
229 {{
230 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220,
231 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1,
232 1, 1, 1, 220, 220, 220, 220, 230, 230, 230,
233 }},
234 {{
235 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230,
236 230, 230, 220, 220, 0, 230, 230, 230, 220, 220, 220,
237 220, 230, 232, 220, 220, 230, 233, 234, 234, 233,
238 }},
239 {{
240 234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230,
241 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0,
242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
243 }},
244 {{
245 0, 0, 0, 230, 230, 230, 230, 230, 0, 0, 0,
246 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
247 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
248 }},
249 {{
250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
251 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230,
252 220, 230, 230, 230, 222, 220, 230, 230, 230, 230,
253 }},
254 {{
255 230, 230, 220, 220, 220, 220, 220, 220, 230, 230, 220,
256 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15,
257 16, 17, 18, 19, 19, 20, 21, 22, 0, 23,
258 }},
259 {{
260 0, 24, 25, 0, 230, 220, 0, 18, 0, 0, 0,
261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
263 }},
264 {{
265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
266 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230,
267 230, 230, 30, 31, 32, 0, 0, 0, 0, 0,
268 }},
269 {{
270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
271 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220,
272 220, 230, 230, 230, 230, 230, 220, 230, 230, 220,
273 }},
274 {{
275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
276 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0,
277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
278 }},
279 {{
280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
281 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
282 230, 230, 230, 230, 230, 230, 230, 0, 0, 230,
283 }},
284 {{
285 230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220,
286 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0,
287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
288 }},
289 {{
290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
291 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0,
292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
293 }},
294 {{
295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
296 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230,
297 230, 220, 220, 220, 230, 220, 220, 230, 220, 230,
298 }},
299 {{
300 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230,
301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
303 }},
304 {{
305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
306 230, 230, 230, 230, 230, 230, 230, 220, 230, 0, 0,
307 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
308 }},
309 {{
310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
312 230, 230, 230, 230, 0, 230, 230, 230, 230, 230,
313 }},
314 {{
315 230, 230, 230, 230, 0, 230, 230, 230, 0, 230, 230,
316 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0,
317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
318 }},
319 {{
320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
321 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
322 0, 0, 0, 220, 220, 220, 0, 0, 0, 0,
323 }},
324 {{
325 0, 0, 0, 0, 230, 230, 220, 230, 230, 220, 230,
326 230, 230, 220, 220, 220, 27, 28, 29, 230, 230, 230,
327 220, 230, 230, 220, 220, 230, 230, 230, 230, 0,
328 }},
329 {{
330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
332 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
333 }},
334 {{
335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
336 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0,
337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
338 }},
339 {{
340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
341 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
343 }},
344 {{
345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
346 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84,
347 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
348 }},
349 {{
350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
353 }},
354 {{
355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
356 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
357 0, 0, 103, 103, 9, 0, 0, 0, 0, 0,
358 }},
359 {{
360 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107,
361 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
363 }},
364 {{
365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
367 0, 0, 118, 118, 0, 0, 0, 0, 0, 0,
368 }},
369 {{
370 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122,
371 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
373 }},
374 {{
375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
377 0, 0, 220, 220, 0, 0, 0, 0, 0, 0,
378 }},
379 {{
380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
382 0, 220, 0, 216, 0, 0, 0, 0, 0, 0,
383 }},
384 {{
385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
386 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0,
387 0, 0, 0, 0, 130, 130, 130, 130, 0, 0,
388 }},
389 {{
390 130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0,
391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
393 }},
394 {{
395 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0,
396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
398 }},
399 {{
400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
401 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
402 0, 7, 0, 9, 9, 0, 0, 0, 0, 0,
403 }},
404 {{
405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
406 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0,
407 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
408 }},
409 {{
410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
412 0, 0, 0, 0, 0, 0, 0, 230, 230, 230,
413 }},
414 {{
415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
416 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
418 }},
419 {{
420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
421 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0,
422 0, 0, 0, 0, 0, 0, 0, 230, 0, 0,
423 }},
424 {{
425 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0,
426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
428 }},
429 {{
430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
432 0, 0, 0, 222, 230, 220, 0, 0, 0, 0,
433 }},
434 {{
435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
437 0, 230, 220, 0, 0, 0, 0, 0, 0, 0,
438 }},
439 {{
440 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230,
442 230, 230, 230, 230, 230, 230, 230, 0, 0, 220,
443 }},
444 {{
445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
446 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
448 }},
449 {{
450 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0,
451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
453 }},
454 {{
455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
456 230, 220, 230, 230, 230, 230, 230, 230, 230, 0, 0,
457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
458 }},
459 {{
460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
461 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
463 }},
464 {{
465 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0,
466 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0,
467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
468 }},
469 {{
470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
472 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
473 }},
474 {{
475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
476 0, 0, 0, 0, 0, 230, 230, 230, 0, 1, 220,
477 220, 220, 220, 220, 230, 230, 220, 220, 220, 220,
478 }},
479 {{
480 230, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
481 0, 0, 220, 0, 0, 0, 0, 0, 0, 230, 0,
482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
483 }},
484 {{
485 230, 230, 220, 230, 230, 230, 230, 230, 230, 230, 220,
486 230, 230, 234, 214, 220, 202, 230, 230, 230, 230, 230,
487 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
488 }},
489 {{
490 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0,
491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
492 0, 0, 0, 0, 0, 0, 233, 220, 230, 220,
493 }},
494 {{
495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
496 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230,
497 230, 230, 1, 1, 1, 230, 230, 0, 0, 0,
498 }},
499 {{
500 0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1,
501 1, 220, 220, 220, 220, 230, 0, 0, 0, 0, 0,
502 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
503 }},
504 {{
505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
506 0, 0, 0, 0, 230, 230, 230, 0, 0, 0, 0,
507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
508 }},
509 {{
510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
512 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
513 }},
514 {{
515 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
516 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
517 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
518 }},
519 {{
520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218,
521 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0,
522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
523 }},
524 {{
525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
527 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
528 }},
529 {{
530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
531 0, 0, 0, 0, 230, 0, 0, 0, 0, 230, 230,
532 230, 230, 230, 230, 230, 230, 230, 230, 0, 0,
533 }},
534 {{
535 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
537 0, 0, 0, 0, 0, 0, 0, 0, 0, 230,
538 }},
539 {{
540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
541 0, 0, 0, 0, 0, 230, 230, 0, 0, 0, 0,
542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
543 }},
544 {{
545 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
548 }},
549 {{
550 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
551 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0,
552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
553 }},
554 {{
555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
556 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0,
557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
558 }},
559 {{
560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
561 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0,
562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
563 }},
564 {{
565 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
566 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
568 }},
569 {{
570 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573 }},
574 {{
575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
576 0, 0, 0, 0, 0, 230, 0, 230, 230, 220, 0,
577 0, 230, 230, 0, 0, 0, 0, 0, 230, 230,
578 }},
579 {{
580 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0,
581 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
583 }},
584 {{
585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
587 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
588 }},
589 {{
590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
592 0, 0, 0, 0, 0, 0, 0, 0, 26, 0,
593 }},
594 {{
595 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0,
596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
598 }},
599 {{
600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
602 0, 0, 0, 0, 0, 0, 0, 220, 0, 0,
603 }},
604 {{
605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
606 0, 0, 220, 0, 230, 0, 0, 0, 0, 0, 0,
607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
608 }},
609 {{
610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
611 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
612 0, 0, 230, 1, 220, 0, 0, 0, 0, 9,
613 }},
614 {{
615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
617 0, 0, 0, 9, 7, 0, 0, 0, 0, 0,
618 }},
619 {{
620 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0,
621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
623 }},
624 {{
625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
626 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0,
627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
628 }},
629 {{
630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
632 9, 7, 0, 0, 0, 0, 0, 0, 0, 0,
633 }},
634 {{
635 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0,
636 0, 0, 226, 216, 216, 216, 216, 216, 0, 0, 0,
637 0, 0, 0, 0, 0, 220, 220, 220, 220, 220,
638 }},
639 {{
640 220, 220, 220, 0, 0, 230, 230, 230, 230, 230, 220,
641 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
643 }},
644 {{
645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230,
646 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0,
647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
648 }},
649 {{
650 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0,
651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
653 }},
654 };
655
656 /*
657 * Table accessor.
658 */
659 unsigned char
idn__sparsemap_getcombiningclass(unsigned long v)660 idn__sparsemap_getcombiningclass(unsigned long v) {
661 int idx0, idx1, idx2;
662
663 if (v > UTF32_MAX)
664 return (0);
665 idx0 = v >> (COMBININGCLASS_BITS_1 + COMBININGCLASS_BITS_2);
666 idx1 = (v >> COMBININGCLASS_BITS_2) & ((1 << COMBININGCLASS_BITS_1) - 1);
667 idx2 = v & ((1 << COMBININGCLASS_BITS_2) - 1);
668 return (unsigned char) combiningclass_table[combiningclass_imap[combiningclass_imap[idx0] + idx1]].tbl[idx2];
669 }
670